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