Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 #ifndef _ASM_X86_DWARF2_H
  2 #define _ASM_X86_DWARF2_H
  3 
  4 #ifndef __ASSEMBLY__
  5 #warning "asm/dwarf2.h should be only included in pure assembly files"
  6 #endif
  7 
  8 /*
  9  * Macros for dwarf2 CFI unwind table entries.
 10  * See "as.info" for details on these pseudo ops. Unfortunately
 11  * they are only supported in very new binutils, so define them
 12  * away for older version.
 13  */
 14 
 15 #ifdef CONFIG_AS_CFI
 16 
 17 #define CFI_STARTPROC           .cfi_startproc
 18 #define CFI_ENDPROC             .cfi_endproc
 19 #define CFI_DEF_CFA             .cfi_def_cfa
 20 #define CFI_DEF_CFA_REGISTER    .cfi_def_cfa_register
 21 #define CFI_DEF_CFA_OFFSET      .cfi_def_cfa_offset
 22 #define CFI_ADJUST_CFA_OFFSET   .cfi_adjust_cfa_offset
 23 #define CFI_OFFSET              .cfi_offset
 24 #define CFI_REL_OFFSET          .cfi_rel_offset
 25 #define CFI_REGISTER            .cfi_register
 26 #define CFI_RESTORE             .cfi_restore
 27 #define CFI_REMEMBER_STATE      .cfi_remember_state
 28 #define CFI_RESTORE_STATE       .cfi_restore_state
 29 #define CFI_UNDEFINED           .cfi_undefined
 30 
 31 #ifdef CONFIG_AS_CFI_SIGNAL_FRAME
 32 #define CFI_SIGNAL_FRAME        .cfi_signal_frame
 33 #else
 34 #define CFI_SIGNAL_FRAME
 35 #endif
 36 
 37 #else
 38 
 39 /*
 40  * Due to the structure of pre-exisiting code, don't use assembler line
 41  * comment character # to ignore the arguments. Instead, use a dummy macro.
 42  */
 43 .macro cfi_ignore a=0, b=0, c=0, d=0
 44 .endm
 45 
 46 #define CFI_STARTPROC           cfi_ignore
 47 #define CFI_ENDPROC             cfi_ignore
 48 #define CFI_DEF_CFA             cfi_ignore
 49 #define CFI_DEF_CFA_REGISTER    cfi_ignore
 50 #define CFI_DEF_CFA_OFFSET      cfi_ignore
 51 #define CFI_ADJUST_CFA_OFFSET   cfi_ignore
 52 #define CFI_OFFSET              cfi_ignore
 53 #define CFI_REL_OFFSET          cfi_ignore
 54 #define CFI_REGISTER            cfi_ignore
 55 #define CFI_RESTORE             cfi_ignore
 56 #define CFI_REMEMBER_STATE      cfi_ignore
 57 #define CFI_RESTORE_STATE       cfi_ignore
 58 #define CFI_UNDEFINED           cfi_ignore
 59 #define CFI_SIGNAL_FRAME        cfi_ignore
 60 
 61 #endif
 62 
 63 /*
 64  * An attempt to make CFI annotations more or less
 65  * correct and shorter. It is implied that you know
 66  * what you're doing if you use them.
 67  */
 68 #ifdef __ASSEMBLY__
 69 #ifdef CONFIG_X86_64
 70         .macro pushq_cfi reg
 71         pushq \reg
 72         CFI_ADJUST_CFA_OFFSET 8
 73         .endm
 74 
 75         .macro popq_cfi reg
 76         popq \reg
 77         CFI_ADJUST_CFA_OFFSET -8
 78         .endm
 79 
 80         .macro movq_cfi reg offset=0
 81         movq %\reg, \offset(%rsp)
 82         CFI_REL_OFFSET \reg, \offset
 83         .endm
 84 
 85         .macro movq_cfi_restore offset reg
 86         movq \offset(%rsp), %\reg
 87         CFI_RESTORE \reg
 88         .endm
 89 #else /*!CONFIG_X86_64*/
 90 
 91         /* 32bit defenitions are missed yet */
 92 
 93 #endif /*!CONFIG_X86_64*/
 94 #endif /*__ASSEMBLY__*/
 95 
 96 #endif /* _ASM_X86_DWARF2_H */
 97 
  This page was automatically generated by the LXR engine.