A64_SP
emit(A64_ADD_I(1, A64_SP, A64_SP, ctx->stack_size), ctx);
emit(A64_POP(A64_ZR, ptr, A64_SP), ctx);
emit(A64_POP(A64_FP, A64_LR, A64_SP), ctx);
src_adj = ctx->priv_sp_used ? priv_sp : A64_SP;
dst_adj = ctx->priv_sp_used ? priv_sp : A64_SP;
dst_adj = ctx->priv_sp_used ? priv_sp : A64_SP;
emit(A64_STR64I(A64_ZR, A64_SP, run_ctx_off + cookie_off), ctx);
emit(A64_STR64I(A64_R(10), A64_SP, run_ctx_off + cookie_off),
emit(A64_ADD_I(1, A64_R(1), A64_SP, run_ctx_off), ctx);
emit(A64_ADD_I(1, A64_R(0), A64_SP, bargs_off), ctx);
emit(A64_STR64I(A64_R(0), A64_SP, retval_off), ctx);
emit(A64_ADD_I(1, A64_R(2), A64_SP, run_ctx_off), ctx);
emit(A64_STR64I(A64_ZR, A64_SP, retval_off), ctx);
emit(A64_LDR64I(A64_R(10), A64_SP, retval_off), ctx);
A64_LDR64I(reg, A64_SP, bargs_off) :
A64_STR64I(reg, A64_SP, bargs_off),
emit(A64_STR64I(tmp, A64_SP, doff), ctx);
emit(A64_LDR64I(reg, A64_SP, bargs_off), ctx);
emit(A64_STR64I(A64_R(10), A64_SP, func_meta_off), ctx);
emit(A64_PUSH(A64_FP, A64_R(9), A64_SP), ctx);
emit(A64_MOV(1, A64_FP, A64_SP), ctx);
emit(A64_PUSH(A64_FP, A64_LR, A64_SP), ctx);
emit(A64_MOV(1, A64_FP, A64_SP), ctx);
emit(A64_SUB_I(1, A64_SP, A64_SP, stack_size), ctx);
emit(A64_STR64I(A64_R(10), A64_SP, ip_off), ctx);
emit(A64_STR64I(A64_R(19), A64_SP, regs_off), ctx);
emit(A64_STR64I(A64_R(20), A64_SP, regs_off + 8), ctx);
emit(A64_STR64I(A64_R(10), A64_SP, cookie_off + 8 * i), ctx);
emit(A64_STR64I(A64_R(10), A64_SP, retval_off), ctx);
emit(A64_LDR64I(A64_R(10), A64_SP, retaddr_off), ctx);
emit(A64_STR64I(A64_R(0), A64_SP, retval_off), ctx);
emit(A64_LDR64I(A64_R(19), A64_SP, regs_off), ctx);
emit(A64_LDR64I(A64_R(20), A64_SP, regs_off + 8), ctx);
emit(A64_LDR64I(A64_R(0), A64_SP, retval_off), ctx);
emit(A64_MOV(1, A64_SP, A64_FP), ctx);
emit(A64_POP(A64_FP, A64_LR, A64_SP), ctx);
emit(A64_POP(A64_FP, A64_LR, A64_SP), ctx);
emit(A64_POP(A64_FP, A64_R(9), A64_SP), ctx);
emit(A64_PUSH(A64_ZR, ptr, A64_SP), ctx);
emit(A64_MOV(1, ptr, A64_SP), ctx);
emit(A64_PUSH(ptr, ptr, A64_SP), ctx);
emit(A64_PUSH(A64_R(19), A64_R(20), A64_SP), ctx);
emit(A64_PUSH(A64_R(21), A64_R(22), A64_SP), ctx);
emit(A64_PUSH(A64_R(23), A64_R(24), A64_SP), ctx);
emit(A64_PUSH(A64_R(25), A64_R(26), A64_SP), ctx);
emit(A64_PUSH(A64_R(27), A64_R(28), A64_SP), ctx);
emit(A64_PUSH(reg1, reg2, A64_SP), ctx);
emit(A64_PUSH(reg1, A64_ZR, A64_SP), ctx);
emit(A64_POP(A64_R(27), A64_R(28), A64_SP), ctx);
emit(A64_POP(A64_R(25), A64_R(26), A64_SP), ctx);
emit(A64_POP(A64_R(23), A64_R(24), A64_SP), ctx);
emit(A64_POP(A64_R(21), A64_R(22), A64_SP), ctx);
emit(A64_POP(A64_R(19), A64_R(20), A64_SP), ctx);
emit(A64_POP(reg1, A64_ZR, A64_SP), ctx);
emit(A64_POP(reg1, reg2, A64_SP), ctx);
emit(A64_PUSH(A64_FP, A64_LR, A64_SP), ctx);
emit(A64_MOV(1, A64_FP, A64_SP), ctx);
emit(A64_SUB_I(1, A64_SP, A64_FP, 96), ctx);
emit(A64_MOV(1, fp, A64_SP), ctx);
emit(A64_SUB_I(1, A64_SP, A64_SP, ctx->stack_size), ctx);
emit(A64_ADD_I(1, A64_SP, A64_SP, ctx->stack_size), ctx);