Skip to content

Commit

Permalink
arm,kgdb: Add ability to trap into debugger on notify_die
Browse files Browse the repository at this point in the history
Now that ARM implements the notify die handlers, add the ability for
the kernel debugger to receive the notifications.

Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
CC: Russell King <linux@arm.linux.org.uk>
CC: linux-arm-kernel@lists.infradead.org
  • Loading branch information
Jason Wessel committed Aug 5, 2010
1 parent 6d855b1 commit 62a0309
Showing 1 changed file with 34 additions and 0 deletions.
34 changes: 34 additions & 0 deletions arch/arm/kernel/kgdb.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
* Deepak Saxena <dsaxena@plexity.net>
*/
#include <linux/irq.h>
#include <linux/kdebug.h>
#include <linux/kgdb.h>
#include <asm/traps.h>

Expand Down Expand Up @@ -180,6 +181,33 @@ void kgdb_roundup_cpus(unsigned long flags)
local_irq_disable();
}

static int __kgdb_notify(struct die_args *args, unsigned long cmd)
{
struct pt_regs *regs = args->regs;

if (kgdb_handle_exception(1, args->signr, cmd, regs))
return NOTIFY_DONE;
return NOTIFY_STOP;
}
static int
kgdb_notify(struct notifier_block *self, unsigned long cmd, void *ptr)
{
unsigned long flags;
int ret;

local_irq_save(flags);
ret = __kgdb_notify(ptr, cmd);
local_irq_restore(flags);

return ret;
}

static struct notifier_block kgdb_notifier = {
.notifier_call = kgdb_notify,
.priority = -INT_MAX,
};


/**
* kgdb_arch_init - Perform any architecture specific initalization.
*
Expand All @@ -188,6 +216,11 @@ void kgdb_roundup_cpus(unsigned long flags)
*/
int kgdb_arch_init(void)
{
int ret = register_die_notifier(&kgdb_notifier);

if (ret != 0)
return ret;

register_undef_hook(&kgdb_brkpt_hook);
register_undef_hook(&kgdb_compiled_brkpt_hook);

Expand All @@ -204,6 +237,7 @@ void kgdb_arch_exit(void)
{
unregister_undef_hook(&kgdb_brkpt_hook);
unregister_undef_hook(&kgdb_compiled_brkpt_hook);
unregister_die_notifier(&kgdb_notifier);
}

/*
Expand Down

0 comments on commit 62a0309

Please sign in to comment.