| 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 |