linux/arch/powerpc/kernel/asm-offsets.c
<<
>>
Prefs
   1/*
   2 * This program is used to generate definitions needed by
   3 * assembly language modules.
   4 *
   5 * We use the technique used in the OSF Mach kernel code:
   6 * generate asm statements containing #defines,
   7 * compile this file to assembler, and then extract the
   8 * #defines from the assembly-language output.
   9 *
  10 * This program is free software; you can redistribute it and/or
  11 * modify it under the terms of the GNU General Public License
  12 * as published by the Free Software Foundation; either version
  13 * 2 of the License, or (at your option) any later version.
  14 */
  15
  16#include <linux/signal.h>
  17#include <linux/sched.h>
  18#include <linux/kernel.h>
  19#include <linux/errno.h>
  20#include <linux/string.h>
  21#include <linux/types.h>
  22#include <linux/mman.h>
  23#include <linux/mm.h>
  24#include <linux/suspend.h>
  25#include <linux/hrtimer.h>
  26#ifdef CONFIG_PPC64
  27#include <linux/time.h>
  28#include <linux/hardirq.h>
  29#endif
  30#include <linux/kbuild.h>
  31
  32#include <asm/io.h>
  33#include <asm/page.h>
  34#include <asm/pgtable.h>
  35#include <asm/processor.h>
  36#include <asm/cputable.h>
  37#include <asm/thread_info.h>
  38#include <asm/rtas.h>
  39#include <asm/vdso_datapage.h>
  40#ifdef CONFIG_PPC64
  41#include <asm/paca.h>
  42#include <asm/lppaca.h>
  43#include <asm/cache.h>
  44#include <asm/compat.h>
  45#include <asm/mmu.h>
  46#include <asm/hvcall.h>
  47#include <asm/xics.h>
  48#endif
  49#ifdef CONFIG_PPC_POWERNV
  50#include <asm/opal.h>
  51#endif
  52#if defined(CONFIG_KVM) || defined(CONFIG_KVM_GUEST)
  53#include <linux/kvm_host.h>
  54#endif
  55#if defined(CONFIG_KVM) && defined(CONFIG_PPC_BOOK3S)
  56#include <asm/kvm_book3s.h>
  57#endif
  58
  59#ifdef CONFIG_PPC32
  60#if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
  61#include "head_booke.h"
  62#endif
  63#endif
  64
  65#if defined(CONFIG_PPC_FSL_BOOK3E)
  66#include "../mm/mmu_decl.h"
  67#endif
  68
  69int main(void)
  70{
  71        DEFINE(THREAD, offsetof(struct task_struct, thread));
  72        DEFINE(MM, offsetof(struct task_struct, mm));
  73        DEFINE(MMCONTEXTID, offsetof(struct mm_struct, context.id));
  74#ifdef CONFIG_PPC64
  75        DEFINE(AUDITCONTEXT, offsetof(struct task_struct, audit_context));
  76        DEFINE(SIGSEGV, SIGSEGV);
  77        DEFINE(NMI_MASK, NMI_MASK);
  78        DEFINE(THREAD_DSCR, offsetof(struct thread_struct, dscr));
  79        DEFINE(THREAD_DSCR_INHERIT, offsetof(struct thread_struct, dscr_inherit));
  80        DEFINE(TASKTHREADPPR, offsetof(struct task_struct, thread.ppr));
  81#else
  82        DEFINE(THREAD_INFO, offsetof(struct task_struct, stack));
  83#endif /* CONFIG_PPC64 */
  84
  85        DEFINE(KSP, offsetof(struct thread_struct, ksp));
  86        DEFINE(KSP_LIMIT, offsetof(struct thread_struct, ksp_limit));
  87        DEFINE(PT_REGS, offsetof(struct thread_struct, regs));
  88#ifdef CONFIG_BOOKE
  89        DEFINE(THREAD_NORMSAVES, offsetof(struct thread_struct, normsave[0]));
  90#endif
  91        DEFINE(THREAD_FPEXC_MODE, offsetof(struct thread_struct, fpexc_mode));
  92        DEFINE(THREAD_FPR0, offsetof(struct thread_struct, fpr[0]));
  93        DEFINE(THREAD_FPSCR, offsetof(struct thread_struct, fpscr));
  94#ifdef CONFIG_ALTIVEC
  95        DEFINE(THREAD_VR0, offsetof(struct thread_struct, vr[0]));
  96        DEFINE(THREAD_VRSAVE, offsetof(struct thread_struct, vrsave));
  97        DEFINE(THREAD_VSCR, offsetof(struct thread_struct, vscr));
  98        DEFINE(THREAD_USED_VR, offsetof(struct thread_struct, used_vr));
  99#endif /* CONFIG_ALTIVEC */
 100#ifdef CONFIG_VSX
 101        DEFINE(THREAD_VSR0, offsetof(struct thread_struct, fpr));
 102        DEFINE(THREAD_USED_VSR, offsetof(struct thread_struct, used_vsr));
 103#endif /* CONFIG_VSX */
 104#ifdef CONFIG_PPC64
 105        DEFINE(KSP_VSID, offsetof(struct thread_struct, ksp_vsid));
 106#else /* CONFIG_PPC64 */
 107        DEFINE(PGDIR, offsetof(struct thread_struct, pgdir));
 108#ifdef CONFIG_SPE
 109        DEFINE(THREAD_EVR0, offsetof(struct thread_struct, evr[0]));
 110        DEFINE(THREAD_ACC, offsetof(struct thread_struct, acc));
 111        DEFINE(THREAD_SPEFSCR, offsetof(struct thread_struct, spefscr));
 112        DEFINE(THREAD_USED_SPE, offsetof(struct thread_struct, used_spe));
 113#endif /* CONFIG_SPE */
 114#endif /* CONFIG_PPC64 */
 115#if defined(CONFIG_4xx) || defined(CONFIG_BOOKE)
 116        DEFINE(THREAD_DBCR0, offsetof(struct thread_struct, dbcr0));
 117#endif
 118#ifdef CONFIG_KVM_BOOK3S_32_HANDLER
 119        DEFINE(THREAD_KVM_SVCPU, offsetof(struct thread_struct, kvm_shadow_vcpu));
 120#endif
 121#if defined(CONFIG_KVM) && defined(CONFIG_BOOKE)
 122        DEFINE(THREAD_KVM_VCPU, offsetof(struct thread_struct, kvm_vcpu));
 123#endif
 124
 125#ifdef CONFIG_PPC_BOOK3S_64
 126        DEFINE(THREAD_TAR, offsetof(struct thread_struct, tar));
 127        DEFINE(THREAD_BESCR, offsetof(struct thread_struct, bescr));
 128        DEFINE(THREAD_EBBHR, offsetof(struct thread_struct, ebbhr));
 129        DEFINE(THREAD_EBBRR, offsetof(struct thread_struct, ebbrr));
 130        DEFINE(THREAD_SIAR, offsetof(struct thread_struct, siar));
 131        DEFINE(THREAD_SDAR, offsetof(struct thread_struct, sdar));
 132        DEFINE(THREAD_SIER, offsetof(struct thread_struct, sier));
 133        DEFINE(THREAD_MMCR0, offsetof(struct thread_struct, mmcr0));
 134        DEFINE(THREAD_MMCR2, offsetof(struct thread_struct, mmcr2));
 135#endif
 136#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
 137        DEFINE(PACATMSCRATCH, offsetof(struct paca_struct, tm_scratch));
 138        DEFINE(THREAD_TM_TFHAR, offsetof(struct thread_struct, tm_tfhar));
 139        DEFINE(THREAD_TM_TEXASR, offsetof(struct thread_struct, tm_texasr));
 140        DEFINE(THREAD_TM_TFIAR, offsetof(struct thread_struct, tm_tfiar));
 141        DEFINE(THREAD_TM_TAR, offsetof(struct thread_struct, tm_tar));
 142        DEFINE(THREAD_TM_PPR, offsetof(struct thread_struct, tm_ppr));
 143        DEFINE(THREAD_TM_DSCR, offsetof(struct thread_struct, tm_dscr));
 144        DEFINE(PT_CKPT_REGS, offsetof(struct thread_struct, ckpt_regs));
 145        DEFINE(THREAD_TRANSACT_VR0, offsetof(struct thread_struct,
 146                                         transact_vr[0]));
 147        DEFINE(THREAD_TRANSACT_VSCR, offsetof(struct thread_struct,
 148                                          transact_vscr));
 149        DEFINE(THREAD_TRANSACT_VRSAVE, offsetof(struct thread_struct,
 150                                            transact_vrsave));
 151        DEFINE(THREAD_TRANSACT_FPR0, offsetof(struct thread_struct,
 152                                          transact_fpr[0]));
 153        DEFINE(THREAD_TRANSACT_FPSCR, offsetof(struct thread_struct,
 154                                           transact_fpscr));
 155#ifdef CONFIG_VSX
 156        DEFINE(THREAD_TRANSACT_VSR0, offsetof(struct thread_struct,
 157                                          transact_fpr[0]));
 158#endif
 159        /* Local pt_regs on stack for Transactional Memory funcs. */
 160        DEFINE(TM_FRAME_SIZE, STACK_FRAME_OVERHEAD +
 161               sizeof(struct pt_regs) + 16);
 162#endif /* CONFIG_PPC_TRANSACTIONAL_MEM */
 163
 164        DEFINE(TI_FLAGS, offsetof(struct thread_info, flags));
 165        DEFINE(TI_LOCAL_FLAGS, offsetof(struct thread_info, local_flags));
 166        DEFINE(TI_PREEMPT, offsetof(struct thread_info, preempt_count));
 167        DEFINE(TI_TASK, offsetof(struct thread_info, task));
 168        DEFINE(TI_CPU, offsetof(struct thread_info, cpu));
 169
 170#ifdef CONFIG_PPC64
 171        DEFINE(DCACHEL1LINESIZE, offsetof(struct ppc64_caches, dline_size));
 172        DEFINE(DCACHEL1LOGLINESIZE, offsetof(struct ppc64_caches, log_dline_size));
 173        DEFINE(DCACHEL1LINESPERPAGE, offsetof(struct ppc64_caches, dlines_per_page));
 174        DEFINE(ICACHEL1LINESIZE, offsetof(struct ppc64_caches, iline_size));
 175        DEFINE(ICACHEL1LOGLINESIZE, offsetof(struct ppc64_caches, log_iline_size));
 176        DEFINE(ICACHEL1LINESPERPAGE, offsetof(struct ppc64_caches, ilines_per_page));
 177        /* paca */
 178        DEFINE(PACA_SIZE, sizeof(struct paca_struct));
 179        DEFINE(PACA_LOCK_TOKEN, offsetof(struct paca_struct, lock_token));
 180        DEFINE(PACAPACAINDEX, offsetof(struct paca_struct, paca_index));
 181        DEFINE(PACAPROCSTART, offsetof(struct paca_struct, cpu_start));
 182        DEFINE(PACAKSAVE, offsetof(struct paca_struct, kstack));
 183        DEFINE(PACACURRENT, offsetof(struct paca_struct, __current));
 184        DEFINE(PACASAVEDMSR, offsetof(struct paca_struct, saved_msr));
 185        DEFINE(PACASTABRR, offsetof(struct paca_struct, stab_rr));
 186        DEFINE(PACAR1, offsetof(struct paca_struct, saved_r1));
 187        DEFINE(PACATOC, offsetof(struct paca_struct, kernel_toc));
 188        DEFINE(PACAKBASE, offsetof(struct paca_struct, kernelbase));
 189        DEFINE(PACAKMSR, offsetof(struct paca_struct, kernel_msr));
 190        DEFINE(PACASOFTIRQEN, offsetof(struct paca_struct, soft_enabled));
 191        DEFINE(PACAIRQHAPPENED, offsetof(struct paca_struct, irq_happened));
 192        DEFINE(PACACONTEXTID, offsetof(struct paca_struct, context.id));
 193#ifdef CONFIG_PPC_MM_SLICES
 194        DEFINE(PACALOWSLICESPSIZE, offsetof(struct paca_struct,
 195                                            context.low_slices_psize));
 196        DEFINE(PACAHIGHSLICEPSIZE, offsetof(struct paca_struct,
 197                                            context.high_slices_psize));
 198        DEFINE(MMUPSIZEDEFSIZE, sizeof(struct mmu_psize_def));
 199#endif /* CONFIG_PPC_MM_SLICES */
 200
 201#ifdef CONFIG_PPC_BOOK3E
 202        DEFINE(PACAPGD, offsetof(struct paca_struct, pgd));
 203        DEFINE(PACA_KERNELPGD, offsetof(struct paca_struct, kernel_pgd));
 204        DEFINE(PACA_EXGEN, offsetof(struct paca_struct, exgen));
 205        DEFINE(PACA_EXTLB, offsetof(struct paca_struct, extlb));
 206        DEFINE(PACA_EXMC, offsetof(struct paca_struct, exmc));
 207        DEFINE(PACA_EXCRIT, offsetof(struct paca_struct, excrit));
 208        DEFINE(PACA_EXDBG, offsetof(struct paca_struct, exdbg));
 209        DEFINE(PACA_MC_STACK, offsetof(struct paca_struct, mc_kstack));
 210        DEFINE(PACA_CRIT_STACK, offsetof(struct paca_struct, crit_kstack));
 211        DEFINE(PACA_DBG_STACK, offsetof(struct paca_struct, dbg_kstack));
 212#endif /* CONFIG_PPC_BOOK3E */
 213
 214#ifdef CONFIG_PPC_STD_MMU_64
 215        DEFINE(PACASTABREAL, offsetof(struct paca_struct, stab_real));
 216        DEFINE(PACASTABVIRT, offsetof(struct paca_struct, stab_addr));
 217        DEFINE(PACASLBCACHE, offsetof(struct paca_struct, slb_cache));
 218        DEFINE(PACASLBCACHEPTR, offsetof(struct paca_struct, slb_cache_ptr));
 219        DEFINE(PACAVMALLOCSLLP, offsetof(struct paca_struct, vmalloc_sllp));
 220#ifdef CONFIG_PPC_MM_SLICES
 221        DEFINE(MMUPSIZESLLP, offsetof(struct mmu_psize_def, sllp));
 222#else
 223        DEFINE(PACACONTEXTSLLP, offsetof(struct paca_struct, context.sllp));
 224#endif /* CONFIG_PPC_MM_SLICES */
 225        DEFINE(PACA_EXGEN, offsetof(struct paca_struct, exgen));
 226        DEFINE(PACA_EXMC, offsetof(struct paca_struct, exmc));
 227        DEFINE(PACA_EXSLB, offsetof(struct paca_struct, exslb));
 228        DEFINE(PACALPPACAPTR, offsetof(struct paca_struct, lppaca_ptr));
 229        DEFINE(PACA_SLBSHADOWPTR, offsetof(struct paca_struct, slb_shadow_ptr));
 230        DEFINE(SLBSHADOW_STACKVSID,
 231               offsetof(struct slb_shadow, save_area[SLB_NUM_BOLTED - 1].vsid));
 232        DEFINE(SLBSHADOW_STACKESID,
 233               offsetof(struct slb_shadow, save_area[SLB_NUM_BOLTED - 1].esid));
 234        DEFINE(SLBSHADOW_SAVEAREA, offsetof(struct slb_shadow, save_area));
 235        DEFINE(LPPACA_PMCINUSE, offsetof(struct lppaca, pmcregs_in_use));
 236        DEFINE(LPPACA_DTLIDX, offsetof(struct lppaca, dtl_idx));
 237        DEFINE(LPPACA_YIELDCOUNT, offsetof(struct lppaca, yield_count));
 238        DEFINE(PACA_DTL_RIDX, offsetof(struct paca_struct, dtl_ridx));
 239#endif /* CONFIG_PPC_STD_MMU_64 */
 240        DEFINE(PACAEMERGSP, offsetof(struct paca_struct, emergency_sp));
 241        DEFINE(PACAHWCPUID, offsetof(struct paca_struct, hw_cpu_id));
 242        DEFINE(PACAKEXECSTATE, offsetof(struct paca_struct, kexec_state));
 243        DEFINE(PACA_STARTTIME, offsetof(struct paca_struct, starttime));
 244        DEFINE(PACA_STARTTIME_USER, offsetof(struct paca_struct, starttime_user));
 245        DEFINE(PACA_USER_TIME, offsetof(struct paca_struct, user_time));
 246        DEFINE(PACA_SYSTEM_TIME, offsetof(struct paca_struct, system_time));
 247        DEFINE(PACA_TRAP_SAVE, offsetof(struct paca_struct, trap_save));
 248        DEFINE(PACA_NAPSTATELOST, offsetof(struct paca_struct, nap_state_lost));
 249        DEFINE(PACA_SPRG3, offsetof(struct paca_struct, sprg3));
 250#endif /* CONFIG_PPC64 */
 251
 252        /* RTAS */
 253        DEFINE(RTASBASE, offsetof(struct rtas_t, base));
 254        DEFINE(RTASENTRY, offsetof(struct rtas_t, entry));
 255
 256        /* Interrupt register frame */
 257        DEFINE(INT_FRAME_SIZE, STACK_INT_FRAME_SIZE);
 258        DEFINE(SWITCH_FRAME_SIZE, STACK_FRAME_OVERHEAD + sizeof(struct pt_regs));
 259#ifdef CONFIG_PPC64
 260        /* Create extra stack space for SRR0 and SRR1 when calling prom/rtas. */
 261        DEFINE(PROM_FRAME_SIZE, STACK_FRAME_OVERHEAD + sizeof(struct pt_regs) + 16);
 262        DEFINE(RTAS_FRAME_SIZE, STACK_FRAME_OVERHEAD + sizeof(struct pt_regs) + 16);
 263
 264        /* hcall statistics */
 265        DEFINE(HCALL_STAT_SIZE, sizeof(struct hcall_stats));
 266        DEFINE(HCALL_STAT_CALLS, offsetof(struct hcall_stats, num_calls));
 267        DEFINE(HCALL_STAT_TB, offsetof(struct hcall_stats, tb_total));
 268        DEFINE(HCALL_STAT_PURR, offsetof(struct hcall_stats, purr_total));
 269#endif /* CONFIG_PPC64 */
 270        DEFINE(GPR0, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[0]));
 271        DEFINE(GPR1, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[1]));
 272        DEFINE(GPR2, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[2]));
 273        DEFINE(GPR3, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[3]));
 274        DEFINE(GPR4, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[4]));
 275        DEFINE(GPR5, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[5]));
 276        DEFINE(GPR6, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[6]));
 277        DEFINE(GPR7, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[7]));
 278        DEFINE(GPR8, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[8]));
 279        DEFINE(GPR9, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[9]));
 280        DEFINE(GPR10, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[10]));
 281        DEFINE(GPR11, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[11]));
 282        DEFINE(GPR12, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[12]));
 283        DEFINE(GPR13, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[13]));
 284#ifndef CONFIG_PPC64
 285        DEFINE(GPR14, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[14]));
 286        DEFINE(GPR15, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[15]));
 287        DEFINE(GPR16, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[16]));
 288        DEFINE(GPR17, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[17]));
 289        DEFINE(GPR18, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[18]));
 290        DEFINE(GPR19, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[19]));
 291        DEFINE(GPR20, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[20]));
 292        DEFINE(GPR21, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[21]));
 293        DEFINE(GPR22, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[22]));
 294        DEFINE(GPR23, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[23]));
 295        DEFINE(GPR24, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[24]));
 296        DEFINE(GPR25, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[25]));
 297        DEFINE(GPR26, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[26]));
 298        DEFINE(GPR27, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[27]));
 299        DEFINE(GPR28, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[28]));
 300        DEFINE(GPR29, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[29]));
 301        DEFINE(GPR30, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[30]));
 302        DEFINE(GPR31, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[31]));
 303#endif /* CONFIG_PPC64 */
 304        /*
 305         * Note: these symbols include _ because they overlap with special
 306         * register names
 307         */
 308        DEFINE(_NIP, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, nip));
 309        DEFINE(_MSR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, msr));
 310        DEFINE(_CTR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, ctr));
 311        DEFINE(_LINK, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, link));
 312        DEFINE(_CCR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, ccr));
 313        DEFINE(_XER, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, xer));
 314        DEFINE(_DAR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dar));
 315        DEFINE(_DSISR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dsisr));
 316        DEFINE(ORIG_GPR3, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, orig_gpr3));
 317        DEFINE(RESULT, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, result));
 318        DEFINE(_TRAP, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, trap));
 319#ifndef CONFIG_PPC64
 320        DEFINE(_MQ, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, mq));
 321        /*
 322         * The PowerPC 400-class & Book-E processors have neither the DAR
 323         * nor the DSISR SPRs. Hence, we overload them to hold the similar
 324         * DEAR and ESR SPRs for such processors.  For critical interrupts
 325         * we use them to hold SRR0 and SRR1.
 326         */
 327        DEFINE(_DEAR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dar));
 328        DEFINE(_ESR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dsisr));
 329#else /* CONFIG_PPC64 */
 330        DEFINE(SOFTE, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, softe));
 331
 332        /* These _only_ to be used with {PROM,RTAS}_FRAME_SIZE!!! */
 333        DEFINE(_SRR0, STACK_FRAME_OVERHEAD+sizeof(struct pt_regs));
 334        DEFINE(_SRR1, STACK_FRAME_OVERHEAD+sizeof(struct pt_regs)+8);
 335#endif /* CONFIG_PPC64 */
 336
 337#if defined(CONFIG_PPC32)
 338#if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
 339        DEFINE(EXC_LVL_SIZE, STACK_EXC_LVL_FRAME_SIZE);
 340        DEFINE(MAS0, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas0));
 341        /* we overload MMUCR for 44x on MAS0 since they are mutually exclusive */
 342        DEFINE(MMUCR, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas0));
 343        DEFINE(MAS1, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas1));
 344        DEFINE(MAS2, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas2));
 345        DEFINE(MAS3, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas3));
 346        DEFINE(MAS6, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas6));
 347        DEFINE(MAS7, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, mas7));
 348        DEFINE(_SRR0, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, srr0));
 349        DEFINE(_SRR1, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, srr1));
 350        DEFINE(_CSRR0, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, csrr0));
 351        DEFINE(_CSRR1, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, csrr1));
 352        DEFINE(_DSRR0, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, dsrr0));
 353        DEFINE(_DSRR1, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, dsrr1));
 354        DEFINE(SAVED_KSP_LIMIT, STACK_INT_FRAME_SIZE+offsetof(struct exception_regs, saved_ksp_limit));
 355#endif
 356#endif
 357        DEFINE(CLONE_VM, CLONE_VM);
 358        DEFINE(CLONE_UNTRACED, CLONE_UNTRACED);
 359
 360#ifndef CONFIG_PPC64
 361        DEFINE(MM_PGD, offsetof(struct mm_struct, pgd));
 362#endif /* ! CONFIG_PPC64 */
 363
 364        /* About the CPU features table */
 365        DEFINE(CPU_SPEC_FEATURES, offsetof(struct cpu_spec, cpu_features));
 366        DEFINE(CPU_SPEC_SETUP, offsetof(struct cpu_spec, cpu_setup));
 367        DEFINE(CPU_SPEC_RESTORE, offsetof(struct cpu_spec, cpu_restore));
 368
 369        DEFINE(pbe_address, offsetof(struct pbe, address));
 370        DEFINE(pbe_orig_address, offsetof(struct pbe, orig_address));
 371        DEFINE(pbe_next, offsetof(struct pbe, next));
 372
 373#ifndef CONFIG_PPC64
 374        DEFINE(TASK_SIZE, TASK_SIZE);
 375        DEFINE(NUM_USER_SEGMENTS, TASK_SIZE>>28);
 376#endif /* ! CONFIG_PPC64 */
 377
 378        /* datapage offsets for use by vdso */
 379        DEFINE(CFG_TB_ORIG_STAMP, offsetof(struct vdso_data, tb_orig_stamp));
 380        DEFINE(CFG_TB_TICKS_PER_SEC, offsetof(struct vdso_data, tb_ticks_per_sec));
 381        DEFINE(CFG_TB_TO_XS, offsetof(struct vdso_data, tb_to_xs));
 382        DEFINE(CFG_STAMP_XSEC, offsetof(struct vdso_data, stamp_xsec));
 383        DEFINE(CFG_TB_UPDATE_COUNT, offsetof(struct vdso_data, tb_update_count));
 384        DEFINE(CFG_TZ_MINUTEWEST, offsetof(struct vdso_data, tz_minuteswest));
 385        DEFINE(CFG_TZ_DSTTIME, offsetof(struct vdso_data, tz_dsttime));
 386        DEFINE(CFG_SYSCALL_MAP32, offsetof(struct vdso_data, syscall_map_32));
 387        DEFINE(WTOM_CLOCK_SEC, offsetof(struct vdso_data, wtom_clock_sec));
 388        DEFINE(WTOM_CLOCK_NSEC, offsetof(struct vdso_data, wtom_clock_nsec));
 389        DEFINE(STAMP_XTIME, offsetof(struct vdso_data, stamp_xtime));
 390        DEFINE(STAMP_SEC_FRAC, offsetof(struct vdso_data, stamp_sec_fraction));
 391        DEFINE(CFG_ICACHE_BLOCKSZ, offsetof(struct vdso_data, icache_block_size));
 392        DEFINE(CFG_DCACHE_BLOCKSZ, offsetof(struct vdso_data, dcache_block_size));
 393        DEFINE(CFG_ICACHE_LOGBLOCKSZ, offsetof(struct vdso_data, icache_log_block_size));
 394        DEFINE(CFG_DCACHE_LOGBLOCKSZ, offsetof(struct vdso_data, dcache_log_block_size));
 395#ifdef CONFIG_PPC64
 396        DEFINE(CFG_SYSCALL_MAP64, offsetof(struct vdso_data, syscall_map_64));
 397        DEFINE(TVAL64_TV_SEC, offsetof(struct timeval, tv_sec));
 398        DEFINE(TVAL64_TV_USEC, offsetof(struct timeval, tv_usec));
 399        DEFINE(TVAL32_TV_SEC, offsetof(struct compat_timeval, tv_sec));
 400        DEFINE(TVAL32_TV_USEC, offsetof(struct compat_timeval, tv_usec));
 401        DEFINE(TSPC64_TV_SEC, offsetof(struct timespec, tv_sec));
 402        DEFINE(TSPC64_TV_NSEC, offsetof(struct timespec, tv_nsec));
 403        DEFINE(TSPC32_TV_SEC, offsetof(struct compat_timespec, tv_sec));
 404        DEFINE(TSPC32_TV_NSEC, offsetof(struct compat_timespec, tv_nsec));
 405#else
 406        DEFINE(TVAL32_TV_SEC, offsetof(struct timeval, tv_sec));
 407        DEFINE(TVAL32_TV_USEC, offsetof(struct timeval, tv_usec));
 408        DEFINE(TSPC32_TV_SEC, offsetof(struct timespec, tv_sec));
 409        DEFINE(TSPC32_TV_NSEC, offsetof(struct timespec, tv_nsec));
 410#endif
 411        /* timeval/timezone offsets for use by vdso */
 412        DEFINE(TZONE_TZ_MINWEST, offsetof(struct timezone, tz_minuteswest));
 413        DEFINE(TZONE_TZ_DSTTIME, offsetof(struct timezone, tz_dsttime));
 414
 415        /* Other bits used by the vdso */
 416        DEFINE(CLOCK_REALTIME, CLOCK_REALTIME);
 417        DEFINE(CLOCK_MONOTONIC, CLOCK_MONOTONIC);
 418        DEFINE(NSEC_PER_SEC, NSEC_PER_SEC);
 419        DEFINE(CLOCK_REALTIME_RES, MONOTONIC_RES_NSEC);
 420
 421#ifdef CONFIG_BUG
 422        DEFINE(BUG_ENTRY_SIZE, sizeof(struct bug_entry));
 423#endif
 424
 425        DEFINE(PGD_TABLE_SIZE, PGD_TABLE_SIZE);
 426        DEFINE(PTE_SIZE, sizeof(pte_t));
 427
 428#ifdef CONFIG_KVM
 429        DEFINE(VCPU_HOST_STACK, offsetof(struct kvm_vcpu, arch.host_stack));
 430        DEFINE(VCPU_HOST_PID, offsetof(struct kvm_vcpu, arch.host_pid));
 431        DEFINE(VCPU_GUEST_PID, offsetof(struct kvm_vcpu, arch.pid));
 432        DEFINE(VCPU_GPRS, offsetof(struct kvm_vcpu, arch.gpr));
 433        DEFINE(VCPU_VRSAVE, offsetof(struct kvm_vcpu, arch.vrsave));
 434        DEFINE(VCPU_FPRS, offsetof(struct kvm_vcpu, arch.fpr));
 435        DEFINE(VCPU_FPSCR, offsetof(struct kvm_vcpu, arch.fpscr));
 436#ifdef CONFIG_ALTIVEC
 437        DEFINE(VCPU_VRS, offsetof(struct kvm_vcpu, arch.vr));
 438        DEFINE(VCPU_VSCR, offsetof(struct kvm_vcpu, arch.vscr));
 439#endif
 440#ifdef CONFIG_VSX
 441        DEFINE(VCPU_VSRS, offsetof(struct kvm_vcpu, arch.vsr));
 442#endif
 443        DEFINE(VCPU_XER, offsetof(struct kvm_vcpu, arch.xer));
 444        DEFINE(VCPU_CTR, offsetof(struct kvm_vcpu, arch.ctr));
 445        DEFINE(VCPU_LR, offsetof(struct kvm_vcpu, arch.lr));
 446        DEFINE(VCPU_CR, offsetof(struct kvm_vcpu, arch.cr));
 447        DEFINE(VCPU_PC, offsetof(struct kvm_vcpu, arch.pc));
 448#ifdef CONFIG_KVM_BOOK3S_64_HV
 449        DEFINE(VCPU_MSR, offsetof(struct kvm_vcpu, arch.shregs.msr));
 450        DEFINE(VCPU_SRR0, offsetof(struct kvm_vcpu, arch.shregs.srr0));
 451        DEFINE(VCPU_SRR1, offsetof(struct kvm_vcpu, arch.shregs.srr1));
 452        DEFINE(VCPU_SPRG0, offsetof(struct kvm_vcpu, arch.shregs.sprg0));
 453        DEFINE(VCPU_SPRG1, offsetof(struct kvm_vcpu, arch.shregs.sprg1));
 454        DEFINE(VCPU_SPRG2, offsetof(struct kvm_vcpu, arch.shregs.sprg2));
 455        DEFINE(VCPU_SPRG3, offsetof(struct kvm_vcpu, arch.shregs.sprg3));
 456#endif
 457        DEFINE(VCPU_SHARED_SPRG4, offsetof(struct kvm_vcpu_arch_shared, sprg4));
 458        DEFINE(VCPU_SHARED_SPRG5, offsetof(struct kvm_vcpu_arch_shared, sprg5));
 459        DEFINE(VCPU_SHARED_SPRG6, offsetof(struct kvm_vcpu_arch_shared, sprg6));
 460        DEFINE(VCPU_SHARED_SPRG7, offsetof(struct kvm_vcpu_arch_shared, sprg7));
 461        DEFINE(VCPU_SHADOW_PID, offsetof(struct kvm_vcpu, arch.shadow_pid));
 462        DEFINE(VCPU_SHADOW_PID1, offsetof(struct kvm_vcpu, arch.shadow_pid1));
 463        DEFINE(VCPU_SHARED, offsetof(struct kvm_vcpu, arch.shared));
 464        DEFINE(VCPU_SHARED_MSR, offsetof(struct kvm_vcpu_arch_shared, msr));
 465        DEFINE(VCPU_SHADOW_MSR, offsetof(struct kvm_vcpu, arch.shadow_msr));
 466
 467        DEFINE(VCPU_SHARED_MAS0, offsetof(struct kvm_vcpu_arch_shared, mas0));
 468        DEFINE(VCPU_SHARED_MAS1, offsetof(struct kvm_vcpu_arch_shared, mas1));
 469        DEFINE(VCPU_SHARED_MAS2, offsetof(struct kvm_vcpu_arch_shared, mas2));
 470        DEFINE(VCPU_SHARED_MAS7_3, offsetof(struct kvm_vcpu_arch_shared, mas7_3));
 471        DEFINE(VCPU_SHARED_MAS4, offsetof(struct kvm_vcpu_arch_shared, mas4));
 472        DEFINE(VCPU_SHARED_MAS6, offsetof(struct kvm_vcpu_arch_shared, mas6));
 473
 474        DEFINE(VCPU_KVM, offsetof(struct kvm_vcpu, kvm));
 475        DEFINE(KVM_LPID, offsetof(struct kvm, arch.lpid));
 476
 477        /* book3s */
 478#ifdef CONFIG_KVM_BOOK3S_64_HV
 479        DEFINE(KVM_SDR1, offsetof(struct kvm, arch.sdr1));
 480        DEFINE(KVM_HOST_LPID, offsetof(struct kvm, arch.host_lpid));
 481        DEFINE(KVM_HOST_LPCR, offsetof(struct kvm, arch.host_lpcr));
 482        DEFINE(KVM_HOST_SDR1, offsetof(struct kvm, arch.host_sdr1));
 483        DEFINE(KVM_TLBIE_LOCK, offsetof(struct kvm, arch.tlbie_lock));
 484        DEFINE(KVM_NEED_FLUSH, offsetof(struct kvm, arch.need_tlb_flush.bits));
 485        DEFINE(KVM_LPCR, offsetof(struct kvm, arch.lpcr));
 486        DEFINE(KVM_RMOR, offsetof(struct kvm, arch.rmor));
 487        DEFINE(KVM_VRMA_SLB_V, offsetof(struct kvm, arch.vrma_slb_v));
 488        DEFINE(VCPU_DSISR, offsetof(struct kvm_vcpu, arch.shregs.dsisr));
 489        DEFINE(VCPU_DAR, offsetof(struct kvm_vcpu, arch.shregs.dar));
 490        DEFINE(VCPU_VPA, offsetof(struct kvm_vcpu, arch.vpa.pinned_addr));
 491        DEFINE(VCPU_VPA_DIRTY, offsetof(struct kvm_vcpu, arch.vpa.dirty));
 492#endif
 493#ifdef CONFIG_PPC_BOOK3S
 494        DEFINE(VCPU_VCPUID, offsetof(struct kvm_vcpu, vcpu_id));
 495        DEFINE(VCPU_PURR, offsetof(struct kvm_vcpu, arch.purr));
 496        DEFINE(VCPU_SPURR, offsetof(struct kvm_vcpu, arch.spurr));
 497        DEFINE(VCPU_DSCR, offsetof(struct kvm_vcpu, arch.dscr));
 498        DEFINE(VCPU_AMR, offsetof(struct kvm_vcpu, arch.amr));
 499        DEFINE(VCPU_UAMOR, offsetof(struct kvm_vcpu, arch.uamor));
 500        DEFINE(VCPU_CTRL, offsetof(struct kvm_vcpu, arch.ctrl));
 501        DEFINE(VCPU_DABR, offsetof(struct kvm_vcpu, arch.dabr));
 502        DEFINE(VCPU_HFLAGS, offsetof(struct kvm_vcpu, arch.hflags));
 503        DEFINE(VCPU_DEC, offsetof(struct kvm_vcpu, arch.dec));
 504        DEFINE(VCPU_DEC_EXPIRES, offsetof(struct kvm_vcpu, arch.dec_expires));
 505        DEFINE(VCPU_PENDING_EXC, offsetof(struct kvm_vcpu, arch.pending_exceptions));
 506        DEFINE(VCPU_CEDED, offsetof(struct kvm_vcpu, arch.ceded));
 507        DEFINE(VCPU_PRODDED, offsetof(struct kvm_vcpu, arch.prodded));
 508        DEFINE(VCPU_MMCR, offsetof(struct kvm_vcpu, arch.mmcr));
 509        DEFINE(VCPU_PMC, offsetof(struct kvm_vcpu, arch.pmc));
 510        DEFINE(VCPU_SLB, offsetof(struct kvm_vcpu, arch.slb));
 511        DEFINE(VCPU_SLB_MAX, offsetof(struct kvm_vcpu, arch.slb_max));
 512        DEFINE(VCPU_SLB_NR, offsetof(struct kvm_vcpu, arch.slb_nr));
 513        DEFINE(VCPU_FAULT_DSISR, offsetof(struct kvm_vcpu, arch.fault_dsisr));
 514        DEFINE(VCPU_FAULT_DAR, offsetof(struct kvm_vcpu, arch.fault_dar));
 515        DEFINE(VCPU_LAST_INST, offsetof(struct kvm_vcpu, arch.last_inst));
 516        DEFINE(VCPU_TRAP, offsetof(struct kvm_vcpu, arch.trap));
 517        DEFINE(VCPU_PTID, offsetof(struct kvm_vcpu, arch.ptid));
 518        DEFINE(VCPU_CFAR, offsetof(struct kvm_vcpu, arch.cfar));
 519        DEFINE(VCORE_ENTRY_EXIT, offsetof(struct kvmppc_vcore, entry_exit_count));
 520        DEFINE(VCORE_NAP_COUNT, offsetof(struct kvmppc_vcore, nap_count));
 521        DEFINE(VCORE_IN_GUEST, offsetof(struct kvmppc_vcore, in_guest));
 522        DEFINE(VCORE_NAPPING_THREADS, offsetof(struct kvmppc_vcore, napping_threads));
 523        DEFINE(VCPU_SVCPU, offsetof(struct kvmppc_vcpu_book3s, shadow_vcpu) -
 524                           offsetof(struct kvmppc_vcpu_book3s, vcpu));
 525        DEFINE(VCPU_SLB_E, offsetof(struct kvmppc_slb, orige));
 526        DEFINE(VCPU_SLB_V, offsetof(struct kvmppc_slb, origv));
 527        DEFINE(VCPU_SLB_SIZE, sizeof(struct kvmppc_slb));
 528
 529#ifdef CONFIG_PPC_BOOK3S_64
 530#ifdef CONFIG_KVM_BOOK3S_PR
 531# define SVCPU_FIELD(x, f)      DEFINE(x, offsetof(struct paca_struct, shadow_vcpu.f))
 532#else
 533# define SVCPU_FIELD(x, f)
 534#endif
 535# define HSTATE_FIELD(x, f)     DEFINE(x, offsetof(struct paca_struct, kvm_hstate.f))
 536#else   /* 32-bit */
 537# define SVCPU_FIELD(x, f)      DEFINE(x, offsetof(struct kvmppc_book3s_shadow_vcpu, f))
 538# define HSTATE_FIELD(x, f)     DEFINE(x, offsetof(struct kvmppc_book3s_shadow_vcpu, hstate.f))
 539#endif
 540
 541        SVCPU_FIELD(SVCPU_CR, cr);
 542        SVCPU_FIELD(SVCPU_XER, xer);
 543        SVCPU_FIELD(SVCPU_CTR, ctr);
 544        SVCPU_FIELD(SVCPU_LR, lr);
 545        SVCPU_FIELD(SVCPU_PC, pc);
 546        SVCPU_FIELD(SVCPU_R0, gpr[0]);
 547        SVCPU_FIELD(SVCPU_R1, gpr[1]);
 548        SVCPU_FIELD(SVCPU_R2, gpr[2]);
 549        SVCPU_FIELD(SVCPU_R3, gpr[3]);
 550        SVCPU_FIELD(SVCPU_R4, gpr[4]);
 551        SVCPU_FIELD(SVCPU_R5, gpr[5]);
 552        SVCPU_FIELD(SVCPU_R6, gpr[6]);
 553        SVCPU_FIELD(SVCPU_R7, gpr[7]);
 554        SVCPU_FIELD(SVCPU_R8, gpr[8]);
 555        SVCPU_FIELD(SVCPU_R9, gpr[9]);
 556        SVCPU_FIELD(SVCPU_R10, gpr[10]);
 557        SVCPU_FIELD(SVCPU_R11, gpr[11]);
 558        SVCPU_FIELD(SVCPU_R12, gpr[12]);
 559        SVCPU_FIELD(SVCPU_R13, gpr[13]);
 560        SVCPU_FIELD(SVCPU_FAULT_DSISR, fault_dsisr);
 561        SVCPU_FIELD(SVCPU_FAULT_DAR, fault_dar);
 562        SVCPU_FIELD(SVCPU_LAST_INST, last_inst);
 563        SVCPU_FIELD(SVCPU_SHADOW_SRR1, shadow_srr1);
 564#ifdef CONFIG_PPC_BOOK3S_32
 565        SVCPU_FIELD(SVCPU_SR, sr);
 566#endif
 567#ifdef CONFIG_PPC64
 568        SVCPU_FIELD(SVCPU_SLB, slb);
 569        SVCPU_FIELD(SVCPU_SLB_MAX, slb_max);
 570#endif
 571
 572        HSTATE_FIELD(HSTATE_HOST_R1, host_r1);
 573        HSTATE_FIELD(HSTATE_HOST_R2, host_r2);
 574        HSTATE_FIELD(HSTATE_HOST_MSR, host_msr);
 575        HSTATE_FIELD(HSTATE_VMHANDLER, vmhandler);
 576        HSTATE_FIELD(HSTATE_SCRATCH0, scratch0);
 577        HSTATE_FIELD(HSTATE_SCRATCH1, scratch1);
 578        HSTATE_FIELD(HSTATE_IN_GUEST, in_guest);
 579        HSTATE_FIELD(HSTATE_RESTORE_HID5, restore_hid5);
 580        HSTATE_FIELD(HSTATE_NAPPING, napping);
 581
 582#ifdef CONFIG_KVM_BOOK3S_64_HV
 583        HSTATE_FIELD(HSTATE_HWTHREAD_REQ, hwthread_req);
 584        HSTATE_FIELD(HSTATE_HWTHREAD_STATE, hwthread_state);
 585        HSTATE_FIELD(HSTATE_KVM_VCPU, kvm_vcpu);
 586        HSTATE_FIELD(HSTATE_KVM_VCORE, kvm_vcore);
 587        HSTATE_FIELD(HSTATE_XICS_PHYS, xics_phys);
 588        HSTATE_FIELD(HSTATE_SAVED_XIRR, saved_xirr);
 589        HSTATE_FIELD(HSTATE_HOST_IPI, host_ipi);
 590        HSTATE_FIELD(HSTATE_MMCR, host_mmcr);
 591        HSTATE_FIELD(HSTATE_PMC, host_pmc);
 592        HSTATE_FIELD(HSTATE_PURR, host_purr);
 593        HSTATE_FIELD(HSTATE_SPURR, host_spurr);
 594        HSTATE_FIELD(HSTATE_DSCR, host_dscr);
 595        HSTATE_FIELD(HSTATE_DABR, dabr);
 596        HSTATE_FIELD(HSTATE_DECEXP, dec_expires);
 597        DEFINE(IPI_PRIORITY, IPI_PRIORITY);
 598#endif /* CONFIG_KVM_BOOK3S_64_HV */
 599
 600#ifdef CONFIG_PPC_BOOK3S_64
 601        HSTATE_FIELD(HSTATE_CFAR, cfar);
 602#endif /* CONFIG_PPC_BOOK3S_64 */
 603
 604#else /* CONFIG_PPC_BOOK3S */
 605        DEFINE(VCPU_CR, offsetof(struct kvm_vcpu, arch.cr));
 606        DEFINE(VCPU_XER, offsetof(struct kvm_vcpu, arch.xer));
 607        DEFINE(VCPU_LR, offsetof(struct kvm_vcpu, arch.lr));
 608        DEFINE(VCPU_CTR, offsetof(struct kvm_vcpu, arch.ctr));
 609        DEFINE(VCPU_PC, offsetof(struct kvm_vcpu, arch.pc));
 610        DEFINE(VCPU_LAST_INST, offsetof(struct kvm_vcpu, arch.last_inst));
 611        DEFINE(VCPU_FAULT_DEAR, offsetof(struct kvm_vcpu, arch.fault_dear));
 612        DEFINE(VCPU_FAULT_ESR, offsetof(struct kvm_vcpu, arch.fault_esr));
 613        DEFINE(VCPU_CRIT_SAVE, offsetof(struct kvm_vcpu, arch.crit_save));
 614#endif /* CONFIG_PPC_BOOK3S */
 615#endif /* CONFIG_KVM */
 616
 617#ifdef CONFIG_KVM_GUEST
 618        DEFINE(KVM_MAGIC_SCRATCH1, offsetof(struct kvm_vcpu_arch_shared,
 619                                            scratch1));
 620        DEFINE(KVM_MAGIC_SCRATCH2, offsetof(struct kvm_vcpu_arch_shared,
 621                                            scratch2));
 622        DEFINE(KVM_MAGIC_SCRATCH3, offsetof(struct kvm_vcpu_arch_shared,
 623                                            scratch3));
 624        DEFINE(KVM_MAGIC_INT, offsetof(struct kvm_vcpu_arch_shared,
 625                                       int_pending));
 626        DEFINE(KVM_MAGIC_MSR, offsetof(struct kvm_vcpu_arch_shared, msr));
 627        DEFINE(KVM_MAGIC_CRITICAL, offsetof(struct kvm_vcpu_arch_shared,
 628                                            critical));
 629        DEFINE(KVM_MAGIC_SR, offsetof(struct kvm_vcpu_arch_shared, sr));
 630#endif
 631
 632#ifdef CONFIG_44x
 633        DEFINE(PGD_T_LOG2, PGD_T_LOG2);
 634        DEFINE(PTE_T_LOG2, PTE_T_LOG2);
 635#endif
 636#ifdef CONFIG_PPC_FSL_BOOK3E
 637        DEFINE(TLBCAM_SIZE, sizeof(struct tlbcam));
 638        DEFINE(TLBCAM_MAS0, offsetof(struct tlbcam, MAS0));
 639        DEFINE(TLBCAM_MAS1, offsetof(struct tlbcam, MAS1));
 640        DEFINE(TLBCAM_MAS2, offsetof(struct tlbcam, MAS2));
 641        DEFINE(TLBCAM_MAS3, offsetof(struct tlbcam, MAS3));
 642        DEFINE(TLBCAM_MAS7, offsetof(struct tlbcam, MAS7));
 643#endif
 644
 645#if defined(CONFIG_KVM) && defined(CONFIG_SPE)
 646        DEFINE(VCPU_EVR, offsetof(struct kvm_vcpu, arch.evr[0]));
 647        DEFINE(VCPU_ACC, offsetof(struct kvm_vcpu, arch.acc));
 648        DEFINE(VCPU_SPEFSCR, offsetof(struct kvm_vcpu, arch.spefscr));
 649        DEFINE(VCPU_HOST_SPEFSCR, offsetof(struct kvm_vcpu, arch.host_spefscr));
 650#endif
 651
 652#ifdef CONFIG_KVM_BOOKE_HV
 653        DEFINE(VCPU_HOST_MAS4, offsetof(struct kvm_vcpu, arch.host_mas4));
 654        DEFINE(VCPU_HOST_MAS6, offsetof(struct kvm_vcpu, arch.host_mas6));
 655        DEFINE(VCPU_EPLC, offsetof(struct kvm_vcpu, arch.eplc));
 656#endif
 657
 658#ifdef CONFIG_KVM_EXIT_TIMING
 659        DEFINE(VCPU_TIMING_EXIT_TBU, offsetof(struct kvm_vcpu,
 660                                                arch.timing_exit.tv32.tbu));
 661        DEFINE(VCPU_TIMING_EXIT_TBL, offsetof(struct kvm_vcpu,
 662                                                arch.timing_exit.tv32.tbl));
 663        DEFINE(VCPU_TIMING_LAST_ENTER_TBU, offsetof(struct kvm_vcpu,
 664                                        arch.timing_last_enter.tv32.tbu));
 665        DEFINE(VCPU_TIMING_LAST_ENTER_TBL, offsetof(struct kvm_vcpu,
 666                                        arch.timing_last_enter.tv32.tbl));
 667#endif
 668
 669#ifdef CONFIG_PPC_POWERNV
 670        DEFINE(OPAL_MC_GPR3, offsetof(struct opal_machine_check_event, gpr3));
 671        DEFINE(OPAL_MC_SRR0, offsetof(struct opal_machine_check_event, srr0));
 672        DEFINE(OPAL_MC_SRR1, offsetof(struct opal_machine_check_event, srr1));
 673        DEFINE(PACA_OPAL_MC_EVT, offsetof(struct paca_struct, opal_mc_evt));
 674#endif
 675
 676        return 0;
 677}
 678