Syscall/Sysret state on i386 arch
John Baldwin
jhb at FreeBSD.org
Mon Aug 29 15:56:40 GMT 2005
On Sunday 28 August 2005 10:32 am, alexander wrote:
> The AMD64 arch is using the syscall/sysret opcodes instead of int80h to
> perform a syscall (/usr/src/lib/libc/amd64/SYS.h). I just checked the
> output my of dmesg and it says:
>
> CPU: AMD Duron(tm) Processor (1311.69-MHz 686-class CPU)
> Origin = "AuthenticAMD" Id = 0x671 Stepping = 1
>
> Features=0x383f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV
>,\ PAT,PSE36,MMX,FXSR,SSE>
> AMD Features=0xc0400800<SYSCALL,MMX+,3DNow+,3DNow>
>
> I got a hold of the AMD document number 21086.pdf. It describes both
> opcodes pretty well, but doesn't tell which CPUs support the new opcodes.
> But since the first revision of that document is dated Sept 1997 quite a
> lot of i386 CPU's should support the opcodes. The NASM manual only states
> [P6,AMD] as the required CPU to perform those opcodes.
>
> I found some patches for Linux that replace the int80h syscall calling
>
> convention with syscall/sysret on i386 and the results look pretty
convincing:
> > (INT $0x80 based getpid(), got pid 497) latency:282 cycles
> > (SYSENTER based getpid(), got pid 497) latency:138 cycles
> >
> > on a 266 MHz PII this is 0.51 usecs for a getpid(). (was 1.06 usecs)
>
> Quoted from: http://www.ussg.iu.edu/hypermail/linux/kernel/9806.1/0878.html
>
> Does anybody know more about this? Is it even possible to replace the
> current syscall implementation that easily or would that require elaborate
> changes to all the syscalls (libc), etc. And which CPU's support these new
> opcodes? Doesn anybody know if the Linux patches actually got comitted to
> the official kernel?
Support for syscall/sysret is determined by a cpuid flag. I do believe
someone has worked on either syscall/sysret or sysenter/sysexit support in a
p4 branch. You can try asking jeff@ about it. I think it was
sysenter/sysexit and it didn't really improve things much.
--
John Baldwin <jhb at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" = http://www.FreeBSD.org
More information about the freebsd-hackers
mailing list