1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __ASM_SH_TRAPS_32_H
3 #define __ASM_SH_TRAPS_32_H
5 #include <linux/types.h>
8 #ifdef CONFIG_CPU_HAS_SR_RB
9 #define lookup_exception_vector() \
13 __asm__ __volatile__ ( \
14 "stc r2_bank, %0\n\t" \
21 #define lookup_exception_vector() \
24 __asm__ __volatile__ ( \
33 static inline void trigger_address_error(void)
35 __asm__
__volatile__ (
39 : "r" (0x10000000), "r" (0x80000001)
43 asmlinkage
void do_address_error(struct pt_regs
*regs
,
44 unsigned long writeaccess
,
45 unsigned long address
);
46 asmlinkage
void do_page_fault(struct pt_regs
*regs
,
47 unsigned long error_code
,
48 unsigned long address
);
49 asmlinkage
void do_divide_error(unsigned long r4
);
50 asmlinkage
void do_reserved_inst(void);
51 asmlinkage
void do_illegal_slot_inst(void);
52 asmlinkage
void do_exception_error(void);
54 #define BUILD_TRAP_HANDLER(name) \
55 asmlinkage void name##_trap_handler(unsigned long r4, unsigned long r5, \
56 unsigned long r6, unsigned long r7, \
57 struct pt_regs __regs)
59 #define TRAP_HANDLER_DECL \
60 struct pt_regs *regs = RELOC_HIDE(&__regs, 0); \
61 unsigned int vec = regs->tra; \
64 #endif /* __ASM_SH_TRAPS_32_H */