diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-05-08 09:30:31 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-05-10 12:10:14 +0200 |
commit | cfd8d7a3d73a10ae7cdbbfe5eb39839c46a5c77e (patch) | |
tree | 5b694eb680b61129908a274b218d5f67fa0d34d6 /cpukit/score/cpu/arm/arm-exception-frame-print.c | |
parent | arm: Simplify architecture selection (diff) | |
download | rtems-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.c | 25 |
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 ); } |