forked from luck/tmp_suning_uos_patched
5b24282846
ARCompact TRAP_S insn used for breakpoints, commits before exception is taken (updating architectural PC). So ptregs->ret contains next-PC and not the breakpoint PC itself. This is different from other restartable exceptions such as TLB Miss where ptregs->ret has exact faulting PC. gdb needs to know exact-PC hence ARC ptrace GETREGSET provides for @stop_pc which returns ptregs->ret vs. EFA depending on the situation. However, writing stop_pc (SETREGSET request), which updates ptregs->ret doesn't makes sense stop_pc doesn't always correspond to that reg as described above. This was not an issue so far since user_regs->ret / user_regs->stop_pc had same value and both writing to ptregs->ret was OK, needless, but NOT broken, hence not observed. With gdb "jump", they diverge, and user_regs->ret updating ptregs is overwritten immediately with stop_pc, which this patch fixes. Reported-by: Anton Kolesov <akolesov@synopsys.com> Signed-off-by: Vineet Gupta <vgupta@synopsys.com> |
||
---|---|---|
.. | ||
.gitignore | ||
arc_hostlink.c | ||
arcksyms.c | ||
asm-offsets.c | ||
clk.c | ||
ctx_sw_asm.S | ||
ctx_sw.c | ||
devtree.c | ||
disasm.c | ||
entry.S | ||
fpu.c | ||
head.S | ||
irq.c | ||
kgdb.c | ||
kprobes.c | ||
Makefile | ||
module.c | ||
process.c | ||
ptrace.c | ||
reset.c | ||
setup.c | ||
signal.c | ||
smp.c | ||
stacktrace.c | ||
sys.c | ||
time.c | ||
traps.c | ||
troubleshoot.c | ||
unaligned.c | ||
unwind.c | ||
vmlinux.lds.S |