about summary refs log tree commit diff stats
path: root/src/emu
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-03-14 11:01:40 +0100
committerptitSeb <sebastien.chev@gmail.com>2024-03-14 11:01:40 +0100
commitcd8bda7a29a2ef15d939890cacab02efb84e0158 (patch)
treeee89bcc4a842c70582c5ac6736a1989309810bde /src/emu
parent8115b4705109028650bdf0236b23a4991ddaaed2 (diff)
downloadbox64-cd8bda7a29a2ef15d939890cacab02efb84e0158.tar.gz
box64-cd8bda7a29a2ef15d939890cacab02efb84e0158.zip
Changed, again, RDTSC and Hardware counter, introducing auto calibration when hardware counter is too slow for modern standard (and removed BOX64_RDTSC env. var.)
Diffstat (limited to 'src/emu')
-rw-r--r--src/emu/x64run0f.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/emu/x64run0f.c b/src/emu/x64run0f.c
index f14b9dd5..e9c2c761 100644
--- a/src/emu/x64run0f.c
+++ b/src/emu/x64run0f.c
@@ -107,6 +107,8 @@ uintptr_t Run0F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step)
                     break;

                 case 0xF9:  /* RDTSCP */

                     tmp64u = ReadTSC(emu);

+                    if(box64_rdtsc_shift)

+                        tmp64u<<=box64_rdtsc_shift;

                     R_RAX = tmp64u & 0xffffffff;

                     R_RDX = tmp64u >> 32;

                     R_RCX = 0;  // should be low of IA32_TSC

@@ -368,6 +370,8 @@ uintptr_t Run0F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step)
 

         case 0x31:                   /* RDTSC */

             tmp64u = ReadTSC(emu);

+            if(box64_rdtsc_shift)

+                tmp64u<<=box64_rdtsc_shift;

             R_RDX = tmp64u>>32;

             R_RAX = tmp64u&0xFFFFFFFF;

             break;