path: root/lib/unwarminder
diff options
authorBoris Gjenero <>2013-05-23 19:31:33 -0400
committerBoris Gjenero <>2013-05-23 19:51:19 -0400
commit4077eac8398345d3500be794190eec83852135ba (patch)
tree6bd984a3cd967250b212b804c4e8b4d793b002df /lib/unwarminder
parent9b65f8e658768b14ae917341f57d774f729447fe (diff)
Fix return address when data_abort_handler skips faulting instruction.
When writing a value to PC, execution continues at that location, so subtracting 4 returns to the next instruction. Previously, two instructions after the faulting instruction were being skipped, causing safe_read functions to return true even if a data abort happened. Change-Id: I3fd02d54646323ea2050d0504e38f6d22f09c749
Diffstat (limited to 'lib/unwarminder')
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/unwarminder/safe_read.S b/lib/unwarminder/safe_read.S
index d18bf49c04..1969c7e0c6 100644
--- a/lib/unwarminder/safe_read.S
+++ b/lib/unwarminder/safe_read.S
@@ -137,6 +137,6 @@ data_abort_handler:
@ restore registers
ldmfd sp!, {r0-r1}
@ restore mode and jump back to the *next* instruction
- subs pc, lr, #-4
+ subs pc, lr, #4
.size data_abort_handler, . - data_abort_handler