1 /* SPDX-License-Identifier: GPL-2.0+ */
3 * Copyright (C) 2013-2015 Synopsys, Inc. All rights reserved.
6 #include <linux/linkage.h>
9 * Note on the LD/ST addressing modes with address register write-back
13 * LD.a reg1, [reg2, x] => Pre Incr
14 * Eff Addr for load = [reg2 + x]
16 * LD.ab reg1, [reg2, x] => Post Incr
17 * Eff Addr for load = [reg2]
57 /* saving %r0 to reg->r0 in advance since we read %ecr into it */
59 lr %r0, [%ecr] /* all stack addressing is manual so far */
62 /* now move %sp to reg->r0 position so we can do "push" automatically */
78 .macro SAVE_EXCEPTION_SOURCE
80 /* If MMU exists exception faulting address is loaded in EFA reg */
83 /* Otherwise in ERET (exception return) reg */
95 ENTRY(instruction_error)
99 j do_instruction_error
100 ENDPROC(instruction_error)
102 ENTRY(interrupt_handler)
103 /* Todo - save and restore CPU context when interrupts will be in use */
104 bl do_interrupt_handler
106 ENDPROC(interrupt_handler)
108 ENTRY(EV_MachineCheck)
110 SAVE_EXCEPTION_SOURCE
112 j do_machine_check_fault
113 ENDPROC(EV_MachineCheck)
129 SAVE_EXCEPTION_SOURCE
131 j do_tlb_prot_violation
137 j do_privilege_violation
138 ENDPROC(EV_PrivilegeV)
150 ENDPROC(EV_Extension)
152 #ifdef CONFIG_ISA_ARCV2
161 SAVE_EXCEPTION_SOURCE
174 SAVE_EXCEPTION_SOURCE