Merge tag 'kvm-3.9-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm
[linux-3.10.git] / arch / powerpc / include / asm / reg.h
index 11ae3d8..e665861 100644 (file)
 #define MSR_SF_LG      63              /* Enable 64 bit mode */
 #define MSR_ISF_LG     61              /* Interrupt 64b mode valid on 630 */
 #define MSR_HV_LG      60              /* Hypervisor state */
+#define MSR_TS_T_LG    34              /* Trans Mem state: Transactional */
+#define MSR_TS_S_LG    33              /* Trans Mem state: Suspended */
+#define MSR_TS_LG      33              /* Trans Mem state (2 bits) */
+#define MSR_TM_LG      32              /* Trans Mem Available */
 #define MSR_VEC_LG     25              /* Enable AltiVec */
 #define MSR_VSX_LG     23              /* Enable VSX */
 #define MSR_POW_LG     18              /* Enable Power Management */
 #define MSR_RI         __MASK(MSR_RI_LG)       /* Recoverable Exception */
 #define MSR_LE         __MASK(MSR_LE_LG)       /* Little Endian */
 
+#define MSR_TM         __MASK(MSR_TM_LG)       /* Transactional Mem Available */
+#define MSR_TS_N       0                       /*  Non-transactional */
+#define MSR_TS_S       __MASK(MSR_TS_S_LG)     /*  Transaction Suspended */
+#define MSR_TS_T       __MASK(MSR_TS_T_LG)     /*  Transaction Transactional */
+#define MSR_TS_MASK    (MSR_TS_T | MSR_TS_S)   /* Transaction State bits */
+#define MSR_TM_ACTIVE(x) (((x) & MSR_TS_MASK) != 0) /* Transaction active? */
+#define MSR_TM_TRANSACTIONAL(x)        (((x) & MSR_TS_MASK) == MSR_TS_T)
+#define MSR_TM_SUSPENDED(x)    (((x) & MSR_TS_MASK) == MSR_TS_S)
+
+/* Reason codes describing kernel causes for transaction aborts.  By
+   convention, bit0 is copied to TEXASR[56] (IBM bit 7) which is set if
+   the failure is persistent.
+*/
+#define TM_CAUSE_RESCHED       0xfe
+#define TM_CAUSE_TLBI          0xfc
+#define TM_CAUSE_FAC_UNAV      0xfa
+#define TM_CAUSE_SYSCALL       0xf9 /* Persistent */
+#define TM_CAUSE_MISC          0xf6
+#define TM_CAUSE_SIGNAL                0xf4
+
 #if defined(CONFIG_PPC_BOOK3S_64)
 #define MSR_64BIT      MSR_SF
 
 #define SPRN_UAMOR     0x9d    /* User Authority Mask Override Register */
 #define SPRN_AMOR      0x15d   /* Authority Mask Override Register */
 #define SPRN_ACOP      0x1F    /* Available Coprocessor Register */
+#define SPRN_TFIAR     0x81    /* Transaction Failure Inst Addr   */
+#define SPRN_TEXASR    0x82    /* Transaction EXception & Summary */
+#define SPRN_TEXASRU   0x83    /* ''      ''      ''    Upper 32  */
+#define SPRN_TFHAR     0x80    /* Transaction Failure Handler Addr */
 #define SPRN_CTRLF     0x088
 #define SPRN_CTRLT     0x098
 #define   CTRL_CT      0xc0000000      /* current thread */
 #define   CTRL_CT1     0x40000000      /* thread 1 */
 #define   CTRL_TE      0x00c00000      /* thread enable */
 #define   CTRL_RUNLATCH        0x1
+#define SPRN_DAWR      0xB4
+#define SPRN_DAWRX     0xBC
+#define   DAWRX_USER   (1UL << 0)
+#define   DAWRX_KERNEL (1UL << 1)
+#define   DAWRX_HYP    (1UL << 2)
 #define SPRN_DABR      0x3F5   /* Data Address Breakpoint Register */
-#define   DABR_TRANSLATION     (1UL << 2)
-#define   DABR_DATA_WRITE      (1UL << 1)
-#define   DABR_DATA_READ       (1UL << 0)
 #define SPRN_DABR2     0x13D   /* e300 */
 #define SPRN_DABRX     0x3F7   /* Data Address Breakpoint Register Extension */
 #define   DABRX_USER   (1UL << 0)
 #define SPRN_HRMOR     0x139   /* Real mode offset register */
 #define SPRN_HSRR0     0x13A   /* Hypervisor Save/Restore 0 */
 #define SPRN_HSRR1     0x13B   /* Hypervisor Save/Restore 1 */
+#define SPRN_FSCR      0x099   /* Facility Status & Control Register */
+#define FSCR_TAR       (1<<8)  /* Enable Target Adress Register */
+#define SPRN_TAR       0x32f   /* Target Address Register */
 #define SPRN_LPCR      0x13E   /* LPAR Control Register */
 #define   LPCR_VPM0    (1ul << (63-0))
 #define   LPCR_VPM1    (1ul << (63-1))
 #define   LPCR_RMLS    0x1C000000      /* impl dependent rmo limit sel */
 #define          LPCR_RMLS_SH  (63-37)
 #define   LPCR_ILE     0x02000000      /* !HV irqs set MSR:LE */
+#define   LPCR_AIL_0   0x00000000      /* MMU off exception offset 0x0 */
+#define   LPCR_AIL_3   0x01800000      /* MMU on exception offset 0xc00...4xxx */
 #define   LPCR_PECE    0x00007000      /* powersave exit cause enable */
 #define     LPCR_PECE0 0x00004000      /* ext. exceptions can cause exit */
 #define     LPCR_PECE1 0x00002000      /* decrementer can cause exit */
 #define SPRN_DBAT6U    0x23C   /* Data BAT 6 Upper Register */
 #define SPRN_DBAT7L    0x23F   /* Data BAT 7 Lower Register */
 #define SPRN_DBAT7U    0x23E   /* Data BAT 7 Upper Register */
+#define SPRN_PPR       0x380   /* SMT Thread status Register */
 
 #define SPRN_DEC       0x016           /* Decrement Register */
 #define SPRN_DER       0x095           /* Debug Enable Regsiter */
 #ifndef SPRN_PIR
 #define SPRN_PIR       0x3FF   /* Processor Identification Register */
 #endif
+#define SPRN_TIR       0x1BE   /* Thread Identification Register */
 #define SPRN_PTEHI     0x3D5   /* 981 7450 PTE HI word (S/W TLB load) */
 #define SPRN_PTELO     0x3D6   /* 982 7450 PTE LO word (S/W TLB load) */
 #define SPRN_PURR      0x135   /* Processor Utilization of Resources Reg */
  *        HV mode in which case it is HSPRG0
  *
  * 64-bit server:
- *     - SPRG0 unused (reserved for HV on Power4)
+ *     - SPRG0 scratch for TM recheckpoint/reclaim (reserved for HV on Power4)
  *     - SPRG2 scratch for exception vectors
  *     - SPRG3 CPU and NUMA node for VDSO getcpu (user visible)
  *      - HSPRG0 stores PACA in HV mode
 #define PVR_970MP      0x0044
 #define PVR_970GX      0x0045
 #define PVR_POWER7p    0x004A
+#define PVR_POWER8     0x004B
 #define PVR_BE         0x0070
 #define PVR_PA6T       0x0090