diff options
Diffstat (limited to 'arch/sh/include/asm/system_32.h')
-rw-r--r-- | arch/sh/include/asm/system_32.h | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/arch/sh/include/asm/system_32.h b/arch/sh/include/asm/system_32.h index 06814f5b59c..51296b36770 100644 --- a/arch/sh/include/asm/system_32.h +++ b/arch/sh/include/asm/system_32.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define __ASM_SH_SYSTEM_32_H | 2 | #define __ASM_SH_SYSTEM_32_H |
3 | 3 | ||
4 | #include <linux/types.h> | 4 | #include <linux/types.h> |
5 | #include <asm/mmu.h> | ||
5 | 6 | ||
6 | #ifdef CONFIG_SH_DSP | 7 | #ifdef CONFIG_SH_DSP |
7 | 8 | ||
@@ -144,9 +145,6 @@ do { \ | |||
144 | __restore_dsp(prev); \ | 145 | __restore_dsp(prev); \ |
145 | } while (0) | 146 | } while (0) |
146 | 147 | ||
147 | #define __uses_jump_to_uncached \ | ||
148 | noinline __attribute__ ((__section__ (".uncached.text"))) | ||
149 | |||
150 | /* | 148 | /* |
151 | * Jump to uncached area. | 149 | * Jump to uncached area. |
152 | * When handling TLB or caches, we need to do it from an uncached area. | 150 | * When handling TLB or caches, we need to do it from an uncached area. |
@@ -216,6 +214,17 @@ static inline reg_size_t register_align(void *val) | |||
216 | int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs, | 214 | int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs, |
217 | struct mem_access *ma, int); | 215 | struct mem_access *ma, int); |
218 | 216 | ||
217 | static inline void trigger_address_error(void) | ||
218 | { | ||
219 | if (__in_29bit_mode()) | ||
220 | __asm__ __volatile__ ( | ||
221 | "ldc %0, sr\n\t" | ||
222 | "mov.l @%1, %0" | ||
223 | : | ||
224 | : "r" (0x10000000), "r" (0x80000001) | ||
225 | ); | ||
226 | } | ||
227 | |||
219 | asmlinkage void do_address_error(struct pt_regs *regs, | 228 | asmlinkage void do_address_error(struct pt_regs *regs, |
220 | unsigned long writeaccess, | 229 | unsigned long writeaccess, |
221 | unsigned long address); | 230 | unsigned long address); |