#define rec_recompile_end_exec() \ { \ /* CLOBBERS ARMREG_R2! */ \ LoadImmediate32((u32)&psxRecLUT[0], ARMREG_R2); \ ARM_LDR_IMM(ARM_POINTER, TEMP_2, PERM_REG_1, 648); \ ARM_MOV_REG_IMMSHIFT(ARM_POINTER, TEMP_1, TEMP_2, \ ARMSHIFT_LSR, 16); \ ARM_LDR_REG_REG_SHIFT(ARM_POINTER, ARMREG_R2, ARMREG_R2, \ TEMP_1, ARMSHIFT_LSL, 2); \ ARM_MOV_REG_IMM(ARM_POINTER, TEMP_1, 0xFC , 0); \ ARM_ORR_REG_IMM(ARM_POINTER, TEMP_1, TEMP_1, 0xFF, 24); \ ARM_AND_REG_REG(ARM_POINTER, TEMP_1, TEMP_2, \ TEMP_1); \ ARM_LDR_REG_REG(ARM_POINTER, TEMP_1, ARMREG_R2, \ TEMP_1); \ ARM_TEQ_REG_IMM(ARM_POINTER, TEMP_1, 0, 0); \ /* BX to TEMP_1 (recMem) address if NE */ \ ARM_BX_COND(ARM_POINTER, ARMCOND_NE, TEMP_1); \ /* No luck, go back to C recompile function */ \ ARM_BL(ARM_POINTER, \ arm_relative_offset(recMem, (u32)rec_recompile_exec, 8)); \ ARM_BX(ARM_POINTER, ARMREG_R0); \ } \