1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * Copyright (C) 2021 Sifive.
5 #ifndef ASM_ERRATA_LIST_H
6 #define ASM_ERRATA_LIST_H
8 #include <asm/alternative.h>
9 #include <asm/vendorid_list.h>
11 #ifdef CONFIG_ERRATA_SIFIVE
12 #define ERRATA_SIFIVE_CIP_453 0
13 #define ERRATA_SIFIVE_CIP_1200 1
14 #define ERRATA_SIFIVE_NUMBER 2
19 #define ALT_INSN_FAULT(x) \
20 ALTERNATIVE(__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)
25 #define ALT_PAGE_FAULT(x) \
26 ALTERNATIVE(__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)
30 #else /* !__ASSEMBLY__ */
32 #define ALT_FLUSH_TLB_PAGE(x) \
33 asm(ALTERNATIVE("sfence.vma %0", "sfence.vma", SIFIVE_VENDOR_ID, \
34 ERRATA_SIFIVE_CIP_1200, CONFIG_ERRATA_SIFIVE_CIP_1200) \
35 : : "r" (addr) : "memory")
37 #endif /* __ASSEMBLY__ */