diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-07-09 17:21:35 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-07-09 17:21:35 +0200 |
| commit | 5596b9ae3fd0f9518ebd66da289ee137f5a4c26e (patch) | |
| tree | b9260087293c41c96ffab10f0212fb01d0984415 /src | |
| parent | 64efac63c0c7ce9d06d0117f682df2e102259565 (diff) | |
| download | box64-5596b9ae3fd0f9518ebd66da289ee137f5a4c26e.tar.gz box64-5596b9ae3fd0f9518ebd66da289ee137f5a4c26e.zip | |
[RCFILE] Fixed profile per lib/dll that was using default instead of curent env for non defined values
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_private.h | 2 | ||||
| -rw-r--r-- | src/dynarec/dynarec_native.c | 1 | ||||
| -rw-r--r-- | src/dynarec/la64/dynarec_la64_private.h | 2 | ||||
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_private.h | 2 | ||||
| -rw-r--r-- | src/include/env.h | 2 |
5 files changed, 8 insertions, 1 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_private.h b/src/dynarec/arm64/dynarec_arm64_private.h index 6b569ff4..2e7145a9 100644 --- a/src/dynarec/arm64/dynarec_arm64_private.h +++ b/src/dynarec/arm64/dynarec_arm64_private.h @@ -6,6 +6,7 @@ typedef struct x64emu_s x64emu_t; typedef struct dynablock_s dynablock_t; typedef struct instsize_s instsize_t; +typedef struct box64env_s box64env_t; #define BARRIER_MAYBE 8 @@ -186,6 +187,7 @@ typedef struct dynarec_arm_s { int need_reloc; // does the dynablock need relocations int reloc_size; uint32_t* relocs; + box64env_t* env; } dynarec_arm_t; void add_next(dynarec_arm_t *dyn, uintptr_t addr); diff --git a/src/dynarec/dynarec_native.c b/src/dynarec/dynarec_native.c index 9fef7df2..1191189d 100644 --- a/src/dynarec/dynarec_native.c +++ b/src/dynarec/dynarec_native.c @@ -658,6 +658,7 @@ dynablock_t* FillBlock64(uintptr_t addr, int alternate, int is32bits, int inst_m helper.next = static_next; helper.next_cap = MAX_INSTS; helper.table64 = NULL; + helper.env = GetCurEnvByAddr(addr); ResetTable64(&helper); helper.table64cap = 0; helper.end = addr + SizeFileMapped(addr); diff --git a/src/dynarec/la64/dynarec_la64_private.h b/src/dynarec/la64/dynarec_la64_private.h index 27aac66d..08e0ffe2 100644 --- a/src/dynarec/la64/dynarec_la64_private.h +++ b/src/dynarec/la64/dynarec_la64_private.h @@ -6,6 +6,7 @@ typedef struct x64emu_s x64emu_t; typedef struct dynablock_s dynablock_t; typedef struct instsize_s instsize_t; +typedef struct box64env_s box64env_t; #define BARRIER_MAYBE 8 @@ -169,6 +170,7 @@ typedef struct dynarec_la64_s { int need_reloc; // does the dynablock need relocations int reloc_size; uint32_t* relocs; + box64env_t* env; } dynarec_la64_t; void add_next(dynarec_la64_t *dyn, uintptr_t addr); diff --git a/src/dynarec/rv64/dynarec_rv64_private.h b/src/dynarec/rv64/dynarec_rv64_private.h index a5972009..4fa1b91c 100644 --- a/src/dynarec/rv64/dynarec_rv64_private.h +++ b/src/dynarec/rv64/dynarec_rv64_private.h @@ -7,6 +7,7 @@ typedef struct x64emu_s x64emu_t; typedef struct dynablock_s dynablock_t; typedef struct instsize_s instsize_t; +typedef struct box64env_s box64env_t; #define BARRIER_MAYBE 8 @@ -196,6 +197,7 @@ typedef struct dynarec_rv64_s { int need_reloc; // does the dynablock need relocations int reloc_size; uint32_t* relocs; + box64env_t* env; } dynarec_rv64_t; // v0 is hardware wired to vector mask register, which should be always reserved diff --git a/src/include/env.h b/src/include/env.h index 4f5f8368..a1a1719a 100644 --- a/src/include/env.h +++ b/src/include/env.h @@ -5,7 +5,7 @@ #include <unistd.h> #define BOX64ENV(name) (box64env.name) -#define BOX64DRENV(name) (GetCurEnvByAddr(dyn->start)->name) +#define BOX64DRENV(name) ((dyn->env && dyn->env->is_##name##_overridden)?dyn->env->name:box64env.name) #define SET_BOX64ENV(name, value) \ { \ box64env.name = (value); \ |