/* DWARF2 EH unwinding support for C-SKY Linux.
- Copyright (C) 2018 Free Software Foundation, Inc.
+ Copyright (C) 2018-2024 Free Software Foundation, Inc.
Contributed by C-SKY Microsystems and Mentor Graphics.
This file is part of GCC.
#define MOVI_R7_139_V2_PART0 0xea07
#define MOVI_R7_139_V2_PART1 139
-#define sc_pt_regs(x) (sc->sc_##x)
-#define sc_pt_regs_lr (sc->sc_r15)
-#define sc_pt_regs_tls(x) (sc->sc_exregs[15])
+#define sc_pt_regs(x) (sc->sc_pt_regs.x)
+#define sc_pt_regs_lr (sc->sc_pt_regs.lr)
+#define sc_pt_regs_tls(x) sc_pt_regs(x)
#define MD_FALLBACK_FRAME_STATE_FOR csky_fallback_frame_state
siginfo_t info;
ucontext_t uc;
} *_rt = context->cfa;
- sc = &(_rt->uc.uc_mcontext);
+ sc = (struct sigcontext *) &(_rt->uc.uc_mcontext);
}
else
return _URC_END_OF_STACK;
fs->regs.cfa_reg = STACK_POINTER_REGNUM;
fs->regs.cfa_offset = new_cfa - (_Unwind_Ptr) context->cfa;
- fs->regs.reg[0].how = REG_SAVED_OFFSET;
+ fs->regs.how[0] = REG_SAVED_OFFSET;
fs->regs.reg[0].loc.offset = (_Unwind_Ptr) & sc_pt_regs (a0) - new_cfa;
- fs->regs.reg[1].how = REG_SAVED_OFFSET;
+ fs->regs.how[1] = REG_SAVED_OFFSET;
fs->regs.reg[1].loc.offset = (_Unwind_Ptr) & sc_pt_regs (a1) - new_cfa;
- fs->regs.reg[2].how = REG_SAVED_OFFSET;
+ fs->regs.how[2] = REG_SAVED_OFFSET;
fs->regs.reg[2].loc.offset = (_Unwind_Ptr) & sc_pt_regs (a2) - new_cfa;
- fs->regs.reg[3].how = REG_SAVED_OFFSET;
+ fs->regs.how[3] = REG_SAVED_OFFSET;
fs->regs.reg[3].loc.offset = (_Unwind_Ptr) & sc_pt_regs (a3) - new_cfa;
for (i = 4; i < 14; i++)
{
- fs->regs.reg[i].how = REG_SAVED_OFFSET;
+ fs->regs.how[i] = REG_SAVED_OFFSET;
fs->regs.reg[i].loc.offset =
(_Unwind_Ptr) & sc_pt_regs (regs[i - 4]) - new_cfa;
}
for (i = 16; i < 31; i++)
{
- fs->regs.reg[i].how = REG_SAVED_OFFSET;
+ fs->regs.how[i] = REG_SAVED_OFFSET;
fs->regs.reg[i].loc.offset =
(_Unwind_Ptr) & sc_pt_regs (exregs[i - 16]) - new_cfa;
}
fs->regs.reg[31].loc.offset =
(_Unwind_Ptr) & sc_pt_regs_tls (tls) - new_cfa;
/* FIXME : hi lo ? */
- fs->regs.reg[15].how = REG_SAVED_OFFSET;
+ fs->regs.how[15] = REG_SAVED_OFFSET;
fs->regs.reg[15].loc.offset = (_Unwind_Ptr) & sc_pt_regs_lr - new_cfa;
- fs->regs.reg[32].how = REG_SAVED_OFFSET;
+ fs->regs.how[32] = REG_SAVED_OFFSET;
fs->regs.reg[32].loc.offset = (_Unwind_Ptr) & sc_pt_regs (pc) - new_cfa;
fs->retaddr_column = 32;
fs->signal_frame = 1;