diff options
| author | Erich Keane <erich.keane@intel.com> | 2017-10-16 20:44:14 +0000 |
|---|---|---|
| committer | Erich Keane <erich.keane@intel.com> | 2017-10-16 20:44:14 +0000 |
| commit | 038f4ea367c577052d9332ff01d2794bdd9cfb6a (patch) | |
| tree | 28854f7ce83f3f152eb674aa03d12ffe1053f77d /clang | |
| parent | e21b940ff270ba9690042ac90832ccfb4ec51fc5 (diff) | |
| download | bcm5719-llvm-038f4ea367c577052d9332ff01d2794bdd9cfb6a.tar.gz bcm5719-llvm-038f4ea367c577052d9332ff01d2794bdd9cfb6a.zip | |
Remove AnyX86Interrupt documentation
This documentation was copied directly from the GCC
documentaiton in r257867. Reverting and alterting
the original author so that it can be rewritten in
copyright-safe language.
llvm-svn: 315934
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/include/clang/Basic/Attr.td | 2 | ||||
| -rw-r--r-- | clang/include/clang/Basic/AttrDocs.td | 54 |
2 files changed, 1 insertions, 55 deletions
diff --git a/clang/include/clang/Basic/Attr.td b/clang/include/clang/Basic/Attr.td index 493b9880310..4ee2a9845c8 100644 --- a/clang/include/clang/Basic/Attr.td +++ b/clang/include/clang/Basic/Attr.td @@ -2044,7 +2044,7 @@ def AnyX86Interrupt : InheritableAttr, TargetSpecificAttr<TargetAnyX86> { let Subjects = SubjectList<[HasFunctionProto]>; let ParseKind = "Interrupt"; let HasCustomParsing = 1; - let Documentation = [AnyX86InterruptDocs]; + let Documentation = [Undocumented]; } def AnyX86NoCallerSavedRegisters : InheritableAttr, diff --git a/clang/include/clang/Basic/AttrDocs.td b/clang/include/clang/Basic/AttrDocs.td index 3a288118bae..78a40c46937 100644 --- a/clang/include/clang/Basic/AttrDocs.td +++ b/clang/include/clang/Basic/AttrDocs.td @@ -2790,60 +2790,6 @@ Marking virtual functions as ``disable_tail_calls`` is legal. }]; } -def AnyX86InterruptDocs : Documentation { - let Category = DocCatFunction; - let Heading = "interrupt (X86)"; - let Content = [{ -Clang supports the GNU style ``__attribute__((interrupt))`` attribute on -x86/x86-64 targets.The compiler generates function entry and exit sequences -suitable for use in an interrupt handler when this attribute is present. -The 'IRET' instruction, instead of the 'RET' instruction, is used to return -from interrupt or exception handlers. All registers, except for the EFLAGS -register which is restored by the 'IRET' instruction, are preserved by the -compiler. - -Any interruptible-without-stack-switch code must be compiled with --mno-red-zone since interrupt handlers can and will, because of the -hardware design, touch the red zone. - -1. interrupt handler must be declared with a mandatory pointer argument: - - .. code-block:: c - - struct interrupt_frame - { - uword_t ip; - uword_t cs; - uword_t flags; - uword_t sp; - uword_t ss; - }; - - __attribute__ ((interrupt)) - void f (struct interrupt_frame *frame) { - ... - } - -2. exception handler: - - The exception handler is very similar to the interrupt handler with - a different mandatory function signature: - - .. code-block:: c - - __attribute__ ((interrupt)) - void f (struct interrupt_frame *frame, uword_t error_code) { - ... - } - - and compiler pops 'ERROR_CODE' off stack before the 'IRET' instruction. - - The exception handler should only be used for exceptions which push an - error code and all other exceptions must use the interrupt handler. - The system will crash if the wrong handler is used. - }]; -} - def AnyX86NoCallerSavedRegistersDocs : Documentation { let Category = DocCatFunction; let Content = [{ |

