diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-11-11 12:37:17 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-11-18 07:30:33 +0100 |
commit | dbeccf0ec0d34fa169a0ccaf04505f9ce4e9323b (patch) | |
tree | 4cf631260bd087308a3805953dea0cfeaee09534 /cpukit | |
parent | powerpc: Add up to date CPU_Interrupt_frame (diff) | |
download | rtems-dbeccf0ec0d34fa169a0ccaf04505f9ce4e9323b.tar.bz2 |
arm: Provide CPU_Interrupt_frame for ARMv4
Update #2809.
Diffstat (limited to 'cpukit')
-rw-r--r-- | cpukit/score/cpu/arm/rtems/score/cpu.h | 2 | ||||
-rw-r--r-- | cpukit/score/cpu/arm/rtems/score/cpuimpl.h | 56 |
2 files changed, 55 insertions, 3 deletions
diff --git a/cpukit/score/cpu/arm/rtems/score/cpu.h b/cpukit/score/cpu/arm/rtems/score/cpu.h index e4f9e377d4..326abbb662 100644 --- a/cpukit/score/cpu/arm/rtems/score/cpu.h +++ b/cpukit/score/cpu/arm/rtems/score/cpu.h @@ -687,8 +687,6 @@ typedef struct { uint32_t reserved_for_stack_alignment; } CPU_Exception_frame; -typedef CPU_Exception_frame CPU_Interrupt_frame; - void _CPU_Exception_frame_print( const CPU_Exception_frame *frame ); void _ARM_Exception_default( CPU_Exception_frame *frame ); diff --git a/cpukit/score/cpu/arm/rtems/score/cpuimpl.h b/cpukit/score/cpu/arm/rtems/score/cpuimpl.h index 75a2952da9..0885c2ef39 100644 --- a/cpukit/score/cpu/arm/rtems/score/cpuimpl.h +++ b/cpukit/score/cpu/arm/rtems/score/cpuimpl.h @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2013 embedded brains GmbH + * Copyright (c) 2013, 2016 embedded brains GmbH * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at @@ -19,6 +19,18 @@ #define CPU_PER_CPU_CONTROL_SIZE 0 +#ifdef ARM_MULTILIB_ARCH_V4 + +#if defined(ARM_MULTILIB_VFP_D32) +#define CPU_INTERRUPT_FRAME_SIZE 240 +#elif defined(ARM_MULTILIB_VFP) +#define CPU_INTERRUPT_FRAME_SIZE 112 +#else +#define CPU_INTERRUPT_FRAME_SIZE 40 +#endif + +#endif /* ARM_MULTILIB_ARCH_V4 */ + #ifndef ASM #ifdef __cplusplus @@ -27,6 +39,48 @@ extern "C" { #ifdef ARM_MULTILIB_ARCH_V4 +typedef struct { +#ifdef ARM_MULTILIB_VFP + uint32_t fpscr; +#ifdef ARM_MULTILIB_VFP_D32 + double d16; + double d17; + double d18; + double d19; + double d20; + double d21; + double d22; + double d23; + double d24; + double d25; + double d26; + double d27; + double d28; + double d29; + double d30; + double d31; +#endif /* ARM_MULTILIB_VFP_D32 */ + double d0; + double d1; + double d2; + double d3; + double d4; + double d5; + double d6; + double d7; +#endif /* ARM_MULTILIB_VFP */ + uint32_t r9; + uint32_t lr; + uint32_t r0; + uint32_t r1; + uint32_t r2; + uint32_t r3; + uint32_t return_pc; + uint32_t return_cpsr; + uint32_t r7; + uint32_t r12; +} CPU_Interrupt_frame; + #ifdef RTEMS_SMP static inline struct Per_CPU_Control *_ARM_Get_current_per_CPU_control( void ) |