Blame view

arch/powerpc/kernel/asm-offsets.c 28 KB
14cf11af6   Paul Mackerras   powerpc: Merge en...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  /*
   * This program is used to generate definitions needed by
   * assembly language modules.
   *
   * We use the technique used in the OSF Mach kernel code:
   * generate asm statements containing #defines,
   * compile this file to assembler, and then extract the
   * #defines from the assembly-language output.
   *
   * This program is free software; you can redistribute it and/or
   * modify it under the terms of the GNU General Public License
   * as published by the Free Software Foundation; either version
   * 2 of the License, or (at your option) any later version.
   */
14cf11af6   Paul Mackerras   powerpc: Merge en...
15
16
17
18
19
20
  #include <linux/signal.h>
  #include <linux/sched.h>
  #include <linux/kernel.h>
  #include <linux/errno.h>
  #include <linux/string.h>
  #include <linux/types.h>
14cf11af6   Paul Mackerras   powerpc: Merge en...
21
22
  #include <linux/mman.h>
  #include <linux/mm.h>
543b9fd35   Johannes Berg   [POWERPC] powerma...
23
  #include <linux/suspend.h>
ad7f71674   Tony Breeds   [POWERPC] Use a s...
24
  #include <linux/hrtimer.h>
d1dead5c5   Stephen Rothwell   powerpc: merge as...
25
  #ifdef CONFIG_PPC64
14cf11af6   Paul Mackerras   powerpc: Merge en...
26
27
  #include <linux/time.h>
  #include <linux/hardirq.h>
d1dead5c5   Stephen Rothwell   powerpc: merge as...
28
  #endif
d4d298fee   Christoph Lameter   ppc/powerpc: use ...
29
  #include <linux/kbuild.h>
d1dead5c5   Stephen Rothwell   powerpc: merge as...
30

14cf11af6   Paul Mackerras   powerpc: Merge en...
31
32
33
34
  #include <asm/io.h>
  #include <asm/page.h>
  #include <asm/pgtable.h>
  #include <asm/processor.h>
14cf11af6   Paul Mackerras   powerpc: Merge en...
35
36
  #include <asm/cputable.h>
  #include <asm/thread_info.h>
033ef338b   Paul Mackerras   powerpc: Merge rt...
37
  #include <asm/rtas.h>
a7f290dad   Benjamin Herrenschmidt   [PATCH] powerpc: ...
38
  #include <asm/vdso_datapage.h>
14cf11af6   Paul Mackerras   powerpc: Merge en...
39
40
41
  #ifdef CONFIG_PPC64
  #include <asm/paca.h>
  #include <asm/lppaca.h>
14cf11af6   Paul Mackerras   powerpc: Merge en...
42
  #include <asm/cache.h>
14cf11af6   Paul Mackerras   powerpc: Merge en...
43
  #include <asm/compat.h>
11a27ad78   Michael Neuling   [POWERPC] SLB sha...
44
  #include <asm/mmu.h>
f04da0bc3   Olof Johansson   [POWERPC] Fix non...
45
  #include <asm/hvcall.h>
19ccb76a1   Paul Mackerras   KVM: PPC: Impleme...
46
  #include <asm/xics.h>
14cf11af6   Paul Mackerras   powerpc: Merge en...
47
  #endif
3eb9cf076   Stephen Rothwell   [POWERPC] iSeries...
48
49
50
  #ifdef CONFIG_PPC_ISERIES
  #include <asm/iseries/alpaca.h>
  #endif
ed79ba9e1   Benjamin Herrenschmidt   powerpc/powernv: ...
51
52
53
  #ifdef CONFIG_PPC_POWERNV
  #include <asm/opal.h>
  #endif
989044ee0   Alexander Graf   KVM: PPC: Fix CON...
54
  #if defined(CONFIG_KVM) || defined(CONFIG_KVM_GUEST)
366d4b9b9   Hollis Blanchard   KVM: ppc: No need...
55
  #include <linux/kvm_host.h>
0604675fe   Alexander Graf   KVM: PPC: Use now...
56
  #endif
989044ee0   Alexander Graf   KVM: PPC: Fix CON...
57
58
  #if defined(CONFIG_KVM) && defined(CONFIG_PPC_BOOK3S)
  #include <asm/kvm_book3s.h>
db93f5745   Hollis Blanchard   KVM: ppc: create ...
59
  #endif
14cf11af6   Paul Mackerras   powerpc: Merge en...
60

57e2a99f7   Benjamin Herrenschmidt   powerpc: Add memo...
61
  #ifdef CONFIG_PPC32
fca622c5b   Kumar Gala   [POWERPC] 40x/Boo...
62
63
64
  #if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
  #include "head_booke.h"
  #endif
57e2a99f7   Benjamin Herrenschmidt   powerpc: Add memo...
65
  #endif
fca622c5b   Kumar Gala   [POWERPC] 40x/Boo...
66

55fd766b5   Kumar Gala   powerpc/fsl-booke...
67
  #if defined(CONFIG_PPC_FSL_BOOK3E)
19f5465e8   Trent Piepho   powerpc/fsl-booke...
68
69
  #include "../mm/mmu_decl.h"
  #endif
