| 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 | 
| Glauber Costa | 6c2d458 | 2008-06-24 12:05:11 -0300 | [diff] [blame] | 6 | # define __ASM_EX_SEC	.section __ex_table | 
| H. Peter Anvin | e845c06 | 2008-01-30 13:30:06 +0100 | [diff] [blame] | 7 | #else | 
| Jeremy Fitzhardinge | e6e07d8 | 2008-06-16 16:08:17 -0700 | [diff] [blame] | 8 | # define __ASM_FORM(x)	" " #x " " | 
| Glauber Costa | 6c2d458 | 2008-06-24 12:05:11 -0300 | [diff] [blame] | 9 | # define __ASM_EX_SEC	" .section __ex_table,\"a\"\n" | 
| Jeremy Fitzhardinge | e6e07d8 | 2008-06-16 16:08:17 -0700 | [diff] [blame] | 10 | #endif | 
| H. Peter Anvin | e845c06 | 2008-01-30 13:30:06 +0100 | [diff] [blame] | 11 |  | 
| Jeremy Fitzhardinge | e6e07d8 | 2008-06-16 16:08:17 -0700 | [diff] [blame] | 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 | 
| H. Peter Anvin | e845c06 | 2008-01-30 13:30:06 +0100 | [diff] [blame] | 17 |  | 
| Jeremy Fitzhardinge | e6e07d8 | 2008-06-16 16:08:17 -0700 | [diff] [blame] | 18 | #define __ASM_SIZE(inst)	__ASM_SEL(inst##l, inst##q) | 
| Glauber Costa | 40faf46 | 2008-06-24 11:37:57 -0300 | [diff] [blame] | 19 | #define __ASM_REG(reg)		__ASM_SEL(e##reg, r##reg) | 
| Harvey Harrison | 8ee5797 | 2008-01-30 13:31:26 +0100 | [diff] [blame] | 20 |  | 
| Jeremy Fitzhardinge | e6e07d8 | 2008-06-16 16:08:17 -0700 | [diff] [blame] | 21 | #define _ASM_PTR	__ASM_SEL(.long, .quad) | 
 | 22 | #define _ASM_ALIGN	__ASM_SEL(.balign 4, .balign 8) | 
 | 23 | #define _ASM_MOV_UL	__ASM_SIZE(mov) | 
 | 24 |  | 
 | 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) | 
| Glauber Costa | 40faf46 | 2008-06-24 11:37:57 -0300 | [diff] [blame] | 30 | #define _ASM_AX		__ASM_REG(ax) | 
| Glauber Costa | 2528de4 | 2008-06-24 17:36:31 -0300 | [diff] [blame] | 31 | #define _ASM_BX		__ASM_REG(bx) | 
 | 32 | #define _ASM_CX		__ASM_REG(cx) | 
| Glauber Costa | 40faf46 | 2008-06-24 11:37:57 -0300 | [diff] [blame] | 33 | #define _ASM_DX		__ASM_REG(dx) | 
| H. Peter Anvin | e845c06 | 2008-01-30 13:30:06 +0100 | [diff] [blame] | 34 |  | 
| H. Peter Anvin | a34746b | 2008-02-04 16:47:56 +0100 | [diff] [blame] | 35 | /* Exception table entry */ | 
 | 36 | # define _ASM_EXTABLE(from,to) \ | 
| Glauber Costa | 6c2d458 | 2008-06-24 12:05:11 -0300 | [diff] [blame] | 37 | 	__ASM_EX_SEC	\ | 
| H. Peter Anvin | a34746b | 2008-02-04 16:47:56 +0100 | [diff] [blame] | 38 | 	_ASM_ALIGN "\n" \ | 
 | 39 | 	_ASM_PTR #from "," #to "\n" \ | 
 | 40 | 	" .previous\n" | 
 | 41 |  | 
| H. Peter Anvin | e845c06 | 2008-01-30 13:30:06 +0100 | [diff] [blame] | 42 | #endif /* _ASM_X86_ASM_H */ |