I'm in the middle man for this discussion and apologize about the delay..
----------

On Thu, Sep 25, 2014 at 9:59 PM, Yvan Roux <[email protected]> wrote:

> Hi (sorry I was on a trip)
>
> >> This patch is needed for us in AARCH64 - Restore "x0" and "x1" registers
> >> because they contain exception pointer and selector.
>
> According to the unw_resume() description for local unwinding,
> restoring the machine state when no signal is involved only restore
> the callee-saved registers (r19..r28 for AArch64 + the link register
> r30).
>
> Can you give me more input here why it is needed ?
>
> Thanks,
> Yvan
>

unw_resume man page contains the following:

Most platforms reserve some registers to pass arguments to exception
handlers (e.g., IA-64 uses r15-r18 for this purpose). These registers are
normally treated like "scratch" registers. However, if libunwind is used to
set an exception argument register to a particular value (e.g., via
unw_set_reg()), then unw_resume() will install this value as the contents
of the register. In other words, the exception handling arguments are
installed even in cases where normally only the "preserved" registers are
restored.
_______________________________________________
Libunwind-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/libunwind-devel

Reply via email to