14cf11af6   Paul Mackerras   powerpc: Merge en...
70
71
  int main(void)
  {
d1dead5c5   Stephen Rothwell   powerpc: merge as...
72
73
  	DEFINE(THREAD, offsetof(struct task_struct, thread));
  	DEFINE(MM, offsetof(struct task_struct, mm));
5e696617c   Benjamin Herrenschmidt   powerpc/mm: Split...
74
  	DEFINE(MMCONTEXTID, offsetof(struct mm_struct, context.id));
14cf11af6   Paul Mackerras   powerpc: Merge en...
75
  #ifdef CONFIG_PPC64
d1dead5c5   Stephen Rothwell   powerpc: merge as...
76
  	DEFINE(AUDITCONTEXT, offsetof(struct task_struct, audit_context));
9c1e10523   Paul Mackerras   powerpc: Allow pe...
77
78
  	DEFINE(SIGSEGV, SIGSEGV);
  	DEFINE(NMI_MASK, NMI_MASK);
efcac6589   Alexey Kardashevskiy   powerpc: Per proc...
79
  	DEFINE(THREAD_DSCR, offsetof(struct thread_struct, dscr));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
80
  #else
f7e4217b0   Roman Zippel   rename thread_inf...
81
  	DEFINE(THREAD_INFO, offsetof(struct task_struct, stack));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
82
  #endif /* CONFIG_PPC64 */
14cf11af6   Paul Mackerras   powerpc: Merge en...
83
  	DEFINE(KSP, offsetof(struct thread_struct, ksp));
85218827c   Kumar Gala   [POWERPC] Add IRQ...
84
  	DEFINE(KSP_LIMIT, offsetof(struct thread_struct, ksp_limit));
14cf11af6   Paul Mackerras   powerpc: Merge en...
85
  	DEFINE(PT_REGS, offsetof(struct thread_struct, regs));
1325a684b   Ashish Kalra   powerpc/85xx: Sav...
86
87
88
  #ifdef CONFIG_BOOKE
  	DEFINE(THREAD_NORMSAVES, offsetof(struct thread_struct, normsave[0]));
  #endif
14cf11af6   Paul Mackerras   powerpc: Merge en...
89
90
91
  	DEFINE(THREAD_FPEXC_MODE, offsetof(struct thread_struct, fpexc_mode));
  	DEFINE(THREAD_FPR0, offsetof(struct thread_struct, fpr[0]));
  	DEFINE(THREAD_FPSCR, offsetof(struct thread_struct, fpscr));
14cf11af6   Paul Mackerras   powerpc: Merge en...
92
93
94
95
96
97
  #ifdef CONFIG_ALTIVEC
  	DEFINE(THREAD_VR0, offsetof(struct thread_struct, vr[0]));
  	DEFINE(THREAD_VRSAVE, offsetof(struct thread_struct, vrsave));
  	DEFINE(THREAD_VSCR, offsetof(struct thread_struct, vscr));
  	DEFINE(THREAD_USED_VR, offsetof(struct thread_struct, used_vr));
  #endif /* CONFIG_ALTIVEC */
c6e6771b8   Michael Neuling   powerpc: Introduc...
98
99
100
101
  #ifdef CONFIG_VSX
  	DEFINE(THREAD_VSR0, offsetof(struct thread_struct, fpr));
  	DEFINE(THREAD_USED_VSR, offsetof(struct thread_struct, used_vsr));
  #endif /* CONFIG_VSX */
d1dead5c5   Stephen Rothwell   powerpc: merge as...
102
103
104
105
  #ifdef CONFIG_PPC64
  	DEFINE(KSP_VSID, offsetof(struct thread_struct, ksp_vsid));
  #else /* CONFIG_PPC64 */
  	DEFINE(PGDIR, offsetof(struct thread_struct, pgdir));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
106
107
  #if defined(CONFIG_4xx) || defined(CONFIG_BOOKE)
  	DEFINE(THREAD_DBCR0, offsetof(struct thread_struct, dbcr0));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
108
  #endif
14cf11af6   Paul Mackerras   powerpc: Merge en...
109
110
111
112
113
114
  #ifdef CONFIG_SPE
  	DEFINE(THREAD_EVR0, offsetof(struct thread_struct, evr[0]));
  	DEFINE(THREAD_ACC, offsetof(struct thread_struct, acc));
  	DEFINE(THREAD_SPEFSCR, offsetof(struct thread_struct, spefscr));
  	DEFINE(THREAD_USED_SPE, offsetof(struct thread_struct, used_spe));
  #endif /* CONFIG_SPE */
d1dead5c5   Stephen Rothwell   powerpc: merge as...
115
  #endif /* CONFIG_PPC64 */
97e492558   Alexander Graf   KVM: PPC: Add SVC...
116
117
118
  #ifdef CONFIG_KVM_BOOK3S_32_HANDLER
  	DEFINE(THREAD_KVM_SVCPU, offsetof(struct thread_struct, kvm_shadow_vcpu));
  #endif
d1dead5c5   Stephen Rothwell   powerpc: merge as...
119
120
  
  	DEFINE(TI_FLAGS, offsetof(struct thread_info, flags));
f39224a8c   Paul Mackerras   powerpc: Use corr...
121
  	DEFINE(TI_LOCAL_FLAGS, offsetof(struct thread_info, local_flags));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
122
  	DEFINE(TI_PREEMPT, offsetof(struct thread_info, preempt_count));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
123
  	DEFINE(TI_TASK, offsetof(struct thread_info, task));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
124
  	DEFINE(TI_CPU, offsetof(struct thread_info, cpu));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
125
126
127
128
129
130
131
132
  
  #ifdef CONFIG_PPC64
  	DEFINE(DCACHEL1LINESIZE, offsetof(struct ppc64_caches, dline_size));
  	DEFINE(DCACHEL1LOGLINESIZE, offsetof(struct ppc64_caches, log_dline_size));
  	DEFINE(DCACHEL1LINESPERPAGE, offsetof(struct ppc64_caches, dlines_per_page));
  	DEFINE(ICACHEL1LINESIZE, offsetof(struct ppc64_caches, iline_size));
  	DEFINE(ICACHEL1LOGLINESIZE, offsetof(struct ppc64_caches, log_iline_size));
  	DEFINE(ICACHEL1LINESPERPAGE, offsetof(struct ppc64_caches, ilines_per_page));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
133
134
  	/* paca */
  	DEFINE(PACA_SIZE, sizeof(struct paca_struct));
9e368f291   Paul Mackerras   KVM: PPC: book3s_...
135
  	DEFINE(PACA_LOCK_TOKEN, offsetof(struct paca_struct, lock_token));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
136
137
138
139
140
  	DEFINE(PACAPACAINDEX, offsetof(struct paca_struct, paca_index));
  	DEFINE(PACAPROCSTART, offsetof(struct paca_struct, cpu_start));
  	DEFINE(PACAKSAVE, offsetof(struct paca_struct, kstack));
  	DEFINE(PACACURRENT, offsetof(struct paca_struct, __current));
  	DEFINE(PACASAVEDMSR, offsetof(struct paca_struct, saved_msr));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
141
142
143
  	DEFINE(PACASTABRR, offsetof(struct paca_struct, stab_rr));
  	DEFINE(PACAR1, offsetof(struct paca_struct, saved_r1));
  	DEFINE(PACATOC, offsetof(struct paca_struct, kernel_toc));
1f6a93e4c   Paul Mackerras   powerpc: Make it ...
144
145
  	DEFINE(PACAKBASE, offsetof(struct paca_struct, kernelbase));
  	DEFINE(PACAKMSR, offsetof(struct paca_struct, kernel_msr));
d04c56f73   Paul Mackerras   [POWERPC] Lazy in...
146
147
  	DEFINE(PACASOFTIRQEN, offsetof(struct paca_struct, soft_enabled));
  	DEFINE(PACAHARDIRQEN, offsetof(struct paca_struct, hard_enabled));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
148
  	DEFINE(PACACONTEXTID, offsetof(struct paca_struct, context.id));
d0f13e3c2   Benjamin Herrenschmidt   [POWERPC] Introdu...
149
150
151
152
153
154
  #ifdef CONFIG_PPC_MM_SLICES
  	DEFINE(PACALOWSLICESPSIZE, offsetof(struct paca_struct,
  					    context.low_slices_psize));
  	DEFINE(PACAHIGHSLICEPSIZE, offsetof(struct paca_struct,
  					    context.high_slices_psize));
  	DEFINE(MMUPSIZEDEFSIZE, sizeof(struct mmu_psize_def));
91c60b5b8   Benjamin Herrenschmidt   powerpc: Separate...
155
  #endif /* CONFIG_PPC_MM_SLICES */
dce6670aa   Benjamin Herrenschmidt   powerpc: Add PACA...
156
157
158
159
160
161
162
163
164
165
166
167
168
  
  #ifdef CONFIG_PPC_BOOK3E
  	DEFINE(PACAPGD, offsetof(struct paca_struct, pgd));
  	DEFINE(PACA_KERNELPGD, offsetof(struct paca_struct, kernel_pgd));
  	DEFINE(PACA_EXGEN, offsetof(struct paca_struct, exgen));
  	DEFINE(PACA_EXTLB, offsetof(struct paca_struct, extlb));
  	DEFINE(PACA_EXMC, offsetof(struct paca_struct, exmc));
  	DEFINE(PACA_EXCRIT, offsetof(struct paca_struct, excrit));
  	DEFINE(PACA_EXDBG, offsetof(struct paca_struct, exdbg));
  	DEFINE(PACA_MC_STACK, offsetof(struct paca_struct, mc_kstack));
  	DEFINE(PACA_CRIT_STACK, offsetof(struct paca_struct, crit_kstack));
  	DEFINE(PACA_DBG_STACK, offsetof(struct paca_struct, dbg_kstack));
  #endif /* CONFIG_PPC_BOOK3E */
91c60b5b8   Benjamin Herrenschmidt   powerpc: Separate...
169
170
171
172
173
174
175
  #ifdef CONFIG_PPC_STD_MMU_64
  	DEFINE(PACASTABREAL, offsetof(struct paca_struct, stab_real));
  	DEFINE(PACASTABVIRT, offsetof(struct paca_struct, stab_addr));
  	DEFINE(PACASLBCACHE, offsetof(struct paca_struct, slb_cache));
  	DEFINE(PACASLBCACHEPTR, offsetof(struct paca_struct, slb_cache_ptr));
  	DEFINE(PACAVMALLOCSLLP, offsetof(struct paca_struct, vmalloc_sllp));
  #ifdef CONFIG_PPC_MM_SLICES
d0f13e3c2   Benjamin Herrenschmidt   [POWERPC] Introdu...
176
177
178
  	DEFINE(MMUPSIZESLLP, offsetof(struct mmu_psize_def, sllp));
  #else
  	DEFINE(PACACONTEXTSLLP, offsetof(struct paca_struct, context.sllp));
d0f13e3c2   Benjamin Herrenschmidt   [POWERPC] Introdu...
179
  #endif /* CONFIG_PPC_MM_SLICES */
d1dead5c5   Stephen Rothwell   powerpc: merge as...
180
181
182
  	DEFINE(PACA_EXGEN, offsetof(struct paca_struct, exgen));
  	DEFINE(PACA_EXMC, offsetof(struct paca_struct, exmc));
  	DEFINE(PACA_EXSLB, offsetof(struct paca_struct, exslb));
3356bb9f7   David Gibson   [PATCH] powerpc: ...
183
  	DEFINE(PACALPPACAPTR, offsetof(struct paca_struct, lppaca_ptr));
2f6093c84   Michael Neuling   [POWERPC] Impleme...
184
  	DEFINE(PACA_SLBSHADOWPTR, offsetof(struct paca_struct, slb_shadow_ptr));
11a27ad78   Michael Neuling   [POWERPC] SLB sha...
185
186
187
188
  	DEFINE(SLBSHADOW_STACKVSID,
  	       offsetof(struct slb_shadow, save_area[SLB_NUM_BOLTED - 1].vsid));
  	DEFINE(SLBSHADOW_STACKESID,
  	       offsetof(struct slb_shadow, save_area[SLB_NUM_BOLTED - 1].esid));
cf9efce0c   Paul Mackerras   powerpc: Account ...
189
  	DEFINE(SLBSHADOW_SAVEAREA, offsetof(struct slb_shadow, save_area));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
190
191
192
193
  	DEFINE(LPPACASRR0, offsetof(struct lppaca, saved_srr0));
  	DEFINE(LPPACASRR1, offsetof(struct lppaca, saved_srr1));
  	DEFINE(LPPACAANYINT, offsetof(struct lppaca, int_dword.any_int));
  	DEFINE(LPPACADECRINT, offsetof(struct lppaca, int_dword.fields.decr_int));
de56a948b   Paul Mackerras   KVM: PPC: Add sup...
194
  	DEFINE(LPPACA_PMCINUSE, offsetof(struct lppaca, pmcregs_in_use));
cf9efce0c   Paul Mackerras   powerpc: Account ...
195
  	DEFINE(LPPACA_DTLIDX, offsetof(struct lppaca, dtl_idx));
a8606e20e   Paul Mackerras   KVM: PPC: Handle ...
196
  	DEFINE(LPPACA_YIELDCOUNT, offsetof(struct lppaca, yield_count));
cf9efce0c   Paul Mackerras   powerpc: Account ...
197
  	DEFINE(PACA_DTL_RIDX, offsetof(struct paca_struct, dtl_ridx));
91c60b5b8   Benjamin Herrenschmidt   powerpc: Separate...
198
199
200
  #endif /* CONFIG_PPC_STD_MMU_64 */
  	DEFINE(PACAEMERGSP, offsetof(struct paca_struct, emergency_sp));
  	DEFINE(PACAHWCPUID, offsetof(struct paca_struct, hw_cpu_id));
1fc711f7f   Michael Neuling   powerpc/kexec: Fi...
201
  	DEFINE(PACAKEXECSTATE, offsetof(struct paca_struct, kexec_state));
cf9efce0c   Paul Mackerras   powerpc: Account ...
202
203
  	DEFINE(PACA_STARTTIME, offsetof(struct paca_struct, starttime));
  	DEFINE(PACA_STARTTIME_USER, offsetof(struct paca_struct, starttime_user));
91c60b5b8   Benjamin Herrenschmidt   powerpc: Separate...
204
205
  	DEFINE(PACA_USER_TIME, offsetof(struct paca_struct, user_time));
  	DEFINE(PACA_SYSTEM_TIME, offsetof(struct paca_struct, system_time));
91c60b5b8   Benjamin Herrenschmidt   powerpc: Separate...
206
  	DEFINE(PACA_TRAP_SAVE, offsetof(struct paca_struct, trap_save));
2fde6d20b   Paul Mackerras   powerpc: Provide ...
207
  	DEFINE(PACA_NAPSTATELOST, offsetof(struct paca_struct, nap_state_lost));
033ef338b   Paul Mackerras   powerpc: Merge rt...
208
  #endif /* CONFIG_PPC64 */
d1dead5c5   Stephen Rothwell   powerpc: merge as...
209
210
211
212
  
  	/* RTAS */
  	DEFINE(RTASBASE, offsetof(struct rtas_t, base));
  	DEFINE(RTASENTRY, offsetof(struct rtas_t, entry));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
213

14cf11af6   Paul Mackerras   powerpc: Merge en...
214
  	/* Interrupt register frame */
91120cc8e   Kumar Gala   [POWERPC] Cleanup...
215
  	DEFINE(INT_FRAME_SIZE, STACK_INT_FRAME_SIZE);
14cf11af6   Paul Mackerras   powerpc: Merge en...
216
  	DEFINE(SWITCH_FRAME_SIZE, STACK_FRAME_OVERHEAD + sizeof(struct pt_regs));
218d169c4   Alexander Graf   PPC: Export SWITC...
217
  #ifdef CONFIG_PPC64
d1dead5c5   Stephen Rothwell   powerpc: merge as...
218
219
220
  	/* Create extra stack space for SRR0 and SRR1 when calling prom/rtas. */
  	DEFINE(PROM_FRAME_SIZE, STACK_FRAME_OVERHEAD + sizeof(struct pt_regs) + 16);
  	DEFINE(RTAS_FRAME_SIZE, STACK_FRAME_OVERHEAD + sizeof(struct pt_regs) + 16);
57852a853   Mike Kravetz   [POWERPC] powerpc...
221
222
223
224
225
226
  
  	/* hcall statistics */
  	DEFINE(HCALL_STAT_SIZE, sizeof(struct hcall_stats));
  	DEFINE(HCALL_STAT_CALLS, offsetof(struct hcall_stats, num_calls));
  	DEFINE(HCALL_STAT_TB, offsetof(struct hcall_stats, tb_total));
  	DEFINE(HCALL_STAT_PURR, offsetof(struct hcall_stats, purr_total));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
227
  #endif /* CONFIG_PPC64 */
14cf11af6   Paul Mackerras   powerpc: Merge en...
228
229
230
231
232
233
234
235
236
237
238
239
240
241
  	DEFINE(GPR0, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[0]));
  	DEFINE(GPR1, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[1]));
  	DEFINE(GPR2, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[2]));
  	DEFINE(GPR3, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[3]));
  	DEFINE(GPR4, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[4]));
  	DEFINE(GPR5, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[5]));
  	DEFINE(GPR6, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[6]));
  	DEFINE(GPR7, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[7]));
  	DEFINE(GPR8, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[8]));
  	DEFINE(GPR9, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[9]));
  	DEFINE(GPR10, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[10]));
  	DEFINE(GPR11, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[11]));
  	DEFINE(GPR12, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[12]));
  	DEFINE(GPR13, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[13]));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
