2 * linux/include/asm-arm/vfpmacros.h
4 * Assembler-only file containing VFP macros and register definitions.
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
13 .macro VFPFMXR
, sysreg
, rd
, cond
14 MCR\cond p10
, 7, \rd
, \sysreg
, cr0
, 0 @ FMXR \sysreg
, \rd
17 @ read all the working registers back into the VFP
18 .macro VFPFLDMIA
, base
, tmp
19 #if __LINUX_ARM_ARCH__ < 6
20 LDC p11
, cr0
, [\base
],#33*4 @ FLDMIAX \base!, {d0-d15}
22 LDC p11
, cr0
, [\base
],#32*4 @ FLDMIAD \base!, {d0-d15}
25 VFPFMRX
\tmp
, MVFR0 @ Media
and VFP Feature Register
0
26 and \tmp
, \tmp
, #MVFR0_A_SIMD_MASK @ A_SIMD field
27 cmp
\tmp
, #2 @ 32 x 64bit registers?
28 ldceql p11
, cr0
, [\base
],#32*4 @ FLDMIAD \base!, {d16-d31}
29 addne
\base
, \base
, #32*4 @ step over unused register space
33 @ write all the working registers out of the VFP
34 .macro VFPFSTMIA
, base
, tmp
35 #if __LINUX_ARM_ARCH__ < 6
36 STC p11
, cr0
, [\base
],#33*4 @ FSTMIAX \base!, {d0-d15}
38 STC p11
, cr0
, [\base
],#32*4 @ FSTMIAD \base!, {d0-d15}
41 VFPFMRX
\tmp
, MVFR0 @ Media
and VFP Feature Register
0
42 and \tmp
, \tmp
, #MVFR0_A_SIMD_MASK @ A_SIMD field
43 cmp
\tmp
, #2 @ 32 x 64bit registers?
44 stceql p11
, cr0
, [\base
],#32*4 @ FSTMIAD \base!, {d16-d31}
45 addne
\base
, \base
, #32*4 @ step over unused register space