aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc/kernel')
-rw-r--r--arch/sparc/kernel/entry.S10
-rw-r--r--arch/sparc/kernel/kernel.h1
-rw-r--r--arch/sparc/kernel/kgdb_32.c11
-rw-r--r--arch/sparc/kernel/setup_32.c4
4 files changed, 11 insertions, 15 deletions
diff --git a/arch/sparc/kernel/entry.S b/arch/sparc/kernel/entry.S
index 51aa6e86a5f8..07918ab3062e 100644
--- a/arch/sparc/kernel/entry.S
+++ b/arch/sparc/kernel/entry.S
@@ -1225,20 +1225,18 @@ breakpoint_trap:
1225 RESTORE_ALL 1225 RESTORE_ALL
1226 1226
1227#ifdef CONFIG_KGDB 1227#ifdef CONFIG_KGDB
1228 .align 4 1228 ENTRY(kgdb_trap_low)
1229 .globl kgdb_trap_low
1230 .type kgdb_trap_low,#function
1231kgdb_trap_low:
1232 rd %wim,%l3 1229 rd %wim,%l3
1233 SAVE_ALL 1230 SAVE_ALL
1234 wr %l0, PSR_ET, %psr 1231 wr %l0, PSR_ET, %psr
1235 WRITE_PAUSE 1232 WRITE_PAUSE
1236 1233
1234 mov %l7, %o0 ! trap_level
1237 call kgdb_trap 1235 call kgdb_trap
1238 add %sp, STACKFRAME_SZ, %o0 1236 add %sp, STACKFRAME_SZ, %o1 ! struct pt_regs *regs
1239 1237
1240 RESTORE_ALL 1238 RESTORE_ALL
1241 .size kgdb_trap_low,.-kgdb_trap_low 1239 ENDPROC(kgdb_trap_low)
1242#endif 1240#endif
1243 1241
1244 .align 4 1242 .align 4
diff --git a/arch/sparc/kernel/kernel.h b/arch/sparc/kernel/kernel.h
index 5057ec2e4af6..c9804551262c 100644
--- a/arch/sparc/kernel/kernel.h
+++ b/arch/sparc/kernel/kernel.h
@@ -127,6 +127,7 @@ extern unsigned int t_nmi[];
127extern unsigned int linux_trap_ipi15_sun4d[]; 127extern unsigned int linux_trap_ipi15_sun4d[];
128extern unsigned int linux_trap_ipi15_sun4m[]; 128extern unsigned int linux_trap_ipi15_sun4m[];
129 129
130extern struct tt_entry trapbase;
130extern struct tt_entry trapbase_cpu1; 131extern struct tt_entry trapbase_cpu1;
131extern struct tt_entry trapbase_cpu2; 132extern struct tt_entry trapbase_cpu2;
132extern struct tt_entry trapbase_cpu3; 133extern struct tt_entry trapbase_cpu3;
diff --git a/arch/sparc/kernel/kgdb_32.c b/arch/sparc/kernel/kgdb_32.c
index dcf210811af4..6e8e318c57be 100644
--- a/arch/sparc/kernel/kgdb_32.c
+++ b/arch/sparc/kernel/kgdb_32.c
@@ -12,7 +12,8 @@
12#include <asm/irq.h> 12#include <asm/irq.h>
13#include <asm/cacheflush.h> 13#include <asm/cacheflush.h>
14 14
15extern unsigned long trapbase; 15#include "kernel.h"
16#include "entry.h"
16 17
17void pt_regs_to_gdb_regs(unsigned long *gdb_regs, struct pt_regs *regs) 18void pt_regs_to_gdb_regs(unsigned long *gdb_regs, struct pt_regs *regs)
18{ 19{
@@ -133,21 +134,19 @@ int kgdb_arch_handle_exception(int e_vector, int signo, int err_code,
133 return -1; 134 return -1;
134} 135}
135 136
136extern void do_hw_interrupt(struct pt_regs *regs, unsigned long type); 137asmlinkage void kgdb_trap(unsigned long trap_level, struct pt_regs *regs)
137
138asmlinkage void kgdb_trap(struct pt_regs *regs)
139{ 138{
140 unsigned long flags; 139 unsigned long flags;
141 140
142 if (user_mode(regs)) { 141 if (user_mode(regs)) {
143 do_hw_interrupt(regs, 0xfd); 142 do_hw_interrupt(regs, trap_level);
144 return; 143 return;
145 } 144 }
146 145
147 flushw_all(); 146 flushw_all();
148 147
149 local_irq_save(flags); 148 local_irq_save(flags);
150 kgdb_handle_exception(0x172, SIGTRAP, 0, regs); 149 kgdb_handle_exception(trap_level, SIGTRAP, 0, regs);
151 local_irq_restore(flags); 150 local_irq_restore(flags);
152} 151}
153 152
diff --git a/arch/sparc/kernel/setup_32.c b/arch/sparc/kernel/setup_32.c
index 69d75ff1c25c..c4e65cb3280f 100644
--- a/arch/sparc/kernel/setup_32.c
+++ b/arch/sparc/kernel/setup_32.c
@@ -68,8 +68,6 @@ struct screen_info screen_info = {
68 * prints out pretty messages and returns. 68 * prints out pretty messages and returns.
69 */ 69 */
70 70
71extern unsigned long trapbase;
72
73/* Pretty sick eh? */ 71/* Pretty sick eh? */
74static void prom_sync_me(void) 72static void prom_sync_me(void)
75{ 73{
@@ -300,7 +298,7 @@ void __init setup_arch(char **cmdline_p)
300 int i; 298 int i;
301 unsigned long highest_paddr; 299 unsigned long highest_paddr;
302 300
303 sparc_ttable = (struct tt_entry *) &trapbase; 301 sparc_ttable = &trapbase;
304 302
305 /* Initialize PROM console and command line. */ 303 /* Initialize PROM console and command line. */
306 *cmdline_p = prom_getbootargs(); 304 *cmdline_p = prom_getbootargs();