Home | History | Annotate | Line # | Download | only in boot
      1 /* $NetBSD: iplcb.c,v 1.1 2007/12/17 19:09:51 garbled Exp $ */
      2 
      3 #include <lib/libsa/stand.h>
      4 #include <sys/param.h>
      5 
      6 #include "boot.h"
      7 #include <machine/iplcb.h>
      8 
      9 extern struct ipl_directory ipldir;
     10 
     11 static void dump_sysinfo(void *);
     12 /* dump the sysinfo structure */
     13 static void
     14 dump_sysinfo(void *sysinfo_p)
     15 {
     16 	struct sys_info *sysinfo = (struct sys_info *)sysinfo_p;
     17 
     18 	printf("  System Info: %p\n", sysinfo_p);
     19 	printf("    Processors: %d\n", sysinfo->nrof_procs);
     20 	printf("    Coherence Block size: 0x%x\n", sysinfo->coherency_size);
     21 	printf("    Reservation Granule size: 0x%x\n", sysinfo->resv_size);
     22 	printf("    Arbiter Controller RA: %p\n", sysinfo->arb_ctrl_addr);
     23 	printf("    Physical ID Register RA: %p\n", sysinfo->phys_id_addr);
     24 	printf("    # of BOS Slot Reset Registers: %d\n", sysinfo->nrof_bsrr);
     25 	printf("    BSSR RA: %p\n", sysinfo->bssr_addr);
     26 	printf("    Time of day type: %d\n", sysinfo->tod_type);
     27 	printf("    TOD Register RA: %p\n", sysinfo->todr_addr);
     28 	printf("    Reset Status Register RA: %p\n", sysinfo->rsr_addr);
     29 	printf("    Power/Keylock Status RA: %p\n", sysinfo->pksr_addr);
     30 	printf("    Power/Reset Control RA: %p\n", sysinfo->prcr_addr);
     31 	printf("    System Specific Register RA: %p\n", sysinfo->sssr_addr);
     32 	printf("    System Interrupt Regs RA: %p\n", sysinfo->sir_addr);
     33 	printf("    Standard Config Register RA: %p\n", sysinfo->scr_addr);
     34 	printf("    Device Special Config Register RA: %p\n", sysinfo->dscr_addr);
     35 	printf("    NVRAM size: %d\n", sysinfo->nvram_size);
     36 	printf("    NVRAM RA: %p\n", sysinfo->nvram_addr);
     37 	printf("    VPD ROM RA: %p\n", sysinfo->vpd_rom_addr);
     38 	printf("    IPL ROM size: %d\n", sysinfo->ipl_rom_size);
     39 	printf("    IPL ROM RA: %p\n", sysinfo->ipl_rom_addr);
     40 	printf("    Global MFFR Register RA: %p\n", sysinfo->g_mfrr_addr);
     41 	printf("    Global Timebase RA: %p\n", sysinfo->g_tb_addr);
     42 	printf("    Global Timebase type: %d\n", sysinfo->g_tb_type);
     43 	printf("    Global Timebase multiplier: %d\n", sysinfo->g_tb_mult);
     44 	printf("    SP Errorlog Offset: 0x%x\n", sysinfo->sp_errorlog_off);
     45 	printf("    Connectivity Config Register RA: %p\n", sysinfo->pcccr_addr);
     46 	printf("    Software Poweroff Register RA: %p\n", sysinfo->spocr_addr);
     47 	printf("    EPOW intr register RA: %p\n", sysinfo->pfeivr_addr);
     48 	printf("    Access ID waddr: %d\n", sysinfo->access_id_waddr);
     49 	printf("    APM write space RA: %p\n", sysinfo->loc_waddr);
     50 	printf("    Access ID raddr: %d\n", sysinfo->access_id_raddr);
     51 	printf("    APM read space RA: %p\n", sysinfo->loc_raddr);
     52 	printf("    Architecture: %d\n", sysinfo->architecture);
     53 	printf("    Implementation: %d\n", sysinfo->implementation);
     54 	printf("    Machine Description: %s\n", sysinfo->pkg_desc);
     55 }
     56 
     57 /* Dump the IPL control block */
     58 void
     59 dump_iplcb(void *iplcb_p)
     60 {
     61 	u_char *p;
     62 	uint32_t i;
     63 	struct ipl_directory *ipldir;
     64 	struct ipl_cb *iplcb_ptr;
     65 
     66 	iplcb_ptr = iplcb_p;
     67 	ipldir = &(iplcb_ptr->dir);
     68 
     69 	printf("IPL Control Block\n");
     70 	printf("  IPL Control Block Address: %p\n", iplcb_p);
     71 	printf("IPL Directory Block\n");
     72 	printf("  IPLCB_ID: %s\n", ipldir->iplcb_id);
     73 	printf("  GPR offset: 0x%x\n", ipldir->gpr_save_off);
     74 	printf("  Bitmap size: 0x%x\n", ipldir->cb_bitmap_size);
     75 	printf("  Bitmap offset: 0x%x\n", ipldir->bitmap_off);
     76 	printf("  Bitmap size: 0x%x\n", ipldir->bitmap_size);
     77 	printf("  IPL info offset: 0x%x\n", ipldir->iplinfo_off);
     78 	printf("  IPL info size: 0x%x\n", ipldir->iplinfo_size);
     79 	printf("  IOCC POST offset: 0x%x\n", ipldir->iocc_post_off);
     80 	printf("  IOCC POST size: 0x%x\n", ipldir->iocc_post_size);
     81 	printf("  NIO POST offset: 0x%x\n", ipldir->nio_post_off);
     82 	printf("  NIO POST size: 0x%x\n", ipldir->nio_post_size);
     83 	printf("  SJL POST offset: 0x%x\n", ipldir->sjl_post_off);
     84 	printf("  SJL POST size: 0x%x\n", ipldir->sjl_post_size);
     85 	printf("  SCSI POST offset: 0x%x\n", ipldir->scsi_post_off);
     86 	printf("  SCSI POST size: 0x%x\n", ipldir->scsi_post_size);
     87 	printf("  Ethernet POST offset: 0x%x\n", ipldir->eth_post_off);
     88 	printf("  Ethernet POST size: 0x%x\n", ipldir->eth_post_size);
     89 	printf("  Token Ring POST offset: 0x%x\n", ipldir->tok_post_off);
     90 	printf("  Token Ring POST size: 0x%x\n", ipldir->tok_post_size);
     91 	printf("  Serial POST offset: 0x%x\n", ipldir->ser_post_off);
     92 	printf("  Serial POST size: 0x%x\n", ipldir->ser_post_size);
     93 	printf("  Parallel POST offset: 0x%x\n", ipldir->par_post_off);
     94 	printf("  Parallel POST size: 0x%x\n", ipldir->par_post_size);
     95 	printf("  RSC POST offset: 0x%x\n", ipldir->rsc_post_off);
     96 	printf("  RSC POST size: 0x%x\n", ipldir->rsc_post_size);
     97 	printf("  Legacy POST offset: 0x%x\n", ipldir->lega_post_off);
     98 	printf("  Legacy POST size: 0x%x\n", ipldir->lega_post_size);
     99 	printf("  Keyboard POST offset: 0x%x\n", ipldir->kbd_post_off);
    100 	printf("  Keyboard POST size: 0x%x\n", ipldir->kbd_post_size);
    101 	printf("  RAM POST offset: 0x%x\n", ipldir->ram_post_off);
    102 	printf("  RAM POST size: 0x%x\n", ipldir->ram_post_size);
    103 	printf("  SGA POST offset: 0x%x\n", ipldir->sga_post_off);
    104 	printf("  SGA POST size: 0x%x\n", ipldir->sga_post_size);
    105 	printf("  Family2 POST offset: 0x%x\n", ipldir->fm2_post_off);
    106 	printf("  Family2 POST size: 0x%x\n", ipldir->fm2_post_size);
    107 	printf("  Netboot result offset: 0x%x\n", ipldir->net_boot_result_off);
    108 	printf("  Netboot result size: 0x%x\n", ipldir->net_boot_result_size);
    109 	printf("  Core Sequence Controller result offset: 0x%x\n", ipldir->csc_result_off);
    110 	printf("  Core Sequence Controller result size: 0x%x\n", ipldir->csc_result_size);
    111 	printf("  Menu result offset: 0x%x\n", ipldir->menu_result_off);
    112 	printf("  Menu result size: 0x%x\n", ipldir->menu_result_size);
    113 	printf("  Console result offset: 0x%x\n", ipldir->cons_result_off);
    114 	printf("  Console result size: 0x%x\n", ipldir->cons_result_size);
    115 	printf("  Diag result offset: 0x%x\n", ipldir->diag_result_off);
    116 	printf("  Diag result size: 0x%x\n", ipldir->diag_result_size);
    117 	printf("  ROM scan offset: 0x%x\n", ipldir->rom_scan_off);
    118 	printf("  ROM scan size: 0x%x\n", ipldir->rom_scan_size);
    119 	printf("  SKY POST offset: 0x%x\n", ipldir->sky_post_off);
    120 	printf("  SKY POST size: 0x%x\n", ipldir->sky_post_size);
    121 	printf("  Global offset: 0x%x\n", ipldir->global_off);
    122 	printf("  Global size: 0x%x\n", ipldir->global_size);
    123 	printf("  Mouse offset: 0x%x\n", ipldir->mouse_off);
    124 	printf("  Mouse size: 0x%x\n", ipldir->mouse_size);
    125 	printf("  VRS offset: 0x%x\n", ipldir->vrs_off);
    126 	printf("  VRS size: 0x%x\n", ipldir->vrs_size);
    127 	printf("  Taur offset: 0x%x\n", ipldir->taur_post_off);
    128 	printf("  Taur size: 0x%x\n", ipldir->taur_post_size);
    129 	printf("  ENT offset: 0x%x\n", ipldir->ent_post_off);
    130 	printf("  ENT size: 0x%x\n", ipldir->ent_post_size);
    131 	printf("  VRS40 offset: 0x%x\n", ipldir->vrs40_off);
    132 	printf("  VRS40 size: 0x%x\n", ipldir->vrs40_size);
    133 	printf("  Sysinfo offset: 0x%x\n", ipldir->sysinfo_offset);
    134 	printf("  Sysinfo size: 0x%x\n", ipldir->sysinfo_size);
    135 	printf("  BUCinfo offset: 0x%x\n", ipldir->bucinfo_off);
    136 	printf("  BUCinfo size: 0x%x\n", ipldir->bucinfo_size);
    137 	printf("  Processor info offset: 0x%x\n", ipldir->procinfo_off);
    138 	printf("  Processor info size: 0x%x\n", ipldir->procinfo_size);
    139 	printf("  Family 2 IO info offset: 0x%x\n", ipldir->fm2_ioinfo_off);
    140 	printf("  Family 2 IO info size: 0x%x\n", ipldir->fm2_ioinfo_size);
    141 	printf("  Processor POST offset: 0x%x\n", ipldir->proc_post_off);
    142 	printf("  Processor POST size: 0x%x\n", ipldir->proc_post_size);
    143 	printf("  System VPD offset: 0x%x\n", ipldir->sysvpd_off);
    144 	printf("  System VPD size: 0x%x\n", ipldir->sysvpd_size);
    145 	printf("  Memory Data offset: 0x%x\n", ipldir->memdata_off);
    146 	printf("  Memory Data size: 0x%x\n", ipldir->memdata_size);
    147 	printf("  L2 data offset: 0x%x\n", ipldir->l2data_off);
    148 	printf("  L2 data size: 0x%x\n", ipldir->l2data_size);
    149 	printf("  FDDI POST offset: 0x%x\n", ipldir->fddi_post_off);
    150 	printf("  FDDI POST size: 0x%x\n", ipldir->fddi_post_size);
    151 	printf("  Golden VPD offset: 0x%x\n", ipldir->golden_vpd_off);
    152 	printf("  Golden VPD size: 0x%x\n", ipldir->golden_vpd_size);
    153 	printf("  NVRAM Cache offset: 0x%x\n", ipldir->nvram_cache_off);
    154 	printf("  NVRAM Cache size: 0x%x\n", ipldir->nvram_cache_size);
    155 	printf("  User struct offset: 0x%x\n", ipldir->user_struct_off);
    156 	printf("  User struct size: 0x%x\n", ipldir->user_struct_size);
    157 	printf("  Residual offset: 0x%x\n", ipldir->residual_off);
    158 	printf("  Residual size: 0x%x\n", ipldir->residual_size);
    159 
    160 	dump_sysinfo(iplcb_p + ipldir->sysinfo_offset);
    161 	p = (u_char *)(iplcb_p + ipldir->procinfo_off);
    162 	for (i=0; i < ipldir->procinfo_size; i+=4) {
    163 		printf(" 0x%x\n", *p);
    164 		p += i;
    165 	}
    166 
    167 }
    168