diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-08-10 18:36:30 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-08-12 19:08:19 +0200 |
commit | 8ae373235b316ff10c3b6f30ac1f2efed9bec011 (patch) | |
tree | f52d2ff1e1ba63036c7d1f5f34ba41db783d1f00 /cpukit/score/cpu/arm/rtems/score/armv7m.h | |
parent | bsp/altera-cyclone-v: Add RTC driver. (diff) | |
download | rtems-8ae373235b316ff10c3b6f30ac1f2efed9bec011.tar.bz2 |
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.
Diffstat (limited to '')
-rw-r--r-- | cpukit/score/cpu/arm/rtems/score/armv7m.h | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/cpukit/score/cpu/arm/rtems/score/armv7m.h b/cpukit/score/cpu/arm/rtems/score/armv7m.h index b54585921a..c5e473ec0a 100644 --- a/cpukit/score/cpu/arm/rtems/score/armv7m.h +++ b/cpukit/score/cpu/arm/rtems/score/armv7m.h @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2011 Sebastian Huber. All rights reserved. + * Copyright (c) 2011-2014 Sebastian Huber. All rights reserved. * * embedded brains GmbH * Obere Lagerstr. 30 @@ -29,6 +29,11 @@ extern "C" { #ifdef ARM_MULTILIB_ARCH_V7M +/* Coprocessor Access Control Register, CPACR */ +#define ARMV7M_CPACR 0xe000ed88 + +#ifndef ASM + typedef struct { uint32_t reserved_0; uint32_t ictr; @@ -47,6 +52,26 @@ typedef struct { void *register_lr; void *register_pc; uint32_t register_xpsr; +#ifdef ARM_MULTILIB_VFP + uint32_t register_s0; + uint32_t register_s1; + uint32_t register_s2; + uint32_t register_s3; + uint32_t register_s4; + uint32_t register_s5; + uint32_t register_s6; + uint32_t register_s7; + uint32_t register_s8; + uint32_t register_s9; + uint32_t register_s10; + uint32_t register_s11; + uint32_t register_s12; + uint32_t register_s13; + uint32_t register_s14; + uint32_t register_s15; + uint32_t register_fpscr; + uint32_t reserved; +#endif } ARMV7M_Exception_frame; typedef struct { @@ -97,6 +122,14 @@ typedef struct { uint32_t mmfar; uint32_t bfar; uint32_t afsr; + uint32_t reserved_e000ed40[18]; + uint32_t cpacr; + uint32_t reserved_e000ed8c[106]; + uint32_t fpccr; + uint32_t fpcar; + uint32_t fpdscr; + uint32_t mvfr0; + uint32_t mvfr1; } ARMV7M_SCB; typedef struct { @@ -504,6 +537,8 @@ void _ARMV7M_Pendable_service_call( void ); void _ARMV7M_Supervisor_call( void ); +#endif /* ASM */ + #endif /* ARM_MULTILIB_ARCH_V7M */ #ifdef __cplusplus |