242
  #ifndef CONFIG_PPC64
14cf11af6   Paul Mackerras   powerpc: Merge en...
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
  	DEFINE(GPR14, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[14]));
  	DEFINE(GPR15, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[15]));
  	DEFINE(GPR16, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[16]));
  	DEFINE(GPR17, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[17]));
  	DEFINE(GPR18, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[18]));
  	DEFINE(GPR19, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[19]));
  	DEFINE(GPR20, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[20]));
  	DEFINE(GPR21, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[21]));
  	DEFINE(GPR22, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[22]));
  	DEFINE(GPR23, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[23]));
  	DEFINE(GPR24, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[24]));
  	DEFINE(GPR25, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[25]));
  	DEFINE(GPR26, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[26]));
  	DEFINE(GPR27, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[27]));
  	DEFINE(GPR28, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[28]));
  	DEFINE(GPR29, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[29]));
  	DEFINE(GPR30, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[30]));
  	DEFINE(GPR31, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[31]));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
261
  #endif /* CONFIG_PPC64 */
14cf11af6   Paul Mackerras   powerpc: Merge en...
262
263
264
265
266
267
268
269
270
  	/*
  	 * Note: these symbols include _ because they overlap with special
  	 * register names
  	 */
  	DEFINE(_NIP, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, nip));
  	DEFINE(_MSR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, msr));
  	DEFINE(_CTR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, ctr));
  	DEFINE(_LINK, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, link));
  	DEFINE(_CCR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, ccr));
