diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-06-24 20:32:16 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-06-24 20:32:16 +0200 |
| commit | aeeb9b719ac586c9b741bb2167bda27960bd002b (patch) | |
| tree | c4f09d231b4e48dc04a6b41502da6663f283c080 /src/tools | |
| parent | 36f1808615813e85b05c9460d7dd481c4bc20de0 (diff) | |
| download | box64-aeeb9b719ac586c9b741bb2167bda27960bd002b.tar.gz box64-aeeb9b719ac586c9b741bb2167bda27960bd002b.zip | |
[COSIM] Added range handling in BOX64_DYNAREC_TEST ([RCFILE] too)
Diffstat (limited to 'src/tools')
| -rw-r--r-- | src/tools/rcfile.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/tools/rcfile.c b/src/tools/rcfile.c index 4179fab6..3147cc4a 100644 --- a/src/tools/rcfile.c +++ b/src/tools/rcfile.c @@ -165,7 +165,7 @@ IGNORE(BOX64_DYNAREC_FASTPAGE) \ ENTRYBOOL(BOX64_DYNAREC_ALIGNED_ATOMICS, box64_dynarec_aligned_atomics) \ ENTRYBOOL(BOX64_DYNAREC_WAIT, box64_dynarec_wait) \ ENTRYSTRING_(BOX64_NODYNAREC, box64_nodynarec) \ -ENTRYBOOL(BOX64_DYNAREC_TEST, box64_dynarec_test) \ +ENTRYSTRING_(BOX64_DYNAREC_TEST, box64_dynarec_test) \ ENTRYBOOL(BOX64_DYNAREC_MISSING, box64_dynarec_missing) \ #else @@ -679,6 +679,32 @@ void ApplyParams(const char* name) printf_log(LOG_INFO, "Ignoring BOX64_NODYNAREC=%s (%p-%p)\n", param->box64_nodynarec, (void*)box64_nodynarec_start, (void*)box64_nodynarec_end); } } + if(param->is_box64_dynarec_test_present) { + uintptr_t no_start = 0, no_end = 0; + if(strlen(param->box64_dynarec_test)==1) { + box64_dynarec_test = param->box64_dynarec_test[0]-'0'; + box64_dynarec_test_start = 0x0; + box64_dynarec_test_end = 0x0; + if(box64_dynarec_test>2) box64_dynarec_test = 0; + } else { + int ok = 0; + if(sscanf(param->box64_dynarec_test, "0x%lX-0x%lX", &no_start, &no_end)==2) + ok = 1; + if(!ok && sscanf(param->box64_dynarec_test, "%lx-%lx", &no_start, &no_end)==2) + ok = 1; + if(!ok && sscanf(param->box64_dynarec_test, "%ld-%ld", &no_start, &no_end)==2) + ok = 1; + if(ok && no_end>no_start) { + box64_dynarec_test = 1; + box64_dynarec_test_start = no_start; + box64_dynarec_test_end = no_end; + printf_log(LOG_INFO, "Appling BOX64_DYNAREC_TEST=%p-%p\n", (void*)box64_dynarec_test_start, (void*)box64_dynarec_test_end); + } else { + box64_dynarec_test = 0; + printf_log(LOG_INFO, "Ignoring BOX64_DYNAREC_TEST=%s (%p-%p)\n", param->box64_dynarec_test, (void*)box64_dynarec_test_start, (void*)box64_dynarec_test_end); + } + } + } if(param->is_box64_dynarec_forward_present) { int forward = 0; if(sscanf(param->box64_dynarec_forward, "%d", &forward)==1) { |