diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-04-09 15:19:45 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-04-09 15:19:45 +0200 |
| commit | 8c991cb6762d3a1384cec16d6e54402ce276ea9e (patch) | |
| tree | 3d109e77532ce32822efec69950b7db787368fcc /src/dynarec/dynablock_private.h | |
| parent | 70770db8bec892e66fa8b6834f1ea4a8f27325b6 (diff) | |
| download | box64-8c991cb6762d3a1384cec16d6e54402ce276ea9e.tar.gz box64-8c991cb6762d3a1384cec16d6e54402ce276ea9e.zip | |
[DYNAREC] Better handling of self-loop and added CALLRET=2 settings (ARM64 only, RV64 and LA64 todo)
Diffstat (limited to 'src/dynarec/dynablock_private.h')
| -rw-r--r-- | src/dynarec/dynablock_private.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/dynarec/dynablock_private.h b/src/dynarec/dynablock_private.h index b9e5f55d..8e174a63 100644 --- a/src/dynarec/dynablock_private.h +++ b/src/dynarec/dynablock_private.h @@ -6,6 +6,11 @@ typedef struct instsize_s { unsigned char nat:4; } instsize_t; +typedef struct callret_s { + uint32_t offs:31; + uint32_t type:1; +} callret_t; + typedef struct dynablock_s { void* block; // block-sizeof(void*) == self void* actual_block; // the actual start of the block (so block-sizeof(void*)) @@ -23,6 +28,8 @@ typedef struct dynablock_s { instsize_t* instsize; void* arch; // arch dependant per inst info (can be NULL) size_t arch_size; // size of of arch dependant infos + int callret_size; // size of the array + callret_t* callrets; // array of callret return, with NOP / UDF depending if the block is clean or dirty void* jmpnext; // a branch jmpnext code when block is marked } dynablock_t; |