14cf11af6   Paul Mackerras   powerpc: Merge en...
271
272
273
  	DEFINE(_XER, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, xer));
  	DEFINE(_DAR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dar));
  	DEFINE(_DSISR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dsisr));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
274
275
  	DEFINE(ORIG_GPR3, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, orig_gpr3));
  	DEFINE(RESULT, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, result));
d73e0c99f   Paul Mackerras   powerpc: Rename a...
276
  	DEFINE(_TRAP, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, trap));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
277
278
279
280
281
282
283
  #ifndef CONFIG_PPC64
  	DEFINE(_MQ, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, mq));
  	/*
  	 * The PowerPC 400-class & Book-E processors have neither the DAR
  	 * nor the DSISR SPRs. Hence, we overload them to hold the similar
  	 * DEAR and ESR SPRs for such processors.  For critical interrupts
  	 * we use them to hold SRR0 and SRR1.
14cf11af6   Paul Mackerras   powerpc: Merge en...
284
285
286
  	 */
  	DEFINE(_DEAR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dar));
  	DEFINE(_ESR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dsisr));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
287
  #else /* CONFIG_PPC64 */
d1dead5c5   Stephen Rothwell   powerpc: merge as...
288
289
290
291
292
293
  	DEFINE(SOFTE, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, softe));
  
  	/* These _only_ to be used with {PROM,RTAS}_FRAME_SIZE!!! */
  	DEFINE(_SRR0, STACK_FRAME_OVERHEAD+sizeof(struct pt_regs));
  	DEFINE(_SRR1, STACK_FRAME_OVERHEAD+sizeof(struct pt_regs)+8);
  #endif /* CONFIG_PPC64 */
57e2a99f7   Benjamin Herrenschmidt   powerpc: Add memo...
294
  #if defined(CONFIG_PPC32)
fca622c5b   Kumar Gala   [POWERPC] 40x/Boo...
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
  #if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
  	DEFINE(EXC_LVL_SIZE, STACK_EXC_LVL_FRAME_SIZE);
  	DEFINE(MAS0, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas0));
  	/* we overload MMUCR for 44x on MAS0 since they are mutually exclusive */
  	DEFINE(MMUCR, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas0));
  	DEFINE(MAS1, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas1));
  	DEFINE(MAS2, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas2));
  	DEFINE(MAS3, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas3));
  	DEFINE(MAS6, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas6));
  	DEFINE(MAS7, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas7));
  	DEFINE(_SRR0, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, srr0));
  	DEFINE(_SRR1, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, srr1));
  	DEFINE(_CSRR0, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, csrr0));
  	DEFINE(_CSRR1, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, csrr1));
  	DEFINE(_DSRR0, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, dsrr0));
  	DEFINE(_DSRR1, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, dsrr1));
  	DEFINE(SAVED_KSP_LIMIT, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, saved_ksp_limit));
  #endif
57e2a99f7   Benjamin Herrenschmidt   powerpc: Add memo...
313
  #endif
14cf11af6   Paul Mackerras   powerpc: Merge en...
314
315
  	DEFINE(CLONE_VM, CLONE_VM);
  	DEFINE(CLONE_UNTRACED, CLONE_UNTRACED);
d1dead5c5   Stephen Rothwell   powerpc: merge as...
316
317
  
  #ifndef CONFIG_PPC64
14cf11af6   Paul Mackerras   powerpc: Merge en...
318
  	DEFINE(MM_PGD, offsetof(struct mm_struct, pgd));
d1dead5c5   Stephen Rothwell   powerpc: merge as...
319
  #endif /* ! CONFIG_PPC64 */
14cf11af6   Paul Mackerras   powerpc: Merge en...
320
321
  
  	/* About the CPU features table */
14cf11af6   Paul Mackerras   powerpc: Merge en...
322
323
  	DEFINE(CPU_SPEC_FEATURES, offsetof(struct cpu_spec, cpu_features));
  	DEFINE(CPU_SPEC_SETUP, offsetof(struct cpu_spec, cpu_setup));
f39b7a55a   Olof Johansson   [POWERPC] Cleanup...
324
  	DEFINE(CPU_SPEC_RESTORE, offsetof(struct cpu_spec, cpu_restore));
14cf11af6   Paul Mackerras   powerpc: Merge en...
325

d1dead5c5   Stephen Rothwell   powerpc: merge as...
326
327
328
  	DEFINE(pbe_address, offsetof(struct pbe, address));
  	DEFINE(pbe_orig_address, offsetof(struct pbe, orig_address));
  	DEFINE(pbe_next, offsetof(struct pbe, next));
14cf11af6   Paul Mackerras   powerpc: Merge en...
329

543b9fd35   Johannes Berg   [POWERPC] powerma...
330
  #ifndef CONFIG_PPC64
fd582ec88   Paul Mackerras   ppc: Various mino...
331
  	DEFINE(TASK_SIZE, TASK_SIZE);
d1dead5c5   Stephen Rothwell   powerpc: merge as...
332
  	DEFINE(NUM_USER_SEGMENTS, TASK_SIZE>>28);
a7f290dad   Benjamin Herrenschmidt   [PATCH] powerpc: ...
333
  #endif /* ! CONFIG_PPC64 */
14cf11af6   Paul Mackerras   powerpc: Merge en...
334

