mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 15:27:46 -04:00
32x: drc: dynamicregister allocator
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@825 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
parent
553c3eaa3a
commit
c18edb34e6
4 changed files with 191 additions and 70 deletions
|
@ -254,12 +254,6 @@ static int emith_xbranch(int cond, void *target, int is_call)
|
|||
#define emith_ctx_write(r, offs) \
|
||||
EOP_STR_IMM(r, CONTEXT_REG, offs)
|
||||
|
||||
#define emith_ctx_sub(val, offs) { \
|
||||
emith_ctx_read(0, offs); \
|
||||
emith_sub_r_imm(0, val); \
|
||||
emith_ctx_write(0, offs); \
|
||||
}
|
||||
|
||||
// upto 4 args
|
||||
#define emith_pass_arg_r(arg, reg) \
|
||||
EOP_MOV_REG_SIMPLE(arg, reg)
|
||||
|
@ -281,11 +275,7 @@ static int emith_xbranch(int cond, void *target, int is_call)
|
|||
|
||||
/* SH2 drc specific */
|
||||
#define emith_test_t() { \
|
||||
int r = reg_map_g2h[SHR_SR]; \
|
||||
if (r == -1) { \
|
||||
emith_ctx_read(0, SHR_SR * 4); \
|
||||
r = 0; \
|
||||
} \
|
||||
int r = rcache_get_reg(SHR_SR, RC_GR_READ); \
|
||||
EOP_TST_IMM(r, 0, 1); \
|
||||
}
|
||||
|
||||
|
|
|
@ -54,12 +54,6 @@ enum { xAX = 0, xCX, xDX, xBX, xSP, xBP, xSI, xDI };
|
|||
EMIT(offs, u8); /* mov [ebp+#offs], tmp */ \
|
||||
}
|
||||
|
||||
#define emith_ctx_sub(val, offs) { \
|
||||
EMIT_OP_MODRM(0x81, 1, 5, xBP); \
|
||||
EMIT(offs, u8); \
|
||||
EMIT(val, u32); /* sub [ebp+#offs], dword val */ \
|
||||
}
|
||||
|
||||
#define emith_jump(ptr) { \
|
||||
u32 disp = (u32)ptr - ((u32)tcache_ptr + 5); \
|
||||
EMIT_OP(0xe9); \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue