? qemu-notsc.patch Index: vl.c =================================================================== RCS file: /cvsroot/qemu/qemu/vl.c,v retrieving revision 1.196 diff -u -r1.196 vl.c --- vl.c 26 Jun 2006 21:00:51 -0000 1.196 +++ vl.c 28 Jun 2006 04:48:43 -0000 @@ -129,6 +129,10 @@ int vm_running; int rtc_utc = 1; int cirrus_vga_enabled = 1; +#ifdef __i386__ +static int notsc = 0; +extern int64_t get_clock(void); +#endif #ifdef TARGET_SPARC int graphic_width = 1024; int graphic_height = 768; @@ -523,6 +527,9 @@ return ti.QuadPart; #else int64_t val; + if (notsc) { + return get_clock()<<12; + } asm volatile ("rdtsc" : "=A" (val)); return val; #endif @@ -657,6 +664,7 @@ usec = get_clock() - usec; ticks = cpu_get_real_ticks() - ticks; ticks_per_sec = (ticks * 1000000LL + (usec >> 1)) / usec; + //printf("ticks_per_sec=%lld\n",ticks_per_sec); } #endif /* !_WIN32 */ @@ -5142,6 +5150,9 @@ #ifdef USE_CODE_COPY "-no-code-copy disable code copy acceleration\n" #endif +#ifdef __i386__ + "-no-tsc disable tsc as clock source\n" +#endif #ifdef TARGET_I386 "-std-vga simulate a standard VGA card with VESA Bochs Extensions\n" " (default is CL-GD5446 PCI VGA)\n" @@ -5208,6 +5219,7 @@ QEMU_OPTION_hdachs, QEMU_OPTION_L, QEMU_OPTION_no_code_copy, + QEMU_OPTION_no_tsc, QEMU_OPTION_k, QEMU_OPTION_localtime, QEMU_OPTION_cirrusvga, @@ -5283,6 +5295,10 @@ { "no-kqemu", 0, QEMU_OPTION_no_kqemu }, { "kernel-kqemu", 0, QEMU_OPTION_kernel_kqemu }, #endif +#ifdef __i386__ + { "no-tsc", 0, QEMU_OPTION_no_tsc }, +#endif + #if defined(TARGET_PPC) || defined(TARGET_SPARC) { "g", 1, QEMU_OPTION_g }, #endif @@ -5929,7 +5945,12 @@ case QEMU_OPTION_no_acpi: acpi_enabled = 0; break; - } +#ifdef __i386__ + case QEMU_OPTION_no_tsc: + notsc = 1; + break; +#endif + } } }