a7f290dad   Benjamin Herrenschmidt   [PATCH] powerpc: ...
335
336
337
338
339
340
341
342
343
344
345
  	/* datapage offsets for use by vdso */
  	DEFINE(CFG_TB_ORIG_STAMP, offsetof(struct vdso_data, tb_orig_stamp));
  	DEFINE(CFG_TB_TICKS_PER_SEC, offsetof(struct vdso_data, tb_ticks_per_sec));
  	DEFINE(CFG_TB_TO_XS, offsetof(struct vdso_data, tb_to_xs));
  	DEFINE(CFG_STAMP_XSEC, offsetof(struct vdso_data, stamp_xsec));
  	DEFINE(CFG_TB_UPDATE_COUNT, offsetof(struct vdso_data, tb_update_count));
  	DEFINE(CFG_TZ_MINUTEWEST, offsetof(struct vdso_data, tz_minuteswest));
  	DEFINE(CFG_TZ_DSTTIME, offsetof(struct vdso_data, tz_dsttime));
  	DEFINE(CFG_SYSCALL_MAP32, offsetof(struct vdso_data, syscall_map_32));
  	DEFINE(WTOM_CLOCK_SEC, offsetof(struct vdso_data, wtom_clock_sec));
  	DEFINE(WTOM_CLOCK_NSEC, offsetof(struct vdso_data, wtom_clock_nsec));
597bc5c00   Paul Mackerras   powerpc: Improve ...
346
  	DEFINE(STAMP_XTIME, offsetof(struct vdso_data, stamp_xtime));
8fd63a9ea   Paul Mackerras   powerpc: Rework V...
347
  	DEFINE(STAMP_SEC_FRAC, offsetof(struct vdso_data, stamp_sec_fraction));
fbe481756   Olof Johansson   [POWERPC] vdso: F...
348
349
350
351
  	DEFINE(CFG_ICACHE_BLOCKSZ, offsetof(struct vdso_data, icache_block_size));
  	DEFINE(CFG_DCACHE_BLOCKSZ, offsetof(struct vdso_data, dcache_block_size));
  	DEFINE(CFG_ICACHE_LOGBLOCKSZ, offsetof(struct vdso_data, icache_log_block_size));
  	DEFINE(CFG_DCACHE_LOGBLOCKSZ, offsetof(struct vdso_data, dcache_log_block_size));
a7f290dad   Benjamin Herrenschmidt   [PATCH] powerpc: ...
352
353
  #ifdef CONFIG_PPC64
  	DEFINE(CFG_SYSCALL_MAP64, offsetof(struct vdso_data, syscall_map_64));
14cf11af6   Paul Mackerras   powerpc: Merge en...
354
355
356
357
  	DEFINE(TVAL64_TV_SEC, offsetof(struct timeval, tv_sec));
  	DEFINE(TVAL64_TV_USEC, offsetof(struct timeval, tv_usec));
  	DEFINE(TVAL32_TV_SEC, offsetof(struct compat_timeval, tv_sec));
  	DEFINE(TVAL32_TV_USEC, offsetof(struct compat_timeval, tv_usec));
0c37ec2aa   Benjamin Herrenschmidt   [PATCH] powerpc: ...
358
359
  	DEFINE(TSPC64_TV_SEC, offsetof(struct timespec, tv_sec));
  	DEFINE(TSPC64_TV_NSEC, offsetof(struct timespec, tv_nsec));
a7f290dad   Benjamin Herrenschmidt   [PATCH] powerpc: ...
360
361
362
363
364
  	DEFINE(TSPC32_TV_SEC, offsetof(struct compat_timespec, tv_sec));
  	DEFINE(TSPC32_TV_NSEC, offsetof(struct compat_timespec, tv_nsec));
  #else
  	DEFINE(TVAL32_TV_SEC, offsetof(struct timeval, tv_sec));
  	DEFINE(TVAL32_TV_USEC, offsetof(struct timeval, tv_usec));
0c37ec2aa   Benjamin Herrenschmidt   [PATCH] powerpc: ...
365
366
  	DEFINE(TSPC32_TV_SEC, offsetof(struct timespec, tv_sec));
  	DEFINE(TSPC32_TV_NSEC, offsetof(struct timespec, tv_nsec));
a7f290dad   Benjamin Herrenschmidt   [PATCH] powerpc: ...
367
368
  #endif
  	/* timeval/timezone offsets for use by vdso */
14cf11af6   Paul Mackerras   powerpc: Merge en...
369
370
  	DEFINE(TZONE_TZ_MINWEST, offsetof(struct timezone, tz_minuteswest));
  	DEFINE(TZONE_TZ_DSTTIME, offsetof(struct timezone, tz_dsttime));
a7f290dad   Benjamin Herrenschmidt   [PATCH] powerpc: ...
371
372
373
374
375
  
  	/* Other bits used by the vdso */
  	DEFINE(CLOCK_REALTIME, CLOCK_REALTIME);
  	DEFINE(CLOCK_MONOTONIC, CLOCK_MONOTONIC);
  	DEFINE(NSEC_PER_SEC, NSEC_PER_SEC);
151db1fc2   Tony Breeds   Fix compilation o...
376
  	DEFINE(CLOCK_REALTIME_RES, MONOTONIC_RES_NSEC);
a7f290dad   Benjamin Herrenschmidt   [PATCH] powerpc: ...
377

007d88d04   David Woodhouse   [POWERPC] Fix man...
378
379
380
  #ifdef CONFIG_BUG
  	DEFINE(BUG_ENTRY_SIZE, sizeof(struct bug_entry));
  #endif
16a15a30f   Stephen Rothwell   [POWERPC] iSeries...
381
382
383
384
385
386
387
  
  #ifdef CONFIG_PPC_ISERIES
  	/* the assembler miscalculates the VSID values */
  	DEFINE(PAGE_OFFSET_ESID, GET_ESID(PAGE_OFFSET));
  	DEFINE(PAGE_OFFSET_VSID, KERNEL_VSID(PAGE_OFFSET));
  	DEFINE(VMALLOC_START_ESID, GET_ESID(VMALLOC_START));
  	DEFINE(VMALLOC_START_VSID, KERNEL_VSID(VMALLOC_START));
3eb9cf076   Stephen Rothwell   [POWERPC] iSeries...
388
389
390
  
  	/* alpaca */
  	DEFINE(ALPACA_SIZE, sizeof(struct alpaca));
16a15a30f   Stephen Rothwell   [POWERPC] iSeries...
391
  #endif
ee7a76da1   Stephen Rothwell   [POWERPC] Size sw...
392

ee7a76da1   Stephen Rothwell   [POWERPC] Size sw...
393
  	DEFINE(PGD_TABLE_SIZE, PGD_TABLE_SIZE);
4ee7084eb   Becky Bruce   POWERPC: Allow 32...
394
  	DEFINE(PTE_SIZE, sizeof(pte_t));
bee86f14d   Kumar Gala   [POWERPC] Fix swa...
395

bbf45ba57   Hollis Blanchard   KVM: ppc: PowerPC...
396
  #ifdef CONFIG_KVM
bbf45ba57   Hollis Blanchard   KVM: ppc: PowerPC...
397
398
  	DEFINE(VCPU_HOST_STACK, offsetof(struct kvm_vcpu, arch.host_stack));
  	DEFINE(VCPU_HOST_PID, offsetof(struct kvm_vcpu, arch.host_pid));
bbf45ba57   Hollis Blanchard   KVM: ppc: PowerPC...
399
  	DEFINE(VCPU_GPRS, offsetof(struct kvm_vcpu, arch.gpr));
eab176722   Scott Wood   KVM: PPC: booke: ...
400
  	DEFINE(VCPU_VRSAVE, offsetof(struct kvm_vcpu, arch.vrsave));
