File indexing completed on 2025-05-11 08:24:23
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 #ifdef HAVE_CONFIG_H
0029 #include "config.h"
0030 #endif
0031
0032 #include <rtems/asm.h>
0033
0034 .section .text
0035
0036 #ifdef __thumb__
0037 FUNCTION_THUMB_ENTRY(_CPU_Context_volatile_clobber)
0038 #else
0039 FUNCTION_ENTRY(_CPU_Context_volatile_clobber)
0040 #endif
0041
0042 .macro clobber_register reg
0043 sub r0, r0, #1
0044 mov \reg, r0
0045 .endm
0046
0047 #ifdef ARM_MULTILIB_VFP
0048 vmrs r1, FPSCR
0049 ldr r2, =0xf000001f
0050 bic r1, r1, r2
0051 and r2, r2, r0
0052 orr r1, r1, r2
0053 vmsr FPSCR, r1
0054
0055 .macro clobber_vfp_register reg
0056 sub r0, r0, #1
0057 vmov \reg, r0, r0
0058 .endm
0059
0060 clobber_vfp_register d0
0061 clobber_vfp_register d1
0062 clobber_vfp_register d2
0063 clobber_vfp_register d3
0064 clobber_vfp_register d4
0065 clobber_vfp_register d5
0066 clobber_vfp_register d6
0067 clobber_vfp_register d7
0068 #ifdef ARM_MULTILIB_VFP_D32
0069 clobber_vfp_register d16
0070 clobber_vfp_register d17
0071 clobber_vfp_register d18
0072 clobber_vfp_register d19
0073 clobber_vfp_register d20
0074 clobber_vfp_register d21
0075 clobber_vfp_register d22
0076 clobber_vfp_register d23
0077 clobber_vfp_register d24
0078 clobber_vfp_register d25
0079 clobber_vfp_register d26
0080 clobber_vfp_register d27
0081 clobber_vfp_register d28
0082 clobber_vfp_register d29
0083 clobber_vfp_register d30
0084 clobber_vfp_register d31
0085 #endif
0086 #endif
0087
0088 clobber_register r1
0089 clobber_register r2
0090 clobber_register r3
0091 clobber_register r12
0092
0093 bx lr
0094
0095 FUNCTION_END(_CPU_Context_volatile_clobber)