int restore_gpregs(struct rt_sigframe *f, UserRegsEntry *r) { #define CPREG1(d) f->uc.uc_mcontext.d = r->d int i; for (i = 0; i < 31; ++i) CPREG1(regs[i]); CPREG1(sp); CPREG1(pc); CPREG1(pstate); #undef CPREG1 return 0; }
int restore_gpregs(struct rt_sigframe *f, UserX86RegsEntry *r) { #define CPREG1(d) f->uc.uc_mcontext.d = r->d #define CPREG2(d, s) f->uc.uc_mcontext.d = r->s #ifdef CONFIG_X86_64 CPREG1(r8); CPREG1(r9); CPREG1(r10); CPREG1(r11); CPREG1(r12); CPREG1(r13); CPREG1(r14); CPREG1(r15); #endif CPREG2(rdi, di); CPREG2(rsi, si); CPREG2(rbp, bp); CPREG2(rbx, bx); CPREG2(rdx, dx); CPREG2(rax, ax); CPREG2(rcx, cx); CPREG2(rsp, sp); CPREG2(rip, ip); CPREG2(eflags, flags); CPREG1(cs); CPREG1(ss); #ifdef CONFIG_X86_32 CPREG1(gs); CPREG1(fs); CPREG1(es); CPREG1(ds); #endif return 0; }
int restore_gpregs(struct rt_sigframe *f, UserArmRegsEntry *r) { #define CPREG1(d) f->sig.uc.uc_mcontext.arm_##d = r->d #define CPREG2(d, s) f->sig.uc.uc_mcontext.arm_##d = r->s CPREG1(r0); CPREG1(r1); CPREG1(r2); CPREG1(r3); CPREG1(r4); CPREG1(r5); CPREG1(r6); CPREG1(r7); CPREG1(r8); CPREG1(r9); CPREG1(r10); CPREG1(fp); CPREG1(ip); CPREG1(sp); CPREG1(lr); CPREG1(pc); CPREG1(cpsr); #undef CPREG1 #undef CPREG2 return 0; }