debug_core,x86,blackfin: Clean up hw debug disable API
The kgdb_disable_hw_debug() was an architecture specific function for disabling all hardware breakpoints on a per cpu basis when entering the debug core. This patch will remove the weak function kdbg_disable_hw_debug() and change it into a call back which lives with the rest of hw breakpoint call backs in struct kgdb_arch. Signed-off-by: Dongdong Deng <dongdong.deng@windriver.com> Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
This commit is contained in:
parent
578bd4dfcd
commit
d7ba979d45
|
@ -320,7 +320,7 @@ static void bfin_correct_hw_break(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void kgdb_disable_hw_debug(struct pt_regs *regs)
|
static void bfin_disable_hw_debug(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
/* Disable hardware debugging while we are in kgdb */
|
/* Disable hardware debugging while we are in kgdb */
|
||||||
bfin_write_WPIACTL(0);
|
bfin_write_WPIACTL(0);
|
||||||
|
@ -406,6 +406,7 @@ struct kgdb_arch arch_kgdb_ops = {
|
||||||
#endif
|
#endif
|
||||||
.set_hw_breakpoint = bfin_set_hw_break,
|
.set_hw_breakpoint = bfin_set_hw_break,
|
||||||
.remove_hw_breakpoint = bfin_remove_hw_break,
|
.remove_hw_breakpoint = bfin_remove_hw_break,
|
||||||
|
.disable_hw_break = bfin_disable_hw_debug,
|
||||||
.remove_all_hw_break = bfin_remove_all_hw_break,
|
.remove_all_hw_break = bfin_remove_all_hw_break,
|
||||||
.correct_hw_break = bfin_correct_hw_break,
|
.correct_hw_break = bfin_correct_hw_break,
|
||||||
};
|
};
|
||||||
|
|
|
@ -387,7 +387,7 @@ kgdb_set_hw_break(unsigned long addr, int len, enum kgdb_bptype bptype)
|
||||||
* disable hardware debugging while it is processing gdb packets or
|
* disable hardware debugging while it is processing gdb packets or
|
||||||
* handling exception.
|
* handling exception.
|
||||||
*/
|
*/
|
||||||
void kgdb_disable_hw_debug(struct pt_regs *regs)
|
static void kgdb_disable_hw_debug(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int cpu = raw_smp_processor_id();
|
int cpu = raw_smp_processor_id();
|
||||||
|
@ -724,6 +724,7 @@ struct kgdb_arch arch_kgdb_ops = {
|
||||||
.flags = KGDB_HW_BREAKPOINT,
|
.flags = KGDB_HW_BREAKPOINT,
|
||||||
.set_hw_breakpoint = kgdb_set_hw_break,
|
.set_hw_breakpoint = kgdb_set_hw_break,
|
||||||
.remove_hw_breakpoint = kgdb_remove_hw_break,
|
.remove_hw_breakpoint = kgdb_remove_hw_break,
|
||||||
|
.disable_hw_break = kgdb_disable_hw_debug,
|
||||||
.remove_all_hw_break = kgdb_remove_all_hw_break,
|
.remove_all_hw_break = kgdb_remove_all_hw_break,
|
||||||
.correct_hw_break = kgdb_correct_hw_break,
|
.correct_hw_break = kgdb_correct_hw_break,
|
||||||
};
|
};
|
||||||
|
|
|
@ -35,16 +35,6 @@ struct pt_regs;
|
||||||
*/
|
*/
|
||||||
extern int kgdb_skipexception(int exception, struct pt_regs *regs);
|
extern int kgdb_skipexception(int exception, struct pt_regs *regs);
|
||||||
|
|
||||||
/**
|
|
||||||
* kgdb_disable_hw_debug - (optional) Disable hardware debugging hook
|
|
||||||
* @regs: Current &struct pt_regs.
|
|
||||||
*
|
|
||||||
* This function will be called if the particular architecture must
|
|
||||||
* disable hardware debugging while it is processing gdb packets or
|
|
||||||
* handling exception.
|
|
||||||
*/
|
|
||||||
extern void kgdb_disable_hw_debug(struct pt_regs *regs);
|
|
||||||
|
|
||||||
struct tasklet_struct;
|
struct tasklet_struct;
|
||||||
struct task_struct;
|
struct task_struct;
|
||||||
struct uart_port;
|
struct uart_port;
|
||||||
|
@ -243,6 +233,8 @@ extern void kgdb_arch_late(void);
|
||||||
* breakpoint.
|
* breakpoint.
|
||||||
* @remove_hw_breakpoint: Allow an architecture to specify how to remove a
|
* @remove_hw_breakpoint: Allow an architecture to specify how to remove a
|
||||||
* hardware breakpoint.
|
* hardware breakpoint.
|
||||||
|
* @disable_hw_break: Allow an architecture to specify how to disable
|
||||||
|
* hardware breakpoints for a single cpu.
|
||||||
* @remove_all_hw_break: Allow an architecture to specify how to remove all
|
* @remove_all_hw_break: Allow an architecture to specify how to remove all
|
||||||
* hardware breakpoints.
|
* hardware breakpoints.
|
||||||
* @correct_hw_break: Allow an architecture to specify how to correct the
|
* @correct_hw_break: Allow an architecture to specify how to correct the
|
||||||
|
@ -256,6 +248,7 @@ struct kgdb_arch {
|
||||||
int (*remove_breakpoint)(unsigned long, char *);
|
int (*remove_breakpoint)(unsigned long, char *);
|
||||||
int (*set_hw_breakpoint)(unsigned long, int, enum kgdb_bptype);
|
int (*set_hw_breakpoint)(unsigned long, int, enum kgdb_bptype);
|
||||||
int (*remove_hw_breakpoint)(unsigned long, int, enum kgdb_bptype);
|
int (*remove_hw_breakpoint)(unsigned long, int, enum kgdb_bptype);
|
||||||
|
void (*disable_hw_break)(struct pt_regs *regs);
|
||||||
void (*remove_all_hw_break)(void);
|
void (*remove_all_hw_break)(void);
|
||||||
void (*correct_hw_break)(void);
|
void (*correct_hw_break)(void);
|
||||||
};
|
};
|
||||||
|
|
|
@ -209,18 +209,6 @@ int __weak kgdb_skipexception(int exception, struct pt_regs *regs)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* kgdb_disable_hw_debug - Disable hardware debugging while we in kgdb.
|
|
||||||
* @regs: Current &struct pt_regs.
|
|
||||||
*
|
|
||||||
* This function will be called if the particular architecture must
|
|
||||||
* disable hardware debugging while it is processing gdb packets or
|
|
||||||
* handling exception.
|
|
||||||
*/
|
|
||||||
void __weak kgdb_disable_hw_debug(struct pt_regs *regs)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Some architectures need cache flushes when we set/clear a
|
* Some architectures need cache flushes when we set/clear a
|
||||||
* breakpoint:
|
* breakpoint:
|
||||||
|
@ -484,7 +472,9 @@ static int kgdb_cpu_enter(struct kgdb_state *ks, struct pt_regs *regs,
|
||||||
atomic_inc(&masters_in_kgdb);
|
atomic_inc(&masters_in_kgdb);
|
||||||
else
|
else
|
||||||
atomic_inc(&slaves_in_kgdb);
|
atomic_inc(&slaves_in_kgdb);
|
||||||
kgdb_disable_hw_debug(ks->linux_regs);
|
|
||||||
|
if (arch_kgdb_ops.disable_hw_break)
|
||||||
|
arch_kgdb_ops.disable_hw_break(regs);
|
||||||
|
|
||||||
acquirelock:
|
acquirelock:
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue