diff options
Diffstat (limited to 'c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_print.c')
-rw-r--r-- | c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_print.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_print.c b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_print.c index cb95aba006..27b76a1934 100644 --- a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_print.c +++ b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_print.c @@ -179,6 +179,42 @@ void _CPU_Exception_frame_print(const CPU_Exception_frame *excPtr) printk(" MCSR = 0x%08x\n", mcsr); } +#ifdef PPC_MULTILIB_ALTIVEC + { + unsigned char *v = (unsigned char *) &excPtr->V0; + int i; + int j; + + printk(" VSCR = 0x%08x\n", excPtr->VSCR); + printk("VRSAVE = 0x%08x\n", excPtr->VRSAVE); + + for (i = 0; i < 32; ++i) { + printk(" V%02i = 0x", i); + + for (j = 0; j < 16; ++j) { + printk("%02x", v[j]); + } + + printk("\n"); + + v += 16; + } + } +#endif + +#ifdef PPC_MULTILIB_FPU + { + unsigned long long *f = (unsigned long long *) &excPtr->F0; + int i; + + printk("FPSCR = 0x%08llx\n", excPtr->FPSCR); + + for (i = 0; i < 32; ++i) { + printk(" F%02i = 0x%016llx\n", i, f[i]); + } + } +#endif + if (executing != NULL) { const char *name = (const char *) &executing->Object.name; |