aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/smp.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2008-04-29 05:38:50 -0400
committerDavid S. Miller <davem@davemloft.net>2008-04-29 05:38:50 -0400
commite2fdd7fd99dd68b77caaf2a2272b75b5da890de7 (patch)
treed2b6d3a9b50e4d2ced793430d2b1414f790666a3 /arch/sparc64/kernel/smp.c
parent4d7ffa49909a830f5f926a3280731d01e29f31fb (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.c10
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;
910extern unsigned long xcall_report_regs; 910extern unsigned long xcall_report_regs;
911extern unsigned long xcall_receive_signal; 911extern unsigned long xcall_receive_signal;
912extern unsigned long xcall_new_mmu_context_version; 912extern unsigned long xcall_new_mmu_context_version;
913#ifdef CONFIG_KGDB
914extern unsigned long xcall_kgdb_capture;
915#endif
913 916
914#ifdef DCACHE_ALIASING_POSSIBLE 917#ifdef DCACHE_ALIASING_POSSIBLE
915extern unsigned long xcall_flush_dcache_page_cheetah; 918extern 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
1086void kgdb_roundup_cpus(unsigned long flags)
1087{
1088 smp_cross_call(&xcall_kgdb_capture, 0, 0, 0);
1089}
1090#endif
1091
1082void smp_report_regs(void) 1092void 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);