|
From: | C Bergström |
Subject: | Re: [Libunwind-devel] [PATCH] restore "x0" and "x1" registers |
Date: | Tue, 7 Oct 2014 12:18:45 +0700 |
Hi,
> I'd try to use ia64 and x86_64 as reference code on this topic.
> src/ia64/Gresume.c has some relevant comments on preserved vs scratch.
>
> My understanding of the aarch64 code is:
>
> (c->sigcontext_format == AARCH64_SCF_NONE) {
> // normal path
> } else {
> // exception handling path
> // eh_valid_mask is being looked at
> }
>
> What I'm not understanding is: how does the exception handling path
> end up with AARCH64_SCF_NONE?
what I did here is to use the same pattern as on the arm and sh port, to
handle cases without signals (when AARCH64_SCF_NONE is true) and with
signals, but I've handle exception argument passing only when signal are
involved which is an error. What I don't understand in the ia64 code (which
have almost the same structure) is: why in the non-signal path exception
arguments registers are always restored and not guarded by the test on
eh_valid_mask ?
Regarding the proposed patch, I think that it should handle registers
x0,x1,x2 and x3 and not only x0 and x1.
Yvan
[Prev in Thread] | Current Thread | [Next in Thread] |