target-i386: add RDTSCP support
authorAndre Przywara <andre.przywara@amd.com>
Fri, 18 Sep 2009 22:30:49 +0000 (00:30 +0200)
committerAurelien Jarno <aurelien@aurel32.net>
Sun, 4 Oct 2009 12:46:34 +0000 (14:46 +0200)
commit0e29d50d81b98a37b7d289db0c60c29c49f51bf1
treedc42c285ca15dc1901ef7f6ae268d583521300d5
parente942f1c0bf0684bfcae263096879d1c0dca51185
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