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