about summary refs log tree commit diff stats
path: root/src/include
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-06-08 14:16:45 +0200
committerptitSeb <sebastien.chev@gmail.com>2025-06-08 14:16:45 +0200
commit685afa230291d64f350afbfdfa8fc82536d99f82 (patch)
treed079b3e3118023ec4651e43280d3f64602e79d58 /src/include
parentd3f0d1c30f14fd789fc747e3704286259026fbc9 (diff)
downloadbox64-685afa230291d64f350afbfdfa8fc82536d99f82.tar.gz
box64-685afa230291d64f350afbfdfa8fc82536d99f82.zip
[DYNAREC] Modified JumpTable slightly so 32bits and 48bits address space jmp can be done with only 2 and 3 memory fetch (todo: RV64 and LA64 handling of 48bits)
Diffstat (limited to 'src/include')
-rw-r--r--src/include/custommem.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/include/custommem.h b/src/include/custommem.h
index 4bfcc98a..d7b79296 100644
--- a/src/include/custommem.h
+++ b/src/include/custommem.h
@@ -47,13 +47,15 @@ void setJumpTableDefault64(void* addr);
 void setJumpTableDefaultRef64(void* addr, void* jmp);
 int isJumpTableDefault64(void* addr);
 uintptr_t getJumpTable64(void);
+uintptr_t getJumpTable48(void);
 uintptr_t getJumpTable32(void);
 uintptr_t getJumpTableAddress64(uintptr_t addr);
 uintptr_t getJumpAddress64(uintptr_t addr);
 
 #ifdef SAVE_MEM
+#define JMPTABL_SHIFTMAX   JMPTABL_SHIFT4
 #define JMPTABL_SHIFT4 16
-#define JMPTABL_SHIFT3 14
+#define JMPTABL_SHIFT3 16
 #define JMPTABL_SHIFT2 12
 #define JMPTABL_SHIFT1 12
 #define JMPTABL_SHIFT0 10
@@ -68,10 +70,11 @@ uintptr_t getJumpAddress64(uintptr_t addr);
 #define JMPTABLE_MASK1 ((1<<JMPTABL_SHIFT1)-1)
 #define JMPTABLE_MASK0 ((1<<JMPTABL_SHIFT0)-1)
 #else
+#define JMPTABL_SHIFTMAX   JMPTABL_SHIFT3
 #define JMPTABL_SHIFT3 16
-#define JMPTABL_SHIFT2 18
+#define JMPTABL_SHIFT2 16
 #define JMPTABL_SHIFT1 18
-#define JMPTABL_SHIFT0 12
+#define JMPTABL_SHIFT0 14
 #define JMPTABL_START3 (JMPTABL_START2+JMPTABL_SHIFT2)
 #define JMPTABL_START2 (JMPTABL_START1+JMPTABL_SHIFT1)
 #define JMPTABL_START1 (JMPTABL_START0+JMPTABL_SHIFT0)