Skip to content

Commit

Permalink
Blackfin: kgdb: disable preempt schedule when running single step in …
Browse files Browse the repository at this point in the history
…kgdb

Otherwise, gdb continue operation after a breakpoint is hit may trap
into endless breakpoint.

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
  • Loading branch information
Sonic Zhang authored and Mike Frysinger committed Jan 10, 2011
1 parent 900de05 commit b68233e
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion arch/blackfin/kernel/kgdb.c
Original file line number Diff line number Diff line change
Expand Up @@ -347,15 +347,20 @@ void kgdb_roundup_cpu(int cpu, unsigned long flags)

#ifdef CONFIG_IPIPE
static unsigned long kgdb_arch_imask;
#endif

void kgdb_post_primary_code(struct pt_regs *regs, int e_vector, int err_code)
{
if (kgdb_single_step)
preempt_enable();

#ifdef CONFIG_IPIPE
if (kgdb_arch_imask) {
cpu_pda[raw_smp_processor_id()].ex_imask = kgdb_arch_imask;
kgdb_arch_imask = 0;
}
}
#endif
}

int kgdb_arch_handle_exception(int vector, int signo,
int err_code, char *remcom_in_buffer,
Expand Down Expand Up @@ -401,6 +406,7 @@ int kgdb_arch_handle_exception(int vector, int signo,
*/
kgdb_single_step = i + 1;

preempt_disable();
#ifdef CONFIG_IPIPE
kgdb_arch_imask = cpu_pda[raw_smp_processor_id()].ex_imask;
cpu_pda[raw_smp_processor_id()].ex_imask = 0;
Expand Down

0 comments on commit b68233e

Please sign in to comment.