diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2024-12-26 21:40:04 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-26 14:40:04 +0100 |
| commit | cf24eaf9d2bcb739aaec5b4c75d6bb09b4b902ae (patch) | |
| tree | a9ac91cf3005c7e867ef87ec7cc0a2bdd172e6e8 /src/dynarec | |
| parent | cd1ac51b7932dbd2eb158e67f7dc6bee71163b96 (diff) | |
| download | box64-cf24eaf9d2bcb739aaec5b4c75d6bb09b4b902ae.tar.gz box64-cf24eaf9d2bcb739aaec5b4c75d6bb09b4b902ae.zip | |
[LA64_DYNAREC] Added hardware wall-clock support (#2216)
* [LA64_DYNAREC] Added hardware wall-clock support * Refined multi-language support
Diffstat (limited to 'src/dynarec')
| -rw-r--r-- | src/dynarec/la64/dynarec_la64_0f.c | 7 | ||||
| -rw-r--r-- | src/dynarec/la64/la64_emitter.h | 2 |
2 files changed, 7 insertions, 2 deletions
diff --git a/src/dynarec/la64/dynarec_la64_0f.c b/src/dynarec/la64/dynarec_la64_0f.c index 4e80972f..d1a6c396 100644 --- a/src/dynarec/la64/dynarec_la64_0f.c +++ b/src/dynarec/la64/dynarec_la64_0f.c @@ -338,8 +338,11 @@ uintptr_t dynarec64_0F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni case 0x31: INST_NAME("RDTSC"); NOTEST(x1); - // TODO: how to read the wall-clock real time on LoongArch? - CALL(ReadTSC, x3); // will return the u64 in x3 + if (box64_rdtsc) { + CALL(ReadTSC, x3); // will return the u64 in x3 + } else { + RDTIME_D(x3, xZR); + } if (box64_rdtsc_shift) { SRLI_D(x3, x3, box64_rdtsc_shift); } diff --git a/src/dynarec/la64/la64_emitter.h b/src/dynarec/la64/la64_emitter.h index 9290869b..6d8e507f 100644 --- a/src/dynarec/la64/la64_emitter.h +++ b/src/dynarec/la64/la64_emitter.h @@ -950,6 +950,8 @@ f24-f31 fs0-fs7 Static registers Callee #define FCMP_D(cd, fj, fk, cond) EMIT(type_4R(0b000011000010, cond, fk, fj, cd & 0b111)) #define FSEL(fd, fj, fk, ca) EMIT(type_4R(0b000011010000, ca & 0b111, fk, fj, fd)) +#define RDTIME_D(rd, rj) EMIT(type_2R(0b11010, rj, rd)) + //////////////////////////////////////////////////////////////////////////////// // (undocumented) LSX/LASX extension instructions |