de56a948b   Paul Mackerras   KVM: PPC: Add sup...
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
  	DEFINE(VCPU_FPRS, offsetof(struct kvm_vcpu, arch.fpr));
  	DEFINE(VCPU_FPSCR, offsetof(struct kvm_vcpu, arch.fpscr));
  #ifdef CONFIG_ALTIVEC
  	DEFINE(VCPU_VRS, offsetof(struct kvm_vcpu, arch.vr));
  	DEFINE(VCPU_VSCR, offsetof(struct kvm_vcpu, arch.vscr));
  #endif
  #ifdef CONFIG_VSX
  	DEFINE(VCPU_VSRS, offsetof(struct kvm_vcpu, arch.vsr));
  #endif
  	DEFINE(VCPU_XER, offsetof(struct kvm_vcpu, arch.xer));
  	DEFINE(VCPU_CTR, offsetof(struct kvm_vcpu, arch.ctr));
  	DEFINE(VCPU_LR, offsetof(struct kvm_vcpu, arch.lr));
  	DEFINE(VCPU_CR, offsetof(struct kvm_vcpu, arch.cr));
  	DEFINE(VCPU_PC, offsetof(struct kvm_vcpu, arch.pc));
  #ifdef CONFIG_KVM_BOOK3S_64_HV
  	DEFINE(VCPU_MSR, offsetof(struct kvm_vcpu, arch.shregs.msr));
  	DEFINE(VCPU_SRR0, offsetof(struct kvm_vcpu, arch.shregs.srr0));
  	DEFINE(VCPU_SRR1, offsetof(struct kvm_vcpu, arch.shregs.srr1));
  	DEFINE(VCPU_SPRG0, offsetof(struct kvm_vcpu, arch.shregs.sprg0));
  	DEFINE(VCPU_SPRG1, offsetof(struct kvm_vcpu, arch.shregs.sprg1));
  	DEFINE(VCPU_SPRG2, offsetof(struct kvm_vcpu, arch.shregs.sprg2));
  	DEFINE(VCPU_SPRG3, offsetof(struct kvm_vcpu, arch.shregs.sprg3));
  #endif
bbf45ba57   Hollis Blanchard   KVM: ppc: PowerPC...
424
425
426
427
  	DEFINE(VCPU_SPRG4, offsetof(struct kvm_vcpu, arch.sprg4));
  	DEFINE(VCPU_SPRG5, offsetof(struct kvm_vcpu, arch.sprg5));
  	DEFINE(VCPU_SPRG6, offsetof(struct kvm_vcpu, arch.sprg6));
  	DEFINE(VCPU_SPRG7, offsetof(struct kvm_vcpu, arch.sprg7));
49dd2c492   Hollis Blanchard   KVM: powerpc: Map...
428
  	DEFINE(VCPU_SHADOW_PID, offsetof(struct kvm_vcpu, arch.shadow_pid));
dd9ebf1f9   Liu Yu   KVM: PPC: e500: A...
429
  	DEFINE(VCPU_SHADOW_PID1, offsetof(struct kvm_vcpu, arch.shadow_pid1));
96bc451a1   Alexander Graf   KVM: PPC: Introdu...
430
  	DEFINE(VCPU_SHARED, offsetof(struct kvm_vcpu, arch.shared));
666e7252a   Alexander Graf   KVM: PPC: Convert...
431
  	DEFINE(VCPU_SHARED_MSR, offsetof(struct kvm_vcpu_arch_shared, msr));
ecee273fc   Scott Wood   KVM: PPC: booke: ...
432
  	DEFINE(VCPU_SHADOW_MSR, offsetof(struct kvm_vcpu, arch.shadow_msr));
bbf45ba57   Hollis Blanchard   KVM: ppc: PowerPC...
433

00c3a37ca   Alexander Graf   KVM: PPC: Use CON...
434
  	/* book3s */
de56a948b   Paul Mackerras   KVM: PPC: Add sup...
435
436
437
438
439
440
441
442
443
  #ifdef CONFIG_KVM_BOOK3S_64_HV
  	DEFINE(KVM_LPID, offsetof(struct kvm, arch.lpid));
  	DEFINE(KVM_SDR1, offsetof(struct kvm, arch.sdr1));
  	DEFINE(KVM_HOST_LPID, offsetof(struct kvm, arch.host_lpid));
  	DEFINE(KVM_HOST_LPCR, offsetof(struct kvm, arch.host_lpcr));
  	DEFINE(KVM_HOST_SDR1, offsetof(struct kvm, arch.host_sdr1));
  	DEFINE(KVM_TLBIE_LOCK, offsetof(struct kvm, arch.tlbie_lock));
  	DEFINE(KVM_ONLINE_CPUS, offsetof(struct kvm, online_vcpus.counter));
  	DEFINE(KVM_LAST_VCPU, offsetof(struct kvm, arch.last_vcpu));
aa04b4cc5   Paul Mackerras   KVM: PPC: Allocat...
444
445
  	DEFINE(KVM_LPCR, offsetof(struct kvm, arch.lpcr));
  	DEFINE(KVM_RMOR, offsetof(struct kvm, arch.rmor));
de56a948b   Paul Mackerras   KVM: PPC: Add sup...
446
447
448
  	DEFINE(VCPU_DSISR, offsetof(struct kvm_vcpu, arch.shregs.dsisr));
  	DEFINE(VCPU_DAR, offsetof(struct kvm_vcpu, arch.shregs.dar));
  #endif
00c3a37ca   Alexander Graf   KVM: PPC: Use CON...
449
  #ifdef CONFIG_PPC_BOOK3S
de56a948b   Paul Mackerras   KVM: PPC: Add sup...
450
451
  	DEFINE(VCPU_KVM, offsetof(struct kvm_vcpu, kvm));
  	DEFINE(VCPU_VCPUID, offsetof(struct kvm_vcpu, vcpu_id));
de56a948b   Paul Mackerras   KVM: PPC: Add sup...
452
453
454
455
456
457
458
  	DEFINE(VCPU_PURR, offsetof(struct kvm_vcpu, arch.purr));
  	DEFINE(VCPU_SPURR, offsetof(struct kvm_vcpu, arch.spurr));
  	DEFINE(VCPU_DSCR, offsetof(struct kvm_vcpu, arch.dscr));
  	DEFINE(VCPU_AMR, offsetof(struct kvm_vcpu, arch.amr));
  	DEFINE(VCPU_UAMOR, offsetof(struct kvm_vcpu, arch.uamor));
  	DEFINE(VCPU_CTRL, offsetof(struct kvm_vcpu, arch.ctrl));
  	DEFINE(VCPU_DABR, offsetof(struct kvm_vcpu, arch.dabr));
62908905b   Alexander Graf   Add Book3s_64 off...
459
  	DEFINE(VCPU_HFLAGS, offsetof(struct kvm_vcpu, arch.hflags));
de56a948b   Paul Mackerras   KVM: PPC: Add sup...
460
461
  	DEFINE(VCPU_DEC, offsetof(struct kvm_vcpu, arch.dec));
  	DEFINE(VCPU_DEC_EXPIRES, offsetof(struct kvm_vcpu, arch.dec_expires));
aa04b4cc5   Paul Mackerras   KVM: PPC: Allocat...
462
  	DEFINE(VCPU_PENDING_EXC, offsetof(struct kvm_vcpu, arch.pending_exceptions));
19ccb76a1   Paul Mackerras   KVM: PPC: Impleme...
463
464
  	DEFINE(VCPU_CEDED, offsetof(struct kvm_vcpu, arch.ceded));
  	DEFINE(VCPU_PRODDED, offsetof(struct kvm_vcpu, arch.prodded));
