summaryrefslogtreecommitdiff
path: root/drivers/watchdog
diff options
context:
space:
mode:
authorVineet Gupta <vgupta@synopsys.com>2013-10-10 19:33:57 +0530
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-10-18 07:45:45 -0700
commit4b3ea63f5af44f93bd28d94a93508bbd3186be89 (patch)
tree67c9f9eddaedff1df14eb08a9576e847a62697bc /drivers/watchdog
parent19a420033da02200c424adfa3a7b9eed6e3a6dc2 (diff)
downloadlinux-3.10-4b3ea63f5af44f93bd28d94a93508bbd3186be89.tar.gz
linux-3.10-4b3ea63f5af44f93bd28d94a93508bbd3186be89.tar.bz2
linux-3.10-4b3ea63f5af44f93bd28d94a93508bbd3186be89.zip
ARC: Ignore ptrace SETREGSET request for synthetic register "stop_pc"
commit 5b24282846c064ee90d40fcb3a8f63b8e754fd28 upstream. 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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/watchdog')
0 files changed, 0 insertions, 0 deletions