X-Git-Url: http://git.monstr.eu/?a=blobdiff_plain;f=arch%2Floongarch%2Fkernel%2Ftraps.c;fp=arch%2Floongarch%2Fkernel%2Ftraps.c;h=8fb5e7a77145078ab3687d1e687ac00f01104663;hb=19bc6cb6409289106d38f9ad1b2ecf73980df6b5;hp=e56df45f720264e73c56a54f33d8c6cdabe2f62f;hpb=6e320363339b585a36bf40d74592db3db021e017;p=linux-2.6-microblaze.git diff --git a/arch/loongarch/kernel/traps.c b/arch/loongarch/kernel/traps.c index e56df45f7202..8fb5e7a77145 100644 --- a/arch/loongarch/kernel/traps.c +++ b/arch/loongarch/kernel/traps.c @@ -47,6 +47,7 @@ #include #include #include +#include #include "access-helper.h" @@ -689,7 +690,6 @@ asmlinkage void noinstr do_bp(struct pt_regs *regs) if (regs->csr_prmd & CSR_PRMD_PIE) local_irq_enable(); - current->thread.trap_nr = read_csr_excode(); if (__get_inst(&opcode, (u32 *)era, user)) goto out_sigsegv; @@ -711,18 +711,17 @@ asmlinkage void noinstr do_bp(struct pt_regs *regs) else break; case BRK_UPROBE_BP: - if (notify_die(DIE_UPROBE, "Uprobe", regs, bcode, - current->thread.trap_nr, SIGTRAP) == NOTIFY_STOP) + if (uprobe_breakpoint_handler(regs)) goto out; else break; case BRK_UPROBE_XOLBP: - if (notify_die(DIE_UPROBE_XOL, "Uprobe_XOL", regs, bcode, - current->thread.trap_nr, SIGTRAP) == NOTIFY_STOP) + if (uprobe_singlestep_handler(regs)) goto out; else break; default: + current->thread.trap_nr = read_csr_excode(); if (notify_die(DIE_TRAP, "Break", regs, bcode, current->thread.trap_nr, SIGTRAP) == NOTIFY_STOP) goto out;