Hi all,

These two patches should implement something very much like the GNU
extension allowing C-functions to be used as interrupt handlers on
ARM. This has a couple of high-level effects: special return
instructions (except for M-class CPUs) and many more callee-saved
registers.

Some issues that may be debatable:

1. I don't automatically save d0-d31. That would be insane (and also
isn't what GCC does).
2. On the LLVM side, I've modelled it as an attribute rather than a
calling-convention. Either could be made to work, but "cc(64)" seemed
a little less obvious and ARM's already got more than its fair share
of official calling conventions.
3. I completely co-opted the Thumb2 SUBS_PC_LR to match what CodeGen
actually expects of a return rather than, necessarily, reality.

Any comments or suggestions would be appreciated.

Cheers.

Tim.

Attachment: interrupt-attr-clang.diff
Description: Binary data

Attachment: interrupt-attr-llvm.diff
Description: Binary data

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to