a8606e20e   Paul Mackerras   KVM: PPC: Handle ...
465
  	DEFINE(VCPU_VPA, offsetof(struct kvm_vcpu, arch.vpa));
de56a948b   Paul Mackerras   KVM: PPC: Add sup...
466
467
468
469
470
471
472
473
474
475
  	DEFINE(VCPU_MMCR, offsetof(struct kvm_vcpu, arch.mmcr));
  	DEFINE(VCPU_PMC, offsetof(struct kvm_vcpu, arch.pmc));
  	DEFINE(VCPU_SLB, offsetof(struct kvm_vcpu, arch.slb));
  	DEFINE(VCPU_SLB_MAX, offsetof(struct kvm_vcpu, arch.slb_max));
  	DEFINE(VCPU_SLB_NR, offsetof(struct kvm_vcpu, arch.slb_nr));
  	DEFINE(VCPU_LAST_CPU, offsetof(struct kvm_vcpu, arch.last_cpu));
  	DEFINE(VCPU_FAULT_DSISR, offsetof(struct kvm_vcpu, arch.fault_dsisr));
  	DEFINE(VCPU_FAULT_DAR, offsetof(struct kvm_vcpu, arch.fault_dar));
  	DEFINE(VCPU_LAST_INST, offsetof(struct kvm_vcpu, arch.last_inst));
  	DEFINE(VCPU_TRAP, offsetof(struct kvm_vcpu, arch.trap));
371fefd6f   Paul Mackerras   KVM: PPC: Allow b...
476
477
478
479
  	DEFINE(VCPU_PTID, offsetof(struct kvm_vcpu, arch.ptid));
  	DEFINE(VCORE_ENTRY_EXIT, offsetof(struct kvmppc_vcore, entry_exit_count));
  	DEFINE(VCORE_NAP_COUNT, offsetof(struct kvmppc_vcore, nap_count));
  	DEFINE(VCORE_IN_GUEST, offsetof(struct kvmppc_vcore, in_guest));
19ccb76a1   Paul Mackerras   KVM: PPC: Impleme...
480
  	DEFINE(VCORE_NAPPING_THREADS, offsetof(struct kvmppc_vcore, napping_threads));
de56a948b   Paul Mackerras   KVM: PPC: Add sup...
481
482
483
484
485
  	DEFINE(VCPU_SVCPU, offsetof(struct kvmppc_vcpu_book3s, shadow_vcpu) -
  			   offsetof(struct kvmppc_vcpu_book3s, vcpu));
  	DEFINE(VCPU_SLB_E, offsetof(struct kvmppc_slb, orige));
  	DEFINE(VCPU_SLB_V, offsetof(struct kvmppc_slb, origv));
  	DEFINE(VCPU_SLB_SIZE, sizeof(struct kvmppc_slb));
3c42bf8a7   Paul Mackerras   KVM: PPC: Split h...
486
487
  
  #ifdef CONFIG_PPC_BOOK3S_64
de56a948b   Paul Mackerras   KVM: PPC: Add sup...
488
  #ifdef CONFIG_KVM_BOOK3S_PR
3c42bf8a7   Paul Mackerras   KVM: PPC: Split h...
489
  # define SVCPU_FIELD(x, f)	DEFINE(x, offsetof(struct paca_struct, shadow_vcpu.f))
de56a948b   Paul Mackerras   KVM: PPC: Add sup...
490
491
492
  #else
  # define SVCPU_FIELD(x, f)
  #endif
3c42bf8a7   Paul Mackerras   KVM: PPC: Split h...
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
  # define HSTATE_FIELD(x, f)	DEFINE(x, offsetof(struct paca_struct, kvm_hstate.f))
  #else	/* 32-bit */
  # define SVCPU_FIELD(x, f)	DEFINE(x, offsetof(struct kvmppc_book3s_shadow_vcpu, f))
  # define HSTATE_FIELD(x, f)	DEFINE(x, offsetof(struct kvmppc_book3s_shadow_vcpu, hstate.f))
  #endif
  
  	SVCPU_FIELD(SVCPU_CR, cr);
  	SVCPU_FIELD(SVCPU_XER, xer);
  	SVCPU_FIELD(SVCPU_CTR, ctr);
  	SVCPU_FIELD(SVCPU_LR, lr);
  	SVCPU_FIELD(SVCPU_PC, pc);
  	SVCPU_FIELD(SVCPU_R0, gpr[0]);
  	SVCPU_FIELD(SVCPU_R1, gpr[1]);
  	SVCPU_FIELD(SVCPU_R2, gpr[2]);
  	SVCPU_FIELD(SVCPU_R3, gpr[3]);
  	SVCPU_FIELD(SVCPU_R4, gpr[4]);
  	SVCPU_FIELD(SVCPU_R5, gpr[5]);
  	SVCPU_FIELD(SVCPU_R6, gpr[6]);
  	SVCPU_FIELD(SVCPU_R7, gpr[7]);
  	SVCPU_FIELD(SVCPU_R8, gpr[8]);
  	SVCPU_FIELD(SVCPU_R9, gpr[9]);
  	SVCPU_FIELD(SVCPU_R10, gpr[10]);
  	SVCPU_FIELD(SVCPU_R11, gpr[11]);
  	SVCPU_FIELD(SVCPU_R12, gpr[12]);
  	SVCPU_FIELD(SVCPU_R13, gpr[13]);
  	SVCPU_FIELD(SVCPU_FAULT_DSISR, fault_dsisr);
  	SVCPU_FIELD(SVCPU_FAULT_DAR, fault_dar);
  	SVCPU_FIELD(SVCPU_LAST_INST, last_inst);
  	SVCPU_FIELD(SVCPU_SHADOW_SRR1, shadow_srr1);
0604675fe   Alexander Graf   KVM: PPC: Use now...
522
  #ifdef CONFIG_PPC_BOOK3S_32
3c42bf8a7   Paul Mackerras   KVM: PPC: Split h...
523
  	SVCPU_FIELD(SVCPU_SR, sr);
0604675fe   Alexander Graf   KVM: PPC: Use now...
524
  #endif
3c42bf8a7   Paul Mackerras   KVM: PPC: Split h...
525
526
527
528
529
530
531
  #ifdef CONFIG_PPC64
  	SVCPU_FIELD(SVCPU_SLB, slb);
  	SVCPU_FIELD(SVCPU_SLB_MAX, slb_max);
  #endif
  
  	HSTATE_FIELD(HSTATE_HOST_R1, host_r1);
  	HSTATE_FIELD(HSTATE_HOST_R2, host_r2);
de56a948b   Paul Mackerras   KVM: PPC: Add sup...
532
  	HSTATE_FIELD(HSTATE_HOST_MSR, host_msr);
3c42bf8a7   Paul Mackerras   KVM: PPC: Split h...
533
534
535
536
  	HSTATE_FIELD(HSTATE_VMHANDLER, vmhandler);
  	HSTATE_FIELD(HSTATE_SCRATCH0, scratch0);
  	HSTATE_FIELD(HSTATE_SCRATCH1, scratch1);
  	HSTATE_FIELD(HSTATE_IN_GUEST, in_guest);
021439476   Paul Mackerras   KVM: PPC: book3s_...
537
  	HSTATE_FIELD(HSTATE_RESTORE_HID5, restore_hid5);
19ccb76a1   Paul Mackerras   KVM: PPC: Impleme...
538
  	HSTATE_FIELD(HSTATE_NAPPING, napping);
3c42bf8a7   Paul Mackerras   KVM: PPC: Split h...
539

