Commit 14269828 authored by Matt Fleming's avatar Matt Fleming Committed by Paul Mundt

sh: Correct the offset of the return address in ret_from_exception

The address that ret_from_exception and ret_from_irq will return to is
found in the stack slot for SPC, not PR. This error was causing the
DWARF unwinder to pick up the wrong return address on the stack and then
unwind using the unwind tables for the wrong function.

While I'm here I might as well add CFI annotations for the other
registers since they could be useful when unwinding.
Signed-off-by: default avatarMatt Fleming <matt@console-pimps.org>
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 2c940db2
...@@ -70,8 +70,14 @@ ret_from_exception: ...@@ -70,8 +70,14 @@ ret_from_exception:
CFI_STARTPROC simple CFI_STARTPROC simple
CFI_DEF_CFA r14, 0 CFI_DEF_CFA r14, 0
CFI_REL_OFFSET 17, 64 CFI_REL_OFFSET 17, 64
CFI_REL_OFFSET 15, 0 CFI_REL_OFFSET 15, 60
CFI_REL_OFFSET 14, 56 CFI_REL_OFFSET 14, 56
CFI_REL_OFFSET 13, 52
CFI_REL_OFFSET 12, 48
CFI_REL_OFFSET 11, 44
CFI_REL_OFFSET 10, 40
CFI_REL_OFFSET 9, 36
CFI_REL_OFFSET 8, 32
preempt_stop() preempt_stop()
ENTRY(ret_from_irq) ENTRY(ret_from_irq)
! !
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment