mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.0 KiB
39 lines
1.0 KiB
/* SPDX-License-Identifier: GPL-2.0-only */ |
|
/* |
|
* Copyright (C) 2021 Sifive. |
|
*/ |
|
#ifndef ASM_ERRATA_LIST_H |
|
#define ASM_ERRATA_LIST_H |
|
|
|
#include <asm/alternative.h> |
|
#include <asm/vendorid_list.h> |
|
|
|
#ifdef CONFIG_ERRATA_SIFIVE |
|
#define ERRATA_SIFIVE_CIP_453 0 |
|
#define ERRATA_SIFIVE_CIP_1200 1 |
|
#define ERRATA_SIFIVE_NUMBER 2 |
|
#endif |
|
|
|
#ifdef __ASSEMBLY__ |
|
|
|
#define ALT_INSN_FAULT(x) \ |
|
ALTERNATIVE(__stringify(RISCV_PTR do_trap_insn_fault), \ |
|
__stringify(RISCV_PTR sifive_cip_453_insn_fault_trp), \ |
|
SIFIVE_VENDOR_ID, ERRATA_SIFIVE_CIP_453, \ |
|
CONFIG_ERRATA_SIFIVE_CIP_453) |
|
|
|
#define ALT_PAGE_FAULT(x) \ |
|
ALTERNATIVE(__stringify(RISCV_PTR do_page_fault), \ |
|
__stringify(RISCV_PTR sifive_cip_453_page_fault_trp), \ |
|
SIFIVE_VENDOR_ID, ERRATA_SIFIVE_CIP_453, \ |
|
CONFIG_ERRATA_SIFIVE_CIP_453) |
|
#else /* !__ASSEMBLY__ */ |
|
|
|
#define ALT_FLUSH_TLB_PAGE(x) \ |
|
asm(ALTERNATIVE("sfence.vma %0", "sfence.vma", SIFIVE_VENDOR_ID, \ |
|
ERRATA_SIFIVE_CIP_1200, CONFIG_ERRATA_SIFIVE_CIP_1200) \ |
|
: : "r" (addr) : "memory") |
|
|
|
#endif /* __ASSEMBLY__ */ |
|
|
|
#endif
|
|
|