H. Peter Anvin | e845c06 | 2008-01-30 13:30:06 +0100 | [diff] [blame] | 1 | #ifndef _ASM_X86_ASM_H |
| 2 | #define _ASM_X86_ASM_H |
| 3 | |
Jeremy Fitzhardinge | e6e07d8 | 2008-06-16 16:08:17 -0700 | [diff] [blame] | 4 | #ifdef __ASSEMBLY__ |
| 5 | # define __ASM_FORM(x) x |
H. Peter Anvin | e845c06 | 2008-01-30 13:30:06 +0100 | [diff] [blame] | 6 | #else |
Jeremy Fitzhardinge | e6e07d8 | 2008-06-16 16:08:17 -0700 | [diff] [blame] | 7 | # define __ASM_FORM(x) " " #x " " |
| 8 | #endif |
H. Peter Anvin | e845c06 | 2008-01-30 13:30:06 +0100 | [diff] [blame] | 9 | |
Jeremy Fitzhardinge | e6e07d8 | 2008-06-16 16:08:17 -0700 | [diff] [blame] | 10 | #ifdef CONFIG_X86_32 |
| 11 | # define __ASM_SEL(a,b) __ASM_FORM(a) |
| 12 | #else |
| 13 | # define __ASM_SEL(a,b) __ASM_FORM(b) |
| 14 | #endif |
H. Peter Anvin | e845c06 | 2008-01-30 13:30:06 +0100 | [diff] [blame] | 15 | |
Jeremy Fitzhardinge | e6e07d8 | 2008-06-16 16:08:17 -0700 | [diff] [blame] | 16 | #define __ASM_SIZE(inst) __ASM_SEL(inst##l, inst##q) |
Harvey Harrison | 8ee5797 | 2008-01-30 13:31:26 +0100 | [diff] [blame] | 17 | |
Jeremy Fitzhardinge | e6e07d8 | 2008-06-16 16:08:17 -0700 | [diff] [blame] | 18 | #define _ASM_PTR __ASM_SEL(.long, .quad) |
| 19 | #define _ASM_ALIGN __ASM_SEL(.balign 4, .balign 8) |
| 20 | #define _ASM_MOV_UL __ASM_SIZE(mov) |
| 21 | |
| 22 | #define _ASM_INC __ASM_SIZE(inc) |
| 23 | #define _ASM_DEC __ASM_SIZE(dec) |
| 24 | #define _ASM_ADD __ASM_SIZE(add) |
| 25 | #define _ASM_SUB __ASM_SIZE(sub) |
| 26 | #define _ASM_XADD __ASM_SIZE(xadd) |
H. Peter Anvin | e845c06 | 2008-01-30 13:30:06 +0100 | [diff] [blame] | 27 | |
H. Peter Anvin | a34746b | 2008-02-04 16:47:56 +0100 | [diff] [blame] | 28 | /* Exception table entry */ |
| 29 | # define _ASM_EXTABLE(from,to) \ |
| 30 | " .section __ex_table,\"a\"\n" \ |
| 31 | _ASM_ALIGN "\n" \ |
| 32 | _ASM_PTR #from "," #to "\n" \ |
| 33 | " .previous\n" |
| 34 | |
H. Peter Anvin | e845c06 | 2008-01-30 13:30:06 +0100 | [diff] [blame] | 35 | #endif /* _ASM_X86_ASM_H */ |