Commit | Line | Data |
---|---|---|
d62998a6 XZ |
1 | /* |
2 | * asm-offsets.c Generate definitions needed by assembly language modules. | |
3 | * This code generates raw asm output which is post-processed | |
4 | * to extract and format the required data. | |
5 | * | |
6 | * Anthony Xu <anthony.xu@intel.com> | |
7 | * Xiantao Zhang <xiantao.zhang@intel.com> | |
8 | * Copyright (c) 2007 Intel Corporation KVM support. | |
9 | * | |
10 | * This program is free software; you can redistribute it and/or modify it | |
11 | * under the terms and conditions of the GNU General Public License, | |
12 | * version 2, as published by the Free Software Foundation. | |
13 | * | |
14 | * This program is distributed in the hope it will be useful, but WITHOUT | |
15 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
16 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | |
17 | * more details. | |
18 | * | |
19 | * You should have received a copy of the GNU General Public License along with | |
20 | * this program; if not, write to the Free Software Foundation, Inc., 59 Temple | |
21 | * Place - Suite 330, Boston, MA 02111-1307 USA. | |
22 | * | |
23 | */ | |
24 | ||
25 | #include <linux/autoconf.h> | |
26 | #include <linux/kvm_host.h> | |
30ed5bb6 | 27 | #include <linux/kbuild.h> |
d62998a6 XZ |
28 | |
29 | #include "vcpu.h" | |
30 | ||
d62998a6 XZ |
31 | void foo(void) |
32 | { | |
33 | DEFINE(VMM_TASK_SIZE, sizeof(struct kvm_vcpu)); | |
34 | DEFINE(VMM_PT_REGS_SIZE, sizeof(struct kvm_pt_regs)); | |
35 | ||
36 | BLANK(); | |
37 | ||
38 | DEFINE(VMM_VCPU_META_RR0_OFFSET, | |
39 | offsetof(struct kvm_vcpu, arch.metaphysical_rr0)); | |
40 | DEFINE(VMM_VCPU_META_SAVED_RR0_OFFSET, | |
41 | offsetof(struct kvm_vcpu, | |
42 | arch.metaphysical_saved_rr0)); | |
43 | DEFINE(VMM_VCPU_VRR0_OFFSET, | |
44 | offsetof(struct kvm_vcpu, arch.vrr[0])); | |
45 | DEFINE(VMM_VPD_IRR0_OFFSET, | |
46 | offsetof(struct vpd, irr[0])); | |
47 | DEFINE(VMM_VCPU_ITC_CHECK_OFFSET, | |
48 | offsetof(struct kvm_vcpu, arch.itc_check)); | |
49 | DEFINE(VMM_VCPU_IRQ_CHECK_OFFSET, | |
50 | offsetof(struct kvm_vcpu, arch.irq_check)); | |
51 | DEFINE(VMM_VPD_VHPI_OFFSET, | |
52 | offsetof(struct vpd, vhpi)); | |
53 | DEFINE(VMM_VCPU_VSA_BASE_OFFSET, | |
54 | offsetof(struct kvm_vcpu, arch.vsa_base)); | |
55 | DEFINE(VMM_VCPU_VPD_OFFSET, | |
56 | offsetof(struct kvm_vcpu, arch.vpd)); | |
57 | DEFINE(VMM_VCPU_IRQ_CHECK, | |
58 | offsetof(struct kvm_vcpu, arch.irq_check)); | |
59 | DEFINE(VMM_VCPU_TIMER_PENDING, | |
60 | offsetof(struct kvm_vcpu, arch.timer_pending)); | |
61 | DEFINE(VMM_VCPU_META_SAVED_RR0_OFFSET, | |
62 | offsetof(struct kvm_vcpu, arch.metaphysical_saved_rr0)); | |
63 | DEFINE(VMM_VCPU_MODE_FLAGS_OFFSET, | |
64 | offsetof(struct kvm_vcpu, arch.mode_flags)); | |
65 | DEFINE(VMM_VCPU_ITC_OFS_OFFSET, | |
66 | offsetof(struct kvm_vcpu, arch.itc_offset)); | |
67 | DEFINE(VMM_VCPU_LAST_ITC_OFFSET, | |
68 | offsetof(struct kvm_vcpu, arch.last_itc)); | |
69 | DEFINE(VMM_VCPU_SAVED_GP_OFFSET, | |
70 | offsetof(struct kvm_vcpu, arch.saved_gp)); | |
71 | ||
72 | BLANK(); | |
73 | ||
74 | DEFINE(VMM_PT_REGS_B6_OFFSET, | |
75 | offsetof(struct kvm_pt_regs, b6)); | |
76 | DEFINE(VMM_PT_REGS_B7_OFFSET, | |
77 | offsetof(struct kvm_pt_regs, b7)); | |
78 | DEFINE(VMM_PT_REGS_AR_CSD_OFFSET, | |
79 | offsetof(struct kvm_pt_regs, ar_csd)); | |
80 | DEFINE(VMM_PT_REGS_AR_SSD_OFFSET, | |
81 | offsetof(struct kvm_pt_regs, ar_ssd)); | |
82 | DEFINE(VMM_PT_REGS_R8_OFFSET, | |
83 | offsetof(struct kvm_pt_regs, r8)); | |
84 | DEFINE(VMM_PT_REGS_R9_OFFSET, | |
85 | offsetof(struct kvm_pt_regs, r9)); | |
86 | DEFINE(VMM_PT_REGS_R10_OFFSET, | |
87 | offsetof(struct kvm_pt_regs, r10)); | |
88 | DEFINE(VMM_PT_REGS_R11_OFFSET, | |
89 | offsetof(struct kvm_pt_regs, r11)); | |
90 | DEFINE(VMM_PT_REGS_CR_IPSR_OFFSET, | |
91 | offsetof(struct kvm_pt_regs, cr_ipsr)); | |
92 | DEFINE(VMM_PT_REGS_CR_IIP_OFFSET, | |
93 | offsetof(struct kvm_pt_regs, cr_iip)); | |
94 | DEFINE(VMM_PT_REGS_CR_IFS_OFFSET, | |
95 | offsetof(struct kvm_pt_regs, cr_ifs)); | |
96 | DEFINE(VMM_PT_REGS_AR_UNAT_OFFSET, | |
97 | offsetof(struct kvm_pt_regs, ar_unat)); | |
98 | DEFINE(VMM_PT_REGS_AR_PFS_OFFSET, | |
99 | offsetof(struct kvm_pt_regs, ar_pfs)); | |
100 | DEFINE(VMM_PT_REGS_AR_RSC_OFFSET, | |
101 | offsetof(struct kvm_pt_regs, ar_rsc)); | |
102 | DEFINE(VMM_PT_REGS_AR_RNAT_OFFSET, | |
103 | offsetof(struct kvm_pt_regs, ar_rnat)); | |
104 | ||
105 | DEFINE(VMM_PT_REGS_AR_BSPSTORE_OFFSET, | |
106 | offsetof(struct kvm_pt_regs, ar_bspstore)); | |
107 | DEFINE(VMM_PT_REGS_PR_OFFSET, | |
108 | offsetof(struct kvm_pt_regs, pr)); | |
109 | DEFINE(VMM_PT_REGS_B0_OFFSET, | |
110 | offsetof(struct kvm_pt_regs, b0)); | |
111 | DEFINE(VMM_PT_REGS_LOADRS_OFFSET, | |
112 | offsetof(struct kvm_pt_regs, loadrs)); | |
113 | DEFINE(VMM_PT_REGS_R1_OFFSET, | |
114 | offsetof(struct kvm_pt_regs, r1)); | |
115 | DEFINE(VMM_PT_REGS_R12_OFFSET, | |
116 | offsetof(struct kvm_pt_regs, r12)); | |
117 | DEFINE(VMM_PT_REGS_R13_OFFSET, | |
118 | offsetof(struct kvm_pt_regs, r13)); | |
119 | DEFINE(VMM_PT_REGS_AR_FPSR_OFFSET, | |
120 | offsetof(struct kvm_pt_regs, ar_fpsr)); | |
121 | DEFINE(VMM_PT_REGS_R15_OFFSET, | |
122 | offsetof(struct kvm_pt_regs, r15)); | |
123 | DEFINE(VMM_PT_REGS_R14_OFFSET, | |
124 | offsetof(struct kvm_pt_regs, r14)); | |
125 | DEFINE(VMM_PT_REGS_R2_OFFSET, | |
126 | offsetof(struct kvm_pt_regs, r2)); | |
127 | DEFINE(VMM_PT_REGS_R3_OFFSET, | |
128 | offsetof(struct kvm_pt_regs, r3)); | |
129 | DEFINE(VMM_PT_REGS_R16_OFFSET, | |
130 | offsetof(struct kvm_pt_regs, r16)); | |
131 | DEFINE(VMM_PT_REGS_R17_OFFSET, | |
132 | offsetof(struct kvm_pt_regs, r17)); | |
133 | DEFINE(VMM_PT_REGS_R18_OFFSET, | |
134 | offsetof(struct kvm_pt_regs, r18)); | |
135 | DEFINE(VMM_PT_REGS_R19_OFFSET, | |
136 | offsetof(struct kvm_pt_regs, r19)); | |
137 | DEFINE(VMM_PT_REGS_R20_OFFSET, | |
138 | offsetof(struct kvm_pt_regs, r20)); | |
139 | DEFINE(VMM_PT_REGS_R21_OFFSET, | |
140 | offsetof(struct kvm_pt_regs, r21)); | |
141 | DEFINE(VMM_PT_REGS_R22_OFFSET, | |
142 | offsetof(struct kvm_pt_regs, r22)); | |
143 | DEFINE(VMM_PT_REGS_R23_OFFSET, | |
144 | offsetof(struct kvm_pt_regs, r23)); | |
145 | DEFINE(VMM_PT_REGS_R24_OFFSET, | |
146 | offsetof(struct kvm_pt_regs, r24)); | |
147 | DEFINE(VMM_PT_REGS_R25_OFFSET, | |
148 | offsetof(struct kvm_pt_regs, r25)); | |
149 | DEFINE(VMM_PT_REGS_R26_OFFSET, | |
150 | offsetof(struct kvm_pt_regs, r26)); | |
151 | DEFINE(VMM_PT_REGS_R27_OFFSET, | |
152 | offsetof(struct kvm_pt_regs, r27)); | |
153 | DEFINE(VMM_PT_REGS_R28_OFFSET, | |
154 | offsetof(struct kvm_pt_regs, r28)); | |
155 | DEFINE(VMM_PT_REGS_R29_OFFSET, | |
156 | offsetof(struct kvm_pt_regs, r29)); | |
157 | DEFINE(VMM_PT_REGS_R30_OFFSET, | |
158 | offsetof(struct kvm_pt_regs, r30)); | |
159 | DEFINE(VMM_PT_REGS_R31_OFFSET, | |
160 | offsetof(struct kvm_pt_regs, r31)); | |
161 | DEFINE(VMM_PT_REGS_AR_CCV_OFFSET, | |
162 | offsetof(struct kvm_pt_regs, ar_ccv)); | |
163 | DEFINE(VMM_PT_REGS_F6_OFFSET, | |
164 | offsetof(struct kvm_pt_regs, f6)); | |
165 | DEFINE(VMM_PT_REGS_F7_OFFSET, | |
166 | offsetof(struct kvm_pt_regs, f7)); | |
167 | DEFINE(VMM_PT_REGS_F8_OFFSET, | |
168 | offsetof(struct kvm_pt_regs, f8)); | |
169 | DEFINE(VMM_PT_REGS_F9_OFFSET, | |
170 | offsetof(struct kvm_pt_regs, f9)); | |
171 | DEFINE(VMM_PT_REGS_F10_OFFSET, | |
172 | offsetof(struct kvm_pt_regs, f10)); | |
173 | DEFINE(VMM_PT_REGS_F11_OFFSET, | |
174 | offsetof(struct kvm_pt_regs, f11)); | |
175 | DEFINE(VMM_PT_REGS_R4_OFFSET, | |
176 | offsetof(struct kvm_pt_regs, r4)); | |
177 | DEFINE(VMM_PT_REGS_R5_OFFSET, | |
178 | offsetof(struct kvm_pt_regs, r5)); | |
179 | DEFINE(VMM_PT_REGS_R6_OFFSET, | |
180 | offsetof(struct kvm_pt_regs, r6)); | |
181 | DEFINE(VMM_PT_REGS_R7_OFFSET, | |
182 | offsetof(struct kvm_pt_regs, r7)); | |
183 | DEFINE(VMM_PT_REGS_EML_UNAT_OFFSET, | |
184 | offsetof(struct kvm_pt_regs, eml_unat)); | |
185 | DEFINE(VMM_VCPU_IIPA_OFFSET, | |
186 | offsetof(struct kvm_vcpu, arch.cr_iipa)); | |
187 | DEFINE(VMM_VCPU_OPCODE_OFFSET, | |
188 | offsetof(struct kvm_vcpu, arch.opcode)); | |
189 | DEFINE(VMM_VCPU_CAUSE_OFFSET, offsetof(struct kvm_vcpu, arch.cause)); | |
190 | DEFINE(VMM_VCPU_ISR_OFFSET, | |
191 | offsetof(struct kvm_vcpu, arch.cr_isr)); | |
192 | DEFINE(VMM_PT_REGS_R16_SLOT, | |
193 | (((offsetof(struct kvm_pt_regs, r16) | |
194 | - sizeof(struct kvm_pt_regs)) >> 3) & 0x3f)); | |
195 | DEFINE(VMM_VCPU_MODE_FLAGS_OFFSET, | |
196 | offsetof(struct kvm_vcpu, arch.mode_flags)); | |
197 | DEFINE(VMM_VCPU_GP_OFFSET, offsetof(struct kvm_vcpu, arch.__gp)); | |
198 | BLANK(); | |
199 | ||
200 | DEFINE(VMM_VPD_BASE_OFFSET, offsetof(struct kvm_vcpu, arch.vpd)); | |
201 | DEFINE(VMM_VPD_VIFS_OFFSET, offsetof(struct vpd, ifs)); | |
202 | DEFINE(VMM_VLSAPIC_INSVC_BASE_OFFSET, | |
203 | offsetof(struct kvm_vcpu, arch.insvc[0])); | |
204 | DEFINE(VMM_VPD_VPTA_OFFSET, offsetof(struct vpd, pta)); | |
205 | DEFINE(VMM_VPD_VPSR_OFFSET, offsetof(struct vpd, vpsr)); | |
206 | ||
207 | DEFINE(VMM_CTX_R4_OFFSET, offsetof(union context, gr[4])); | |
208 | DEFINE(VMM_CTX_R5_OFFSET, offsetof(union context, gr[5])); | |
209 | DEFINE(VMM_CTX_R12_OFFSET, offsetof(union context, gr[12])); | |
210 | DEFINE(VMM_CTX_R13_OFFSET, offsetof(union context, gr[13])); | |
211 | DEFINE(VMM_CTX_KR0_OFFSET, offsetof(union context, ar[0])); | |
212 | DEFINE(VMM_CTX_KR1_OFFSET, offsetof(union context, ar[1])); | |
213 | DEFINE(VMM_CTX_B0_OFFSET, offsetof(union context, br[0])); | |
214 | DEFINE(VMM_CTX_B1_OFFSET, offsetof(union context, br[1])); | |
215 | DEFINE(VMM_CTX_B2_OFFSET, offsetof(union context, br[2])); | |
216 | DEFINE(VMM_CTX_RR0_OFFSET, offsetof(union context, rr[0])); | |
217 | DEFINE(VMM_CTX_RSC_OFFSET, offsetof(union context, ar[16])); | |
218 | DEFINE(VMM_CTX_BSPSTORE_OFFSET, offsetof(union context, ar[18])); | |
219 | DEFINE(VMM_CTX_RNAT_OFFSET, offsetof(union context, ar[19])); | |
220 | DEFINE(VMM_CTX_FCR_OFFSET, offsetof(union context, ar[21])); | |
221 | DEFINE(VMM_CTX_EFLAG_OFFSET, offsetof(union context, ar[24])); | |
222 | DEFINE(VMM_CTX_CFLG_OFFSET, offsetof(union context, ar[27])); | |
223 | DEFINE(VMM_CTX_FSR_OFFSET, offsetof(union context, ar[28])); | |
224 | DEFINE(VMM_CTX_FIR_OFFSET, offsetof(union context, ar[29])); | |
225 | DEFINE(VMM_CTX_FDR_OFFSET, offsetof(union context, ar[30])); | |
226 | DEFINE(VMM_CTX_UNAT_OFFSET, offsetof(union context, ar[36])); | |
227 | DEFINE(VMM_CTX_FPSR_OFFSET, offsetof(union context, ar[40])); | |
228 | DEFINE(VMM_CTX_PFS_OFFSET, offsetof(union context, ar[64])); | |
229 | DEFINE(VMM_CTX_LC_OFFSET, offsetof(union context, ar[65])); | |
230 | DEFINE(VMM_CTX_DCR_OFFSET, offsetof(union context, cr[0])); | |
231 | DEFINE(VMM_CTX_IVA_OFFSET, offsetof(union context, cr[2])); | |
232 | DEFINE(VMM_CTX_PTA_OFFSET, offsetof(union context, cr[8])); | |
233 | DEFINE(VMM_CTX_IBR0_OFFSET, offsetof(union context, ibr[0])); | |
234 | DEFINE(VMM_CTX_DBR0_OFFSET, offsetof(union context, dbr[0])); | |
235 | DEFINE(VMM_CTX_F2_OFFSET, offsetof(union context, fr[2])); | |
236 | DEFINE(VMM_CTX_F3_OFFSET, offsetof(union context, fr[3])); | |
237 | DEFINE(VMM_CTX_F32_OFFSET, offsetof(union context, fr[32])); | |
238 | DEFINE(VMM_CTX_F33_OFFSET, offsetof(union context, fr[33])); | |
239 | DEFINE(VMM_CTX_PKR0_OFFSET, offsetof(union context, pkr[0])); | |
240 | DEFINE(VMM_CTX_PSR_OFFSET, offsetof(union context, psr)); | |
241 | BLANK(); | |
242 | } |