diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-09-01 04:45:35 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-09-01 04:45:35 -0400 |
commit | ade315d83c1d53b3c6b820134cb16601351810fe (patch) | |
tree | 19d528431ba57ba3f4d7593f3849007ef64d0163 | |
parent | 1e1030dccb1084c8a38976d3656aab1d50d762da (diff) |
sh: Kill off kgdb's magical NMI debouncing.
The kgdb stub has traditionally tied in to the NMI slot, and manually
handled debounce. Now that we have a generic way to do this instead, all
of the stub-specific debounce silliness can be killed off.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
-rw-r--r-- | arch/sh/include/asm/kgdb.h | 3 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh3/entry.S | 31 | ||||
-rw-r--r-- | arch/sh/kernel/kgdb.c | 2 |
3 files changed, 0 insertions, 36 deletions
diff --git a/arch/sh/include/asm/kgdb.h b/arch/sh/include/asm/kgdb.h index 72704ed725e5..4235e228d921 100644 --- a/arch/sh/include/asm/kgdb.h +++ b/arch/sh/include/asm/kgdb.h | |||
@@ -30,9 +30,6 @@ static inline void arch_kgdb_breakpoint(void) | |||
30 | __asm__ __volatile__ ("trapa #0x3c\n"); | 30 | __asm__ __volatile__ ("trapa #0x3c\n"); |
31 | } | 31 | } |
32 | 32 | ||
33 | /* State info */ | ||
34 | extern char in_nmi; /* Debounce flag to prevent NMI reentry*/ | ||
35 | |||
36 | #define BUFMAX 2048 | 33 | #define BUFMAX 2048 |
37 | 34 | ||
38 | #define CACHE_FLUSH_IS_SAFE 1 | 35 | #define CACHE_FLUSH_IS_SAFE 1 |
diff --git a/arch/sh/kernel/cpu/sh3/entry.S b/arch/sh/kernel/cpu/sh3/entry.S index d1142d365925..0151933e5253 100644 --- a/arch/sh/kernel/cpu/sh3/entry.S +++ b/arch/sh/kernel/cpu/sh3/entry.S | |||
@@ -53,10 +53,6 @@ | |||
53 | * syscall # | 53 | * syscall # |
54 | * | 54 | * |
55 | */ | 55 | */ |
56 | #if defined(CONFIG_KGDB) | ||
57 | NMI_VEC = 0x1c0 ! Must catch early for debounce | ||
58 | #endif | ||
59 | |||
60 | /* Offsets to the stack */ | 56 | /* Offsets to the stack */ |
61 | OFF_R0 = 0 /* Return value. New ABI also arg4 */ | 57 | OFF_R0 = 0 /* Return value. New ABI also arg4 */ |
62 | OFF_R1 = 4 /* New ABI: arg5 */ | 58 | OFF_R1 = 4 /* New ABI: arg5 */ |
@@ -71,7 +67,6 @@ OFF_PC = (16*4) | |||
71 | OFF_SR = (16*4+8) | 67 | OFF_SR = (16*4+8) |
72 | OFF_TRA = (16*4+6*4) | 68 | OFF_TRA = (16*4+6*4) |
73 | 69 | ||
74 | |||
75 | #define k0 r0 | 70 | #define k0 r0 |
76 | #define k1 r1 | 71 | #define k1 r1 |
77 | #define k2 r2 | 72 | #define k2 r2 |
@@ -281,21 +276,12 @@ restore_all: | |||
281 | 6: or k0, k2 ! Set the IMASK-bits | 276 | 6: or k0, k2 ! Set the IMASK-bits |
282 | ldc k2, ssr | 277 | ldc k2, ssr |
283 | ! | 278 | ! |
284 | #if defined(CONFIG_KGDB) | ||
285 | ! Clear in_nmi | ||
286 | mov.l 6f, k0 | ||
287 | mov #0, k1 | ||
288 | mov.b k1, @k0 | ||
289 | #endif | ||
290 | mov k4, r15 | 279 | mov k4, r15 |
291 | rte | 280 | rte |
292 | nop | 281 | nop |
293 | 282 | ||
294 | .align 2 | 283 | .align 2 |
295 | 5: .long 0x00001000 ! DSP | 284 | 5: .long 0x00001000 ! DSP |
296 | #ifdef CONFIG_KGDB | ||
297 | 6: .long in_nmi | ||
298 | #endif | ||
299 | 7: .long 0x30000000 | 285 | 7: .long 0x30000000 |
300 | 286 | ||
301 | ! common exception handler | 287 | ! common exception handler |
@@ -487,23 +473,6 @@ ENTRY(save_low_regs) | |||
487 | ! | 473 | ! |
488 | .balign 512,0,512 | 474 | .balign 512,0,512 |
489 | ENTRY(handle_interrupt) | 475 | ENTRY(handle_interrupt) |
490 | #if defined(CONFIG_KGDB) | ||
491 | mov.l 2f, k2 | ||
492 | ! Debounce (filter nested NMI) | ||
493 | mov.l @k2, k0 | ||
494 | mov.l 9f, k1 | ||
495 | cmp/eq k1, k0 | ||
496 | bf 11f | ||
497 | mov.l 10f, k1 | ||
498 | tas.b @k1 | ||
499 | bt 11f | ||
500 | rte | ||
501 | nop | ||
502 | .align 2 | ||
503 | 9: .long NMI_VEC | ||
504 | 10: .long in_nmi | ||
505 | 11: | ||
506 | #endif /* defined(CONFIG_KGDB) */ | ||
507 | sts pr, k3 ! save original pr value in k3 | 476 | sts pr, k3 ! save original pr value in k3 |
508 | mova exception_data, k0 | 477 | mova exception_data, k0 |
509 | 478 | ||
diff --git a/arch/sh/kernel/kgdb.c b/arch/sh/kernel/kgdb.c index d29de7864f32..3e532d0d4a5c 100644 --- a/arch/sh/kernel/kgdb.c +++ b/arch/sh/kernel/kgdb.c | |||
@@ -15,8 +15,6 @@ | |||
15 | #include <linux/io.h> | 15 | #include <linux/io.h> |
16 | #include <asm/cacheflush.h> | 16 | #include <asm/cacheflush.h> |
17 | 17 | ||
18 | char in_nmi = 0; /* Set during NMI to prevent re-entry */ | ||
19 | |||
20 | /* Macros for single step instruction identification */ | 18 | /* Macros for single step instruction identification */ |
21 | #define OPCODE_BT(op) (((op) & 0xff00) == 0x8900) | 19 | #define OPCODE_BT(op) (((op) & 0xff00) == 0x8900) |
22 | #define OPCODE_BF(op) (((op) & 0xff00) == 0x8b00) | 20 | #define OPCODE_BF(op) (((op) & 0xff00) == 0x8b00) |