diff options
Diffstat (limited to 'arch/sh/include/asm/system_32.h')
-rw-r--r-- | arch/sh/include/asm/system_32.h | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/arch/sh/include/asm/system_32.h b/arch/sh/include/asm/system_32.h index f11bcf0855ed..a726d5d07277 100644 --- a/arch/sh/include/asm/system_32.h +++ b/arch/sh/include/asm/system_32.h | |||
@@ -58,7 +58,8 @@ do { \ | |||
58 | last = __last; \ | 58 | last = __last; \ |
59 | } while (0) | 59 | } while (0) |
60 | 60 | ||
61 | #define __uses_jump_to_uncached __attribute__ ((__section__ (".uncached.text"))) | 61 | #define __uses_jump_to_uncached \ |
62 | noinline __attribute__ ((__section__ (".uncached.text"))) | ||
62 | 63 | ||
63 | /* | 64 | /* |
64 | * Jump to uncached area. | 65 | * Jump to uncached area. |
@@ -96,7 +97,48 @@ do { \ | |||
96 | : "=&r" (__dummy)); \ | 97 | : "=&r" (__dummy)); \ |
97 | } while (0) | 98 | } while (0) |
98 | 99 | ||
100 | #ifdef CONFIG_CPU_HAS_SR_RB | ||
101 | #define lookup_exception_vector() \ | ||
102 | ({ \ | ||
103 | unsigned long _vec; \ | ||
104 | \ | ||
105 | __asm__ __volatile__ ( \ | ||
106 | "stc r2_bank, %0\n\t" \ | ||
107 | : "=r" (_vec) \ | ||
108 | ); \ | ||
109 | \ | ||
110 | _vec; \ | ||
111 | }) | ||
112 | #else | ||
113 | #define lookup_exception_vector() \ | ||
114 | ({ \ | ||
115 | unsigned long _vec; \ | ||
116 | __asm__ __volatile__ ( \ | ||
117 | "mov r4, %0\n\t" \ | ||
118 | : "=r" (_vec) \ | ||
119 | ); \ | ||
120 | \ | ||
121 | _vec; \ | ||
122 | }) | ||
123 | #endif | ||
124 | |||
99 | int handle_unaligned_access(opcode_t instruction, struct pt_regs *regs, | 125 | int handle_unaligned_access(opcode_t instruction, struct pt_regs *regs, |
100 | struct mem_access *ma); | 126 | struct mem_access *ma); |
101 | 127 | ||
128 | asmlinkage void do_address_error(struct pt_regs *regs, | ||
129 | unsigned long writeaccess, | ||
130 | unsigned long address); | ||
131 | asmlinkage void do_divide_error(unsigned long r4, unsigned long r5, | ||
132 | unsigned long r6, unsigned long r7, | ||
133 | struct pt_regs __regs); | ||
134 | asmlinkage void do_reserved_inst(unsigned long r4, unsigned long r5, | ||
135 | unsigned long r6, unsigned long r7, | ||
136 | struct pt_regs __regs); | ||
137 | asmlinkage void do_illegal_slot_inst(unsigned long r4, unsigned long r5, | ||
138 | unsigned long r6, unsigned long r7, | ||
139 | struct pt_regs __regs); | ||
140 | asmlinkage void do_exception_error(unsigned long r4, unsigned long r5, | ||
141 | unsigned long r6, unsigned long r7, | ||
142 | struct pt_regs __regs); | ||
143 | |||
102 | #endif /* __ASM_SH_SYSTEM_32_H */ | 144 | #endif /* __ASM_SH_SYSTEM_32_H */ |