target-i386: add RDTSCP support
commit1b050077d2d72b15c73257c13e2e46932786f7e2
authorAndre Przywara <andre.przywara@amd.com>
Fri, 18 Sep 2009 22:30:49 +0000 (19 00:30 +0200)
committerAurelien Jarno <aurelien@aurel32.net>
Sun, 4 Oct 2009 12:46:34 +0000 (4 14:46 +0200)
treedc42c285ca15dc1901ef7f6ae268d583521300d5
parentd9f4bb27dbff2e40ec2e36eb8017c9dedce77f30
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>
target-i386/cpu.h
target-i386/helper.h
target-i386/machine.c
target-i386/op_helper.c
target-i386/translate.c