diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-06-08 14:16:45 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-06-08 14:16:45 +0200 |
| commit | 685afa230291d64f350afbfdfa8fc82536d99f82 (patch) | |
| tree | d079b3e3118023ec4651e43280d3f64602e79d58 /src/include | |
| parent | d3f0d1c30f14fd789fc747e3704286259026fbc9 (diff) | |
| download | box64-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.h | 9 |
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) |