ARM_R0
[BPF_REG_0] = {ARM_R1, ARM_R0},
const int exclude_mask = BIT(ARM_R0) | BIT(ARM_R1);
if (rm != ARM_R0) {
emit(ARM_MOV_R(tmp[1], ARM_R0), ctx);
emit(ARM_MOV_R(ARM_R0, rm), ctx);
if (rd != ARM_R0)
emit(ARM_MOV_R(rd, ARM_R0), ctx);
if (rm != ARM_R0)
emit(ARM_MOV_R(ARM_R0, tmp[1]), ctx);
if (rm[1] != ARM_R0 || rn[1] != ARM_R2) {
if (rm[1] != ARM_R0) {
if (rn[1] == ARM_R0)
emit(ARM_PUSH(BIT(ARM_R0) | BIT(ARM_R1)), ctx);
emit(ARM_MOV_R(ARM_R0, rm[1]), ctx);
if (rn[1] == ARM_R0) {
if (rd[1] != ARM_R0) {
emit(ARM_MOV_R(rd[1], ARM_R0), ctx);
if (rd[1] != ARM_R0 && rd[1] != ARM_R2) {
} else if (rd[1] != ARM_R0) {
emit(ARM_POP(BIT(ARM_R0) | BIT(ARM_R1)), ctx);
#define CALLER_MASK (1 << ARM_R0 | 1 << ARM_R1 | 1 << ARM_R2 | 1 << ARM_R3)