summaryrefslogtreecommitdiffstats
path: root/cpukit/score/cpu/arm/arm-exception-frame-print.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-05-08 09:30:31 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-05-10 12:10:14 +0200
commitcfd8d7a3d73a10ae7cdbbfe5eb39839c46a5c77e (patch)
tree5b694eb680b61129908a274b218d5f67fa0d34d6 /cpukit/score/cpu/arm/arm-exception-frame-print.c
parentarm: Simplify architecture selection (diff)
downloadrtems-cfd8d7a3d73a10ae7cdbbfe5eb39839c46a5c77e.tar.bz2
arm: Support VFP-D32 and Neon
Diffstat (limited to 'cpukit/score/cpu/arm/arm-exception-frame-print.c')
-rw-r--r--cpukit/score/cpu/arm/arm-exception-frame-print.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/cpukit/score/cpu/arm/arm-exception-frame-print.c b/cpukit/score/cpu/arm/arm-exception-frame-print.c
index 53d31adb73..bc0f514a85 100644
--- a/cpukit/score/cpu/arm/arm-exception-frame-print.c
+++ b/cpukit/score/cpu/arm/arm-exception-frame-print.c
@@ -19,6 +19,29 @@
#include <rtems/score/cpu.h>
#include <rtems/bspIo.h>
+static void _ARM_VFP_context_print( const ARM_VFP_context *vfp_context )
+{
+#ifdef ARM_MULTILIB_VFP_D32
+ if ( vfp_context != NULL ) {
+ const uint64_t *dx = &vfp_context->register_d0;
+ int i;
+
+ printk(
+ "FPEXC = 0x%08x\nFPSCR = 0x%08x\n",
+ vfp_context->register_fpexc,
+ vfp_context->register_fpscr
+ );
+
+ for ( i = 0; i < 32; ++i ) {
+ uint32_t low = (uint32_t) dx[i];
+ uint32_t high = (uint32_t) (dx[i] >> 32);
+
+ printk( "D%02i = 0x%08x%08x\n", i, high, low );
+ }
+ }
+#endif
+}
+
void _CPU_Exception_frame_print( const CPU_Exception_frame *frame )
{
printk(
@@ -59,4 +82,6 @@ void _CPU_Exception_frame_print( const CPU_Exception_frame *frame )
#endif
frame->vector
);
+
+ _ARM_VFP_context_print( frame->vfp_context );
}