diff options
author | Andre Przywara <andre.przywara@amd.com> | 2009-09-19 00:30:49 +0200 |
---|---|---|
committer | Aurelien Jarno <aurelien@aurel32.net> | 2009-10-04 14:46:34 +0200 |
commit | 1b050077d2d72b15c73257c13e2e46932786f7e2 (patch) | |
tree | dc42c285ca15dc1901ef7f6ae268d583521300d5 /target-i386/helper.h | |
parent | d9f4bb27dbff2e40ec2e36eb8017c9dedce77f30 (diff) | |
download | hqemu-1b050077d2d72b15c73257c13e2e46932786f7e2.zip hqemu-1b050077d2d72b15c73257c13e2e46932786f7e2.tar.gz |
target-i386: add RDTSCP support
RDTSCP reads the time stamp counter and atomically also the content
of a 32-bit MSR, which can be freely set by the OS. This allows CPU
local data to be queried by userspace.
Linux uses this to allow a fast implementation of the getcpu()
syscall, which uses the vsyscall page to avoid a context switch.
AMD CPUs since K8RevF and Intel CPUs since Nehalem support this
instruction.
RDTSCP is guarded by the RDTSCP CPUID bit (Fn8000_0001:EDX[27]).
Signed-off-by: Andre Przywara <andre.przywara@amd.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Diffstat (limited to 'target-i386/helper.h')
-rw-r--r-- | target-i386/helper.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/target-i386/helper.h b/target-i386/helper.h index 68d57b1..ca953f4 100644 --- a/target-i386/helper.h +++ b/target-i386/helper.h @@ -80,6 +80,7 @@ DEF_HELPER_1(cmpxchg16b, void, tl) DEF_HELPER_0(single_step, void) DEF_HELPER_0(cpuid, void) DEF_HELPER_0(rdtsc, void) +DEF_HELPER_0(rdtscp, void) DEF_HELPER_0(rdpmc, void) DEF_HELPER_0(rdmsr, void) DEF_HELPER_0(wrmsr, void) |