|
@@ -56,12 +56,18 @@ struct fault_info {
|
|
};
|
|
};
|
|
|
|
|
|
static const struct fault_info fault_info[];
|
|
static const struct fault_info fault_info[];
|
|
|
|
+static struct fault_info debug_fault_info[];
|
|
|
|
|
|
static inline const struct fault_info *esr_to_fault_info(unsigned int esr)
|
|
static inline const struct fault_info *esr_to_fault_info(unsigned int esr)
|
|
{
|
|
{
|
|
return fault_info + (esr & ESR_ELx_FSC);
|
|
return fault_info + (esr & ESR_ELx_FSC);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static inline const struct fault_info *esr_to_debug_fault_info(unsigned int esr)
|
|
|
|
+{
|
|
|
|
+ return debug_fault_info + DBG_ESR_EVT(esr);
|
|
|
|
+}
|
|
|
|
+
|
|
#ifdef CONFIG_KPROBES
|
|
#ifdef CONFIG_KPROBES
|
|
static inline int notify_page_fault(struct pt_regs *regs, unsigned int esr)
|
|
static inline int notify_page_fault(struct pt_regs *regs, unsigned int esr)
|
|
{
|
|
{
|
|
@@ -830,7 +836,7 @@ asmlinkage int __exception do_debug_exception(unsigned long addr,
|
|
unsigned int esr,
|
|
unsigned int esr,
|
|
struct pt_regs *regs)
|
|
struct pt_regs *regs)
|
|
{
|
|
{
|
|
- const struct fault_info *inf = debug_fault_info + DBG_ESR_EVT(esr);
|
|
|
|
|
|
+ const struct fault_info *inf = esr_to_debug_fault_info(esr);
|
|
int rv;
|
|
int rv;
|
|
|
|
|
|
/*
|
|
/*
|