summaryrefslogtreecommitdiffstats
path: root/arch/sparc/kernel/kgdb_64.c
diff options
context:
space:
mode:
authorKirill Tkhai <tkhai@yandex.ru>2013-09-14 14:02:11 +0200
committerDavid S. Miller <davem@davemloft.net>2013-11-14 23:57:21 +0100
commit812cb83a56a908729c453a7db3fb2c262119bc9d (patch)
tree3fdf3df047276db7de85558ff6caff006c3b1cc4 /arch/sparc/kernel/kgdb_64.c
parentsparc64: Add self-IPI support for smp_send_reschedule() (diff)
downloadlinux-812cb83a56a908729c453a7db3fb2c262119bc9d.tar.xz
linux-812cb83a56a908729c453a7db3fb2c262119bc9d.zip
sparc64: Implement HAVE_CONTEXT_TRACKING
Mark the places when the system are in user or are in kernel. This is used to make full dynticks system (tickless) -- CONFIG_NO_HZ_FULL dependence. Signed-off-by: Kirill Tkhai <tkhai@yandex.ru> CC: David Miller <davem@davemloft.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/kernel/kgdb_64.c')
-rw-r--r--arch/sparc/kernel/kgdb_64.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/sparc/kernel/kgdb_64.c b/arch/sparc/kernel/kgdb_64.c
index 53c0a82e6030..60b19f50c80a 100644
--- a/arch/sparc/kernel/kgdb_64.c
+++ b/arch/sparc/kernel/kgdb_64.c
@@ -159,11 +159,12 @@ int kgdb_arch_handle_exception(int e_vector, int signo, int err_code,
asmlinkage void kgdb_trap(unsigned long trap_level, struct pt_regs *regs)
{
+ enum ctx_state prev_state = exception_enter();
unsigned long flags;
if (user_mode(regs)) {
bad_trap(regs, trap_level);
- return;
+ goto out;
}
flushw_all();
@@ -171,6 +172,8 @@ asmlinkage void kgdb_trap(unsigned long trap_level, struct pt_regs *regs)
local_irq_save(flags);
kgdb_handle_exception(0x172, SIGTRAP, 0, regs);
local_irq_restore(flags);
+out:
+ exception_exit(prev_state);
}
int kgdb_arch_init(void)