powerpc/booke: Introduce new CONFIG options for advanced debug registers
powerpc/booke: Introduce new CONFIG options for advanced debug registers From: Dave Kleikamp <shaggy@linux.vnet.ibm.com> Introduce new config options to simplify the ifdefs pertaining to the advanced debug registers for booke and 40x processors: CONFIG_PPC_ADV_DEBUG_REGS - boolean: true for dac-based processors CONFIG_PPC_ADV_DEBUG_IACS - number of IAC registers CONFIG_PPC_ADV_DEBUG_DACS - number of DAC registers CONFIG_PPC_ADV_DEBUG_DVCS - number of DVC registers CONFIG_PPC_ADV_DEBUG_DAC_RANGE - DAC ranges supported Beginning conservatively, since I only have the facilities to test 440 hardware. I believe all 40x and booke platforms support at least 2 IAC and 2 DAC registers. For 440, 4 IAC and 2 DVC registers are enabled, as well as the DAC ranges. Signed-off-by: Dave Kleikamp <shaggy@linux.vnet.ibm.com> Acked-by: David Gibson <dwg@au1.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
committed by
Benjamin Herrenschmidt
parent
789c299ca2
commit
172ae2e7f8
@@ -1078,7 +1078,7 @@ int sys_debug_setcontext(struct ucontext __user *ctx,
|
||||
int i;
|
||||
unsigned char tmp;
|
||||
unsigned long new_msr = regs->msr;
|
||||
#if defined(CONFIG_4xx) || defined(CONFIG_BOOKE)
|
||||
#ifdef CONFIG_PPC_ADV_DEBUG_REGS
|
||||
unsigned long new_dbcr0 = current->thread.dbcr0;
|
||||
#endif
|
||||
|
||||
@@ -1087,7 +1087,7 @@ int sys_debug_setcontext(struct ucontext __user *ctx,
|
||||
return -EFAULT;
|
||||
switch (op.dbg_type) {
|
||||
case SIG_DBG_SINGLE_STEPPING:
|
||||
#if defined(CONFIG_4xx) || defined(CONFIG_BOOKE)
|
||||
#ifdef CONFIG_PPC_ADV_DEBUG_REGS
|
||||
if (op.dbg_value) {
|
||||
new_msr |= MSR_DE;
|
||||
new_dbcr0 |= (DBCR0_IDM | DBCR0_IC);
|
||||
@@ -1103,7 +1103,7 @@ int sys_debug_setcontext(struct ucontext __user *ctx,
|
||||
#endif
|
||||
break;
|
||||
case SIG_DBG_BRANCH_TRACING:
|
||||
#if defined(CONFIG_4xx) || defined(CONFIG_BOOKE)
|
||||
#ifdef CONFIG_PPC_ADV_DEBUG_REGS
|
||||
return -EINVAL;
|
||||
#else
|
||||
if (op.dbg_value)
|
||||
@@ -1124,7 +1124,7 @@ int sys_debug_setcontext(struct ucontext __user *ctx,
|
||||
failure is a problem, anyway, and it's very unlikely unless
|
||||
the user is really doing something wrong. */
|
||||
regs->msr = new_msr;
|
||||
#if defined(CONFIG_4xx) || defined(CONFIG_BOOKE)
|
||||
#ifdef CONFIG_PPC_ADV_DEBUG_REGS
|
||||
current->thread.dbcr0 = new_dbcr0;
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user