source: rtems/cpukit/score/cpu/arm/arm-context-volatile-clobber.S @ 6cdc090

4.115
Last change on this file since 6cdc090 was 8ae37323, checked in by Sebastian Huber <sebastian.huber@…>, on 08/10/14 at 16:36:30

arm: Add support for FPv4-SP floating point unit

This floating point unit is available in Cortex-M4 processors and
defined by ARMv7-M. This adds basic support for other VFP-D16 variants.

  • Property mode set to 100644
File size: 1.6 KB
Line 
1/*
2 * Copyright (c) 2013-2014 embedded brains GmbH.  All rights reserved.
3 *
4 *  embedded brains GmbH
5 *  Dornierstr. 4
6 *  82178 Puchheim
7 *  Germany
8 *  <rtems@embedded-brains.de>
9 *
10 * The license and distribution terms for this file may be
11 * found in the file LICENSE in this distribution or at
12 * http://www.rtems.org/license/LICENSE.
13 */
14
15#ifdef HAVE_CONFIG_H
16  #include "config.h"
17#endif
18
19#include <rtems/asm.h>
20
21        .section        .text
22
23FUNCTION_THUMB_ENTRY(_CPU_Context_volatile_clobber)
24
25.macro clobber_register reg
26        sub     r0, r0, #1
27        mov     \reg, r0
28.endm
29
30#ifdef ARM_MULTILIB_VFP
31        vmrs    r1, FPSCR
32        movs    r2, #0x001f
33        movt    r2, #0xf800
34        bic     r1, r1, r2
35        and     r2, r2, r0
36        orr     r1, r1, r2
37        vmsr    FPSCR, r1
38
39.macro clobber_vfp_register reg
40        sub     r0, r0, #1
41        vmov    \reg, r0, r0
42.endm
43
44        clobber_vfp_register    d0
45        clobber_vfp_register    d1
46        clobber_vfp_register    d2
47        clobber_vfp_register    d3
48        clobber_vfp_register    d4
49        clobber_vfp_register    d5
50        clobber_vfp_register    d6
51        clobber_vfp_register    d7
52#ifdef ARM_MULTILIB_VFP_D32
53        clobber_vfp_register    d16
54        clobber_vfp_register    d17
55        clobber_vfp_register    d18
56        clobber_vfp_register    d19
57        clobber_vfp_register    d20
58        clobber_vfp_register    d21
59        clobber_vfp_register    d22
60        clobber_vfp_register    d23
61        clobber_vfp_register    d24
62        clobber_vfp_register    d25
63        clobber_vfp_register    d26
64        clobber_vfp_register    d27
65        clobber_vfp_register    d28
66        clobber_vfp_register    d29
67        clobber_vfp_register    d30
68        clobber_vfp_register    d31
69#endif /* ARM_MULTILIB_VFP_D32 */
70#endif /* ARM_MULTILIB_VFP */
71
72        clobber_register        r1
73        clobber_register        r2
74        clobber_register        r3
75        clobber_register        r12
76
77        bx      lr
78
79FUNCTION_END(_CPU_Context_volatile_clobber)
Note: See TracBrowser for help on using the repository browser.