Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v6.15-rc6 68 lines 1.8 kB view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * arch/arm/include/asm/vfpmacros.h 4 * 5 * Assembler-only file containing VFP macros and register definitions. 6 */ 7#include <asm/hwcap.h> 8 9#include <asm/vfp.h> 10 11 .macro VFPFMRX, rd, sysreg, cond 12 vmrs\cond \rd, \sysreg 13 .endm 14 15 .macro VFPFMXR, sysreg, rd, cond 16 vmsr\cond \sysreg, \rd 17 .endm 18 19 @ read all the working registers back into the VFP 20 .macro VFPFLDMIA, base, tmp 21 .fpu vfpv2 22#if __LINUX_ARM_ARCH__ < 6 23 fldmiax \base!, {d0-d15} 24#else 25 vldmia \base!, {d0-d15} 26#endif 27#ifdef CONFIG_VFPv3 28 .fpu vfpv3 29#if __LINUX_ARM_ARCH__ <= 6 30 ldr \tmp, =elf_hwcap @ may not have MVFR regs 31 ldr \tmp, [\tmp, #0] 32 tst \tmp, #HWCAP_VFPD32 33 vldmiane \base!, {d16-d31} 34 addeq \base, \base, #32*4 @ step over unused register space 35#else 36 VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0 37 and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field 38 cmp \tmp, #2 @ 32 x 64bit registers? 39 vldmiaeq \base!, {d16-d31} 40 addne \base, \base, #32*4 @ step over unused register space 41#endif 42#endif 43 .endm 44 45 @ write all the working registers out of the VFP 46 .macro VFPFSTMIA, base, tmp 47#if __LINUX_ARM_ARCH__ < 6 48 fstmiax \base!, {d0-d15} 49#else 50 vstmia \base!, {d0-d15} 51#endif 52#ifdef CONFIG_VFPv3 53 .fpu vfpv3 54#if __LINUX_ARM_ARCH__ <= 6 55 ldr \tmp, =elf_hwcap @ may not have MVFR regs 56 ldr \tmp, [\tmp, #0] 57 tst \tmp, #HWCAP_VFPD32 58 vstmiane \base!, {d16-d31} 59 addeq \base, \base, #32*4 @ step over unused register space 60#else 61 VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0 62 and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field 63 cmp \tmp, #2 @ 32 x 64bit registers? 64 vstmiaeq \base!, {d16-d31} 65 addne \base, \base, #32*4 @ step over unused register space 66#endif 67#endif 68 .endm