Syscall/Sysret state on i386 arch

Scott Long scottl at samsco.org
Mon Aug 29 16:16:51 GMT 2005


John Baldwin wrote:
> 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.
> 

Actually, the results were fairly inconclusive because it was also 
somewhat unstable under real loads.

The work is in Perforce under

  //depot/user/jeff/sysenter/...

I've worked on this branch also, but not in a few months.  I can
make patches if anyone is interested.

Scott


More information about the freebsd-hackers mailing list