1 #ifndef _HWRPB_H
2 #define _HWRPB_H
3
4 #define INIT_HWRPB ((struct hwrpb_struct *) 0x10000000)
5
6 struct pcb_struct {
7 unsigned long ksp;
8 unsigned long usp;
9 unsigned long ptbr;
10 unsigned int pcc;
11 unsigned int asn;
12 unsigned long unique;
13 unsigned long flags;
14 unsigned long res1, res2;
15 };
16
17 struct percpu_struct {
18 unsigned long hwpcb[16];
19 unsigned long flags;
20 unsigned long pal_mem_size;
21 unsigned long pal_scratch_size;
22 unsigned long pal_mem_pa;
23 unsigned long pal_scratch_pa;
24 unsigned long pal_revision;
25 unsigned long type;
26 unsigned long variation;
27 unsigned long revision;
28 unsigned long serial_no[2];
29 unsigned long logout_area_pa;
30 unsigned long logout_area_len;
31 unsigned long halt_PCBB;
32 unsigned long halt_PC;
33 unsigned long halt_PS;
34 unsigned long halt_arg;
35 unsigned long halt_ra;
36 unsigned long halt_pv;
37 unsigned long halt_reason;
38 unsigned long res;
39 unsigned long ipc_buffer[21];
40 unsigned long palcode_avail[16];
41 unsigned long compatibility;
42 };
43
44 struct procdesc_struct {
45 unsigned long weird_vms_stuff;
46 unsigned long address;
47 };
48
49 struct vf_map_struct {
50 unsigned long va;
51 unsigned long pa;
52 unsigned long count;
53 };
54
55 struct crb_struct {
56 struct procdesc_struct * dispatch_va;
57 struct procdesc_struct * dispatch_pa;
58 struct procdesc_struct * fixup_va;
59 struct procdesc_struct * fixup_pa;
60
61 unsigned long map_entries;
62 unsigned long map_pages;
63 struct vf_map_struct map[1];
64 };
65
66 struct memclust_struct {
67 unsigned long start_pfn;
68 unsigned long numpages;
69 unsigned long numtested;
70 unsigned long bitmap_va;
71 unsigned long bitmap_pa;
72 unsigned long bitmap_chksum;
73 unsigned long usage;
74 };
75
76 struct memdesc_struct {
77 unsigned long chksum;
78 unsigned long optional_pa;
79 unsigned long numclusters;
80 struct memclust_struct cluster[0];
81 };
82
83 struct hwrpb_struct {
84 unsigned long phys_addr;
85 unsigned long id;
86 unsigned long revision;
87 unsigned long size;
88 unsigned long cpuid;
89 unsigned long pagesize;
90 unsigned long pa_bits;
91 unsigned long max_asn;
92 unsigned char ssn[16];
93 unsigned long sys_type;
94 unsigned long sys_variation;
95 unsigned long sys_revision;
96 unsigned long intr_freq;
97 unsigned long cycle_freq;
98 unsigned long vptb;
99 unsigned long res1;
100 unsigned long tbhb_offset;
101 unsigned long nr_processors;
102 unsigned long processor_size;
103 unsigned long processor_offset;
104 unsigned long ctb_nr;
105 unsigned long ctb_size;
106 unsigned long ctbt_offset;
107 unsigned long crb_offset;
108 unsigned long mddt_offset;
109 unsigned long cdb_offset;
110 unsigned long frut_offset;
111 void (*save_terminal)(unsigned long);
112 unsigned long save_terminal_data;
113 void (*restore_terminal)(unsigned long);
114 unsigned long restore_terminal_data;
115 void (*CPU_restart)(unsigned long);
116 unsigned long CPU_restart_data;
117 unsigned long res2;
118 unsigned long res3;
119 unsigned long chksum;
120 unsigned long rxrdy;
121 unsigned long txrdy;
122 unsigned long dsrdbt_offset;
123 };
124
125 #endif