de56a948b   Paul Mackerras   KVM: PPC: Add sup...
540
541
  #ifdef CONFIG_KVM_BOOK3S_64_HV
  	HSTATE_FIELD(HSTATE_KVM_VCPU, kvm_vcpu);
371fefd6f   Paul Mackerras   KVM: PPC: Allow b...
542
543
  	HSTATE_FIELD(HSTATE_KVM_VCORE, kvm_vcore);
  	HSTATE_FIELD(HSTATE_XICS_PHYS, xics_phys);
de56a948b   Paul Mackerras   KVM: PPC: Add sup...
544
545
546
547
548
549
550
  	HSTATE_FIELD(HSTATE_MMCR, host_mmcr);
  	HSTATE_FIELD(HSTATE_PMC, host_pmc);
  	HSTATE_FIELD(HSTATE_PURR, host_purr);
  	HSTATE_FIELD(HSTATE_SPURR, host_spurr);
  	HSTATE_FIELD(HSTATE_DSCR, host_dscr);
  	HSTATE_FIELD(HSTATE_DABR, dabr);
  	HSTATE_FIELD(HSTATE_DECEXP, dec_expires);
19ccb76a1   Paul Mackerras   KVM: PPC: Impleme...
551
  	DEFINE(IPI_PRIORITY, IPI_PRIORITY);
de56a948b   Paul Mackerras   KVM: PPC: Add sup...
552
  #endif /* CONFIG_KVM_BOOK3S_64_HV */
3c42bf8a7   Paul Mackerras   KVM: PPC: Split h...
553
  #else /* CONFIG_PPC_BOOK3S */
7e57cba06   Alexander Graf   KVM: PPC: Use PAC...
554
555
  	DEFINE(VCPU_CR, offsetof(struct kvm_vcpu, arch.cr));
  	DEFINE(VCPU_XER, offsetof(struct kvm_vcpu, arch.xer));
0604675fe   Alexander Graf   KVM: PPC: Use now...
556
557
558
559
560
561
  	DEFINE(VCPU_LR, offsetof(struct kvm_vcpu, arch.lr));
  	DEFINE(VCPU_CTR, offsetof(struct kvm_vcpu, arch.ctr));
  	DEFINE(VCPU_PC, offsetof(struct kvm_vcpu, arch.pc));
  	DEFINE(VCPU_LAST_INST, offsetof(struct kvm_vcpu, arch.last_inst));
  	DEFINE(VCPU_FAULT_DEAR, offsetof(struct kvm_vcpu, arch.fault_dear));
  	DEFINE(VCPU_FAULT_ESR, offsetof(struct kvm_vcpu, arch.fault_esr));
00c3a37ca   Alexander Graf   KVM: PPC: Use CON...
562
  #endif /* CONFIG_PPC_BOOK3S */
3c42bf8a7   Paul Mackerras   KVM: PPC: Split h...
563
  #endif /* CONFIG_KVM */
d17051cb8   Alexander Graf   KVM: PPC: Generic...
564
565
566
567
568
569
570
571
572
573
574
575
576
  
  #ifdef CONFIG_KVM_GUEST
  	DEFINE(KVM_MAGIC_SCRATCH1, offsetof(struct kvm_vcpu_arch_shared,
  					    scratch1));
  	DEFINE(KVM_MAGIC_SCRATCH2, offsetof(struct kvm_vcpu_arch_shared,
  					    scratch2));
  	DEFINE(KVM_MAGIC_SCRATCH3, offsetof(struct kvm_vcpu_arch_shared,
  					    scratch3));
  	DEFINE(KVM_MAGIC_INT, offsetof(struct kvm_vcpu_arch_shared,
  				       int_pending));
  	DEFINE(KVM_MAGIC_MSR, offsetof(struct kvm_vcpu_arch_shared, msr));
  	DEFINE(KVM_MAGIC_CRITICAL, offsetof(struct kvm_vcpu_arch_shared,
  					    critical));
cbe487fac   Alexander Graf   KVM: PPC: Add mts...
577
  	DEFINE(KVM_MAGIC_SR, offsetof(struct kvm_vcpu_arch_shared, sr));
d17051cb8   Alexander Graf   KVM: PPC: Generic...
578
  #endif
ca9153a3a   Ilya Yanok   powerpc/44x: Supp...
579
580
581
582
  #ifdef CONFIG_44x
  	DEFINE(PGD_T_LOG2, PGD_T_LOG2);
  	DEFINE(PTE_T_LOG2, PTE_T_LOG2);
  #endif
55fd766b5   Kumar Gala   powerpc/fsl-booke...
583
  #ifdef CONFIG_PPC_FSL_BOOK3E
78f622377   Kumar Gala   powerpc/fsl-booke...
584
585
586
587
588
589
590
  	DEFINE(TLBCAM_SIZE, sizeof(struct tlbcam));
  	DEFINE(TLBCAM_MAS0, offsetof(struct tlbcam, MAS0));
  	DEFINE(TLBCAM_MAS1, offsetof(struct tlbcam, MAS1));
  	DEFINE(TLBCAM_MAS2, offsetof(struct tlbcam, MAS2));
  	DEFINE(TLBCAM_MAS3, offsetof(struct tlbcam, MAS3));
  	DEFINE(TLBCAM_MAS7, offsetof(struct tlbcam, MAS7));
  #endif
bbf45ba57   Hollis Blanchard   KVM: ppc: PowerPC...
591

4cd35f675   Scott Wood   KVM: PPC: e500: S...
592
593
594
595
596
597
  #if defined(CONFIG_KVM) && defined(CONFIG_SPE)
  	DEFINE(VCPU_EVR, offsetof(struct kvm_vcpu, arch.evr[0]));
  	DEFINE(VCPU_ACC, offsetof(struct kvm_vcpu, arch.acc));
  	DEFINE(VCPU_SPEFSCR, offsetof(struct kvm_vcpu, arch.spefscr));
  	DEFINE(VCPU_HOST_SPEFSCR, offsetof(struct kvm_vcpu, arch.host_spefscr));
  #endif
73e75b416   Hollis Blanchard   KVM: ppc: Impleme...
598
599
600
601
602
603
604
605
606
607
  #ifdef CONFIG_KVM_EXIT_TIMING
  	DEFINE(VCPU_TIMING_EXIT_TBU, offsetof(struct kvm_vcpu,
  						arch.timing_exit.tv32.tbu));
  	DEFINE(VCPU_TIMING_EXIT_TBL, offsetof(struct kvm_vcpu,
  						arch.timing_exit.tv32.tbl));
  	DEFINE(VCPU_TIMING_LAST_ENTER_TBU, offsetof(struct kvm_vcpu,
  					arch.timing_last_enter.tv32.tbu));
  	DEFINE(VCPU_TIMING_LAST_ENTER_TBL, offsetof(struct kvm_vcpu,
  					arch.timing_last_enter.tv32.tbl));
  #endif
ed79ba9e1   Benjamin Herrenschmidt   powerpc/powernv: ...
608
609
610
611
612
613
  #ifdef CONFIG_PPC_POWERNV
  	DEFINE(OPAL_MC_GPR3, offsetof(struct opal_machine_check_event, gpr3));
  	DEFINE(OPAL_MC_SRR0, offsetof(struct opal_machine_check_event, srr0));
  	DEFINE(OPAL_MC_SRR1, offsetof(struct opal_machine_check_event, srr1));
  	DEFINE(PACA_OPAL_MC_EVT, offsetof(struct paca_struct, opal_mc_evt));
  #endif
14cf11af6   Paul Mackerras   powerpc: Merge en...
614
615
  	return 0;
  }