The CPU type of our server is Intel Xeon E5310, and the OS is Fedora 8. Xen 3.2 is installed by Compilation. When the HVM guest is x86_32 Fedora 8, the system call is implemented by instruction - int $80h. Our debug result by gdb is as follow.
Dump of assembler code for function __kernel_vsyscall:
0xb7f87400 <__kernel_vsyscall+0>: int $0x80
0xb7f87402 <__kernel_vsyscall+2>: ret
End of assembler dump.
However, when the HVM guest is x86_64 Fedora 8, the system call is implemented by instruction - syscall. The debug result is as fellow:
Dump of assembler code for function getuid:
0x00000036e7296220 <getuid+0>: mov $0x66,%eax
0x00000036e7296225 <getuid+5>: syscall
0x00000036e7296227 <getuid+7>: retq
As far as I know, fast system call is implemented by sysenter on Intel CPU, and syscall on AMD CPU. Why the debug result is syscall, rather than sysenter?
If the HVM guest is x86_32 Fedora 8, can we set the system call implementation by sysenter? In x86_64 OS, is all system call is implemented by syscall?
Thank you for your response!
Xen-users mailing list