[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