Subject: Re: amd64 syscall.c question
To: None <tech-kern@netbsd.org>
From: Christos Zoulas <christos@astron.com>
List: tech-kern
Date: 06/06/2007 21:05:30
In article <20070606201223.GQ1499@snowdrop.l8s.co.uk>,
David Laight  <david@l8s.co.uk> wrote:
>On Wed, Jun 06, 2007 at 09:01:44PM +0100, Andrew Doran wrote:
>> On Wed, Jun 06, 2007 at 03:39:29PM -0400, Blair Sadewitz wrote:
>> 
>> > BTW, what is the operational distinction between syscall_plain() and
>> > syscall_fancy()?
>> 
>> Fancy handles tracing (like ktrace), plain does not. The syscall handler is
>> noted in struct mdproc and entered through an indirect call. For CPUs that
>> actually matter, indirect calls are more expensive than a couple of simple
>> test+branch pairs, and maintaining 2x the number of syscall paths is a pain.
>> So they should be merged.
>
>Isn't that indirection also used for the emulation system call entry?
>
>But I do agree that having 2 copies of the same code is stupid.

This can be fixed by compiling the same code twice. I think that mycroft
measured the overhead of plain/fancy and he decided that the split was
worth it.

christos