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

4.115
Last change on this file since cfd8d7a was cfd8d7a, checked in by Sebastian Huber <sebastian.huber@…>, on May 8, 2013 at 7:30:31 AM

arm: Support VFP-D32 and Neon

  • Property mode set to 100644
File size: 1.5 KB
Line 
1/*
2 * Copyright (c) 2013 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.com/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_D32
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        clobber_vfp_register    d16
53        clobber_vfp_register    d17
54        clobber_vfp_register    d18
55        clobber_vfp_register    d19
56        clobber_vfp_register    d20
57        clobber_vfp_register    d21
58        clobber_vfp_register    d22
59        clobber_vfp_register    d23
60        clobber_vfp_register    d24
61        clobber_vfp_register    d25
62        clobber_vfp_register    d26
63        clobber_vfp_register    d27
64        clobber_vfp_register    d28
65        clobber_vfp_register    d29
66        clobber_vfp_register    d30
67        clobber_vfp_register    d31
68#endif
69
70        clobber_register        r1
71        clobber_register        r2
72        clobber_register        r3
73        clobber_register        r12
74
75        bx      lr
76
77FUNCTION_END(_CPU_Context_volatile_clobber)
Note: See TracBrowser for help on using the repository browser.