This is the mail archive of the
mailing list for the GCC project.
Re: [cfe-dev] RFC: Support x86 interrupt and exception handlers
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: David Chisnall <David dot Chisnall at cl dot cam dot ac dot uk>
- Cc: Hal Finkel <hfinkel at anl dot gov>, GCC Development <gcc at gcc dot gnu dot org>, cfe-dev at lists dot llvm dot org
- Date: Tue, 22 Sep 2015 04:52:02 -0700
- Subject: Re: [cfe-dev] RFC: Support x86 interrupt and exception handlers
- Authentication-results: sourceware.org; auth=none
- References: <CAMe9rOoZHn=3V5e5tFZz_-MRNn7LSr7JDgAEtOF8nFqnFAujig at mail dot gmail dot com> <22402251 dot 319 dot 1442909469112 dot JavaMail dot javamailuser at localhost> <CAMe9rOpF8Lp_f5b6zZYFk4Q693BeEc+yUoWP8Y=ZqA+b_7STkg at mail dot gmail dot com> <6E1B43E9-ED67-4450-B518-6B5E5BB08B96 at cl dot cam dot ac dot uk>
On Tue, Sep 22, 2015 at 4:44 AM, David Chisnall
> On 22 Sep 2015, at 12:39, H.J. Lu via cfe-dev <email@example.com> 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.