diff options
Diffstat (limited to 'arch/x86/include/asm/asm.h')
-rw-r--r-- | arch/x86/include/asm/asm.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/arch/x86/include/asm/asm.h b/arch/x86/include/asm/asm.h new file mode 100644 index 000000000000..e1355f44d7c3 --- /dev/null +++ b/arch/x86/include/asm/asm.h | |||
@@ -0,0 +1,47 @@ | |||
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_EX_SEC .section __ex_table | ||
7 | #else | ||
8 | # define __ASM_FORM(x) " " #x " " | ||
9 | # define __ASM_EX_SEC " .section __ex_table,\"a\"\n" | ||
10 | #endif | ||
11 | |||
12 | #ifdef CONFIG_X86_32 | ||
13 | # define __ASM_SEL(a,b) __ASM_FORM(a) | ||
14 | #else | ||
15 | # define __ASM_SEL(a,b) __ASM_FORM(b) | ||
16 | #endif | ||
17 | |||
18 | #define __ASM_SIZE(inst) __ASM_SEL(inst##l, inst##q) | ||
19 | #define __ASM_REG(reg) __ASM_SEL(e##reg, r##reg) | ||
20 | |||
21 | #define _ASM_PTR __ASM_SEL(.long, .quad) | ||
22 | #define _ASM_ALIGN __ASM_SEL(.balign 4, .balign 8) | ||
23 | |||
24 | #define _ASM_MOV __ASM_SIZE(mov) | ||
25 | #define _ASM_INC __ASM_SIZE(inc) | ||
26 | #define _ASM_DEC __ASM_SIZE(dec) | ||
27 | #define _ASM_ADD __ASM_SIZE(add) | ||
28 | #define _ASM_SUB __ASM_SIZE(sub) | ||
29 | #define _ASM_XADD __ASM_SIZE(xadd) | ||
30 | |||
31 | #define _ASM_AX __ASM_REG(ax) | ||
32 | #define _ASM_BX __ASM_REG(bx) | ||
33 | #define _ASM_CX __ASM_REG(cx) | ||
34 | #define _ASM_DX __ASM_REG(dx) | ||
35 | #define _ASM_SP __ASM_REG(sp) | ||
36 | #define _ASM_BP __ASM_REG(bp) | ||
37 | #define _ASM_SI __ASM_REG(si) | ||
38 | #define _ASM_DI __ASM_REG(di) | ||
39 | |||
40 | /* Exception table entry */ | ||
41 | # define _ASM_EXTABLE(from,to) \ | ||
42 | __ASM_EX_SEC \ | ||
43 | _ASM_ALIGN "\n" \ | ||
44 | _ASM_PTR #from "," #to "\n" \ | ||
45 | " .previous\n" | ||
46 | |||
47 | #endif /* ASM_X86__ASM_H */ | ||