#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: comlogout.c,v 1.5 2011/07/01 19:22:35 dyoung Exp $");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/device.h>
#include <machine/rpb.h>
#include <machine/autoconf.h>
#include <sys/bus.h>
#include <machine/frame.h>
#include <machine/cpuconf.h>
#include <machine/logout.h>
void
ev5_logout_print(mc_hdr_ev5 *ev5lohdrp, mc_uc_ev5 *mcucev5p)
{
int i;
static const char *fmt1 = " %-30s = 0x%l016x\n";
printf(" Processor Machine Check (%x), Code 0x%lx\n",
ALPHA_PROC_MCHECK, ev5lohdrp->mcheck_code);
for (i = 0; i < 24; i += 2) {
printf("\tPAL temp[%d-%d]\t\t= 0x%16lx 0x%16lx\n", i, i+1,
mcucev5p->paltemp[i], mcucev5p->paltemp[i+1]);
}
for (i = 0; i < 8; i += 2) {
printf("\tshadow[%d-%d]\t\t\t= 0x%16lx 0x%16lx\n", i, i+1,
mcucev5p->shadow[i], mcucev5p->shadow[i+1]);
}
printf("\n");
printf(fmt1, "Excepting Instruction Addr", mcucev5p->exc_addr);
printf(fmt1, "Summary of arithmetic traps", mcucev5p->exc_sum);
printf(fmt1, "Exception mask", mcucev5p->exc_mask);
printf(fmt1, "Base address for PALcode", mcucev5p->pal_base);
printf(fmt1, "Interrupt Status Reg", mcucev5p->isr);
printf(fmt1, "Current setup of EV5 IBOX", mcucev5p->icsr);
printf(fmt1, (mcucev5p->ic_perr_stat & 0x800)?
"I-CACHE Reg Data parity error" :
"I-CACHE Reg Tag parity error", mcucev5p->ic_perr_stat);
printf(fmt1, "D-CACHE error Reg", mcucev5p->dc_perr_stat);
if (mcucev5p->dc_perr_stat & 0x2) {
switch (mcucev5p->dc_perr_stat & 0x3c) {
case 8:
printf(" %-40s\n", "Data error in bank 1");
break;
case 4:
printf(" %-40s\n", "Data error in bank 0");
break;
case 20:
printf(" %-40s\n", "Tag error in bank 1");
break;
case 10:
printf(" %-40s\n", "Tag error in bank 0");
break;
}
}
printf(fmt1, "Effective VA", mcucev5p->va);
printf(fmt1, "Reason for D-stream", mcucev5p->mm_stat);
printf(fmt1, "EV5 SCache address", mcucev5p->sc_addr);
printf(fmt1, "EV5 SCache TAG/Data parity", mcucev5p->sc_stat);
printf(fmt1, "EV5 BC_TAG_ADDR", mcucev5p->bc_tag_addr);
printf(fmt1, "EV5 EI_ADDR Phys addr of Xfer", mcucev5p->ei_addr);
printf(fmt1, "Fill Syndrome", mcucev5p->fill_syndrome);
printf(fmt1, "ei_stat reg", mcucev5p->ei_stat);
printf(fmt1, "ld_lock", mcucev5p->ld_lock);
}