riscv: Fix accessing pfn bits in PTEs for non-32bit variants
[linux-block.git] / arch / riscv / include / asm / errata_list.h
CommitLineData
6f4eea90
VC
1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * Copyright (C) 2021 Sifive.
4 */
5#ifndef ASM_ERRATA_LIST_H
6#define ASM_ERRATA_LIST_H
7
800149a7
VC
8#include <asm/alternative.h>
9#include <asm/vendorid_list.h>
10
6f4eea90 11#ifdef CONFIG_ERRATA_SIFIVE
800149a7 12#define ERRATA_SIFIVE_CIP_453 0
bff3ff52
VC
13#define ERRATA_SIFIVE_CIP_1200 1
14#define ERRATA_SIFIVE_NUMBER 2
6f4eea90
VC
15#endif
16
800149a7
VC
17#ifdef __ASSEMBLY__
18
19#define ALT_INSN_FAULT(x) \
20ALTERNATIVE(__stringify(RISCV_PTR do_trap_insn_fault), \
21 __stringify(RISCV_PTR sifive_cip_453_insn_fault_trp), \
22 SIFIVE_VENDOR_ID, ERRATA_SIFIVE_CIP_453, \
23 CONFIG_ERRATA_SIFIVE_CIP_453)
24
25#define ALT_PAGE_FAULT(x) \
26ALTERNATIVE(__stringify(RISCV_PTR do_page_fault), \
27 __stringify(RISCV_PTR sifive_cip_453_page_fault_trp), \
28 SIFIVE_VENDOR_ID, ERRATA_SIFIVE_CIP_453, \
29 CONFIG_ERRATA_SIFIVE_CIP_453)
bff3ff52
VC
30#else /* !__ASSEMBLY__ */
31
32#define ALT_FLUSH_TLB_PAGE(x) \
33asm(ALTERNATIVE("sfence.vma %0", "sfence.vma", SIFIVE_VENDOR_ID, \
34 ERRATA_SIFIVE_CIP_1200, CONFIG_ERRATA_SIFIVE_CIP_1200) \
35 : : "r" (addr) : "memory")
36
800149a7
VC
37#endif /* __ASSEMBLY__ */
38
6f4eea90 39#endif