KVM: PPC: Name generic 64-bit code generic
[safe/jmp/linux-2.6] / arch / powerpc / include / asm / paca.h
index c8a3cbf..dc3ccdf 100644 (file)
 #define _ASM_POWERPC_PACA_H
 #ifdef __KERNEL__
 
-#include       <asm/types.h>
-#include       <asm/lppaca.h>
-#include       <asm/mmu.h>
+#ifdef CONFIG_PPC64
+
+#include <linux/init.h>
+#include <asm/types.h>
+#include <asm/lppaca.h>
+#include <asm/mmu.h>
+#include <asm/page.h>
+#include <asm/exception-64e.h>
+#ifdef CONFIG_KVM_BOOK3S_64_HANDLER
+#include <asm/kvm_book3s_asm.h>
+#endif
 
 register struct paca_struct *local_paca asm("r13");
 
@@ -91,6 +99,21 @@ struct paca_struct {
        u16 slb_cache[SLB_CACHE_ENTRIES];
 #endif /* CONFIG_PPC_STD_MMU_64 */
 
+#ifdef CONFIG_PPC_BOOK3E
+       pgd_t *pgd;                     /* Current PGD */
+       pgd_t *kernel_pgd;              /* Kernel PGD */
+       u64 exgen[8] __attribute__((aligned(0x80)));
+       u64 extlb[EX_TLB_SIZE*3] __attribute__((aligned(0x80)));
+       u64 exmc[8];            /* used for machine checks */
+       u64 excrit[8];          /* used for crit interrupts */
+       u64 exdbg[8];           /* used for debug interrupts */
+
+       /* Kernel stack pointers for use by special exceptions */
+       void *mc_kstack;
+       void *crit_kstack;
+       void *dbg_kstack;
+#endif /* CONFIG_PPC_BOOK3E */
+
        mm_context_t context;
 
        /*
@@ -105,17 +128,39 @@ struct paca_struct {
        u8 soft_enabled;                /* irq soft-enable flag */
        u8 hard_enabled;                /* set if irqs are enabled in MSR */
        u8 io_sync;                     /* writel() needs spin_unlock sync */
-       u8 perf_counter_pending;        /* PM interrupt while soft-disabled */
+       u8 perf_event_pending;          /* PM interrupt while soft-disabled */
 
        /* Stuff for accurate time accounting */
        u64 user_time;                  /* accumulated usermode TB ticks */
        u64 system_time;                /* accumulated system TB ticks */
        u64 startpurr;                  /* PURR/TB value snapshot */
        u64 startspurr;                 /* SPURR value snapshot */
+
+#ifdef CONFIG_KVM_BOOK3S_64_HANDLER
+       struct  {
+               u64     esid;
+               u64     vsid;
+       } kvm_slb[64];                  /* guest SLB */
+       /* We use this to store guest state in */
+       struct kvmppc_book3s_shadow_vcpu shadow_vcpu;
+       u8 kvm_slb_max;                 /* highest used guest slb entry */
+       u8 kvm_in_guest;                /* are we inside the guest? */
+#endif
 };
 
-extern struct paca_struct paca[];
-extern void initialise_pacas(void);
+extern struct paca_struct *paca;
+extern __initdata struct paca_struct boot_paca;
+extern void initialise_paca(struct paca_struct *new_paca, int cpu);
+
+extern void allocate_pacas(void);
+extern void free_unused_pacas(void);
+
+#else /* CONFIG_PPC64 */
+
+static inline void allocate_pacas(void) { };
+static inline void free_unused_pacas(void) { };
+
+#endif /* CONFIG_PPC64 */
 
 #endif /* __KERNEL__ */
 #endif /* _ASM_POWERPC_PACA_H */