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