mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2025-01-11 11:33:43 +01:00
(ia64_local_resume): Use rbs_cover_and_flush() to linearize the contents of the
current register frame before resuming execution. Drop loadrs argument from call to _Uia64_install_context(). (Logical change 1.47)
This commit is contained in:
parent
03f6e9b004
commit
02c8c0cdae
1 changed files with 4 additions and 7 deletions
|
@ -34,7 +34,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
|||
HIDDEN inline int
|
||||
ia64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg)
|
||||
{
|
||||
unw_word_t val, sol, sof, pri_unat, loadrs, n, bspstore, pfs;
|
||||
unw_word_t val, sol, sof, pri_unat, loadrs, n, pfs;
|
||||
struct cursor *c = (struct cursor *) cursor;
|
||||
struct
|
||||
{
|
||||
|
@ -105,9 +105,7 @@ ia64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg)
|
|||
c->psp = (c->sigcontext_loc - c->sigcontext_off);
|
||||
|
||||
sof = (c->cfm & 0x7f);
|
||||
bspstore = c->bsp;
|
||||
c->bsp = ia64_rse_skip_regs (bspstore, sof);
|
||||
loadrs = 0;
|
||||
rbs_cover_and_flush (c, sof);
|
||||
|
||||
sc->sc_ip = c->ip;
|
||||
sc->sc_cfm = c->cfm & (((unw_word_t) 1 << 38) - 1);
|
||||
|
@ -130,8 +128,7 @@ ia64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg)
|
|||
if ((ret = ia64_get (c, c->pfs_loc, &pfs)) < 0)
|
||||
return ret;
|
||||
sol = (pfs >> 7) & 0x7f;
|
||||
c->bsp = ia64_rse_skip_regs (c->bsp, sol);
|
||||
loadrs = 0;
|
||||
rbs_cover_and_flush (c, sol);
|
||||
|
||||
extra.r1 = c->pi.gp;
|
||||
extra.r15 = c->eh_args[0];
|
||||
|
@ -139,7 +136,7 @@ ia64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg)
|
|||
extra.r17 = c->eh_args[2];
|
||||
extra.r18 = c->eh_args[3];
|
||||
}
|
||||
_Uia64_install_context (c, pri_unat, (unw_word_t *) &extra, loadrs);
|
||||
_Uia64_install_context (c, pri_unat, (unw_word_t *) &extra);
|
||||
}
|
||||
|
||||
#endif /* !UNW_REMOTE_ONLY */
|
||||
|
|
Loading…
Reference in a new issue