A64_R
emit(A64_MOV(1, A64_R(0), r0), ctx);
emit(A64_MOV(1, r0, A64_R(0)), ctx);
emit_a64_mov_i64(A64_R(10), l->cookie, ctx);
emit(A64_STR64I(A64_R(10), A64_SP, run_ctx_off + cookie_off),
emit_addr_mov_i64(A64_R(19), (const u64)p, ctx);
emit(A64_MOV(1, A64_R(0), A64_R(19)), ctx);
emit(A64_ADD_I(1, A64_R(1), A64_SP, run_ctx_off), ctx);
emit(A64_MOV(1, A64_R(20), A64_R(0)), ctx);
emit(A64_ADD_I(1, A64_R(0), A64_SP, bargs_off), ctx);
emit_addr_mov_i64(A64_R(1), (const u64)p->insnsi, ctx);
emit(A64_STR64I(A64_R(0), A64_SP, retval_off), ctx);
*branch = cpu_to_le32(A64_CBZ(1, A64_R(0), offset));
emit(A64_MOV(1, A64_R(0), A64_R(19)), ctx);
emit(A64_MOV(1, A64_R(1), A64_R(20)), ctx);
emit(A64_ADD_I(1, A64_R(2), A64_SP, run_ctx_off), ctx);
emit(A64_LDR64I(A64_R(10), A64_SP, retval_off), ctx);
emit_a64_mov_i64(A64_R(10), func_meta, 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_addr_mov_i64(A64_R(10), (const u64)func_addr, 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_mov_i64(A64_R(0), (const u64)im, ctx);
emit(A64_MOVZ(1, A64_R(10), 0, 0), 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_RET(A64_R(10)), ctx);
emit(A64_STR64I(A64_R(0), A64_SP, retval_off), ctx);
*branches[i] = cpu_to_le32(A64_CBNZ(1, A64_R(10), offset));
emit_a64_mov_i64(A64_R(0), (const u64)im, 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_POP(A64_FP, A64_R(9), A64_SP), ctx);
emit(A64_MOV(1, A64_LR, A64_R(9)), ctx);
emit(A64_RET(A64_R(9)), ctx);
emit(A64_MOV(1, A64_R(10), A64_LR), ctx);
emit(A64_MOV(1, A64_LR, A64_R(9)), ctx);
emit(A64_RET(A64_R(10)), 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_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);
[BPF_REG_0] = A64_R(7),
[BPF_REG_1] = A64_R(0),
[BPF_REG_2] = A64_R(1),
[BPF_REG_3] = A64_R(2),
emit(A64_MOV(1, A64_R(9), A64_LR), ctx);
[BPF_REG_4] = A64_R(3),
[BPF_REG_5] = A64_R(4),
emit(A64_MOV(1, A64_FP, A64_R(2)), ctx);
[BPF_REG_6] = A64_R(19),
[BPF_REG_7] = A64_R(20),
[BPF_REG_8] = A64_R(21),
[BPF_REG_9] = A64_R(22),
[BPF_REG_FP] = A64_R(25),
[TMP_REG_1] = A64_R(10),
[TMP_REG_2] = A64_R(11),
[TMP_REG_3] = A64_R(12),
[TCCNT_PTR] = A64_R(26),
[BPF_REG_AX] = A64_R(9),
[PRIVATE_SP] = A64_R(27),
[ARENA_VM_START] = A64_R(28),