Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
[safe/jmp/linux-2.6] / include / asm-x86 / asm.h
index b5006eb..9722032 100644 (file)
@@ -1,18 +1,42 @@
 #ifndef _ASM_X86_ASM_H
 #define _ASM_X86_ASM_H
 
+#ifdef __ASSEMBLY__
+# define __ASM_FORM(x) x
+# define __ASM_EX_SEC  .section __ex_table
+#else
+# define __ASM_FORM(x) " " #x " "
+# define __ASM_EX_SEC  " .section __ex_table,\"a\"\n"
+#endif
+
 #ifdef CONFIG_X86_32
-/* 32 bits */
+# define __ASM_SEL(a,b) __ASM_FORM(a)
+#else
+# define __ASM_SEL(a,b) __ASM_FORM(b)
+#endif
 
-# define _ASM_PTR      " .long "
-# define _ASM_ALIGN    " .balign 4 "
+#define __ASM_SIZE(inst)       __ASM_SEL(inst##l, inst##q)
+#define __ASM_REG(reg)         __ASM_SEL(e##reg, r##reg)
 
-#else
-/* 64 bits */
+#define _ASM_PTR       __ASM_SEL(.long, .quad)
+#define _ASM_ALIGN     __ASM_SEL(.balign 4, .balign 8)
+#define _ASM_MOV_UL    __ASM_SIZE(mov)
 
-# define _ASM_PTR      " .quad "
-# define _ASM_ALIGN    " .balign 8 "
+#define _ASM_INC       __ASM_SIZE(inc)
+#define _ASM_DEC       __ASM_SIZE(dec)
+#define _ASM_ADD       __ASM_SIZE(add)
+#define _ASM_SUB       __ASM_SIZE(sub)
+#define _ASM_XADD      __ASM_SIZE(xadd)
+#define _ASM_AX                __ASM_REG(ax)
+#define _ASM_BX                __ASM_REG(bx)
+#define _ASM_CX                __ASM_REG(cx)
+#define _ASM_DX                __ASM_REG(dx)
 
-#endif /* CONFIG_X86_32 */
+/* Exception table entry */
+# define _ASM_EXTABLE(from,to) \
+       __ASM_EX_SEC    \
+       _ASM_ALIGN "\n" \
+       _ASM_PTR #from "," #to "\n" \
+       " .previous\n"
 
 #endif /* _ASM_X86_ASM_H */