| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* | 
 | 2 |  * linux/include/asm-arm/vfpmacros.h | 
 | 3 |  * | 
 | 4 |  * Assembler-only file containing VFP macros and register definitions. | 
 | 5 |  */ | 
 | 6 | #include "vfp.h" | 
 | 7 |  | 
 | 8 | @ Macros to allow building with old toolkits (with no VFP support) | 
 | 9 | 	.macro	VFPFMRX, rd, sysreg, cond | 
 | 10 | 	MRC\cond	p10, 7, \rd, \sysreg, cr0, 0	@ FMRX	\rd, \sysreg | 
 | 11 | 	.endm | 
 | 12 |  | 
 | 13 | 	.macro	VFPFMXR, sysreg, rd, cond | 
 | 14 | 	MCR\cond	p10, 7, \rd, \sysreg, cr0, 0	@ FMXR	\sysreg, \rd | 
 | 15 | 	.endm | 
 | 16 |  | 
 | 17 | 	@ read all the working registers back into the VFP | 
 | 18 | 	.macro	VFPFLDMIA, base | 
| Catalin Marinas | bb54a33 | 2006-04-10 21:32:42 +0100 | [diff] [blame] | 19 | #if __LINUX_ARM_ARCH__ < 6 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 20 | 	LDC	p11, cr0, [\base],#33*4		    @ FLDMIAX \base!, {d0-d15} | 
| Catalin Marinas | bb54a33 | 2006-04-10 21:32:42 +0100 | [diff] [blame] | 21 | #else | 
 | 22 | 	LDC	p11, cr0, [\base],#32*4		    @ FLDMIAD \base!, {d0-d15} | 
 | 23 | #endif | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 24 | 	.endm | 
 | 25 |  | 
 | 26 | 	@ write all the working registers out of the VFP | 
 | 27 | 	.macro	VFPFSTMIA, base | 
| Catalin Marinas | bb54a33 | 2006-04-10 21:32:42 +0100 | [diff] [blame] | 28 | #if __LINUX_ARM_ARCH__ < 6 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 29 | 	STC	p11, cr0, [\base],#33*4		    @ FSTMIAX \base!, {d0-d15} | 
| Catalin Marinas | bb54a33 | 2006-04-10 21:32:42 +0100 | [diff] [blame] | 30 | #else | 
 | 31 | 	STC	p11, cr0, [\base],#32*4		    @ FSTMIAD \base!, {d0-d15} | 
 | 32 | #endif | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 33 | 	.endm |