diff options
Diffstat (limited to 'cpukit/score/cpu/aarch64/aarch64-exception-frame-print.c')
-rw-r--r-- | cpukit/score/cpu/aarch64/aarch64-exception-frame-print.c | 155 |
1 files changed, 90 insertions, 65 deletions
diff --git a/cpukit/score/cpu/aarch64/aarch64-exception-frame-print.c b/cpukit/score/cpu/aarch64/aarch64-exception-frame-print.c index c5b477c72f..e0fbab68dc 100644 --- a/cpukit/score/cpu/aarch64/aarch64-exception-frame-print.c +++ b/cpukit/score/cpu/aarch64/aarch64-exception-frame-print.c @@ -44,37 +44,37 @@ #include <inttypes.h> +#include <rtems/bspIo.h> #include <rtems/score/cpu.h> #include <rtems/score/io.h> -#include <rtems/bspIo.h> typedef struct { - char *s; - size_t n; + char *s; + size_t n; } String_Context; -static void _CPU_Put_char( int c, void *arg ) +static void _CPU_Put_char(int c, void *arg) { String_Context *sctx = arg; - size_t n = sctx->n; + size_t n = sctx->n; - if (n > 0) { + if ( n > 0 ) { char *s = sctx->s; - *s = (char) c; + *s = (char) c; sctx->s = s + 1; sctx->n = n - 1; } } static void _CPU_Binary_sprintf( - char *s, - size_t maxlen, + char *s, + size_t maxlen, uint32_t num_bits, uint32_t value ) { String_Context sctx; - uint32_t mask; + uint32_t mask; sctx.s = s; sctx.n = maxlen; @@ -82,14 +82,14 @@ static void _CPU_Binary_sprintf( mask = 1 << (num_bits - 1); while ( mask != 0 ) { - _IO_Printf( _CPU_Put_char, &sctx, "%d", (value & mask ? 1 : 0) ); + _IO_Printf(_CPU_Put_char, &sctx, "%d", (value & mask ? 1 : 0)); mask >>= 1; } s[num_bits] = '\0'; } -static const char* _CPU_Exception_class_to_string( uint16_t exception_class ) +static const char *_CPU_Exception_class_to_string(uint16_t exception_class) { /* The 80 character limit is intentionally ignored for these strings. */ switch ( exception_class ) { @@ -142,82 +142,107 @@ static const char* _CPU_Exception_class_to_string( uint16_t exception_class ) } } -void _CPU_Exception_frame_print( const CPU_Exception_frame *frame ) +void _CPU_Exception_frame_print(const CPU_Exception_frame *frame) { - uint32_t ec; - uint32_t il; - uint32_t iss; - char ec_str[7]; - char iss_str[26]; - int i; + uint32_t ec; + uint32_t il; + uint32_t iss; + char ec_str[7]; + char iss_str[26]; + int i; const uint128_t *qx; printk( "\n" - "X0 = 0x%016" PRIx64 " X17 = 0x%016" PRIx64 "\n" - "X1 = 0x%016" PRIx64 " X18 = 0x%016" PRIx64 "\n" - "X2 = 0x%016" PRIx64 " X19 = 0x%016" PRIx64 "\n" - "X3 = 0x%016" PRIx64 " X20 = 0x%016" PRIx64 "\n" - "X4 = 0x%016" PRIx64 " X21 = 0x%016" PRIx64 "\n" - "X5 = 0x%016" PRIx64 " X22 = 0x%016" PRIx64 "\n" - "X6 = 0x%016" PRIx64 " X23 = 0x%016" PRIx64 "\n" - "X7 = 0x%016" PRIx64 " X24 = 0x%016" PRIx64 "\n" - "X8 = 0x%016" PRIx64 " X25 = 0x%016" PRIx64 "\n" - "X9 = 0x%016" PRIx64 " X26 = 0x%016" PRIx64 "\n" - "X10 = 0x%016" PRIx64 " X27 = 0x%016" PRIx64 "\n" - "X11 = 0x%016" PRIx64 " X28 = 0x%016" PRIx64 "\n" - "X12 = 0x%016" PRIx64 " FP = 0x%016" PRIx64 "\n" - "X13 = 0x%016" PRIx64 " LR = 0x%016" PRIxPTR "\n" - "X14 = 0x%016" PRIx64 " SP = 0x%016" PRIxPTR "\n" - "X15 = 0x%016" PRIx64 " PC = 0x%016" PRIxPTR "\n" - "X16 = 0x%016" PRIx64 " DAIF = 0x%016" PRIx64 "\n" + "X0 = 0x%016" PRIx64 " X17 = 0x%016" PRIx64 "\n" + "X1 = 0x%016" PRIx64 " X18 = 0x%016" PRIx64 "\n" + "X2 = 0x%016" PRIx64 " X19 = 0x%016" PRIx64 "\n" + "X3 = 0x%016" PRIx64 " X20 = 0x%016" PRIx64 "\n" + "X4 = 0x%016" PRIx64 " X21 = 0x%016" PRIx64 "\n" + "X5 = 0x%016" PRIx64 " X22 = 0x%016" PRIx64 "\n" + "X6 = 0x%016" PRIx64 " X23 = 0x%016" PRIx64 "\n" + "X7 = 0x%016" PRIx64 " X24 = 0x%016" PRIx64 "\n" + "X8 = 0x%016" PRIx64 " X25 = 0x%016" PRIx64 "\n" + "X9 = 0x%016" PRIx64 " X26 = 0x%016" PRIx64 "\n" + "X10 = 0x%016" PRIx64 " X27 = 0x%016" PRIx64 "\n" + "X11 = 0x%016" PRIx64 " X28 = 0x%016" PRIx64 "\n" + "X12 = 0x%016" PRIx64 " FP = 0x%016" PRIx64 "\n" + "X13 = 0x%016" PRIx64 " LR = 0x%016" PRIxPTR "\n" + "X14 = 0x%016" PRIx64 " SP = 0x%016" PRIxPTR "\n" + "X15 = 0x%016" PRIx64 " PC = 0x%016" PRIxPTR "\n" + "X16 = 0x%016" PRIx64 " DAIF = 0x%016" PRIx64 "\n" "VEC = 0x%016" PRIxPTR " CPSR = 0x%016" PRIx64 "\n", - frame->register_x0, frame->register_x17, - frame->register_x1, frame->register_x18, - frame->register_x2, frame->register_x19, - frame->register_x3, frame->register_x20, - frame->register_x4, frame->register_x21, - frame->register_x5, frame->register_x22, - frame->register_x6, frame->register_x23, - frame->register_x7, frame->register_x24, - frame->register_x8, frame->register_x25, - frame->register_x9, frame->register_x26, - frame->register_x10, frame->register_x27, - frame->register_x11, frame->register_x28, - frame->register_x12, frame->register_fp, - frame->register_x13, (intptr_t) frame->register_lr, - frame->register_x14, (intptr_t) frame->register_sp, - frame->register_x15, (intptr_t) frame->register_pc, - frame->register_x16, frame->register_daif, - (intptr_t) frame->vector, frame->register_cpsr + frame->register_x0, + frame->register_x17, + frame->register_x1, + frame->register_x18, + frame->register_x2, + frame->register_x19, + frame->register_x3, + frame->register_x20, + frame->register_x4, + frame->register_x21, + frame->register_x5, + frame->register_x22, + frame->register_x6, + frame->register_x23, + frame->register_x7, + frame->register_x24, + frame->register_x8, + frame->register_x25, + frame->register_x9, + frame->register_x26, + frame->register_x10, + frame->register_x27, + frame->register_x11, + frame->register_x28, + frame->register_x12, + frame->register_fp, + frame->register_x13, + (intptr_t) frame->register_lr, + frame->register_x14, + (intptr_t) frame->register_sp, + frame->register_x15, + (intptr_t) frame->register_pc, + frame->register_x16, + frame->register_daif, + (intptr_t) frame->vector, + frame->register_cpsr ); - ec = frame->register_syndrome >> 26 & 0x3f; - il = frame->register_syndrome >> 25 & 0x1; + ec = frame->register_syndrome >> 26 & 0x3f; + il = frame->register_syndrome >> 25 & 0x1; iss = frame->register_syndrome & 0x1ffffff; - _CPU_Binary_sprintf( ec_str, sizeof( ec_str ), sizeof( ec_str ) - 1, ec ); - _CPU_Binary_sprintf( iss_str, sizeof( iss_str ), sizeof( iss_str ) - 1, iss ); + _CPU_Binary_sprintf(ec_str, sizeof(ec_str), sizeof(ec_str) - 1, ec); + _CPU_Binary_sprintf(iss_str, sizeof(iss_str), sizeof(iss_str) - 1, iss); printk( - "ESR = EC: 0b%s" " IL: 0b%d" " ISS: 0b%s" "\n" + "ESR = EC: 0b%s" + " IL: 0b%d" + " ISS: 0b%s" + "\n" " %s\n", - ec_str, il, iss_str, _CPU_Exception_class_to_string( ec ) + ec_str, + il, + iss_str, + _CPU_Exception_class_to_string(ec) ); - printk( "FAR = 0x%016" PRIx64 "\n", frame->register_fault_address ); + printk("FAR = 0x%016" PRIx64 "\n", frame->register_fault_address); qx = &frame->register_q0; printk( "FPCR = 0x%016" PRIx64 " FPSR = 0x%016" PRIx64 "\n", - frame->register_fpcr, frame->register_fpsr + frame->register_fpcr, + frame->register_fpsr ); - for ( i = 0 ; i < 32 ; ++i ) { - uint64_t low = (uint64_t) qx[i]; + for ( i = 0; i < 32; ++i ) { + uint64_t low = (uint64_t) qx[i]; uint64_t high = (uint64_t) (qx[i] >> 64); - printk( "Q%02i = 0x%016" PRIx64 "%016" PRIx64 "\n", i, high, low ); + printk("Q%02i = 0x%016" PRIx64 "%016" PRIx64 "\n", i, high, low); } } |