mc_gpr
mc->mc_gpr[1] = (uint32_t) sp; /* new stack pointer */
mc->mc_gpr[14] = (uint32_t) start; /* r14 <- start */
mc->mc_gpr[15] = (uint32_t) ucp; /* r15 <- ucp */
mc->mc_gpr[3 + i] = va_arg(ap, uint32_t);
sp = (ucp->uc_mcontext.mc_gpr[1] - sizeof(ucontext_t)) & ~15UL;
ucp->uc_mcontext.mc_gpr[1] = (uint32_t) sp;
ucp->uc_mcontext.mc_gpr[3] = (uint32_t) func;
ucp->uc_mcontext.mc_gpr[4] = (uint32_t) sig;
ucp->uc_mcontext.mc_gpr[5] = (uint32_t) sig_si;
ucp->uc_mcontext.mc_gpr[6] = (uint32_t) sig_uc;
mc->mc_gpr[12] = (uintptr_t) _ctx_start;/* required for prologue */
mc->mc_gpr[1] = (uintptr_t) sp; /* new stack pointer */
mc->mc_gpr[14] = (uintptr_t) start; /* r14 <- start */
mc->mc_gpr[15] = (uintptr_t) ucp; /* r15 <- ucp */
mc->mc_gpr[3 + i] = va_arg(ap, uint64_t);
sp = (ucp->uc_mcontext.mc_gpr[1] - sizeof(ucontext_t)) & ~15UL;
ucp->uc_mcontext.mc_gpr[1] = (uint64_t) sp;
ucp->uc_mcontext.mc_gpr[3] = (uint64_t) func;
ucp->uc_mcontext.mc_gpr[4] = (uint64_t) sig;
ucp->uc_mcontext.mc_gpr[5] = (uint64_t) sig_si;
ucp->uc_mcontext.mc_gpr[6] = (uint64_t) sig_uc;
td, uc.uc_mcontext.mc_srr0, uc.uc_mcontext.mc_gpr[1]);
mcp->mc_gpr[3] = 0;
mcp->mc_gpr[4] = 0;
td, uc.uc_mcontext.mc_srr0, uc.uc_mcontext.mc_gpr[1]);