diff options
Diffstat (limited to 'arch/sh/include/asm')
-rw-r--r-- | arch/sh/include/asm/reboot.h | 21 | ||||
-rw-r--r-- | arch/sh/include/asm/system.h | 1 | ||||
-rw-r--r-- | arch/sh/include/asm/system_32.h | 12 | ||||
-rw-r--r-- | arch/sh/include/asm/system_64.h | 7 |
4 files changed, 41 insertions, 0 deletions
diff --git a/arch/sh/include/asm/reboot.h b/arch/sh/include/asm/reboot.h new file mode 100644 index 000000000000..b3da0c63fc3d --- /dev/null +++ b/arch/sh/include/asm/reboot.h | |||
@@ -0,0 +1,21 @@ | |||
1 | #ifndef __ASM_SH_REBOOT_H | ||
2 | #define __ASM_SH_REBOOT_H | ||
3 | |||
4 | #include <linux/kdebug.h> | ||
5 | |||
6 | struct pt_regs; | ||
7 | |||
8 | struct machine_ops { | ||
9 | void (*restart)(char *cmd); | ||
10 | void (*halt)(void); | ||
11 | void (*power_off)(void); | ||
12 | void (*shutdown)(void); | ||
13 | void (*crash_shutdown)(struct pt_regs *); | ||
14 | }; | ||
15 | |||
16 | extern struct machine_ops machine_ops; | ||
17 | |||
18 | /* arch/sh/kernel/machine_kexec.c */ | ||
19 | void native_machine_crash_shutdown(struct pt_regs *regs); | ||
20 | |||
21 | #endif /* __ASM_SH_REBOOT_H */ | ||
diff --git a/arch/sh/include/asm/system.h b/arch/sh/include/asm/system.h index 62e4fc1e4409..de2fc3963c12 100644 --- a/arch/sh/include/asm/system.h +++ b/arch/sh/include/asm/system.h | |||
@@ -143,6 +143,7 @@ extern struct dentry *sh_debugfs_root; | |||
143 | void per_cpu_trap_init(void); | 143 | void per_cpu_trap_init(void); |
144 | void default_idle(void); | 144 | void default_idle(void); |
145 | void cpu_idle_wait(void); | 145 | void cpu_idle_wait(void); |
146 | void stop_this_cpu(void *); | ||
146 | 147 | ||
147 | #ifdef CONFIG_SUPERH32 | 148 | #ifdef CONFIG_SUPERH32 |
148 | #define BUILD_TRAP_HANDLER(name) \ | 149 | #define BUILD_TRAP_HANDLER(name) \ |
diff --git a/arch/sh/include/asm/system_32.h b/arch/sh/include/asm/system_32.h index 06814f5b59c7..34bd2bac9a5f 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 | ||
@@ -216,6 +217,17 @@ static inline reg_size_t register_align(void *val) | |||
216 | int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs, | 217 | int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs, |
217 | struct mem_access *ma, int); | 218 | struct mem_access *ma, int); |
218 | 219 | ||
220 | static inline void trigger_address_error(void) | ||
221 | { | ||
222 | if (__in_29bit_mode()) | ||
223 | __asm__ __volatile__ ( | ||
224 | "ldc %0, sr\n\t" | ||
225 | "mov.l @%1, %0" | ||
226 | : | ||
227 | : "r" (0x10000000), "r" (0x80000001) | ||
228 | ); | ||
229 | } | ||
230 | |||
219 | asmlinkage void do_address_error(struct pt_regs *regs, | 231 | asmlinkage void do_address_error(struct pt_regs *regs, |
220 | unsigned long writeaccess, | 232 | unsigned long writeaccess, |
221 | unsigned long address); | 233 | unsigned long address); |
diff --git a/arch/sh/include/asm/system_64.h b/arch/sh/include/asm/system_64.h index ab1dd917ea87..604ba7802cc2 100644 --- a/arch/sh/include/asm/system_64.h +++ b/arch/sh/include/asm/system_64.h | |||
@@ -48,6 +48,13 @@ static inline reg_size_t register_align(void *val) | |||
48 | return (unsigned long long)(signed long long)(signed long)val; | 48 | return (unsigned long long)(signed long long)(signed long)val; |
49 | } | 49 | } |
50 | 50 | ||
51 | extern void phys_stext(void); | ||
52 | |||
53 | static inline void trigger_address_error(void) | ||
54 | { | ||
55 | phys_stext(); | ||
56 | } | ||
57 | |||
51 | #define SR_BL_LL 0x0000000010000000LL | 58 | #define SR_BL_LL 0x0000000010000000LL |
52 | 59 | ||
53 | static inline void set_bl_bit(void) | 60 | static inline void set_bl_bit(void) |