On Tue, Sep 22, 2015 at 4:44 AM, David Chisnall <david.chisn...@cl.cam.ac.uk> wrote: > On 22 Sep 2015, at 12:39, H.J. Lu via cfe-dev <cfe-...@lists.llvm.org> wrote: >> >> The center piece of my proposal is not to change how parameters >> are passed in compiler. As for user experience, the feedbacks on >> my proposal from our users are very positive. > > Implementing the intrinsics for getting the current interrupt requires a lot > of support code for it to actually be useful. For it to be useful, you are > requiring all of the C code to be run with interrupts disabled (and even that > doesn’t work if you get a NMI in the middle). Most implementations use a > small amount of assembly to capture the interrupt cause and the register > state on entry to the handler, then reenable interrupts while the C code > runs. This means that any interrupts (e.g. page faults, illegal instruction > traps, whatever) that happen while the C code is running do not mask the > values. Accessing these values from *existing* C code is simply a matter of > loading a field from a structure.
The above applies to with and without intrinsics. > I’m really unconvinced by something that something with such a narrow use > case (and one that encourages writing bad code) belongs in the compiler. > > David -- H.J.