summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-01-07 08:39:45 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-01-07 15:07:41 +0100
commit0d8cde94eb859e9d644f90665f06daed7086f7fc (patch)
tree05001b5bd70c1cb8e0103180880419989b05aa37
parentarm: Rename inline functions (diff)
downloadrtems-0d8cde94eb859e9d644f90665f06daed7086f7fc.tar.bz2
arm: Provide CPU_Exception_frame for ARMv7-M
-rw-r--r--cpukit/score/cpu/arm/rtems/score/cpu.h26
1 files changed, 12 insertions, 14 deletions
diff --git a/cpukit/score/cpu/arm/rtems/score/cpu.h b/cpukit/score/cpu/arm/rtems/score/cpu.h
index ed1ce3ba90..008311244c 100644
--- a/cpukit/score/cpu/arm/rtems/score/cpu.h
+++ b/cpukit/score/cpu/arm/rtems/score/cpu.h
@@ -482,14 +482,14 @@ static inline uint16_t CPU_swap_u16( uint16_t value )
/** @} */
-#if defined(ARM_MULTILIB_ARCH_V4)
-
/**
* @addtogroup ScoreCPUARM
*
* @{
*/
+#if defined(ARM_MULTILIB_ARCH_V4)
+
typedef enum {
ARM_EXCEPTION_RESET = 0,
ARM_EXCEPTION_UNDEF = 1,
@@ -503,7 +503,7 @@ typedef enum {
ARM_EXCEPTION_MAKE_ENUM_32_BIT = 0xffffffff
} Arm_symbolic_exception_name;
-/** @} */
+#endif /* defined(ARM_MULTILIB_ARCH_V4) */
typedef struct {
uint32_t register_r0;
@@ -520,27 +520,25 @@ typedef struct {
uint32_t register_r11;
uint32_t register_r12;
uint32_t register_sp;
- uint32_t register_lr;
- uint32_t register_pc;
+ void *register_lr;
+ void *register_pc;
+#if defined(ARM_MULTILIB_ARCH_V4)
uint32_t register_cpsr;
Arm_symbolic_exception_name vector;
+#elif defined(ARM_MULTILIB_ARCH_V7M)
+ uint32_t register_xpsr;
+ uint32_t vector;
+#endif
} CPU_Exception_frame;
typedef CPU_Exception_frame CPU_Interrupt_frame;
-#else /* !defined(ARM_MULTILIB_ARCH_V4) */
-
-typedef void CPU_Interrupt_frame;
-
-/* FIXME */
-typedef CPU_Interrupt_frame CPU_Exception_frame;
-
-#endif /* !defined(ARM_MULTILIB_ARCH_V4) */
-
void _CPU_Exception_frame_print( const CPU_Exception_frame *frame );
void _ARM_Exception_default( CPU_Exception_frame *frame );
+/** @} */
+
#ifdef __cplusplus
}
#endif