File: /Users/paulross/dev/linux/linux-3.13/arch/x86/include/asm/asm.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       1: #ifndef _ASM_X86_ASM_H
       2: #define _ASM_X86_ASM_H
       3: 
       4: #ifdef __ASSEMBLY__
       5: # define __ASM_FORM(x)    x
       6: # define __ASM_FORM_RAW(x)     x
       7: # define __ASM_FORM_COMMA(x) x,
       8: #else
       9: # define __ASM_FORM(x)    " " #x " "
      10: # define __ASM_FORM_RAW(x)     #x
      11: # define __ASM_FORM_COMMA(x) " " #x ","
      12: #endif
      13: 
      14: #ifdef CONFIG_X86_32
      15: # define __ASM_SEL(a,b) __ASM_FORM(a)
      16: # define __ASM_SEL_RAW(a,b) __ASM_FORM_RAW(a)
      17: #else
      18: # define __ASM_SEL(a,b) __ASM_FORM(b)
      19: # define __ASM_SEL_RAW(a,b) __ASM_FORM_RAW(b)
      20: #endif
      21: 
      22: #define __ASM_SIZE(inst, ...)    __ASM_SEL(inst##l##__VA_ARGS__, \
      23:                       inst##q##__VA_ARGS__)
      24: #define __ASM_REG(reg)         __ASM_SEL_RAW(e##reg, r##reg)
      25: 
      26: #define _ASM_PTR    __ASM_SEL(.long, .quad)
      27: #define _ASM_ALIGN    __ASM_SEL(.balign 4, .balign 8)
      28: 
      29: #define _ASM_MOV    __ASM_SIZE(mov)
      30: #define _ASM_INC    __ASM_SIZE(inc)
      31: #define _ASM_DEC    __ASM_SIZE(dec)
      32: #define _ASM_ADD    __ASM_SIZE(add)
      33: #define _ASM_SUB    __ASM_SIZE(sub)
      34: #define _ASM_XADD    __ASM_SIZE(xadd)
      35: 
      36: #define _ASM_AX        __ASM_REG(ax)
      37: #define _ASM_BX        __ASM_REG(bx)
      38: #define _ASM_CX        __ASM_REG(cx)
      39: #define _ASM_DX        __ASM_REG(dx)
      40: #define _ASM_SP        __ASM_REG(sp)
      41: #define _ASM_BP        __ASM_REG(bp)
      42: #define _ASM_SI        __ASM_REG(si)
      43: #define _ASM_DI        __ASM_REG(di)
      44: 
      45: /* Exception table entry */
      46: #ifdef __ASSEMBLY__
      47: # define _ASM_EXTABLE(from,to)                    \
      48:     .pushsection "__ex_table","a" ;                \
      49:     .balign 8 ;                        \
      50:     .long (from) - . ;                    \
      51:     .long (to) - . ;                    \
      52:     .popsection
      53: 
      54: # define _ASM_EXTABLE_EX(from,to)                \
      55:     .pushsection "__ex_table","a" ;                \
      56:     .balign 8 ;                        \
      57:     .long (from) - . ;                    \
      58:     .long (to) - . + 0x7ffffff0 ;                \
      59:     .popsection
      60: #else
      61: # define _ASM_EXTABLE(from,to)                    \
      62:     " .pushsection \"__ex_table\",\"a\"\n"            \
      63:     " .balign 8\n"                        \
      64:     " .long (" #from ") - .\n"                \
      65:     " .long (" #to ") - .\n"                \
      66:     " .popsection\n"
      67: 
      68: # define _ASM_EXTABLE_EX(from,to)                \
      69:     " .pushsection \"__ex_table\",\"a\"\n"            \
      70:     " .balign 8\n"                        \
      71:     " .long (" #from ") - .\n"                \
      72:     " .long (" #to ") - . + 0x7ffffff0\n"            \
      73:     " .popsection\n"
      74: #endif
      75: 
      76: #endif /* _ASM_X86_ASM_H */
      77: