[cfe-dev] RFC: Support x86 interrupt and exception handlers

Joerg Sonnenberger via cfe-dev cfe-dev at lists.llvm.org
Wed Sep 23 08:04:44 PDT 2015


On Tue, Sep 22, 2015 at 12:13:10PM -0700, H. Peter Anvin via cfe-dev wrote:
> On 09/22/15 01:41, David Chisnall wrote:
> > On 21 Sep 2015, at 21:45, H.J. Lu via cfe-dev <cfe-dev at lists.llvm.org> wrote:
> >>
> >> The main purpose of x86 interrupt attribute is to allow programmers
> >> to write x86 interrupt/exception handlers in C WITHOUT assembly
> >> stubs to avoid extra branch from assembly stubs to C functions.  I
> >> want to keep the number of new intrinsics to minimum without sacrificing
> >> handler performance. I leave faking error code in interrupt handler to
> >> the programmer.
> > 
> > The assembly stubs have to come from somewhere.  You either put them
> > in an assembly file (most people doing embedded x86 stuff steal the
> > ones from NetBSD), or you put them in the compiler where they can be
> > inlined.  In terms of user interface, there’s not much difference in
> > complexity.  Having written this kind of code in the past, I can
> > honestly say that using the assembly stubs was the least difficult
> > part of getting them right.  In terms of compiler complexity, there’s
> > a big difference: in one case the compiler contains nothing, in the
> > other it contains something special for a single use case.  In terms
> > of performance, the compiler version has the potential to be faster,
> > but if we’re going to pay for the complexity then I think that we’d
> > need to see some strong evidence that someone else is getting a
> > noticeable benefit.
> > 
> 
> It is worth noting that most architectures has this support for a reason.

...and most kernels don't use the compiler support for a reason. Two can
play that game.

Joerg



More information about the cfe-dev mailing list