sh2 drc, fix bug in jump patching for arm64
authorkub <derkub@gmail.com>
Thu, 6 Oct 2022 19:39:18 +0000 (19:39 +0000)
committerkub <derkub@gmail.com>
Thu, 6 Oct 2022 19:46:03 +0000 (19:46 +0000)
cpu/drc/emit_arm.c
cpu/drc/emit_arm64.c

index 48c3937..0732499 100644 (file)
@@ -1188,8 +1188,9 @@ static inline void emith_pool_adjust(int tcache_offs, int move_offs)
 #define emith_jump_patch_size() 4
 
 #define emith_jump_at(ptr, target) do { \
+       u32 *ptr_ = (u32 *)ptr; \
        u32 val_ = (u32 *)(target) - (u32 *)(ptr) - 2; \
-       EOP_C_B_PTR(ptr, A_COND_AL, 0, val_ & 0xffffff); \
+       EOP_C_B_PTR(ptr_, A_COND_AL, 0, val_ & 0xffffff); \
 } while (0)
 #define emith_jump_at_size() 4
 
index cb2546d..d61bab2 100644 (file)
@@ -1106,8 +1106,9 @@ static void emith_ldst_offs(int sz, int rd, int rn, int o9, int ld, int mode)
 #define emith_jump_patch_size()        4
 
 #define emith_jump_at(ptr, target) do { \
+       u32 *ptr_ = (u32 *)ptr; \
        u32 disp_ = (u8 *)target - (u8 *)ptr; \
-       EMIT_PTR(ptr, A64_B(disp_ & 0x0fffffff)); \
+       EMIT_PTR(ptr_, A64_B(disp_ & 0x0fffffff)); \
 } while (0)
 #define emith_jump_at_size() 4