[PATCH 15/26] arm: Provide CPU_Interrupt_frame for ARMv4
Sebastian Huber
sebastian.huber at embedded-brains.de
Tue Nov 15 13:51:47 UTC 2016
Update #2809.
---
cpukit/score/cpu/arm/rtems/score/cpu.h | 2 --
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 e4f9e37..326abbb 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 75a2952..0885c2e 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 )
--
1.8.4.5
More information about the devel
mailing list