Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v3.7 68 lines 1.7 kB view raw
1#ifndef __ASM_SH_TRAPS_32_H 2#define __ASM_SH_TRAPS_32_H 3 4#include <linux/types.h> 5#include <asm/mmu.h> 6 7#ifdef CONFIG_CPU_HAS_SR_RB 8#define lookup_exception_vector() \ 9({ \ 10 unsigned long _vec; \ 11 \ 12 __asm__ __volatile__ ( \ 13 "stc r2_bank, %0\n\t" \ 14 : "=r" (_vec) \ 15 ); \ 16 \ 17 _vec; \ 18}) 19#else 20#define lookup_exception_vector() \ 21({ \ 22 unsigned long _vec; \ 23 __asm__ __volatile__ ( \ 24 "mov r4, %0\n\t" \ 25 : "=r" (_vec) \ 26 ); \ 27 \ 28 _vec; \ 29}) 30#endif 31 32static inline void trigger_address_error(void) 33{ 34 __asm__ __volatile__ ( 35 "ldc %0, sr\n\t" 36 "mov.l @%1, %0" 37 : 38 : "r" (0x10000000), "r" (0x80000001) 39 ); 40} 41 42asmlinkage void do_address_error(struct pt_regs *regs, 43 unsigned long writeaccess, 44 unsigned long address); 45asmlinkage void do_divide_error(unsigned long r4, unsigned long r5, 46 unsigned long r6, unsigned long r7, 47 struct pt_regs __regs); 48asmlinkage void do_reserved_inst(unsigned long r4, unsigned long r5, 49 unsigned long r6, unsigned long r7, 50 struct pt_regs __regs); 51asmlinkage void do_illegal_slot_inst(unsigned long r4, unsigned long r5, 52 unsigned long r6, unsigned long r7, 53 struct pt_regs __regs); 54asmlinkage void do_exception_error(unsigned long r4, unsigned long r5, 55 unsigned long r6, unsigned long r7, 56 struct pt_regs __regs); 57 58#define BUILD_TRAP_HANDLER(name) \ 59asmlinkage void name##_trap_handler(unsigned long r4, unsigned long r5, \ 60 unsigned long r6, unsigned long r7, \ 61 struct pt_regs __regs) 62 63#define TRAP_HANDLER_DECL \ 64 struct pt_regs *regs = RELOC_HIDE(&__regs, 0); \ 65 unsigned int vec = regs->tra; \ 66 (void)vec; 67 68#endif /* __ASM_SH_TRAPS_32_H */