mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 07:17:45 -04:00
sh2 drc, change utils abi to pass sh2 PC in arg0 (reduces compiled code size)
This commit is contained in:
parent
39615f6079
commit
8141d75694
3 changed files with 62 additions and 28 deletions
|
@ -956,6 +956,8 @@ static inline void emith_pool_adjust(int pool_index, int move_offs)
|
|||
EOP_LDR_REG_LSL(A_COND_AL, r, rs, rm, 0)
|
||||
#define emith_read_r_r_r_wb(r, rs, rm) \
|
||||
EOP_LDR_REG_LSL_WB(A_COND_AL, r, rs, rm, 0)
|
||||
#define emith_read_r_r_r_ptr_wb(r, rs, rm) \
|
||||
emith_read_r_r_r_wb(r, rs, rm)
|
||||
|
||||
#define emith_read8_r_r_offs_c(cond, r, rs, offs) \
|
||||
EOP_LDRB_IMM2(cond, r, rs, offs)
|
||||
|
@ -1003,6 +1005,8 @@ static inline void emith_pool_adjust(int pool_index, int move_offs)
|
|||
emith_write_r_r_offs_c(A_COND_AL, r, rs, offs)
|
||||
#define emith_write_r_r_r_wb(r, rs, rm) \
|
||||
EOP_STR_REG_LSL_WB(A_COND_AL, r, rs, rm, 0)
|
||||
#define emith_write_r_r_r_ptr_wb(r, rs, rm) \
|
||||
emith_write_r_r_r_wb(r, rs, rm)
|
||||
|
||||
#define emith_ctx_read_c(cond, r, offs) \
|
||||
emith_read_r_r_offs_c(cond, r, CONTEXT_REG, offs)
|
||||
|
|
|
@ -721,19 +721,37 @@ enum { xAX = 0, xCX, xDX, xBX, xSP, xBP, xSI, xDI };
|
|||
EMIT_OP_MODRM(0x8b, 0, r, 4); \
|
||||
EMIT_SIB(0, rs, rm); /* mov r, [rm + rs * 1] */ \
|
||||
} while (0)
|
||||
#define emith_read_r_r_r_ptr(r, rs, rm) do { \
|
||||
EMIT_REX_IF(1, r, rs); \
|
||||
EMIT_OP_MODRM64(0x8b, 0, r, 4); \
|
||||
EMIT_SIB(0, rs, rm); /* mov r, [rm + rs * 1] */ \
|
||||
} while (0)
|
||||
#define emith_read_r_r_r_wb(r, rs, rm) do { \
|
||||
emith_read_r_r_r(r, rs, rm); \
|
||||
emith_add_r_r_ptr(rs, rm); \
|
||||
} while (0)
|
||||
#define emith_read_r_r_r_ptr_wb(r, rs, rm) do { \
|
||||
emith_read_r_r_r_ptr(r, rs, rm); \
|
||||
emith_add_r_r_ptr(rs, rm); \
|
||||
} while (0)
|
||||
|
||||
#define emith_write_r_r_r(r, rs, rm) do { \
|
||||
EMIT_OP_MODRM(0x89, 0, r, 4); \
|
||||
EMIT_SIB(0, rs, rm); /* mov [rm + rs * 1], r */ \
|
||||
} while (0)
|
||||
#define emith_write_r_r_r_ptr(r, rs, rm) do { \
|
||||
EMIT_REX_IF(1, r, rs); \
|
||||
EMIT_OP_MODRM64(0x89, 0, r, 4); \
|
||||
EMIT_SIB(0, rs, rm); /* mov [rm + rs * 1], r */ \
|
||||
} while (0)
|
||||
#define emith_write_r_r_r_wb(r, rs, rm) do { \
|
||||
emith_write_r_r_r(r, rs, rm); \
|
||||
emith_add_r_r_ptr(rs, rm); \
|
||||
} while (0)
|
||||
#define emith_write_r_r_r_ptr_wb(r, rs, rm) do { \
|
||||
emith_write_r_r_r_ptr(r, rs, rm); \
|
||||
emith_add_r_r_ptr(rs, rm); \
|
||||
} while (0)
|
||||
|
||||
|
||||
#define emith_ctx_read(r, offs) \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue