1/*
2 * Copyright (c) 2000-2007 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. The rights granted to you under the License
10 * may not be used to create, or enable the creation or redistribution of,
11 * unlawful or unlicensed copies of an Apple operating system, or to
12 * circumvent, violate, or enable the circumvention or violation of, any
13 * terms of an Apple operating system software license agreement.
14 *
15 * Please obtain a copy of the License at
16 * http://www.opensource.apple.com/apsl/ and read it before using this file.
17 *
18 * The Original Code and all software distributed under the License are
19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23 * Please see the License for the specific language governing rights and
24 * limitations under the License.
25 *
26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27 */
28/*
29 * @OSF_COPYRIGHT@
30 *
31 */
32
33/*
34 * genassym.c is used to produce an
35 * assembly file which, intermingled with unuseful assembly code,
36 * has all the necessary definitions emitted. This assembly file is
37 * then postprocessed with sed to extract only these definitions
38 * and thus the final assyms.s is created.
39 *
40 * This convoluted means is necessary since the structure alignment
41 * and packing may be different between the host machine and the
42 * target so we are forced into using the cross compiler to generate
43 * the values, but we cannot run anything on the target machine.
44 */
45
46#include <types.h>
47
48#include <kern/task.h>
49#include <kern/thread.h>
50#include <kern/host.h>
51#include <kern/lock.h>
52#include <kern/locks.h>
53#include <kern/processor.h>
54#include <ppc/exception.h>
55#include <ppc/thread.h>
56#include <ppc/misc_protos.h>
57#include <kern/syscall_sw.h>
58#include <ppc/low_trace.h>
59#include <ppc/PseudoKernel.h>
60#include <ppc/mappings.h>
61#include <ppc/Firmware.h>
62#include <ppc/low_trace.h>
63#include <vm/vm_map.h>
64#include <vm/pmap.h>
65#include <ppc/pmap.h>
66#include <ppc/Diagnostics.h>
67#include <pexpert/pexpert.h>
68#include <mach/machine.h>
69#include <ppc/vmachmon.h>
70#include <ppc/hw_perfmon.h>
71#include <ppc/PPCcalls.h>
72#include <ppc/mem.h>
73#include <ppc/boot.h>
74#include <ppc/lowglobals.h>
75
76#if	CONFIG_DTRACE
77#define NEED_DTRACE_DEFS
78#include <../bsd/sys/lockstat.h>
79#endif
80
81/* Undefine standard offsetof because it is different than the one here */
82#undef offsetof
83#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE)0)->MEMBER)
84
85#define DECLARE(SYM,VAL) \
86	__asm("#DEFINITION##define\t" SYM "\t%0" : : "n" ((u_int)(VAL)))
87
88int main(int argc, char *argv[])
89{
90	/* Process Control Block */
91	DECLARE("ACT_MACT_KSP",	offsetof(thread_t, machine.ksp));
92	DECLARE("ACT_MACT_BEDA", offsetof(thread_t, machine.bbDescAddr));
93	DECLARE("ACT_MACT_BTS",	offsetof(thread_t, machine.bbTableStart));
94	DECLARE("ACT_MACT_BTE",	offsetof(thread_t, machine.bbTaskEnv));
95	DECLARE("ACT_MACT_SPF",	offsetof(thread_t, machine.specFlags));
96	DECLARE("ACT_PREEMPT_CNT",	offsetof(thread_t, machine.preemption_count));
97	DECLARE("ACT_PER_PROC",	offsetof(thread_t, machine.PerProc));
98	DECLARE("qactTimer",	offsetof(thread_t, machine.qactTimer));
99	DECLARE("umwSpace",	offsetof(thread_t, machine.umwSpace));
100	DECLARE("umwRelo",	offsetof(thread_t, machine.umwRelo));
101	DECLARE("umwSwitchAway",	umwSwitchAway);
102	DECLARE("umwSwitchAwayb",	umwSwitchAwayb);
103	DECLARE("bbTrap",		offsetof(thread_t, machine.bbTrap));
104	DECLARE("bbSysCall",	offsetof(thread_t, machine.bbSysCall));
105	DECLARE("bbInterrupt",	offsetof(thread_t, machine.bbInterrupt));
106	DECLARE("bbPending",	offsetof(thread_t, machine.bbPending));
107
108	DECLARE("floatUsed",	floatUsed);
109	DECLARE("vectorUsed",	vectorUsed);
110	DECLARE("runningVM",	runningVM);
111	DECLARE("runningVMbit",	runningVMbit);
112	DECLARE("floatCng",		floatCng);
113	DECLARE("floatCngbit",	floatCngbit);
114	DECLARE("vectorCng",	vectorCng);
115	DECLARE("vectorCngbit",	vectorCngbit);
116	DECLARE("userProtKey",	userProtKey);
117	DECLARE("userProtKeybit",	userProtKeybit);
118
119	DECLARE("bbThread",		bbThread);
120	DECLARE("bbThreadbit",	bbThreadbit);
121	DECLARE("bbNoMachSC",	bbNoMachSC);
122	DECLARE("bbNoMachSCbit",bbNoMachSCbit);
123	DECLARE("bbPreemptive",	bbPreemptive);
124	DECLARE("bbPreemptivebit",	bbPreemptivebit);
125
126	DECLARE("fvChkb",		fvChkb);
127	DECLARE("fvChk",		fvChk);
128	DECLARE("FamVMena",		FamVMena);
129	DECLARE("FamVMenabit",		FamVMenabit);
130	DECLARE("FamVMmode",		FamVMmode);
131	DECLARE("FamVMmodebit",		FamVMmodebit);
132	DECLARE("perfMonitor",		perfMonitor);
133	DECLARE("perfMonitorbit",	perfMonitorbit);
134	DECLARE("OnProc",		OnProc);
135	DECLARE("OnProcbit",		OnProcbit);
136
137	/* Per Proc info structure */
138	DECLARE("PP_CPU_NUMBER",		offsetof(struct per_proc_info *, cpu_number));
139	DECLARE("PP_CPU_FLAGS",			offsetof(struct per_proc_info *, cpu_flags));
140	DECLARE("PP_ISTACKPTR",			offsetof(struct per_proc_info *, istackptr));
141	DECLARE("PP_INTSTACK_TOP_SS",	offsetof(struct per_proc_info *, intstack_top_ss));
142	DECLARE("PP_DEBSTACKPTR",		offsetof(struct per_proc_info *, debstackptr));
143	DECLARE("PP_DEBSTACK_TOP_SS",	offsetof(struct per_proc_info *, debstack_top_ss));
144	DECLARE("PP_HIBERNATE",	offsetof(struct per_proc_info *, hibernate));
145	DECLARE("FPUowner",				offsetof(struct per_proc_info *, FPU_owner));
146	DECLARE("VMXowner",				offsetof(struct per_proc_info *, VMX_owner));
147	DECLARE("holdQFret",			offsetof(struct per_proc_info *, holdQFret));
148	DECLARE("rtcPop",				offsetof(struct per_proc_info *, rtcPop));
149
150	DECLARE("PP_PENDING_AST",		offsetof(struct per_proc_info *, pending_ast));
151	DECLARE("quickfret", 			offsetof(struct per_proc_info *, quickfret));
152	DECLARE("lclfree", 				offsetof(struct per_proc_info *, lclfree));
153	DECLARE("lclfreecnt",			offsetof(struct per_proc_info *, lclfreecnt));
154	DECLARE("PP_INTS_ENABLED", 		offsetof(struct per_proc_info *, interrupts_enabled));
155	DECLARE("UAW", 					offsetof(struct per_proc_info *, Uassist));
156	DECLARE("next_savearea", 		offsetof(struct per_proc_info *, next_savearea));
157	DECLARE("ppbbTaskEnv", 			offsetof(struct per_proc_info *, ppbbTaskEnv));
158	DECLARE("liveVRS", 				offsetof(struct per_proc_info *, liveVRSave));
159	DECLARE("spcFlags", 			offsetof(struct per_proc_info *, spcFlags));
160	DECLARE("spcTRc", 				offsetof(struct per_proc_info *, spcTRc));
161	DECLARE("spcTRp", 				offsetof(struct per_proc_info *, spcTRp));
162	DECLARE("ruptStamp", 			offsetof(struct per_proc_info *, ruptStamp));
163	DECLARE("pfAvailable", 			offsetof(struct per_proc_info *, pf.Available));
164	DECLARE("pfFloat",				pfFloat);
165	DECLARE("pfFloatb",				pfFloatb);
166	DECLARE("pfAltivec",			pfAltivec);
167	DECLARE("pfAltivecb",			pfAltivecb);
168	DECLARE("pfAvJava",				pfAvJava);
169	DECLARE("pfAvJavab",			pfAvJavab);
170	DECLARE("pfSMPcap",				pfSMPcap);
171	DECLARE("pfSMPcapb",			pfSMPcapb);
172	DECLARE("pfCanSleep",			pfCanSleep);
173	DECLARE("pfCanSleepb",			pfCanSleepb);
174	DECLARE("pfCanNap",				pfCanNap);
175	DECLARE("pfCanNapb",			pfCanNapb);
176	DECLARE("pfCanDoze",			pfCanDoze);
177	DECLARE("pfCanDozeb",			pfCanDozeb);
178	DECLARE("pfSlowNap",				pfSlowNap);
179	DECLARE("pfSlowNapb",				pfSlowNapb);
180	DECLARE("pfNoMuMMCK",				pfNoMuMMCK);
181	DECLARE("pfNoMuMMCKb",				pfNoMuMMCKb);
182	DECLARE("pfNoL2PFNap",				pfNoL2PFNap);
183	DECLARE("pfNoL2PFNapb",				pfNoL2PFNapb);
184	DECLARE("pfSCOMFixUp",				pfSCOMFixUp);
185	DECLARE("pfSCOMFixUpb",				pfSCOMFixUpb);
186    DECLARE("pfHasDcba",			pfHasDcba);
187	DECLARE("pfHasDcbab",			pfHasDcbab);
188	DECLARE("pfL1fa",				pfL1fa);
189	DECLARE("pfL1fab",				pfL1fab);
190	DECLARE("pfL2",					pfL2);
191	DECLARE("pfL2b",				pfL2b);
192	DECLARE("pfL2fa",				pfL2fa);
193	DECLARE("pfL2fab",				pfL2fab);
194	DECLARE("pfL2i",				pfL2i);
195	DECLARE("pfL2ib",				pfL2ib);
196	DECLARE("pfLClck",				pfLClck);
197	DECLARE("pfLClckb",				pfLClckb);
198	DECLARE("pfWillNap",			pfWillNap);
199	DECLARE("pfWillNapb",			pfWillNapb);
200	DECLARE("pfNoMSRir",			pfNoMSRir);
201	DECLARE("pfNoMSRirb",			pfNoMSRirb);
202	DECLARE("pfL3pdet",				pfL3pdet);
203	DECLARE("pfL3pdetb",			pfL3pdetb);
204    DECLARE("pf128Byte",			pf128Byte);
205    DECLARE("pf128Byteb",			pf128Byteb);
206    DECLARE("pf32Byte",				pf32Byte);
207    DECLARE("pf32Byteb",			pf32Byteb);
208    DECLARE("pf64Bit",				pf64Bit);
209    DECLARE("pf64Bitb",				pf64Bitb);
210	DECLARE("pfL3",					pfL3);
211	DECLARE("pfL3b",				pfL3b);
212	DECLARE("pfL3fa",				pfL3fa);
213	DECLARE("pfL3fab",				pfL3fab);
214	DECLARE("pfValid",				pfValid);
215	DECLARE("pfValidb",				pfValidb);
216	DECLARE("pfrptdProc", 			offsetof(struct per_proc_info *, pf.rptdProc));
217	DECLARE("pflineSize", 			offsetof(struct per_proc_info *, pf.lineSize));
218	DECLARE("pfl1iSize", 			offsetof(struct per_proc_info *, pf.l1iSize));
219	DECLARE("pfl1dSize", 			offsetof(struct per_proc_info *, pf.l1dSize));
220	DECLARE("pfl2cr", 				offsetof(struct per_proc_info *, pf.l2cr));
221	DECLARE("pfl2Size", 			offsetof(struct per_proc_info *, pf.l2Size));
222	DECLARE("pfl3cr", 				offsetof(struct per_proc_info *, pf.l3cr));
223	DECLARE("pfl3Size", 			offsetof(struct per_proc_info *, pf.l3Size));
224	DECLARE("pfHID0", 				offsetof(struct per_proc_info *, pf.pfHID0));
225	DECLARE("pfHID1", 				offsetof(struct per_proc_info *, pf.pfHID1));
226	DECLARE("pfHID2", 				offsetof(struct per_proc_info *, pf.pfHID2));
227	DECLARE("pfHID3", 				offsetof(struct per_proc_info *, pf.pfHID3));
228	DECLARE("pfHID4", 				offsetof(struct per_proc_info *, pf.pfHID4));
229	DECLARE("pfHID5", 				offsetof(struct per_proc_info *, pf.pfHID5));
230	DECLARE("pfMSSCR0", 			offsetof(struct per_proc_info *, pf.pfMSSCR0));
231	DECLARE("pfMSSCR1", 			offsetof(struct per_proc_info *, pf.pfMSSCR1));
232	DECLARE("pfICTRL", 				offsetof(struct per_proc_info *, pf.pfICTRL));
233	DECLARE("pfLDSTCR", 			offsetof(struct per_proc_info *, pf.pfLDSTCR));
234	DECLARE("pfLDSTDB", 			offsetof(struct per_proc_info *, pf.pfLDSTDB));
235	DECLARE("pfl2crOriginal", 		offsetof(struct per_proc_info *, pf.l2crOriginal));
236	DECLARE("pfl3crOriginal", 		offsetof(struct per_proc_info *, pf.l3crOriginal));
237	DECLARE("pfBootConfig",			offsetof(struct per_proc_info *, pf.pfBootConfig));
238	DECLARE("pfPowerModes",			offsetof(struct per_proc_info *, pf.pfPowerModes));
239	DECLARE("pfPowerTune0",			offsetof(struct per_proc_info *, pf.pfPowerTune0));
240	DECLARE("pfPowerTune1",			offsetof(struct per_proc_info *, pf.pfPowerTune1));
241	DECLARE("pmType",				pmType);
242	DECLARE("pmDPLLVmin",			pmDPLLVmin);
243	DECLARE("pmDPLLVminb",			pmDPLLVminb);
244	DECLARE("pmPowerTune",			pmPowerTune);
245	DECLARE("pmDFS",				pmDFS);
246	DECLARE("pmDualPLL",			pmDualPLL);
247	DECLARE("pfPTEG", 				offsetof(struct per_proc_info *, pf.pfPTEG));
248	DECLARE("pfMaxVAddr", 			offsetof(struct per_proc_info *, pf.pfMaxVAddr));
249	DECLARE("pfMaxPAddr", 			offsetof(struct per_proc_info *, pf.pfMaxPAddr));
250	DECLARE("pfSize", 				sizeof(procFeatures));
251
252	DECLARE("validSegs", 			offsetof(struct per_proc_info *, validSegs));
253	DECLARE("ppUserPmapVirt", 		offsetof(struct per_proc_info *, ppUserPmapVirt));
254	DECLARE("ppUserPmap", 			offsetof(struct per_proc_info *, ppUserPmap));
255	DECLARE("ppMapFlags", 			offsetof(struct per_proc_info *, ppMapFlags));
256	DECLARE("ppInvSeg", 			offsetof(struct per_proc_info *, ppInvSeg));
257	DECLARE("ppCurSeg", 			offsetof(struct per_proc_info *, ppCurSeg));
258	DECLARE("ppSegSteal", 			offsetof(struct per_proc_info *, ppSegSteal));
259
260	DECLARE("VMMareaPhys", 			offsetof(struct per_proc_info *, VMMareaPhys));
261	DECLARE("VMMXAFlgs", 			offsetof(struct per_proc_info *, VMMXAFlgs));
262	DECLARE("FAMintercept", 		offsetof(struct per_proc_info *, FAMintercept));
263
264	DECLARE("ppUMWmp", 				offsetof(struct per_proc_info *, ppUMWmp));
265
266	DECLARE("tempr0", 				offsetof(struct per_proc_info *, tempr0));
267	DECLARE("tempr1", 				offsetof(struct per_proc_info *, tempr1));
268	DECLARE("tempr2", 				offsetof(struct per_proc_info *, tempr2));
269	DECLARE("tempr3", 				offsetof(struct per_proc_info *, tempr3));
270	DECLARE("tempr4", 				offsetof(struct per_proc_info *, tempr4));
271	DECLARE("tempr5", 				offsetof(struct per_proc_info *, tempr5));
272	DECLARE("tempr6", 				offsetof(struct per_proc_info *, tempr6));
273	DECLARE("tempr7", 				offsetof(struct per_proc_info *, tempr7));
274	DECLARE("tempr8", 				offsetof(struct per_proc_info *, tempr8));
275	DECLARE("tempr9", 				offsetof(struct per_proc_info *, tempr9));
276	DECLARE("tempr10", 				offsetof(struct per_proc_info *, tempr10));
277	DECLARE("tempr11", 				offsetof(struct per_proc_info *, tempr11));
278	DECLARE("tempr12", 				offsetof(struct per_proc_info *, tempr12));
279	DECLARE("tempr13", 				offsetof(struct per_proc_info *, tempr13));
280	DECLARE("tempr14", 				offsetof(struct per_proc_info *, tempr14));
281	DECLARE("tempr15", 				offsetof(struct per_proc_info *, tempr15));
282	DECLARE("tempr16", 				offsetof(struct per_proc_info *, tempr16));
283	DECLARE("tempr17", 				offsetof(struct per_proc_info *, tempr17));
284	DECLARE("tempr18", 				offsetof(struct per_proc_info *, tempr18));
285	DECLARE("tempr19", 				offsetof(struct per_proc_info *, tempr19));
286	DECLARE("tempr20", 				offsetof(struct per_proc_info *, tempr20));
287	DECLARE("tempr21", 				offsetof(struct per_proc_info *, tempr21));
288	DECLARE("tempr22", 				offsetof(struct per_proc_info *, tempr22));
289	DECLARE("tempr23", 				offsetof(struct per_proc_info *, tempr23));
290	DECLARE("tempr24", 				offsetof(struct per_proc_info *, tempr24));
291	DECLARE("tempr25", 				offsetof(struct per_proc_info *, tempr25));
292	DECLARE("tempr26", 				offsetof(struct per_proc_info *, tempr26));
293	DECLARE("tempr27", 				offsetof(struct per_proc_info *, tempr27));
294	DECLARE("tempr28", 				offsetof(struct per_proc_info *, tempr28));
295	DECLARE("tempr29", 				offsetof(struct per_proc_info *, tempr29));
296	DECLARE("tempr30", 				offsetof(struct per_proc_info *, tempr30));
297	DECLARE("tempr31", 				offsetof(struct per_proc_info *, tempr31));
298
299	DECLARE("emfp0", 				offsetof(struct per_proc_info *, emfp0));
300	DECLARE("emfp1", 				offsetof(struct per_proc_info *, emfp1));
301	DECLARE("emfp2", 				offsetof(struct per_proc_info *, emfp2));
302	DECLARE("emfp3", 				offsetof(struct per_proc_info *, emfp3));
303	DECLARE("emfp4", 				offsetof(struct per_proc_info *, emfp4));
304	DECLARE("emfp5", 				offsetof(struct per_proc_info *, emfp5));
305	DECLARE("emfp6", 				offsetof(struct per_proc_info *, emfp6));
306	DECLARE("emfp7", 				offsetof(struct per_proc_info *, emfp7));
307	DECLARE("emfp8", 				offsetof(struct per_proc_info *, emfp8));
308	DECLARE("emfp9", 				offsetof(struct per_proc_info *, emfp9));
309	DECLARE("emfp10", 				offsetof(struct per_proc_info *, emfp10));
310	DECLARE("emfp11", 				offsetof(struct per_proc_info *, emfp11));
311	DECLARE("emfp12", 				offsetof(struct per_proc_info *, emfp12));
312	DECLARE("emfp13", 				offsetof(struct per_proc_info *, emfp13));
313	DECLARE("emfp14", 				offsetof(struct per_proc_info *, emfp14));
314	DECLARE("emfp15", 				offsetof(struct per_proc_info *, emfp15));
315	DECLARE("emfp16", 				offsetof(struct per_proc_info *, emfp16));
316	DECLARE("emfp17", 				offsetof(struct per_proc_info *, emfp17));
317	DECLARE("emfp18", 				offsetof(struct per_proc_info *, emfp18));
318	DECLARE("emfp19", 				offsetof(struct per_proc_info *, emfp19));
319	DECLARE("emfp20", 				offsetof(struct per_proc_info *, emfp20));
320	DECLARE("emfp21", 				offsetof(struct per_proc_info *, emfp21));
321	DECLARE("emfp22", 				offsetof(struct per_proc_info *, emfp22));
322	DECLARE("emfp23", 				offsetof(struct per_proc_info *, emfp23));
323	DECLARE("emfp24", 				offsetof(struct per_proc_info *, emfp24));
324	DECLARE("emfp25", 				offsetof(struct per_proc_info *, emfp25));
325	DECLARE("emfp26", 				offsetof(struct per_proc_info *, emfp26));
326	DECLARE("emfp27", 				offsetof(struct per_proc_info *, emfp27));
327	DECLARE("emfp28", 				offsetof(struct per_proc_info *, emfp28));
328	DECLARE("emfp29", 				offsetof(struct per_proc_info *, emfp29));
329	DECLARE("emfp30", 				offsetof(struct per_proc_info *, emfp30));
330	DECLARE("emfp31", 				offsetof(struct per_proc_info *, emfp31));
331	DECLARE("emfpscr_pad", 			offsetof(struct per_proc_info *, emfpscr_pad));
332	DECLARE("emfpscr", 				offsetof(struct per_proc_info *, emfpscr));
333
334	DECLARE("emvr0", 				offsetof(struct per_proc_info *, emvr0));
335	DECLARE("emvr1", 				offsetof(struct per_proc_info *, emvr1));
336	DECLARE("emvr2", 				offsetof(struct per_proc_info *, emvr2));
337	DECLARE("emvr3", 				offsetof(struct per_proc_info *, emvr3));
338	DECLARE("emvr4", 				offsetof(struct per_proc_info *, emvr4));
339	DECLARE("emvr5", 				offsetof(struct per_proc_info *, emvr5));
340	DECLARE("emvr6", 				offsetof(struct per_proc_info *, emvr6));
341	DECLARE("emvr7", 				offsetof(struct per_proc_info *, emvr7));
342	DECLARE("emvr8", 				offsetof(struct per_proc_info *, emvr8));
343	DECLARE("emvr9", 				offsetof(struct per_proc_info *, emvr9));
344	DECLARE("emvr10", 				offsetof(struct per_proc_info *, emvr10));
345	DECLARE("emvr11", 				offsetof(struct per_proc_info *, emvr11));
346	DECLARE("emvr12", 				offsetof(struct per_proc_info *, emvr12));
347	DECLARE("emvr13", 				offsetof(struct per_proc_info *, emvr13));
348	DECLARE("emvr14", 				offsetof(struct per_proc_info *, emvr14));
349	DECLARE("emvr15", 				offsetof(struct per_proc_info *, emvr15));
350	DECLARE("emvr16", 				offsetof(struct per_proc_info *, emvr16));
351	DECLARE("emvr17", 				offsetof(struct per_proc_info *, emvr17));
352	DECLARE("emvr18", 				offsetof(struct per_proc_info *, emvr18));
353	DECLARE("emvr19", 				offsetof(struct per_proc_info *, emvr19));
354	DECLARE("emvr20", 				offsetof(struct per_proc_info *, emvr20));
355	DECLARE("emvr21", 				offsetof(struct per_proc_info *, emvr21));
356	DECLARE("emvr22", 				offsetof(struct per_proc_info *, emvr22));
357	DECLARE("emvr23", 				offsetof(struct per_proc_info *, emvr23));
358	DECLARE("emvr24", 				offsetof(struct per_proc_info *, emvr24));
359	DECLARE("emvr25", 				offsetof(struct per_proc_info *, emvr25));
360	DECLARE("emvr26", 				offsetof(struct per_proc_info *, emvr26));
361	DECLARE("emvr27", 				offsetof(struct per_proc_info *, emvr27));
362	DECLARE("emvr28", 				offsetof(struct per_proc_info *, emvr28));
363	DECLARE("emvr29", 				offsetof(struct per_proc_info *, emvr29));
364	DECLARE("emvr30", 				offsetof(struct per_proc_info *, emvr30));
365	DECLARE("emvr31", 				offsetof(struct per_proc_info *, emvr31));
366	DECLARE("empadvr", 				offsetof(struct per_proc_info *, empadvr));
367	DECLARE("skipListPrev", 		offsetof(struct per_proc_info *, skipListPrev));
368	DECLARE("ppSize",				sizeof(struct per_proc_info));
369	DECLARE("ppe_paddr", 				offsetof(struct per_proc_entry *, ppe_paddr));
370	DECLARE("ppe_vaddr", 				offsetof(struct per_proc_entry *, ppe_vaddr));
371	DECLARE("ppeSize",				sizeof(struct per_proc_entry));
372	DECLARE("MAX_CPUS",				MAX_CPUS);
373	DECLARE("patcharea", 			offsetof(struct per_proc_info *, patcharea));
374
375	DECLARE("hwCounts",				offsetof(struct per_proc_info *, hwCtr));
376	DECLARE("hwInVains",			offsetof(struct per_proc_info *, hwCtr.hwInVains));
377	DECLARE("hwResets",				offsetof(struct per_proc_info *, hwCtr.hwResets));
378	DECLARE("hwMachineChecks",		offsetof(struct per_proc_info *, hwCtr.hwMachineChecks));
379	DECLARE("hwDSIs",				offsetof(struct per_proc_info *, hwCtr.hwDSIs));
380	DECLARE("hwISIs",				offsetof(struct per_proc_info *, hwCtr.hwISIs));
381	DECLARE("hwExternals",			offsetof(struct per_proc_info *, hwCtr.hwExternals));
382	DECLARE("hwAlignments",			offsetof(struct per_proc_info *, hwCtr.hwAlignments));
383	DECLARE("hwPrograms",			offsetof(struct per_proc_info *, hwCtr.hwPrograms));
384	DECLARE("hwFloatPointUnavailable",	offsetof(struct per_proc_info *, hwCtr.hwFloatPointUnavailable));
385	DECLARE("hwDecrementers",		offsetof(struct per_proc_info *, hwCtr.hwDecrementers));
386	DECLARE("hwIOErrors",			offsetof(struct per_proc_info *, hwCtr.hwIOErrors));
387	DECLARE("hwrsvd0",				offsetof(struct per_proc_info *, hwCtr.hwrsvd0));
388	DECLARE("hwSystemCalls",		offsetof(struct per_proc_info *, hwCtr.hwSystemCalls));
389	DECLARE("hwTraces",				offsetof(struct per_proc_info *, hwCtr.hwTraces));
390	DECLARE("hwFloatingPointAssists",	offsetof(struct per_proc_info *, hwCtr.hwFloatingPointAssists));
391	DECLARE("hwPerformanceMonitors",	offsetof(struct per_proc_info *, hwCtr.hwPerformanceMonitors));
392	DECLARE("hwAltivecs",			offsetof(struct per_proc_info *, hwCtr.hwAltivecs));
393	DECLARE("hwrsvd1",				offsetof(struct per_proc_info *, hwCtr.hwrsvd1));
394	DECLARE("hwrsvd2",				offsetof(struct per_proc_info *, hwCtr.hwrsvd2));
395	DECLARE("hwrsvd3",				offsetof(struct per_proc_info *, hwCtr.hwrsvd3));
396	DECLARE("hwInstBreakpoints",	offsetof(struct per_proc_info *, hwCtr.hwInstBreakpoints));
397	DECLARE("hwSystemManagements",	offsetof(struct per_proc_info *, hwCtr.hwSystemManagements));
398	DECLARE("hwAltivecAssists",		offsetof(struct per_proc_info *, hwCtr.hwAltivecAssists));
399	DECLARE("hwThermal",			offsetof(struct per_proc_info *, hwCtr.hwThermal));
400	DECLARE("hwrsvd5",				offsetof(struct per_proc_info *, hwCtr.hwrsvd5));
401	DECLARE("hwrsvd6",				offsetof(struct per_proc_info *, hwCtr.hwrsvd6));
402	DECLARE("hwrsvd7",				offsetof(struct per_proc_info *, hwCtr.hwrsvd7));
403	DECLARE("hwrsvd8",				offsetof(struct per_proc_info *, hwCtr.hwrsvd8));
404	DECLARE("hwrsvd9",				offsetof(struct per_proc_info *, hwCtr.hwrsvd9));
405	DECLARE("hwrsvd10",				offsetof(struct per_proc_info *, hwCtr.hwrsvd10));
406	DECLARE("hwrsvd11",				offsetof(struct per_proc_info *, hwCtr.hwrsvd11));
407	DECLARE("hwrsvd12",				offsetof(struct per_proc_info *, hwCtr.hwrsvd12));
408	DECLARE("hwrsvd13",				offsetof(struct per_proc_info *, hwCtr.hwrsvd13));
409	DECLARE("hwTrace601",			offsetof(struct per_proc_info *, hwCtr.hwTrace601));
410	DECLARE("hwSIGPs",				offsetof(struct per_proc_info *, hwCtr.hwSIGPs));
411	DECLARE("hwPreemptions",		offsetof(struct per_proc_info *, hwCtr.hwPreemptions));
412	DECLARE("hwContextSwitchs",		offsetof(struct per_proc_info *, hwCtr.hwContextSwitchs));
413	DECLARE("hwShutdowns",			offsetof(struct per_proc_info *, hwCtr.hwShutdowns));
414	DECLARE("hwChokes",				offsetof(struct per_proc_info *, hwCtr.hwChokes));
415	DECLARE("hwDataSegments",		offsetof(struct per_proc_info *, hwCtr.hwDataSegments));
416	DECLARE("hwInstructionSegments",	offsetof(struct per_proc_info *, hwCtr.hwInstructionSegments));
417	DECLARE("hwSoftPatches",		offsetof(struct per_proc_info *, hwCtr.hwSoftPatches));
418	DECLARE("hwMaintenances",		offsetof(struct per_proc_info *, hwCtr.hwMaintenances));
419	DECLARE("hwInstrumentations",	offsetof(struct per_proc_info *, hwCtr.hwInstrumentations));
420	DECLARE("hwRedrives",			offsetof(struct per_proc_info *, hwCtr.hwRedrives));
421	DECLARE("hwIgnored",			offsetof(struct per_proc_info *, hwCtr.hwIgnored));
422	DECLARE("hwhdec",				offsetof(struct per_proc_info *, hwCtr.hwhdec));
423	DECLARE("hwSteals",				offsetof(struct per_proc_info *, hwCtr.hwSteals));
424
425	DECLARE("hwWalkPhys",			offsetof(struct per_proc_info *, hwCtr.hwWalkPhys));
426	DECLARE("hwWalkFull",			offsetof(struct per_proc_info *, hwCtr.hwWalkFull));
427	DECLARE("hwWalkMerge",			offsetof(struct per_proc_info *, hwCtr.hwWalkMerge));
428	DECLARE("hwWalkQuick",			offsetof(struct per_proc_info *, hwCtr.hwWalkQuick));
429
430	DECLARE("hwMckHang",			offsetof(struct per_proc_info *, hwCtr.hwMckHang));
431	DECLARE("hwMckSLBPE",			offsetof(struct per_proc_info *, hwCtr.hwMckSLBPE));
432	DECLARE("hwMckTLBPE",			offsetof(struct per_proc_info *, hwCtr.hwMckTLBPE));
433	DECLARE("hwMckERCPE",			offsetof(struct per_proc_info *, hwCtr.hwMckERCPE));
434	DECLARE("hwMckL1DPE",			offsetof(struct per_proc_info *, hwCtr.hwMckL1DPE));
435	DECLARE("hwMckL1TPE",			offsetof(struct per_proc_info *, hwCtr.hwMckL1TPE));
436	DECLARE("hwMckUE",				offsetof(struct per_proc_info *, hwCtr.hwMckUE));
437	DECLARE("hwMckIUE",				offsetof(struct per_proc_info *, hwCtr.hwMckIUE));
438	DECLARE("hwMckIUEr",			offsetof(struct per_proc_info *, hwCtr.hwMckIUEr));
439	DECLARE("hwMckDUE",				offsetof(struct per_proc_info *, hwCtr.hwMckDUE));
440	DECLARE("hwMckDTW",				offsetof(struct per_proc_info *, hwCtr.hwMckDTW));
441	DECLARE("hwMckUnk",				offsetof(struct per_proc_info *, hwCtr.hwMckUnk));
442	DECLARE("hwMckExt",				offsetof(struct per_proc_info *, hwCtr.hwMckExt));
443	DECLARE("hwMckICachePE",		offsetof(struct per_proc_info *, hwCtr.hwMckICachePE));
444	DECLARE("hwMckITagPE",			offsetof(struct per_proc_info *, hwCtr.hwMckITagPE));
445	DECLARE("hwMckIEratPE",			offsetof(struct per_proc_info *, hwCtr.hwMckIEratPE));
446	DECLARE("hwMckDEratPE",			offsetof(struct per_proc_info *, hwCtr.hwMckDEratPE));
447
448	DECLARE("ijsave", 				offsetof(struct per_proc_info *, ijsave));
449
450	DECLARE("napStamp", 			offsetof(struct per_proc_info *, hwCtr.napStamp));
451	DECLARE("napTotal", 			offsetof(struct per_proc_info *, hwCtr.napTotal));
452	DECLARE("PP_PROCESSOR",			offsetof(struct per_proc_info *, processor[0]));
453	DECLARE("PP_PROCESSOR_SIZE",	sizeof(((struct per_proc_info *)0)->processor));
454	DECLARE("PROCESSOR_SIZE",		sizeof (struct processor));
455
456	DECLARE("patchAddr",			offsetof(struct patch_entry *, addr));
457	DECLARE("patchData",			offsetof(struct patch_entry *, data));
458	DECLARE("patchType",			offsetof(struct patch_entry *, type));
459	DECLARE("patchValue",			offsetof(struct patch_entry *, value));
460	DECLARE("peSize", 				sizeof(patch_entry_t));
461	DECLARE("PATCH_PROCESSOR",		PATCH_PROCESSOR);
462	DECLARE("PATCH_FEATURE",		PATCH_FEATURE);
463    DECLARE("PATCH_END_OF_TABLE",   PATCH_END_OF_TABLE);
464	DECLARE("PatchExt32",			PatchExt32);
465	DECLARE("PatchExt32b",			PatchExt32b);
466	DECLARE("PatchLwsync",			PatchLwsync);
467	DECLARE("PatchLwsyncb",			PatchLwsyncb);
468
469	DECLARE("RESETHANDLER_TYPE", 	offsetof(struct resethandler *, type));
470	DECLARE("RESETHANDLER_CALL", 	offsetof(struct resethandler *, call_paddr));
471	DECLARE("RESETHANDLER_ARG", 	offsetof(struct resethandler *, arg__paddr));
472
473	/* we want offset from
474	 * bottom of kernel stack, not offset into structure
475	 */
476#define IKSBASE (u_int)STACK_IKS(0)
477
478	/* values from kern/thread.h */
479	DECLARE("THREAD_STATE",		offsetof(thread_t, state));
480	DECLARE("TH_IDLE",				TH_IDLE);
481	DECLARE("THREAD_KERNEL_STACK",	offsetof(thread_t, kernel_stack));
482	DECLARE("THREAD_RECOVER",		offsetof(thread_t, recover));
483	DECLARE("THREAD_FUNNEL_LOCK",
484			offsetof(thread_t, funnel_lock));
485	DECLARE("THREAD_FUNNEL_STATE",
486			offsetof(thread_t, funnel_state));
487	DECLARE("LOCK_FNL_MUTEX",
488			offsetof(struct funnel_lock *, fnl_mutex));
489
490	DECLARE("ACT_TASK",				offsetof(thread_t, task));
491	DECLARE("ACT_MACT_PCB",			offsetof(thread_t, machine.pcb));
492	DECLARE("ACT_MACT_UPCB",		offsetof(thread_t, machine.upcb));
493	DECLARE("ACT_AST",				offsetof(thread_t, ast));
494	DECLARE("ACT_VMMAP",			offsetof(thread_t, map));
495	DECLARE("vmmCEntry",			offsetof(thread_t, machine.vmmCEntry));
496	DECLARE("vmmControl",			offsetof(thread_t, machine.vmmControl));
497	DECLARE("curctx",				offsetof(thread_t, machine.curctx));
498	DECLARE("deferctx",				offsetof(thread_t, machine.deferctx));
499	DECLARE("facctx",				offsetof(thread_t, machine.facctx));
500#ifdef MACH_BSD
501	DECLARE("CTHREAD_SELF",			offsetof(thread_t, machine.cthread_self));
502#endif
503
504	DECLARE("FPUsave",				offsetof(struct facility_context *,FPUsave));
505	DECLARE("FPUlevel",				offsetof(struct facility_context *,FPUlevel));
506	DECLARE("FPUcpu",				offsetof(struct facility_context *,FPUcpu));
507	DECLARE("FPUsync",				offsetof(struct facility_context *,FPUsync));
508	DECLARE("VMXsave",				offsetof(struct facility_context *,VMXsave));
509	DECLARE("VMXlevel",				offsetof(struct facility_context *,VMXlevel));
510	DECLARE("VMXcpu",				offsetof(struct facility_context *,VMXcpu));
511	DECLARE("VMXsync",				offsetof(struct facility_context *,VMXsync));
512	DECLARE("facAct",				offsetof(struct facility_context *,facAct));
513
514	/* Values from vmachmon.h */
515
516	DECLARE("kVmmGetVersion", 		kVmmGetVersion);
517	DECLARE("kVmmvGetFeatures",		kVmmvGetFeatures);
518	DECLARE("kVmmInitContext", 		kVmmInitContext);
519	DECLARE("kVmmTearDownContext", 	kVmmTearDownContext);
520	DECLARE("kVmmTearDownAll", 		kVmmTearDownAll);
521	DECLARE("kVmmMapPage", 			kVmmMapPage);
522	DECLARE("kVmmGetPageMapping", 	kVmmGetPageMapping);
523	DECLARE("kVmmUnmapPage", 		kVmmUnmapPage);
524	DECLARE("kVmmUnmapAllPages", 	kVmmUnmapAllPages);
525	DECLARE("kVmmGetPageDirtyFlag", kVmmGetPageDirtyFlag);
526	DECLARE("kVmmGetFloatState",	kVmmGetFloatState);
527	DECLARE("kVmmGetVectorState",	kVmmGetVectorState);
528	DECLARE("kVmmSetTimer", 		kVmmSetTimer);
529	DECLARE("kVmmGetTimer", 		kVmmGetTimer);
530	DECLARE("kVmmExecuteVM", 		kVmmExecuteVM);
531	DECLARE("kVmmProtectPage", 		kVmmProtectPage);
532	DECLARE("kVmmMapList", 			kVmmMapList);
533	DECLARE("kVmmUnmapList", 		kVmmUnmapList);
534	DECLARE("kVmmActivateXA", 		kVmmActivateXA);
535	DECLARE("kVmmDeactivateXA", 	kVmmDeactivateXA);
536	DECLARE("kVmmGetXA",			kVmmGetXA);
537	DECLARE("kVmmMapPage64", 		kVmmMapPage64);
538	DECLARE("kVmmGetPageMapping64",	kVmmGetPageMapping64);
539	DECLARE("kVmmUnmapPage64", 		kVmmUnmapPage64);
540	DECLARE("kVmmGetPageDirtyFlag64", 	kVmmGetPageDirtyFlag64);
541	DECLARE("kVmmMapExecute64", 	kVmmMapExecute64);
542	DECLARE("kVmmProtectExecute64", kVmmProtectExecute64);
543	DECLARE("kVmmMapList64", 		kVmmMapList64);
544	DECLARE("kVmmUnmapList64", 		kVmmUnmapList64);
545	DECLARE("kvmmExitToHost",		kvmmExitToHost);
546	DECLARE("kvmmResumeGuest",		kvmmResumeGuest);
547	DECLARE("kvmmGetGuestRegister",	kvmmGetGuestRegister);
548	DECLARE("kvmmSetGuestRegister",	kvmmSetGuestRegister);
549
550	DECLARE("kVmmReturnNull",		kVmmReturnNull);
551	DECLARE("kVmmStopped",			kVmmStopped);
552	DECLARE("kVmmBogusContext",		kVmmBogusContext);
553	DECLARE("kVmmReturnDataPageFault",	kVmmReturnDataPageFault);
554	DECLARE("kVmmReturnInstrPageFault",	kVmmReturnInstrPageFault);
555	DECLARE("kVmmReturnAlignmentFault",	kVmmReturnAlignmentFault);
556	DECLARE("kVmmReturnProgramException",	kVmmReturnProgramException);
557	DECLARE("kVmmReturnSystemCall",		kVmmReturnSystemCall);
558	DECLARE("kVmmReturnTraceException",	kVmmReturnTraceException);
559	DECLARE("kVmmInvalidAdSpace",	kVmmInvalidAdSpace);
560
561	DECLARE("kVmmProtXtnd",			kVmmProtXtnd);
562	DECLARE("kVmmProtNARW",			kVmmProtNARW);
563	DECLARE("kVmmProtRORW",			kVmmProtRORW);
564	DECLARE("kVmmProtRWRW",			kVmmProtRWRW);
565	DECLARE("kVmmProtRORO",			kVmmProtRORO);
566
567	DECLARE("vmmFlags",				offsetof(struct vmmCntrlEntry *, vmmFlags));
568	DECLARE("vmmXAFlgs",			offsetof(struct vmmCntrlEntry *, vmmXAFlgs));
569	DECLARE("vmmPmap",				offsetof(struct vmmCntrlEntry *, vmmPmap));
570	DECLARE("vmmInUseb",			vmmInUseb);
571	DECLARE("vmmInUse",				vmmInUse);
572	DECLARE("vmmContextKern",		offsetof(struct vmmCntrlEntry *, vmmContextKern));
573	DECLARE("vmmContextPhys",		offsetof(struct vmmCntrlEntry *, vmmContextPhys));
574	DECLARE("vmmContextUser",		offsetof(struct vmmCntrlEntry *, vmmContextUser));
575	DECLARE("vmmFacCtx",			offsetof(struct vmmCntrlEntry *, vmmFacCtx));
576	DECLARE("vmmLastMap",			offsetof(struct vmmCntrlTable *, vmmLastMap));
577	DECLARE("vmmGFlags",			offsetof(struct vmmCntrlTable *, vmmGFlags));
578	DECLARE("vmmc",					offsetof(struct vmmCntrlTable *, vmmc));
579	DECLARE("vmmAdsp",				offsetof(struct vmmCntrlTable *, vmmAdsp));
580	DECLARE("vmmLastAdSp",			vmmLastAdSp);
581	DECLARE("vmmFAMintercept",		offsetof(struct vmmCntrlEntry *, vmmFAMintercept));
582	DECLARE("vmmCEntrySize",		sizeof(struct vmmCntrlEntry));
583	DECLARE("kVmmMaxContexts",		kVmmMaxContexts);
584
585	DECLARE("interface_version",	offsetof(struct vmm_state_page_t *, interface_version));
586	DECLARE("thread_index",			offsetof(struct vmm_state_page_t *, thread_index));
587	DECLARE("vmmStat",				offsetof(struct vmm_state_page_t *, vmmStat));
588	DECLARE("vmmCntrl",				offsetof(struct vmm_state_page_t *, vmmCntrl));
589	DECLARE("vmm_proc_state",		offsetof(struct vmm_state_page_t *, vmm_proc_state));
590
591	DECLARE("return_code",			offsetof(struct vmm_state_page_t *, return_code));
592
593	DECLARE("return_params",		offsetof(struct vmm_state_page_t *, vmmRet.vmmrp32.return_params));
594	DECLARE("return_paramsX",		offsetof(struct vmm_state_page_t *, vmmRet.vmmrp64.return_params));
595
596#if 0
597	DECLARE("return_params",		offsetof(struct vmm_state_page_t *, return_params));
598	DECLARE("vmm_proc_state",		offsetof(struct vmm_state_page_t *, vmm_proc_state));
599#endif
600	DECLARE("vmmppcVRs",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcVRs));
601	DECLARE("vmmppcVSCR",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcVSCR));
602	DECLARE("vmmppcFPRs",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcFPRs));
603	DECLARE("vmmppcFPSCR",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcFPSCR));
604
605	DECLARE("vmmppcpc",				offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcPC));
606	DECLARE("vmmppcmsr",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcMSR));
607	DECLARE("vmmppcr0",				offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x00));
608	DECLARE("vmmppcr1",				offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x04));
609	DECLARE("vmmppcr2",				offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x08));
610	DECLARE("vmmppcr3",				offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x0C));
611	DECLARE("vmmppcr4",				offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x10));
612	DECLARE("vmmppcr5",				offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x14));
613
614	DECLARE("vmmppcr6",				offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x18));
615	DECLARE("vmmppcr7",				offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x1C));
616	DECLARE("vmmppcr8",				offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x20));
617	DECLARE("vmmppcr9",				offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x24));
618	DECLARE("vmmppcr10",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x28));
619	DECLARE("vmmppcr11",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x2C));
620	DECLARE("vmmppcr12",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x30));
621	DECLARE("vmmppcr13",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x34));
622
623	DECLARE("vmmppcr14",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x38));
624	DECLARE("vmmppcr15",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x3C));
625	DECLARE("vmmppcr16",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x40));
626	DECLARE("vmmppcr17",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x44));
627	DECLARE("vmmppcr18",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x48));
628	DECLARE("vmmppcr19",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x4C));
629	DECLARE("vmmppcr20",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x50));
630	DECLARE("vmmppcr21",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x54));
631
632	DECLARE("vmmppcr22",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x58));
633	DECLARE("vmmppcr23",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x5C));
634	DECLARE("vmmppcr24",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x60));
635	DECLARE("vmmppcr25",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x64));
636	DECLARE("vmmppcr26",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x68));
637	DECLARE("vmmppcr27",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x6C));
638	DECLARE("vmmppcr28",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x70));
639	DECLARE("vmmppcr29",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x74));
640
641	DECLARE("vmmppcr30",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x78));
642	DECLARE("vmmppcr31",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcGPRs+0x7C));
643	DECLARE("vmmppccr",				offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcCR));
644	DECLARE("vmmppcxer",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcXER));
645	DECLARE("vmmppclr",				offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcLR));
646	DECLARE("vmmppcctr",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcCTR));
647	DECLARE("vmmppcmq",				offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcMQ));
648	DECLARE("vmmppcvrsave",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs32.ppcVRSave));
649
650	DECLARE("vmmppcXpc",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcPC));
651	DECLARE("vmmppcXmsr",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcMSR));
652	DECLARE("vmmppcXr0",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x00));
653	DECLARE("vmmppcXr1",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x08));
654	DECLARE("vmmppcXr2",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x10));
655	DECLARE("vmmppcXr3",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x18));
656	DECLARE("vmmppcXr4",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x20));
657	DECLARE("vmmppcXr5",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x28));
658
659	DECLARE("vmmppcXr6",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x30));
660	DECLARE("vmmppcXr7",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x38));
661	DECLARE("vmmppcXr8",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x40));
662	DECLARE("vmmppcXr9",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x48));
663	DECLARE("vmmppcXr10",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x50));
664	DECLARE("vmmppcXr11",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x58));
665	DECLARE("vmmppcXr12",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x60));
666	DECLARE("vmmppcXr13",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x68));
667
668	DECLARE("vmmppcXr14",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x70));
669	DECLARE("vmmppcXr15",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x78));
670	DECLARE("vmmppcXr16",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x80));
671	DECLARE("vmmppcXr17",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x88));
672	DECLARE("vmmppcXr18",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x90));
673	DECLARE("vmmppcXr19",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0x98));
674	DECLARE("vmmppcXr20",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0xA0));
675	DECLARE("vmmppcXr21",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0xA8));
676
677	DECLARE("vmmppcXr22",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0xB0));
678	DECLARE("vmmppcXr23",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0xB8));
679	DECLARE("vmmppcXr24",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0xC0));
680	DECLARE("vmmppcXr25",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0xC8));
681	DECLARE("vmmppcXr26",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0xD0));
682	DECLARE("vmmppcXr27",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0xD8));
683	DECLARE("vmmppcXr28",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0xE0));
684	DECLARE("vmmppcXr29",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0xE8));
685
686	DECLARE("vmmppcXr30",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0xF0));
687	DECLARE("vmmppcXr31",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcGPRs+0xF8));
688	DECLARE("vmmppcXcr",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcCR));
689	DECLARE("vmmppcXxer",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcXER));
690	DECLARE("vmmppcXlr",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcLR));
691	DECLARE("vmmppcXctr",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcCTR));
692	DECLARE("vmmppcXvrsave",		offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcRegs.ppcRegs64.ppcVRSave));
693
694	DECLARE("vmmppcvscr",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcVSCR+0x00));
695	DECLARE("vmmppcfpscrpad",		offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcFPSCR));
696	DECLARE("vmmppcfpscr",			offsetof(struct vmm_state_page_t *, vmm_proc_state.ppcFPSCR+4));
697
698	DECLARE("famguestr0",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs32.guest_register));
699	DECLARE("famguestr1",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs32.guest_register+0x4));
700	DECLARE("famguestr2",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs32.guest_register+0x8));
701	DECLARE("famguestr3",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs32.guest_register+0xC));
702	DECLARE("famguestr4",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs32.guest_register+0x10));
703	DECLARE("famguestr5",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs32.guest_register+0x14));
704	DECLARE("famguestr6",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs32.guest_register+0x18));
705	DECLARE("famguestr7",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs32.guest_register+0x1C));
706	DECLARE("famguestpc",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs32.guest_pc));
707	DECLARE("famguestmsr",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs32.guest_msr));
708	DECLARE("famdispcode",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs32.fastassist_dispatch_code));
709	DECLARE("famrefcon",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs32.fastassist_refcon));
710	DECLARE("famparam",				offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs32.fastassist_parameter));
711	DECLARE("famhandler",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs32.fastassist_dispatch));
712	DECLARE("famintercepts",		offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs32.fastassist_intercepts));
713
714	DECLARE("famguestXr0",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs64.guest_register));
715	DECLARE("famguestXr1",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs64.guest_register+0x8));
716	DECLARE("famguestXr2",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs64.guest_register+0x10));
717	DECLARE("famguestXr3",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs64.guest_register+0x18));
718	DECLARE("famguestXr4",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs64.guest_register+0x20));
719	DECLARE("famguestXr5",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs64.guest_register+0x28));
720	DECLARE("famguestXr6",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs64.guest_register+0x30));
721	DECLARE("famguestXr7",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs64.guest_register+0x38));
722	DECLARE("famguestXpc",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs64.guest_pc));
723	DECLARE("famguestXmsr",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs64.guest_msr));
724	DECLARE("famdispcodeX",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs64.fastassist_dispatch_code));
725	DECLARE("famrefconX",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs64.fastassist_refcon));
726	DECLARE("famparamX",				offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs64.fastassist_parameter));
727	DECLARE("famhandlerX",			offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs64.fastassist_dispatch));
728	DECLARE("faminterceptsX",		offsetof(struct vmm_state_page_t *, vmm_fastassist_state.vmmfs64.fastassist_intercepts));
729
730	DECLARE("vmmFloatCngd",			vmmFloatCngd);
731	DECLARE("vmmFloatCngdb",		vmmFloatCngdb);
732	DECLARE("vmmVectCngd",			vmmVectCngd);
733	DECLARE("vmmVectCngdb",			vmmVectCngdb);
734	DECLARE("vmmTimerPop",			vmmTimerPop);
735	DECLARE("vmmTimerPopb",			vmmTimerPopb);
736	DECLARE("vmmFAMmode",			vmmFAMmode);
737	DECLARE("vmmFAMmodeb",			vmmFAMmodeb);
738	DECLARE("vmmSpfSave",			vmmSpfSave);
739	DECLARE("vmmSpfSaveb",			vmmSpfSaveb);
740	DECLARE("vmmFloatLoad",			vmmFloatLoad);
741	DECLARE("vmmFloatLoadb",		vmmFloatLoadb);
742	DECLARE("vmmVectLoad",			vmmVectLoad);
743	DECLARE("vmmVectLoadb",			vmmVectLoadb);
744	DECLARE("vmmVectVRall",			vmmVectVRall);
745	DECLARE("vmmVectVRallb",		vmmVectVRallb);
746	DECLARE("vmmVectVAss",			vmmVectVAss);
747	DECLARE("vmmVectVAssb",			vmmVectVAssb);
748	DECLARE("vmmXStart",			vmmXStart);
749	DECLARE("vmmXStartb",			vmmXStartb);
750	DECLARE("vmmXStop",				vmmXStop);
751	DECLARE("vmmXStopb",			vmmXStopb);
752	DECLARE("vmmKey",				vmmKey);
753	DECLARE("vmmKeyb",				vmmKeyb);
754	DECLARE("vmmFamSet",			vmmFamSet);
755	DECLARE("vmmFamSetb",			vmmFamSetb);
756	DECLARE("vmmFamEna",			vmmFamEna);
757	DECLARE("vmmFamEnab",			vmmFamEnab);
758	DECLARE("vmm64Bit",				vmm64Bit);
759
760	/* values from kern/task.h */
761	DECLARE("TASK_SYSCALLS_MACH",	offsetof(struct task *, syscalls_mach));
762	DECLARE("TASK_SYSCALLS_UNIX",	offsetof(struct task *, syscalls_unix));
763
764	DECLARE("TASK_VTIMERS",			offsetof(struct task *, vtimers));
765
766	/* values from vm/vm_map.h */
767	DECLARE("VMMAP_PMAP",	offsetof(struct _vm_map *, pmap));
768
769	/* values from machine/pmap.h */
770	DECLARE("pmapSpace",			offsetof(struct pmap *, space));
771	DECLARE("spaceNum",				offsetof(struct pmap *, spaceNum));
772	DECLARE("pmapSXlk",				offsetof(struct pmap *, pmapSXlk));
773	DECLARE("pmapCCtl",				offsetof(struct pmap *, pmapCCtl));
774    DECLARE("pmapCCtlVal",			pmapCCtlVal);
775    DECLARE("pmapCCtlLck",			pmapCCtlLck);
776    DECLARE("pmapCCtlLckb",			pmapCCtlLckb);
777    DECLARE("pmapCCtlGen",			pmapCCtlGen);
778    DECLARE("pmapSegCacheCnt",		pmapSegCacheCnt);
779    DECLARE("pmapSegCacheUse",		pmapSegCacheUse);
780	DECLARE("pmapvr",				offsetof(struct pmap *, pmapvr));
781	DECLARE("pmapFlags",			offsetof(struct pmap *, pmapFlags));
782    DECLARE("pmapKeys",				pmapKeys);
783    DECLARE("pmapKeyDef",			pmapKeyDef);
784	DECLARE("pmapSCSubTag",			offsetof(struct pmap *, pmapSCSubTag));
785	DECLARE("pmapVmmExt",			offsetof(struct pmap *, pmapVmmExt));
786	DECLARE("pmapVmmExtPhys",		offsetof(struct pmap *, pmapVmmExtPhys));
787	DECLARE("pmapVMhost",			pmapVMhost);
788	DECLARE("pmapVMgsaa",			pmapVMgsaa);
789	DECLARE("pmapSegCache",			offsetof(struct pmap *, pmapSegCache));
790	DECLARE("pmapCurLists",			offsetof(struct pmap *, pmapCurLists));
791	DECLARE("pmapRandNum",			offsetof(struct pmap *, pmapRandNum));
792	DECLARE("pmapSkipLists",		offsetof(struct pmap *, pmapSkipLists));
793	DECLARE("pmapSearchVisits",		offsetof(struct pmap *, pmapSearchVisits));
794	DECLARE("pmapSearchCnt",		offsetof(struct pmap *, pmapSearchCnt));
795	DECLARE("pmapSize",				pmapSize);
796    DECLARE("kSkipListFanoutShift",	kSkipListFanoutShift);
797    DECLARE("kSkipListMaxLists",	kSkipListMaxLists);
798    DECLARE("invalSpace",			invalSpace);
799
800	DECLARE("sgcESID",				offsetof(struct sgc *, sgcESID));
801	DECLARE("sgcESmsk",				sgcESmsk);
802	DECLARE("sgcVSID",				offsetof(struct sgc *, sgcVSID));
803	DECLARE("sgcVSmsk",				sgcVSmsk);
804	DECLARE("sgcVSKeys",			sgcVSKeys);
805	DECLARE("sgcVSKeyUsr",			sgcVSKeyUsr);
806	DECLARE("sgcVSNoEx",			sgcVSNoEx);
807	DECLARE("pmapPAddr",			offsetof(struct pmapTransTab *, pmapPAddr));
808	DECLARE("pmapVAddr",			offsetof(struct pmapTransTab *, pmapVAddr));
809	DECLARE("pmapTransSize",		sizeof(pmapTransTab));
810	DECLARE("pmapResidentCnt",		offsetof(struct pmap *, stats.resident_count));
811	DECLARE("pmapResidentMax",		offsetof(struct pmap *, stats.resident_max));
812
813	DECLARE("maxAdrSp",				maxAdrSp);
814	DECLARE("maxAdrSpb",			maxAdrSpb);
815
816	DECLARE("cppvPsnkb",			cppvPsnkb);
817	DECLARE("cppvPsrcb",			cppvPsrcb);
818	DECLARE("cppvFsnkb",			cppvFsnkb);
819	DECLARE("cppvFsrcb",			cppvFsrcb);
820	DECLARE("cppvNoModSnkb",		cppvNoModSnkb);
821	DECLARE("cppvNoRefSrcb",		cppvNoRefSrcb);
822	DECLARE("cppvKmapb",			cppvKmapb);
823
824	DECLARE("vmxSalt",				offsetof(struct pmap_vmm_ext *, vmxSalt));
825	DECLARE("vmxHostPmapPhys",		offsetof(struct pmap_vmm_ext *, vmxHostPmapPhys));
826	DECLARE("vmxHostPmap",			offsetof(struct pmap_vmm_ext *,	vmxHostPmap));
827	DECLARE("vmxHashPgIdx",			offsetof(struct pmap_vmm_ext *, vmxHashPgIdx));
828	DECLARE("vmxHashPgList",		offsetof(struct pmap_vmm_ext *, vmxHashPgList));
829	DECLARE("vmxStats",				offsetof(struct pmap_vmm_ext *, vmxStats));
830	DECLARE("vmxSize",				sizeof(struct pmap_vmm_ext));
831	DECLARE("VMX_HPIDX_OFFSET",		VMX_HPIDX_OFFSET);
832	DECLARE("VMX_HPLIST_OFFSET",	VMX_HPLIST_OFFSET);
833	DECLARE("VMX_ACTMAP_OFFSET",	VMX_ACTMAP_OFFSET);
834	DECLARE("vxsGpf",				offsetof(struct pmap_vmm_ext *, vmxStats.vxsGpf));
835	DECLARE("vxsGpfMiss",			offsetof(struct pmap_vmm_ext *, vmxStats.vxsGpfMiss));
836	DECLARE("vxsGrm",				offsetof(struct pmap_vmm_ext *, vmxStats.vxsGrm));
837	DECLARE("vxsGrmMiss",			offsetof(struct pmap_vmm_ext *, vmxStats.vxsGrmMiss));
838	DECLARE("vxsGrmActive",			offsetof(struct pmap_vmm_ext *, vmxStats.vxsGrmActive));
839	DECLARE("vxsGra",				offsetof(struct pmap_vmm_ext *, vmxStats.vxsGra));
840	DECLARE("vxsGraHits",			offsetof(struct pmap_vmm_ext *, vmxStats.vxsGraHits));
841	DECLARE("vxsGraActive",			offsetof(struct pmap_vmm_ext *, vmxStats.vxsGraActive));
842	DECLARE("vxsGrl",				offsetof(struct pmap_vmm_ext *, vmxStats.vxsGrl));
843	DECLARE("vxsGrlActive",			offsetof(struct pmap_vmm_ext *, vmxStats.vxsGrlActive));
844	DECLARE("vxsGrs",				offsetof(struct pmap_vmm_ext *, vmxStats.vxsGrs));
845	DECLARE("vxsGrsHitAct",			offsetof(struct pmap_vmm_ext *, vmxStats.vxsGrsHitAct));
846	DECLARE("vxsGrsHitSusp",		offsetof(struct pmap_vmm_ext *, vmxStats.vxsGrsHitSusp));
847	DECLARE("vxsGrsMissGV",			offsetof(struct pmap_vmm_ext *, vmxStats.vxsGrsMissGV));
848	DECLARE("vxsGrsHitPE",			offsetof(struct pmap_vmm_ext *, vmxStats.vxsGrsHitPE));
849	DECLARE("vxsGrsMissPE",			offsetof(struct pmap_vmm_ext *, vmxStats.vxsGrsMissPE));
850	DECLARE("vxsGad",				offsetof(struct pmap_vmm_ext *, vmxStats.vxsGad));
851	DECLARE("vxsGadHit",			offsetof(struct pmap_vmm_ext *, vmxStats.vxsGadHit));
852	DECLARE("vxsGadFree",			offsetof(struct pmap_vmm_ext *, vmxStats.vxsGadFree));
853	DECLARE("vxsGadDormant",		offsetof(struct pmap_vmm_ext *, vmxStats.vxsGadDormant));
854	DECLARE("vxsGadSteal",			offsetof(struct pmap_vmm_ext *, vmxStats.vxsGadSteal));
855	DECLARE("vxsGsu",				offsetof(struct pmap_vmm_ext *, vmxStats.vxsGsu));
856	DECLARE("vxsGsuHit",			offsetof(struct pmap_vmm_ext *, vmxStats.vxsGsuHit));
857	DECLARE("vxsGsuMiss",			offsetof(struct pmap_vmm_ext *, vmxStats.vxsGsuMiss));
858	DECLARE("vxsGtd",				offsetof(struct pmap_vmm_ext *, vmxStats.vxsGtd));
859	DECLARE("vxsGtdHit",			offsetof(struct pmap_vmm_ext *, vmxStats.vxsGtdHit));
860	DECLARE("vxsGtdMiss",			offsetof(struct pmap_vmm_ext *, vmxStats.vxsGtdMiss));
861
862	/* values from kern/timer.h */
863	DECLARE("TIMER_LOW",		offsetof(struct timer *, low_bits));
864	DECLARE("TIMER_HIGH",		offsetof(struct timer *, high_bits));
865	DECLARE("TIMER_HIGHCHK",	offsetof(struct timer *, high_bits_check));
866	DECLARE("TIMER_TSTAMP",		offsetof(struct timer *, tstamp));
867
868	DECLARE("THREAD_TIMER",		offsetof(struct processor *, processor_data.thread_timer));
869	DECLARE("KERNEL_TIMER",		offsetof(struct processor *, processor_data.kernel_timer));
870	DECLARE("SYSTEM_TIMER",		offsetof(struct thread *, system_timer));
871	DECLARE("USER_TIMER",		offsetof(struct thread *, user_timer));
872	DECLARE("SYSTEM_STATE",		offsetof(struct processor *, processor_data.system_state));
873	DECLARE("USER_STATE",		offsetof(struct processor *, processor_data.user_state));
874	DECLARE("CURRENT_STATE",	offsetof(struct processor *, processor_data.current_state));
875
876	/* Constants from pmap.h */
877	DECLARE("PPC_SID_KERNEL", PPC_SID_KERNEL);
878
879	/* values for accessing mach_trap table */
880	DECLARE("MACH_TRAP_ARG_MUNGE32",
881		offsetof(mach_trap_t *, mach_trap_arg_munge32));
882	DECLARE("MACH_TRAP_ARG_MUNGE64",
883		offsetof(mach_trap_t *, mach_trap_arg_munge64));
884	DECLARE("MACH_TRAP_ARGC",
885		offsetof(mach_trap_t *, mach_trap_arg_count));
886	DECLARE("MACH_TRAP_FUNCTION",
887		offsetof(mach_trap_t *, mach_trap_function));
888
889	DECLARE("MACH_TRAP_TABLE_COUNT", MACH_TRAP_TABLE_COUNT);
890
891	DECLARE("PPCcallmax", sizeof(PPCcalls));
892
893	/* Misc values used by assembler */
894	DECLARE("AST_ALL", AST_ALL);
895	DECLARE("AST_URGENT", AST_URGENT);
896	DECLARE("AST_BSD", AST_BSD);
897
898	/* Spin Lock structure */
899	DECLARE("SLOCK_ILK",	offsetof(lck_spin_t *, interlock));
900
901	/* Mutex structure */
902	DECLARE("MUTEX_DATA",	offsetof(lck_mtx_t *, lck_mtx_data));
903	DECLARE("MUTEX_WAITERS",offsetof(lck_mtx_t *, lck_mtx_waiters));
904	DECLARE("MUTEX_PROMOTED_PRI",offsetof(lck_mtx_t *, lck_mtx_pri));
905	DECLARE("MUTEX_TYPE",	offsetof(lck_mtx_ext_t *, lck_mtx_deb.type));
906	DECLARE("MUTEX_STACK",	offsetof(lck_mtx_ext_t *, lck_mtx_deb.stack));
907	DECLARE("MUTEX_FRAMES",	LCK_FRAMES_MAX);
908	DECLARE("MUTEX_THREAD",	offsetof(lck_mtx_ext_t *, lck_mtx_deb.thread));
909	DECLARE("MUTEX_ATTR",	offsetof(lck_mtx_ext_t *, lck_mtx_attr));
910	DECLARE("MUTEX_ATTR_DEBUG", LCK_MTX_ATTR_DEBUG);
911	DECLARE("MUTEX_ATTR_DEBUGb", LCK_MTX_ATTR_DEBUGb);
912	DECLARE("MUTEX_ATTR_STAT", LCK_MTX_ATTR_STAT);
913	DECLARE("MUTEX_ATTR_STATb", LCK_MTX_ATTR_STATb);
914	DECLARE("MUTEX_GRP",	offsetof(lck_mtx_ext_t *, lck_mtx_grp));
915	DECLARE("MUTEX_TAG",	MUTEX_TAG);
916	DECLARE("MUTEX_IND",	LCK_MTX_TAG_INDIRECT);
917	DECLARE("MUTEX_ITAG",offsetof(lck_mtx_t *, lck_mtx_tag));
918	DECLARE("MUTEX_PTR",offsetof(lck_mtx_t *, lck_mtx_ptr));
919	DECLARE("MUTEX_ASSERT_OWNED",	LCK_MTX_ASSERT_OWNED);
920	DECLARE("MUTEX_ASSERT_NOTOWNED",LCK_MTX_ASSERT_NOTOWNED);
921	DECLARE("GRP_MTX_STAT_UTIL",	offsetof(lck_grp_t *, lck_grp_stat.lck_grp_mtx_stat.lck_grp_mtx_util_cnt));
922	DECLARE("GRP_MTX_STAT_MISS",	offsetof(lck_grp_t *, lck_grp_stat.lck_grp_mtx_stat.lck_grp_mtx_miss_cnt));
923	DECLARE("GRP_MTX_STAT_WAIT",	offsetof(lck_grp_t *, lck_grp_stat.lck_grp_mtx_stat.lck_grp_mtx_wait_cnt));
924
925	/* RW lock structure */
926	DECLARE("RW_IND",	LCK_RW_TAG_INDIRECT);
927	DECLARE("RW_PTR",	offsetof(lck_rw_t *, lck_rw_ptr));
928	DECLARE("RW_SHARED",	LCK_RW_TYPE_SHARED);
929	DECLARE("RW_EXCL",	LCK_RW_TYPE_EXCLUSIVE);
930	DECLARE("RW_EVENT",	(((sizeof(lck_rw_t)-1))/sizeof(unsigned int))*sizeof(unsigned int));
931
932	/* values from low_trace.h */
933	DECLARE("LTR_cpu",	offsetof(struct LowTraceRecord *, LTR_cpu));
934	DECLARE("LTR_excpt",	offsetof(struct LowTraceRecord *, LTR_excpt));
935	DECLARE("LTR_timeHi",	offsetof(struct LowTraceRecord *, LTR_timeHi));
936	DECLARE("LTR_timeLo",	offsetof(struct LowTraceRecord *, LTR_timeLo));
937	DECLARE("LTR_cr",	offsetof(struct LowTraceRecord *, LTR_cr));
938	DECLARE("LTR_srr0",	offsetof(struct LowTraceRecord *, LTR_srr0));
939	DECLARE("LTR_srr1",	offsetof(struct LowTraceRecord *, LTR_srr1));
940	DECLARE("LTR_dar",	offsetof(struct LowTraceRecord *, LTR_dar));
941	DECLARE("LTR_dsisr",	offsetof(struct LowTraceRecord *, LTR_dsisr));
942	DECLARE("LTR_rsvd0",	offsetof(struct LowTraceRecord *, LTR_rsvd0));
943	DECLARE("LTR_save",	offsetof(struct LowTraceRecord *, LTR_save));
944	DECLARE("LTR_lr",	offsetof(struct LowTraceRecord *, LTR_lr));
945	DECLARE("LTR_ctr",	offsetof(struct LowTraceRecord *, LTR_ctr));
946	DECLARE("LTR_r0",	offsetof(struct LowTraceRecord *, LTR_r0));
947	DECLARE("LTR_r1",	offsetof(struct LowTraceRecord *, LTR_r1));
948	DECLARE("LTR_r2",	offsetof(struct LowTraceRecord *, LTR_r2));
949	DECLARE("LTR_r3",	offsetof(struct LowTraceRecord *, LTR_r3));
950	DECLARE("LTR_r4",	offsetof(struct LowTraceRecord *, LTR_r4));
951	DECLARE("LTR_r5",	offsetof(struct LowTraceRecord *, LTR_r5));
952	DECLARE("LTR_r6",	offsetof(struct LowTraceRecord *, LTR_r6));
953	DECLARE("LTR_size",	sizeof(struct LowTraceRecord));
954
955/*	Values from pexpert.h */
956	DECLARE("PECFIcpurate",	offsetof(struct clock_frequency_info_t *, cpu_clock_rate_hz));
957	DECLARE("PECFIbusrate",	offsetof(struct clock_frequency_info_t *, bus_clock_rate_hz));
958
959/*	Values from pmap_internals.h and mappings.h */
960
961	DECLARE("mpFlags",		offsetof(struct mapping *, mpFlags));
962	DECLARE("mpBusy",		mpBusy);
963	DECLARE("mpPrevious",	mpPrevious);
964	DECLARE("mpNext",		mpNext);
965	DECLARE("mpPIndex",		mpPIndex);
966	DECLARE("mpType",		mpType);
967	DECLARE("mpNormal",		mpNormal);
968	DECLARE("mpBlock",		mpBlock);
969	DECLARE("mpMinSpecial",	mpMinSpecial);
970	DECLARE("mpNest",		mpNest);
971	DECLARE("mpLinkage",	mpLinkage);
972	DECLARE("mpACID",		mpACID);
973	DECLARE("mpGuest",		mpGuest);
974	DECLARE("mpFIP",		mpFIP);
975	DECLARE("mpFIPb",		mpFIPb);
976	DECLARE("mpPcfg",		mpPcfg);
977	DECLARE("mpPcfgb",		mpPcfgb);
978	DECLARE("mpRIP",		mpRIP);
979	DECLARE("mpRIPb",		mpRIPb);
980	DECLARE("mpPerm",		mpPerm);
981	DECLARE("mpPermb",		mpPermb);
982	DECLARE("mpBSu",		mpBSu);
983	DECLARE("mpBSub",		mpBSub);
984	DECLARE("mpLists",		mpLists);
985	DECLARE("mpListsb",		mpListsb);
986	DECLARE("mpgFlags",		mpgFlags);
987	DECLARE("mpgFree",		mpgFree);
988	DECLARE("mpgGlobal",	mpgGlobal);
989	DECLARE("mpgDormant",	mpgDormant);
990
991	DECLARE("mpSpace",		offsetof(struct mapping *, mpSpace));
992	DECLARE("mpBSize",		offsetof(struct mapping *, u.mpBSize));
993	DECLARE("mpgCursor",	offsetof(struct mapping *, u.mpgCursor));
994	DECLARE("mpPte",		offsetof(struct mapping *, mpPte));
995	DECLARE("mpHValid",		mpHValid);
996	DECLARE("mpHValidb",	mpHValidb);
997
998	DECLARE("mpPAddr",		offsetof(struct mapping *, mpPAddr));
999	DECLARE("mpVAddr",		offsetof(struct mapping *, mpVAddr));
1000	DECLARE("mpHWFlags",	mpHWFlags);
1001	DECLARE("mpHWFlagsb",	mpHWFlagsb);
1002	DECLARE("mpN",			mpN);
1003	DECLARE("mpNb",			mpNb);
1004	DECLARE("mpPP",			mpPP);
1005	DECLARE("mpPPb",		mpPPb);
1006	DECLARE("mpPPe",		mpPPe);
1007	DECLARE("mpKKN",		mpKKN);
1008	DECLARE("mpKKNb",		mpKKNb);
1009	DECLARE("mpWIMG",		mpWIMG);
1010	DECLARE("mpWIMGb",		mpWIMGb);
1011	DECLARE("mpW",			mpW);
1012	DECLARE("mpWb",			mpWb);
1013	DECLARE("mpI",			mpI);
1014	DECLARE("mpIb",			mpIb);
1015	DECLARE("mpM",			mpM);
1016	DECLARE("mpMb",			mpMb);
1017	DECLARE("mpG",			mpG);
1018	DECLARE("mpGb",			mpGb);
1019	DECLARE("mpWIMGe",		mpWIMGe);
1020	DECLARE("mpC",			mpC);
1021	DECLARE("mpCb",			mpCb);
1022	DECLARE("mpR",			mpR);
1023	DECLARE("mpRb",			mpRb);
1024	DECLARE("mpAlias",		offsetof(struct mapping *, mpAlias));
1025	DECLARE("mpNestReloc",	offsetof(struct mapping *, mpNestReloc));
1026	DECLARE("mpBlkRemCur",	offsetof(struct mapping *, mpBlkRemCur));
1027	DECLARE("mpList0",		offsetof(struct mapping *, mpList0));
1028	DECLARE("mpList	",		offsetof(struct mapping *, mpList));
1029	DECLARE("mpBasicSize",	mpBasicSize);
1030	DECLARE("mpBasicLists",	mpBasicLists);
1031
1032	DECLARE("mbvrswap",		offsetof(struct mappingblok *, mapblokvrswap));
1033	DECLARE("mbfree",		offsetof(struct mappingblok *, mapblokfree));
1034	DECLARE("mapcsize",		sizeof(struct mappingctl));
1035
1036	DECLARE("hwpPurgePTE",	hwpPurgePTE);
1037	DECLARE("hwpMergePTE",	hwpMergePTE);
1038	DECLARE("hwpNoopPTE",	hwpNoopPTE);
1039
1040// DANGER WIL ROBINSON!!! This wonderfully magical tool doesn't seem to handle 64-bit constants,
1041// leaving us with only the cold ash of a zero. ppI, ppG, and who knows what else is affected.
1042	DECLARE("ppLink",		offsetof(struct phys_entry *, ppLink));
1043	DECLARE("ppLock",		ppLock);
1044	DECLARE("ppFlags",		ppFlags);
1045//	DECLARE("ppI",			ppI);
1046	DECLARE("ppIb",			ppIb);
1047//	DECLARE("ppG",			ppG);
1048	DECLARE("ppGb",			ppGb);
1049	DECLARE("ppR",			ppR);
1050	DECLARE("ppRb",			ppRb);
1051	DECLARE("ppC",			ppC);
1052	DECLARE("ppCb",			ppCb);
1053	DECLARE("physEntrySize",physEntrySize);
1054	DECLARE("ppLFAmask",	ppLFAmask);
1055	DECLARE("ppLFArrot",	ppLFArrot);
1056
1057	DECLARE("pcfFlags",		offsetof(struct pcfg *, pcfFlags));
1058	DECLARE("pcfEncode",	offsetof(struct pcfg *, pcfEncode));
1059	DECLARE("pcfPSize",		offsetof(struct pcfg *, pcfPSize));
1060	DECLARE("pcfShift",		offsetof(struct pcfg *, pcfShift));
1061	DECLARE("pcfValid",		pcfValid);
1062	DECLARE("pcfLarge",		pcfLarge);
1063	DECLARE("pcfDedSeg",	pcfDedSeg);
1064	DECLARE("pcfSize",		sizeof(struct pcfg));
1065	DECLARE("pcfDefPcfg",	pcfDefPcfg);
1066	DECLARE("pcfLargePcfg",	pcfLargePcfg);
1067
1068	DECLARE("PCAallo",		offsetof(struct PCA *, flgs.PCAallo));
1069	DECLARE("PCAfree",		offsetof(struct PCA *, flgs.PCAalflgs.PCAfree));
1070	DECLARE("PCAauto",		offsetof(struct PCA *, flgs.PCAalflgs.PCAauto));
1071	DECLARE("PCAmisc",		offsetof(struct PCA *, flgs.PCAalflgs.PCAmisc));
1072	DECLARE("PCAlock",		PCAlock);
1073	DECLARE("PCAlockb",		PCAlockb);
1074	DECLARE("PCAsteal",		offsetof(struct PCA *, flgs.PCAalflgs.PCAsteal));
1075
1076	DECLARE("mrPhysTab",	offsetof(struct mem_region *, mrPhysTab));
1077	DECLARE("mrStart",		offsetof(struct mem_region *, mrStart));
1078	DECLARE("mrEnd",		offsetof(struct mem_region *, mrEnd));
1079	DECLARE("mrAStart",		offsetof(struct mem_region *, mrAStart));
1080	DECLARE("mrAEnd",		offsetof(struct mem_region *, mrAEnd));
1081	DECLARE("mrSize",		sizeof(struct mem_region));
1082
1083	DECLARE("mapRemChunk",	mapRemChunk);
1084
1085	DECLARE("mapRetCode",	mapRetCode);
1086	DECLARE("mapRtOK",		mapRtOK);
1087	DECLARE("mapRtBadLk",	mapRtBadLk);
1088	DECLARE("mapRtPerm",	mapRtPerm);
1089	DECLARE("mapRtNotFnd",	mapRtNotFnd);
1090	DECLARE("mapRtBlock",	mapRtBlock);
1091	DECLARE("mapRtNest",	mapRtNest);
1092	DECLARE("mapRtRemove",	mapRtRemove);
1093	DECLARE("mapRtMapDup",	mapRtMapDup);
1094	DECLARE("mapRtGuest",	mapRtGuest);
1095	DECLARE("mapRtEmpty",	mapRtEmpty);
1096	DECLARE("mapRtSmash",	mapRtSmash);
1097
1098#if 0
1099	DECLARE("MFpcaptr",		offsetof(struct mappingflush *, pcaptr));
1100	DECLARE("MFmappingcnt",		offsetof(struct mappingflush *, mappingcnt));
1101	DECLARE("MFmapping",		offsetof(struct mappingflush *, mapping));
1102	DECLARE("MFmappingSize", 	sizeof(struct mfmapping));
1103#endif
1104
1105	DECLARE("GV_GROUPS_LG2",	GV_GROUPS_LG2);
1106	DECLARE("GV_GROUPS",		GV_GROUPS);
1107	DECLARE("GV_SLOT_SZ_LG2",	GV_SLOT_SZ_LG2);
1108	DECLARE("GV_SLOT_SZ",		GV_SLOT_SZ);
1109	DECLARE("GV_SLOTS_LG2",		GV_SLOTS_LG2);
1110	DECLARE("GV_SLOTS",			GV_SLOTS);
1111	DECLARE("GV_PGIDX_SZ_LG2",	GV_PGIDX_SZ_LG2);
1112	DECLARE("GV_PAGE_SZ_LG2",	GV_PAGE_SZ_LG2);
1113	DECLARE("GV_PAGE_SZ",		GV_PAGE_SZ);
1114	DECLARE("GV_PAGE_MASK",		GV_PAGE_MASK);
1115	DECLARE("GV_HPAGES",		GV_HPAGES);
1116	DECLARE("GV_GRPS_PPG_LG2",	GV_GRPS_PPG_LG2);
1117	DECLARE("GV_GRPS_PPG",		GV_GRPS_PPG);
1118	DECLARE("GV_GRP_MASK",		GV_GRP_MASK);
1119	DECLARE("GV_SLOT_MASK",		GV_SLOT_MASK);
1120	DECLARE("GV_HPAGE_SHIFT",	GV_HPAGE_SHIFT);
1121	DECLARE("GV_HPAGE_MASK",	GV_HPAGE_MASK);
1122	DECLARE("GV_HGRP_SHIFT",	GV_HGRP_SHIFT);
1123	DECLARE("GV_HGRP_MASK",		GV_HGRP_MASK);
1124	DECLARE("GV_MAPWD_BITS_LG2",GV_MAPWD_BITS_LG2);
1125	DECLARE("GV_MAPWD_SZ_LG2",	GV_MAPWD_SZ_LG2);
1126	DECLARE("GV_MAP_WORDS",		GV_MAP_WORDS);
1127	DECLARE("GV_MAP_MASK",		GV_MAP_MASK);
1128	DECLARE("GV_MAP_SHIFT",		GV_MAP_SHIFT);
1129	DECLARE("GV_BAND_SHIFT",	GV_BAND_SHIFT);
1130	DECLARE("GV_BAND_SZ_LG2",	GV_BAND_SZ_LG2);
1131	DECLARE("GV_BAND_MASK",		GV_BAND_MASK);
1132
1133#if 1
1134	DECLARE("GDsave",		offsetof(struct GDWorkArea *, GDsave));
1135	DECLARE("GDfp0",		offsetof(struct GDWorkArea *, GDfp0));
1136	DECLARE("GDfp1",		offsetof(struct GDWorkArea *, GDfp1));
1137	DECLARE("GDfp2",		offsetof(struct GDWorkArea *, GDfp2));
1138	DECLARE("GDfp3",		offsetof(struct GDWorkArea *, GDfp3));
1139	DECLARE("GDtop",		offsetof(struct GDWorkArea *, GDtop));
1140	DECLARE("GDleft",		offsetof(struct GDWorkArea *, GDleft));
1141	DECLARE("GDtopleft",	offsetof(struct GDWorkArea *, GDtopleft));
1142	DECLARE("GDrowbytes",	offsetof(struct GDWorkArea *, GDrowbytes));
1143	DECLARE("GDrowchar",	offsetof(struct GDWorkArea *, GDrowchar));
1144	DECLARE("GDdepth",		offsetof(struct GDWorkArea *, GDdepth));
1145	DECLARE("GDcollgn",		offsetof(struct GDWorkArea *, GDcollgn));
1146	DECLARE("GDready",		offsetof(struct GDWorkArea *, GDready));
1147	DECLARE("GDrowbuf1",	offsetof(struct GDWorkArea *, GDrowbuf1));
1148	DECLARE("GDrowbuf2",	offsetof(struct GDWorkArea *, GDrowbuf2));
1149#endif
1150
1151	DECLARE("enaExpTrace",	enaExpTrace);
1152	DECLARE("enaExpTraceb",	enaExpTraceb);
1153	DECLARE("enaUsrFCall",	enaUsrFCall);
1154	DECLARE("enaUsrFCallb",	enaUsrFCallb);
1155	DECLARE("enaUsrPhyMp",	enaUsrPhyMp);
1156	DECLARE("enaUsrPhyMpb",	enaUsrPhyMpb);
1157	DECLARE("enaDiagSCs",	enaDiagSCs);
1158	DECLARE("enaDiagSCsb",	enaDiagSCsb);
1159	DECLARE("enaDiagEM",	enaDiagEM);
1160	DECLARE("enaDiagEMb",	enaDiagEMb);
1161	DECLARE("enaNotifyEM",	enaNotifyEM);
1162	DECLARE("enaNotifyEMb",	enaNotifyEMb);
1163	DECLARE("disLkType",	disLkType);
1164	DECLARE("disLktypeb",	disLktypeb);
1165	DECLARE("disLkThread",	disLkThread);
1166	DECLARE("disLkThreadb",	disLkThreadb);
1167	DECLARE("enaLkExtStck",	enaLkExtStck);
1168	DECLARE("enaLkExtStckb",enaLkExtStckb);
1169	DECLARE("disLkMyLck",	disLkMyLck);
1170	DECLARE("disLkMyLckb",	disLkMyLckb);
1171	DECLARE("dgMisc1",		offsetof(struct diagWork *, dgMisc1));
1172	DECLARE("dgMisc2",		offsetof(struct diagWork *, dgMisc2));
1173	DECLARE("dgMisc3",		offsetof(struct diagWork *, dgMisc3));
1174	DECLARE("dgMisc4",		offsetof(struct diagWork *, dgMisc4));
1175	DECLARE("dgMisc5",		offsetof(struct diagWork *, dgMisc5));
1176
1177	DECLARE("SACnext",		offsetof(struct savearea_comm *, sac_next));
1178	DECLARE("SACprev",		offsetof(struct savearea_comm *, sac_prev));
1179	DECLARE("SACvrswap",	offsetof(struct savearea_comm *, sac_vrswap));
1180	DECLARE("SACalloc",		offsetof(struct savearea_comm *, sac_alloc));
1181	DECLARE("SACflags",		offsetof(struct savearea_comm *, sac_flags));
1182	DECLARE("sac_cnt",		sac_cnt);
1183	DECLARE("sac_empty",	sac_empty);
1184	DECLARE("sac_perm",		sac_perm);
1185	DECLARE("sac_permb",	sac_permb);
1186
1187	DECLARE("LocalSaveTarget",		LocalSaveTarget);
1188	DECLARE("LocalSaveMin",			LocalSaveMin);
1189	DECLARE("LocalSaveMax",			LocalSaveMax);
1190	DECLARE("FreeListMin",			FreeListMin);
1191	DECLARE("SaveLowHysteresis",	SaveLowHysteresis);
1192	DECLARE("SaveHighHysteresis",	SaveHighHysteresis);
1193	DECLARE("InitialSaveAreas",		InitialSaveAreas);
1194	DECLARE("InitialSaveTarget",	InitialSaveTarget);
1195	DECLARE("InitialSaveBloks",		InitialSaveBloks);
1196
1197	DECLARE("SAVprev",		offsetof(struct savearea_comm *, save_prev));
1198	DECLARE("SAVact",		offsetof(struct savearea_comm *, save_act));
1199	DECLARE("SAVflags",		offsetof(struct savearea_comm *, save_flags));
1200	DECLARE("SAVlevel",		offsetof(struct savearea_comm *, save_level));
1201	DECLARE("SAVtime",		offsetof(struct savearea_comm *, save_time));
1202	DECLARE("savemisc0",	offsetof(struct savearea_comm *, save_misc0));
1203	DECLARE("savemisc1",	offsetof(struct savearea_comm *, save_misc1));
1204	DECLARE("savemisc2",	offsetof(struct savearea_comm *, save_misc2));
1205	DECLARE("savemisc3",	offsetof(struct savearea_comm *, save_misc3));
1206
1207	DECLARE("SAVsize",		sizeof(struct savearea));
1208	DECLARE("SAVsizefpu",	sizeof(struct savearea_vec));
1209	DECLARE("SAVsizevec",	sizeof(struct savearea_fpu));
1210	DECLARE("SAVcommsize",	sizeof(struct savearea_comm));
1211
1212	DECLARE("savesrr0",		offsetof(struct savearea *, save_srr0));
1213	DECLARE("savesrr1",		offsetof(struct savearea *, save_srr1));
1214	DECLARE("savecr",		offsetof(struct savearea *, save_cr));
1215	DECLARE("savexer",		offsetof(struct savearea *, save_xer));
1216	DECLARE("savelr",		offsetof(struct savearea *, save_lr));
1217	DECLARE("savectr",		offsetof(struct savearea *, save_ctr));
1218	DECLARE("savedar",		offsetof(struct savearea *, save_dar));
1219	DECLARE("savedsisr",	offsetof(struct savearea *, save_dsisr));
1220	DECLARE("saveexception",	offsetof(struct savearea *, save_exception));
1221	DECLARE("savefpscrpad",	offsetof(struct savearea *, save_fpscrpad));
1222	DECLARE("savefpscr",	offsetof(struct savearea *, save_fpscr));
1223	DECLARE("savevrsave",	offsetof(struct savearea *, save_vrsave));
1224	DECLARE("savevscr",		offsetof(struct savearea *, save_vscr));
1225
1226	DECLARE("savemmcr0",	offsetof(struct savearea *, save_mmcr0));
1227	DECLARE("savemmcr1",	offsetof(struct savearea *, save_mmcr1));
1228	DECLARE("savemmcr2",	offsetof(struct savearea *, save_mmcr2));
1229	DECLARE("savepmc",		offsetof(struct savearea *, save_pmc));
1230
1231	DECLARE("saveinstr",	offsetof(struct savearea *, save_instr));
1232
1233	DECLARE("savexdat0",	offsetof(struct savearea *, save_xdat0));
1234	DECLARE("savexdat1",	offsetof(struct savearea *, save_xdat1));
1235	DECLARE("savexdat2",	offsetof(struct savearea *, save_xdat2));
1236	DECLARE("savexdat3",	offsetof(struct savearea *, save_xdat3));
1237
1238	DECLARE("saver0",		offsetof(struct savearea *, save_r0));
1239	DECLARE("saver1",		offsetof(struct savearea *, save_r1));
1240	DECLARE("saver2",		offsetof(struct savearea *, save_r2));
1241	DECLARE("saver3",		offsetof(struct savearea *, save_r3));
1242	DECLARE("saver4",		offsetof(struct savearea *, save_r4));
1243	DECLARE("saver5",		offsetof(struct savearea *, save_r5));
1244	DECLARE("saver6",		offsetof(struct savearea *, save_r6));
1245	DECLARE("saver7",		offsetof(struct savearea *, save_r7));
1246	DECLARE("saver8",		offsetof(struct savearea *, save_r8));
1247	DECLARE("saver9",		offsetof(struct savearea *, save_r9));
1248	DECLARE("saver10",		offsetof(struct savearea *, save_r10));
1249	DECLARE("saver11",		offsetof(struct savearea *, save_r11));
1250	DECLARE("saver12",		offsetof(struct savearea *, save_r12));
1251	DECLARE("saver13",		offsetof(struct savearea *, save_r13));
1252	DECLARE("saver14",		offsetof(struct savearea *, save_r14));
1253	DECLARE("saver15",		offsetof(struct savearea *, save_r15));
1254	DECLARE("saver16",		offsetof(struct savearea *, save_r16));
1255	DECLARE("saver17",		offsetof(struct savearea *, save_r17));
1256	DECLARE("saver18",		offsetof(struct savearea *, save_r18));
1257	DECLARE("saver19",		offsetof(struct savearea *, save_r19));
1258	DECLARE("saver20",		offsetof(struct savearea *, save_r20));
1259	DECLARE("saver21",		offsetof(struct savearea *, save_r21));
1260	DECLARE("saver22",		offsetof(struct savearea *, save_r22));
1261	DECLARE("saver23",		offsetof(struct savearea *, save_r23));
1262	DECLARE("saver24",		offsetof(struct savearea *, save_r24));
1263	DECLARE("saver25",		offsetof(struct savearea *, save_r25));
1264	DECLARE("saver26",		offsetof(struct savearea *, save_r26));
1265	DECLARE("saver27",		offsetof(struct savearea *, save_r27));
1266	DECLARE("saver28",		offsetof(struct savearea *, save_r28));
1267	DECLARE("saver29",		offsetof(struct savearea *, save_r29));
1268	DECLARE("saver30",		offsetof(struct savearea *, save_r30));
1269	DECLARE("saver31",		offsetof(struct savearea *, save_r31));
1270
1271	DECLARE("savefp0",		offsetof(struct savearea_fpu *, save_fp0));
1272	DECLARE("savefp1",		offsetof(struct savearea_fpu *, save_fp1));
1273	DECLARE("savefp2",		offsetof(struct savearea_fpu *, save_fp2));
1274	DECLARE("savefp3",		offsetof(struct savearea_fpu *, save_fp3));
1275	DECLARE("savefp4",		offsetof(struct savearea_fpu *, save_fp4));
1276	DECLARE("savefp5",		offsetof(struct savearea_fpu *, save_fp5));
1277	DECLARE("savefp6",		offsetof(struct savearea_fpu *, save_fp6));
1278	DECLARE("savefp7",		offsetof(struct savearea_fpu *, save_fp7));
1279	DECLARE("savefp8",		offsetof(struct savearea_fpu *, save_fp8));
1280	DECLARE("savefp9",		offsetof(struct savearea_fpu *, save_fp9));
1281	DECLARE("savefp10",		offsetof(struct savearea_fpu *, save_fp10));
1282	DECLARE("savefp11",		offsetof(struct savearea_fpu *, save_fp11));
1283	DECLARE("savefp12",		offsetof(struct savearea_fpu *, save_fp12));
1284	DECLARE("savefp13",		offsetof(struct savearea_fpu *, save_fp13));
1285	DECLARE("savefp14",		offsetof(struct savearea_fpu *, save_fp14));
1286	DECLARE("savefp15",		offsetof(struct savearea_fpu *, save_fp15));
1287	DECLARE("savefp16",		offsetof(struct savearea_fpu *, save_fp16));
1288	DECLARE("savefp17",		offsetof(struct savearea_fpu *, save_fp17));
1289	DECLARE("savefp18",		offsetof(struct savearea_fpu *, save_fp18));
1290	DECLARE("savefp19",		offsetof(struct savearea_fpu *, save_fp19));
1291	DECLARE("savefp20",		offsetof(struct savearea_fpu *, save_fp20));
1292	DECLARE("savefp21",		offsetof(struct savearea_fpu *, save_fp21));
1293	DECLARE("savefp22",		offsetof(struct savearea_fpu *, save_fp22));
1294	DECLARE("savefp23",		offsetof(struct savearea_fpu *, save_fp23));
1295	DECLARE("savefp24",		offsetof(struct savearea_fpu *, save_fp24));
1296	DECLARE("savefp25",		offsetof(struct savearea_fpu *, save_fp25));
1297	DECLARE("savefp26",		offsetof(struct savearea_fpu *, save_fp26));
1298	DECLARE("savefp27",		offsetof(struct savearea_fpu *, save_fp27));
1299	DECLARE("savefp28",		offsetof(struct savearea_fpu *, save_fp28));
1300	DECLARE("savefp29",		offsetof(struct savearea_fpu *, save_fp29));
1301	DECLARE("savefp30",		offsetof(struct savearea_fpu *, save_fp30));
1302	DECLARE("savefp31",		offsetof(struct savearea_fpu *, save_fp31));
1303
1304	DECLARE("savevr0",		offsetof(struct savearea_vec *, save_vr0));
1305	DECLARE("savevr1",		offsetof(struct savearea_vec *, save_vr1));
1306	DECLARE("savevr2",		offsetof(struct savearea_vec *, save_vr2));
1307	DECLARE("savevr3",		offsetof(struct savearea_vec *, save_vr3));
1308	DECLARE("savevr4",		offsetof(struct savearea_vec *, save_vr4));
1309	DECLARE("savevr5",		offsetof(struct savearea_vec *, save_vr5));
1310	DECLARE("savevr6",		offsetof(struct savearea_vec *, save_vr6));
1311	DECLARE("savevr7",		offsetof(struct savearea_vec *, save_vr7));
1312	DECLARE("savevr8",		offsetof(struct savearea_vec *, save_vr8));
1313	DECLARE("savevr9",		offsetof(struct savearea_vec *, save_vr9));
1314	DECLARE("savevr10",		offsetof(struct savearea_vec *, save_vr10));
1315	DECLARE("savevr11",		offsetof(struct savearea_vec *, save_vr11));
1316	DECLARE("savevr12",		offsetof(struct savearea_vec *, save_vr12));
1317	DECLARE("savevr13",		offsetof(struct savearea_vec *, save_vr13));
1318	DECLARE("savevr14",		offsetof(struct savearea_vec *, save_vr14));
1319	DECLARE("savevr15",		offsetof(struct savearea_vec *, save_vr15));
1320	DECLARE("savevr16",		offsetof(struct savearea_vec *, save_vr16));
1321	DECLARE("savevr17",		offsetof(struct savearea_vec *, save_vr17));
1322	DECLARE("savevr18",		offsetof(struct savearea_vec *, save_vr18));
1323	DECLARE("savevr19",		offsetof(struct savearea_vec *, save_vr19));
1324	DECLARE("savevr20",		offsetof(struct savearea_vec *, save_vr20));
1325	DECLARE("savevr21",		offsetof(struct savearea_vec *, save_vr21));
1326	DECLARE("savevr22",		offsetof(struct savearea_vec *, save_vr22));
1327	DECLARE("savevr23",		offsetof(struct savearea_vec *, save_vr23));
1328	DECLARE("savevr24",		offsetof(struct savearea_vec *, save_vr24));
1329	DECLARE("savevr25",		offsetof(struct savearea_vec *, save_vr25));
1330	DECLARE("savevr26",		offsetof(struct savearea_vec *, save_vr26));
1331	DECLARE("savevr27",		offsetof(struct savearea_vec *, save_vr27));
1332	DECLARE("savevr28",		offsetof(struct savearea_vec *, save_vr28));
1333	DECLARE("savevr29",		offsetof(struct savearea_vec *, save_vr29));
1334	DECLARE("savevr30",		offsetof(struct savearea_vec *, save_vr30));
1335	DECLARE("savevr31",		offsetof(struct savearea_vec *, save_vr31));
1336	DECLARE("savevrvalid",	offsetof(struct savearea_vec *, save_vrvalid));
1337
1338	/* PseudoKernel Exception Descriptor info */
1339	DECLARE("BEDA_SRR0",	offsetof(BEDA_t *, srr0));
1340	DECLARE("BEDA_SRR1",	offsetof(BEDA_t *, srr1));
1341	DECLARE("BEDA_SPRG0",	offsetof(BEDA_t *, sprg0));
1342	DECLARE("BEDA_SPRG1",	offsetof(BEDA_t *, sprg1));
1343
1344	/* PseudoKernel Interrupt Control Word */
1345	DECLARE("BTTD_INTCONTROLWORD",	offsetof(BTTD_t *, InterruptControlWord));
1346
1347	/* New state when exiting the pseudokernel */
1348	DECLARE("BTTD_NEWEXITSTATE",	offsetof(BTTD_t *, NewExitState));
1349
1350	/* PseudoKernel Test/Post Interrupt */
1351	DECLARE("BTTD_TESTINTMASK",	offsetof(BTTD_t *, testIntMask));
1352	DECLARE("BTTD_POSTINTMASK",	offsetof(BTTD_t *, postIntMask));
1353
1354	/* PseudoKernel Vectors */
1355	DECLARE("BTTD_TRAP_VECTOR",			offsetof(BTTD_t *, TrapVector));
1356	DECLARE("BTTD_SYSCALL_VECTOR",		offsetof(BTTD_t *, SysCallVector));
1357	DECLARE("BTTD_INTERRUPT_VECTOR",	offsetof(BTTD_t *, InterruptVector));
1358	DECLARE("BTTD_PENDINGINT_VECTOR",	offsetof(BTTD_t *, PendingIntVector));
1359
1360	/* PseudoKernel Bits, Masks and misc */
1361	DECLARE("SYSCONTEXTSTATE",		kInSystemContext);
1362	DECLARE("PSEUDOKERNELSTATE",	kInPseudoKernel);
1363	DECLARE("INTSTATEMASK_B",		12);
1364	DECLARE("INTSTATEMASK_E",		15);
1365	DECLARE("INTCR2MASK_B",			8);
1366	DECLARE("INTCR2MASK_E",			11);
1367	DECLARE("INTBACKUPCR2MASK_B",	28);
1368	DECLARE("INTBACKUPCR2MASK_E",	31);
1369	DECLARE("INTCR2TOBACKUPSHIFT",	kCR2ToBackupShift);
1370	DECLARE("BB_MAX_TRAP",			bbMaxTrap);
1371	DECLARE("BB_RFI_TRAP",			bbRFITrap);
1372
1373	/* Various hackery */
1374	DECLARE("procState",		offsetof(struct processor *, state));
1375
1376	DECLARE("CPU_SUBTYPE_POWERPC_ALL",		CPU_SUBTYPE_POWERPC_ALL);
1377	DECLARE("CPU_SUBTYPE_POWERPC_750",		CPU_SUBTYPE_POWERPC_750);
1378	DECLARE("CPU_SUBTYPE_POWERPC_7400",		CPU_SUBTYPE_POWERPC_7400);
1379	DECLARE("CPU_SUBTYPE_POWERPC_7450",		CPU_SUBTYPE_POWERPC_7450);
1380	DECLARE("CPU_SUBTYPE_POWERPC_970",		CPU_SUBTYPE_POWERPC_970);
1381
1382	DECLARE("shdIBAT",	offsetof(struct shadowBAT *, IBATs));
1383	DECLARE("shdDBAT",	offsetof(struct shadowBAT *, DBATs));
1384
1385	/* Low Memory Globals */
1386
1387	DECLARE("lgVerCode", 			offsetof(struct lowglo *, lgVerCode));
1388	DECLARE("lgPPStart", 			offsetof(struct lowglo *, lgPPStart));
1389	DECLARE("maxDec", 				offsetof(struct lowglo *, lgMaxDec));
1390	DECLARE("mckFlags", 			offsetof(struct lowglo *, lgMckFlags));
1391	DECLARE("lgPMWvaddr",			offsetof(struct lowglo *, lgPMWvaddr));
1392	DECLARE("lgUMWvaddr",			offsetof(struct lowglo *, lgUMWvaddr));
1393	DECLARE("trcWork", 				offsetof(struct lowglo *, lgTrcWork));
1394	DECLARE("traceMask",			offsetof(struct lowglo *, lgTrcWork.traceMask));
1395	DECLARE("traceCurr",			offsetof(struct lowglo *, lgTrcWork.traceCurr));
1396	DECLARE("traceStart",			offsetof(struct lowglo *, lgTrcWork.traceStart));
1397	DECLARE("traceEnd",				offsetof(struct lowglo *, lgTrcWork.traceEnd));
1398	DECLARE("traceMsnd",			offsetof(struct lowglo *, lgTrcWork.traceMsnd));
1399
1400	DECLARE("Zero", 				offsetof(struct lowglo *, lgZero));
1401	DECLARE("saveanchor", 			offsetof(struct lowglo *, lgSaveanchor));
1402
1403	DECLARE("SVlock",				offsetof(struct lowglo *, lgSaveanchor.savelock));
1404	DECLARE("SVpoolfwd",			offsetof(struct lowglo *, lgSaveanchor.savepoolfwd));
1405	DECLARE("SVpoolbwd",			offsetof(struct lowglo *, lgSaveanchor.savepoolbwd));
1406	DECLARE("SVfree",				offsetof(struct lowglo *, lgSaveanchor.savefree));
1407	DECLARE("SVfreecnt",			offsetof(struct lowglo *, lgSaveanchor.savefreecnt));
1408	DECLARE("SVadjust",				offsetof(struct lowglo *, lgSaveanchor.saveadjust));
1409	DECLARE("SVinuse",				offsetof(struct lowglo *, lgSaveanchor.saveinuse));
1410	DECLARE("SVtarget",				offsetof(struct lowglo *, lgSaveanchor.savetarget));
1411	DECLARE("SVsaveinusesnapshot",		offsetof(struct lowglo *, lgSaveanchor.saveinusesnapshot));
1412	DECLARE("SVsavefreesnapshot",		offsetof(struct lowglo *, lgSaveanchor.savefreesnapshot));
1413	DECLARE("SVsize",				sizeof(struct Saveanchor));
1414
1415	DECLARE("tlbieLock", 			offsetof(struct lowglo *, lgTlbieLck));
1416
1417	DECLARE("dgFlags",				offsetof(struct lowglo *, lgdgWork.dgFlags));
1418	DECLARE("dgLock",				offsetof(struct lowglo *, lgdgWork.dgLock));
1419	DECLARE("dgMisc0",				offsetof(struct lowglo *, lgdgWork.dgMisc0));
1420
1421	DECLARE("lglcksWork",			offsetof(struct lowglo *, lglcksWork));
1422	DECLARE("lgKillResv",			offsetof(struct lowglo *, lgKillResv));
1423	DECLARE("lgpPcfg",				offsetof(struct lowglo *, lgpPcfg));
1424
1425
1426	DECLARE("scomcpu",				offsetof(struct scomcomm *, scomcpu));
1427	DECLARE("scomfunc",				offsetof(struct scomcomm *, scomfunc));
1428	DECLARE("scomreg",				offsetof(struct scomcomm *, scomreg));
1429	DECLARE("scomstat",				offsetof(struct scomcomm *, scomstat));
1430	DECLARE("scomdata",				offsetof(struct scomcomm *, scomdata));
1431
1432#if	CONFIG_DTRACE
1433	DECLARE("LS_LCK_MTX_UNLOCK_RELEASE", LS_LCK_MTX_UNLOCK_RELEASE);
1434	DECLARE("LS_LCK_MTX_LOCK_ACQUIRE", LS_LCK_MTX_LOCK_ACQUIRE);
1435#endif
1436
1437	return(0);  /* For ANSI C :-) */
1438}
1439