diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-30 08:46:16 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-30 08:46:16 -0700 |
commit | 7cece14acd063dd1c4e8933461d44ec6a5a5517b (patch) | |
tree | a7d2de4acaf64eed207ceab9eb6b2a386ebd7401 /arch/sparc64/mm | |
parent | 95dfec6ae1cb8c03406aac612a5642cbddb676b3 (diff) | |
parent | 8cd0ae3acc0154f3f9dfa1b4a2b7c02c271533f6 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
sparc64: remove duplicated include
sparc: Add kgdb support.
kgdbts: Sparc needs sstep emulation.
sparc32: Kill smp_message_pass() and related code.
sparc64: Kill PIL_RESERVED, unused.
sparc64: Split entry.S up into seperate files.
Diffstat (limited to 'arch/sparc64/mm')
-rw-r--r-- | arch/sparc64/mm/ultra.S | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/arch/sparc64/mm/ultra.S b/arch/sparc64/mm/ultra.S index e686a67561a..796e005dad8 100644 --- a/arch/sparc64/mm/ultra.S +++ b/arch/sparc64/mm/ultra.S @@ -676,6 +676,33 @@ xcall_new_mmu_context_version: wr %g0, (1 << PIL_SMP_CTX_NEW_VERSION), %set_softint retry +#ifdef CONFIG_KGDB + .globl xcall_kgdb_capture +xcall_kgdb_capture: +661: rdpr %pstate, %g2 + wrpr %g2, PSTATE_IG | PSTATE_AG, %pstate + .section .sun4v_2insn_patch, "ax" + .word 661b + nop + nop + .previous + + rdpr %pil, %g2 + wrpr %g0, 15, %pil + sethi %hi(109f), %g7 + ba,pt %xcc, etrap_irq +109: or %g7, %lo(109b), %g7 +#ifdef CONFIG_TRACE_IRQFLAGS + call trace_hardirqs_off + nop +#endif + call smp_kgdb_capture_client + add %sp, PTREGS_OFF, %o0 + /* Has to be a non-v9 branch due to the large distance. */ + ba rtrap_xcall + ldx [%sp + PTREGS_OFF + PT_V9_TSTATE], %l1 +#endif + #endif /* CONFIG_SMP */ |