powerpc/booke: Fix xmon single step on PowerPC Book-E
Prior to the arch/ppc -> arch/powerpc transition, xmon had support for single stepping on 4xx boards. The functionality was lost when arch/ppc was removed. This patch restores single step support for 44x boards, and Book-E in general. Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
Родитель
348aa30300
Коммит
cdd3904dcc
|
@ -517,6 +517,15 @@ static int xmon_core(struct pt_regs *regs, int fromipi)
|
|||
in_xmon = 0;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BOOKE
|
||||
if (regs->msr & MSR_DE) {
|
||||
bp = at_breakpoint(regs->nip);
|
||||
if (bp != NULL) {
|
||||
regs->nip = (unsigned long) &bp->instr[0];
|
||||
atomic_inc(&bp->ref_count);
|
||||
}
|
||||
}
|
||||
#else
|
||||
if ((regs->msr & (MSR_IR|MSR_PR|MSR_SF)) == (MSR_IR|MSR_SF)) {
|
||||
bp = at_breakpoint(regs->nip);
|
||||
if (bp != NULL) {
|
||||
|
@ -530,7 +539,7 @@ static int xmon_core(struct pt_regs *regs, int fromipi)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
insert_cpu_bpts();
|
||||
|
||||
local_irq_restore(flags);
|
||||
|
@ -894,6 +903,14 @@ cmds(struct pt_regs *excp)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BOOKE
|
||||
static int do_step(struct pt_regs *regs)
|
||||
{
|
||||
regs->msr |= MSR_DE;
|
||||
mtspr(SPRN_DBCR0, mfspr(SPRN_DBCR0) | DBCR0_IC | DBCR0_IDM);
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
/*
|
||||
* Step a single instruction.
|
||||
* Some instructions we emulate, others we execute with MSR_SE set.
|
||||
|
@ -924,6 +941,7 @@ static int do_step(struct pt_regs *regs)
|
|||
regs->msr |= MSR_SE;
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void bootcmds(void)
|
||||
{
|
||||
|
|
Загрузка…
Ссылка в новой задаче