On 09/22/15 01:41, David Chisnall wrote: > On 21 Sep 2015, at 21:45, H.J. Lu via cfe-dev <cfe-...@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. -hpa