File Index
Files and directories
Sign in
FILE

errata_cip_453.S

File preview with syntax highlighting.

linux-6.19.14/arch/riscv/errata/sifive/errata_cip_453.S GAS
 1/* SPDX-License-Identifier: GPL-2.0-only */
 2/*
 3 * Copyright (C) 2021 SiFive
 4 */
 5
 6#include <linux/linkage.h>
 7#include <asm/asm.h>
 8#include <asm/asm-offsets.h>
 9#include <asm/alternative.h>
10
11.macro ADD_SIGN_EXT pt_reg badaddr tmp_reg
12	REG_L \badaddr, PT_BADADDR(\pt_reg)
13	li \tmp_reg,1
14	slli \tmp_reg,\tmp_reg,0x26
15	and \tmp_reg,\tmp_reg,\badaddr
16	beqz \tmp_reg, 1f
17	li \tmp_reg,-1
18	slli \tmp_reg,\tmp_reg,0x27
19	or \badaddr,\tmp_reg,\badaddr
20	REG_S \badaddr, PT_BADADDR(\pt_reg)
211:
22.endm
23
24SYM_FUNC_START(sifive_cip_453_page_fault_trp)
25	ADD_SIGN_EXT a0, t0, t1
26#ifdef CONFIG_MMU
27	la t0, do_page_fault
28#else
29	la t0, do_trap_unknown
30#endif
31	jr t0
32SYM_FUNC_END(sifive_cip_453_page_fault_trp)
33
34SYM_FUNC_START(sifive_cip_453_insn_fault_trp)
35	ADD_SIGN_EXT a0, t0, t1
36	la t0, do_trap_insn_fault
37	jr t0
38SYM_FUNC_END(sifive_cip_453_insn_fault_trp)
~/ Read-only file preview.