All pastes #591339 Raw Edit

Stuff

public text v1 · immutable
#591339 ·published 2007-06-27 04:16 UTC
rendered paste body
#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);						\
}										\