diff options
author | David S. Miller <davem@davemloft.net> | 2008-04-29 05:38:50 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-04-29 05:38:50 -0400 |
commit | e2fdd7fd99dd68b77caaf2a2272b75b5da890de7 (patch) | |
tree | d2b6d3a9b50e4d2ced793430d2b1414f790666a3 /arch/sparc64/kernel/smp.c | |
parent | 4d7ffa49909a830f5f926a3280731d01e29f31fb (diff) |
sparc: Add kgdb support.
Current limitations:
1) On SMP single stepping has some fundamental issues,
shared with other sw single-step architectures such
as mips and arm.
2) On 32-bit sparc we don't support SMP kgdb yet. That
requires some reworking of the IPI mechanisms and
infrastructure on that platform.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/kernel/smp.c')
-rw-r--r-- | arch/sparc64/kernel/smp.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c index 409dd71f2738..8face0c49fef 100644 --- a/arch/sparc64/kernel/smp.c +++ b/arch/sparc64/kernel/smp.c | |||
@@ -910,6 +910,9 @@ extern unsigned long xcall_flush_tlb_kernel_range; | |||
910 | extern unsigned long xcall_report_regs; | 910 | extern unsigned long xcall_report_regs; |
911 | extern unsigned long xcall_receive_signal; | 911 | extern unsigned long xcall_receive_signal; |
912 | extern unsigned long xcall_new_mmu_context_version; | 912 | extern unsigned long xcall_new_mmu_context_version; |
913 | #ifdef CONFIG_KGDB | ||
914 | extern unsigned long xcall_kgdb_capture; | ||
915 | #endif | ||
913 | 916 | ||
914 | #ifdef DCACHE_ALIASING_POSSIBLE | 917 | #ifdef DCACHE_ALIASING_POSSIBLE |
915 | extern unsigned long xcall_flush_dcache_page_cheetah; | 918 | extern unsigned long xcall_flush_dcache_page_cheetah; |
@@ -1079,6 +1082,13 @@ void smp_new_mmu_context_version(void) | |||
1079 | smp_cross_call(&xcall_new_mmu_context_version, 0, 0, 0); | 1082 | smp_cross_call(&xcall_new_mmu_context_version, 0, 0, 0); |
1080 | } | 1083 | } |
1081 | 1084 | ||
1085 | #ifdef CONFIG_KGDB | ||
1086 | void kgdb_roundup_cpus(unsigned long flags) | ||
1087 | { | ||
1088 | smp_cross_call(&xcall_kgdb_capture, 0, 0, 0); | ||
1089 | } | ||
1090 | #endif | ||
1091 | |||
1082 | void smp_report_regs(void) | 1092 | void smp_report_regs(void) |
1083 | { | 1093 | { |
1084 | smp_cross_call(&xcall_report_regs, 0, 0, 0); | 1094 | smp_cross_call(&xcall_report_regs, 0, 0, 0); |