#ifndef _POWERPC_SPR_H_
#define _POWERPC_SPR_H_
#ifndef _LOCORE
#define mtspr(reg, val) \
__asm __volatile("mtspr %0,%1" : : "K"(reg), "r"(val))
#define mfspr(reg) \
( { register_t val; \
__asm __volatile("mfspr %0,%1" : "=r"(val) : "K"(reg)); \
val; } )
#ifndef __powerpc64__
#define mtspr64(reg,valhi,vallo,scratch) \
__asm __volatile(" \
mfmsr %0; \
insrdi %0,%5,1,0; \
mtmsrd %0; \
isync; \
\
sld %1,%1,%4; \
or %1,%1,%2; \
mtspr %3,%1; \
srd %1,%1,%4; \
\
clrldi %0,%0,1; \
mtmsrd %0; \
isync;" \
: "=r"(scratch), "=r"(valhi) : "r"(vallo), "K"(reg), "r"(32), "r"(1))
#define mfspr64upper(reg,scratch) \
( { register_t val; \
__asm __volatile(" \
mfmsr %0; \
insrdi %0,%4,1,0; \
mtmsrd %0; \
isync; \
\
mfspr %1,%2; \
srd %1,%1,%3; \
\
clrldi %0,%0,1; \
mtmsrd %0; \
isync;" \
: "=r"(scratch), "=r"(val) : "K"(reg), "r"(32), "r"(1)); \
val; } )
#endif
#endif
#define SPR_MQ 0x000
#define SPR_XER 0x001
#define SPR_DSCR 0x003
#define SPR_RTCU_R 0x004
#define SPR_RTCL_R 0x005
#define SPR_LR 0x008
#define SPR_CTR 0x009
#define SPR_DSCRP 0x011
#define SPR_DSISR 0x012
#define DSISR_DIRECT 0x80000000
#define DSISR_NOTFOUND 0x40000000
#define DSISR_PROTECT 0x08000000
#define DSISR_INVRX 0x04000000
#define DSISR_STORE 0x02000000
#define DSISR_DABR 0x00400000
#define DSISR_SEGMENT 0x00200000
#define DSISR_EAR 0x00100000
#define DSISR_MC_UE_DEFERRED 0x00008000
#define DSISR_MC_UE_TABLEWALK 0x00004000
#define DSISR_MC_DERAT_MULTIHIT 0x00000800
#define DSISR_MC_TLB_MULTIHIT 0x00000400
#define DSISR_MC_TLBIE_ERR 0x00000200
#define DSISR_MC_SLB_PARITY 0x00000100
#define DSISR_MC_SLB_MULTIHIT 0x00000080
#define DSISR_MC_BAD_REAL_LD 0x00000040
#define DSISR_MC_BAD_ADDR 0x00000020
#define SPR_DAR 0x013
#define SPR_RTCU_W 0x014
#define SPR_RTCL_W 0x015
#define SPR_DEC 0x016
#define SPR_SDR1 0x019
#define SPR_SRR0 0x01a
#define SPR_SRR1 0x01b
#define SRR1_ISI_PFAULT 0x40000000
#define SRR1_ISI_NOEXECUTE 0x10000000
#define SRR1_ISI_PP 0x08000000
#define SRR1_MCHK_DATA 0x00200000
#define SRR1_MCHK_IFETCH_M 0x081c0000
#define SRR1_MCHK_IFETCH_SLBMH 0x000c0000
#define SPR_CFAR 0x01c
#define SPR_AMR 0x01d
#define SPR_PID 0x030
#define SPR_DECAR 0x036
#define SPR_IAMR 0x03d
#define SPR_EIE 0x050
#define SPR_EID 0x051
#define SPR_NRI 0x052
#define SPR_FSCR 0x099
#define FSCR_IC_MASK 0xFF00000000000000ULL
#define FSCR_IC_FP 0x0000000000000000ULL
#define FSCR_IC_VSX 0x0100000000000000ULL
#define FSCR_IC_DSCR 0x0200000000000000ULL
#define FSCR_IC_PM 0x0300000000000000ULL
#define FSCR_IC_BHRB 0x0400000000000000ULL
#define FSCR_IC_HTM 0x0500000000000000ULL
#define FSCR_IC_EBB 0x0700000000000000ULL
#define FSCR_IC_TAR 0x0800000000000000ULL
#define FSCR_IC_STOP 0x0900000000000000ULL
#define FSCR_IC_MSG 0x0A00000000000000ULL
#define FSCR_IC_LM 0x0A00000000000000ULL
#define FSCR_IC_SCV 0x0C00000000000000ULL
#define FSCR_SCV 0x0000000000001000
#define FSCR_LM 0x0000000000000800
#define FSCR_MSGP 0x0000000000000400
#define FSCR_TAR 0x0000000000000100
#define FSCR_EBB 0x0000000000000080
#define FSCR_DSCR 0x0000000000000004
#define SPR_UAMOR 0x09d
#define SPR_DPDES 0x0b0
#define SPR_HFSCR 0xbe
#define HFSCR_BHRB 0x0000000000000010
#define HFSCR_PM 0x0000000000000008
#define HFSCR_VECVSX 0x0000000000000002
#define HFSCR_FP 0x0000000000000001
#define SPR_USPRG0 0x100
#define SPR_VRSAVE 0x100
#define SPR_SPRG0 0x110
#define SPR_SPRG1 0x111
#define SPR_SPRG2 0x112
#define SPR_SPRG3 0x113
#define SPR_SPRG4 0x114
#define SPR_SPRG5 0x115
#define SPR_SPRG6 0x116
#define SPR_SPRG7 0x117
#define SPR_SCOMC 0x114
#define SPR_SCOMD 0x115
#define SPR_ASR 0x118
#define SPR_EAR 0x11a
#define SPR_PVR 0x11f
#define MPC601 0x0001
#define MPC603 0x0003
#define MPC604 0x0004
#define MPC602 0x0005
#define MPC603e 0x0006
#define MPC603ev 0x0007
#define MPC750 0x0008
#define MPC750CL 0x7000
#define MPC604ev 0x0009
#define MPC7400 0x000c
#define MPC620 0x0014
#define IBM403 0x0020
#define IBM401A1 0x0021
#define IBM401B2 0x0022
#define IBM401C2 0x0023
#define IBM401D2 0x0024
#define IBM401E2 0x0025
#define IBM401F2 0x0026
#define IBM401G2 0x0027
#define IBMRS64II 0x0033
#define IBMRS64III 0x0034
#define IBMPOWER4 0x0035
#define IBMRS64III_2 0x0036
#define IBMRS64IV 0x0037
#define IBMPOWER4PLUS 0x0038
#define IBM970 0x0039
#define IBMPOWER5 0x003a
#define IBMPOWER5PLUS 0x003b
#define IBM970FX 0x003c
#define IBMPOWER6 0x003e
#define IBMPOWER7 0x003f
#define IBMPOWER3 0x0040
#define IBMPOWER3PLUS 0x0041
#define IBM970MP 0x0044
#define IBM970GX 0x0045
#define IBMPOWERPCA2 0x0049
#define IBMPOWER7PLUS 0x004a
#define IBMPOWER8E 0x004b
#define IBMPOWER8NVL 0x004c
#define IBMPOWER8 0x004d
#define IBMPOWER9 0x004e
#define MPC860 0x0050
#define IBMCELLBE 0x0070
#define IBMPOWER10 0x0080
#define MPC8240 0x0081
#define IBMPOWER11 0x0082
#define PA6T 0x0090
#define IBM405GP 0x4011
#define IBM405L 0x4161
#define IBM750FX 0x7000
#define MPC745X_P(v) ((v & 0xFFF8) == 0x8000)
#define MPC7450 0x8000
#define MPC7455 0x8001
#define MPC7457 0x8002
#define MPC7447A 0x8003
#define MPC7448 0x8004
#define MPC7410 0x800c
#define MPC8245 0x8081
#define FSL_E500v1 0x8020
#define FSL_E500v2 0x8021
#define FSL_E500mc 0x8023
#define FSL_E5500 0x8024
#define FSL_E6500 0x8040
#define FSL_E300C1 0x8083
#define FSL_E300C2 0x8084
#define FSL_E300C3 0x8085
#define FSL_E300C4 0x8086
#define LPCR_PECE_WAKESET (LPCR_PECE_EXT | LPCR_PECE_DECR | LPCR_PECE_ME)
#define SPR_DBSR 0x130
#define DBSR_IDE 0x80000000
#define DBSR_UDE 0x40000000
#define DBSR_MRR 0x30000000
#define DBSR_ICMP 0x08000000
#define DBSR_BRT 0x04000000
#define DBSR_IRPT 0x02000000
#define DBSR_TRAP 0x01000000
#define DBSR_IAC1 0x00800000
#define DBSR_IAC2 0x00400000
#define DBSR_IAC3 0x00200000
#define DBSR_IAC4 0x00100000
#define DBSR_DAC1R 0x00080000
#define DBSR_DAC1W 0x00040000
#define DBSR_DAC2R 0x00020000
#define DBSR_DAC2W 0x00010000
#define DBSR_RET 0x00008000
#define SPR_EPCR 0x133
#define EPCR_EXTGS 0x80000000
#define EPCR_DTLBGS 0x40000000
#define EPCR_ITLBGS 0x20000000
#define EPCR_DSIGS 0x10000000
#define EPCR_ISIGS 0x08000000
#define EPCR_DUVGS 0x04000000
#define EPCR_ICM 0x02000000
#define EPCR_GICMGS 0x01000000
#define EPCR_DGTMI 0x00800000
#define EPCR_DMIUH 0x00400000
#define EPCR_PMGS 0x00200000
#define SPR_DBCR0 0x134
#define SPR_DBCR1 0x135
#define SPR_DBCR2 0x136
#define SPR_IAC1 0x138
#define SPR_IAC2 0x139
#define SPR_IAC3 0x13a
#define SPR_IAC4 0x13b
#define SPR_HSRR0 0x13a
#define SPR_HSRR1 0x13b
#define SPR_DAC1 0x13c
#define SPR_DAC2 0x13d
#define SPR_DVC1 0x13e
#define SPR_DVC2 0x13f
#define SPR_LPCR 0x13e
#define LPCR_LPES 0x008
#define LPCR_HVICE 0x002
#define LPCR_ILE (1ULL << 25)
#define LPCR_UPRT (1ULL << 22)
#define LPCR_HR (1ULL << 20)
#define LPCR_PECE_DRBL (1ULL << 16)
#define LPCR_PECE_HDRBL (1ULL << 15)
#define LPCR_PECE_EXT (1ULL << 14)
#define LPCR_PECE_DECR (1ULL << 13)
#define LPCR_PECE_ME (1ULL << 12)
#define SPR_LPID 0x13f
#define SPR_HMER 0x150
#define SPR_HMEER 0x151
#define SPR_AMOR 0x15d
#define SPR_TIR 0x1be
#define SPR_PTCR 0x1d0
#define SPR_SPEFSCR 0x200
#define SPEFSCR_SOVH 0x80000000
#define SPEFSCR_OVH 0x40000000
#define SPEFSCR_FGH 0x20000000
#define SPEFSCR_FXH 0x10000000
#define SPEFSCR_FINVH 0x08000000
#define SPEFSCR_FDBZH 0x04000000
#define SPEFSCR_FUNFH 0x02000000
#define SPEFSCR_FOVFH 0x01000000
#define SPEFSCR_FINXS 0x00200000
#define SPEFSCR_FINVS 0x00100000
#define SPEFSCR_FDBZS 0x00080000
#define SPEFSCR_FUNFS 0x00040000
#define SPEFSCR_FOVFS 0x00020000
#define SPEFSCR_SOV 0x00008000
#define SPEFSCR_OV 0x00004000
#define SPEFSCR_FG 0x00002000
#define SPEFSCR_FX 0x00001000
#define SPEFSCR_FINV 0x00000800
#define SPEFSCR_FDBZ 0x00000400
#define SPEFSCR_FUNF 0x00000200
#define SPEFSCR_FOVF 0x00000100
#define SPEFSCR_FINXE 0x00000040
#define SPEFSCR_FINVE 0x00000020
#define SPEFSCR_FDBZE 0x00000010
#define SPEFSCR_FUNFE 0x00000008
#define SPEFSCR_FOVFE 0x00000004
#define SPEFSCR_FRMC_M 0x00000003
#define SPEFSCR_DFLT (SPEFSCR_FINVE | SPEFSCR_FDBZE | \
SPEFSCR_FUNFE | SPEFSCR_FOVFE)
#define SPR_IBAT0U 0x210
#define SPR_IBAT0L 0x211
#define SPR_IBAT1U 0x212
#define SPR_IBAT1L 0x213
#define SPR_IBAT2U 0x214
#define SPR_IBAT2L 0x215
#define SPR_IBAT3U 0x216
#define SPR_IBAT3L 0x217
#define SPR_DBAT0U 0x218
#define SPR_DBAT0L 0x219
#define SPR_DBAT1U 0x21a
#define SPR_DBAT1L 0x21b
#define SPR_DBAT2U 0x21c
#define SPR_DBAT2L 0x21d
#define SPR_DBAT3U 0x21e
#define SPR_DBAT3L 0x21f
#define SPR_IBAT4U 0x230
#define SPR_DBCR3 0x231
#define SPR_IBAT4L 0x231
#define SPR_IBAT5U 0x232
#define SPR_IBAT5L 0x233
#define SPR_DBCR4 0x233
#define SPR_IBAT6U 0x234
#define SPR_DBCR5 0x234
#define SPR_IBAT6L 0x235
#define SPR_IAC5 0x235
#define SPR_IBAT7U 0x236
#define SPR_IAC6 0x236
#define SPR_IBAT7L 0x237
#define SPR_IAC7 0x237
#define SPR_DBAT4U 0x238
#define SPR_IAC8 0x238
#define SPR_DBAT4L 0x239
#define SPR_DBAT5U 0x23a
#define SPR_DBAT5L 0x23b
#define SPR_DBAT6U 0x23c
#define SPR_DBAT6L 0x23d
#define SPR_DBAT7U 0x23e
#define SPR_DBAT7L 0x23f
#define SPR_DBCR6 0x25b
#define SPR_SPRG8 0x25c
#define SPR_MMCRA 0x312
#define SPR_PMC1 0x313
#define SPR_PMC2 0x314
#define SPR_PMC3 0x315
#define SPR_PMC4 0x316
#define SPR_PMC5 0x317
#define SPR_PMC6 0x318
#define SPR_PMC7 0x319
#define SPR_PMC8 0x31a
#define SPR_MMCR0 0x31b
#define SPR_MMCR0_FC 0x80000000
#define SPR_MMCR0_FCS 0x40000000
#define SPR_MMCR0_FCP 0x20000000
#define SPR_MMCR0_FCM1 0x10000000
#define SPR_MMCR0_FCM0 0x08000000
#define SPR_MMCR0_PMXE 0x04000000
#define SPR_MMCR0_PMAE 0x04000000
#define SPR_MMCR0_FCECE 0x02000000
#define SPR_MMCR0_TBSEL_15 0x01800000
#define SPR_MMCR0_TBSEL_19 0x01000000
#define SPR_MMCR0_TBSEL_23 0x00800000
#define SPR_MMCR0_TBSEL_31 0x00000000
#define SPR_MMCR0_TBEE 0x00400000
#define SPR_MMCR0_THRESHOLD(x) ((x) << 16)
#define SPR_MMCR0_PMC1CE 0x00008000
#define SPR_MMCR0_PMCNCE 0x00004000
#define SPR_MMCR0_TRIGGER 0x00002000
#define SPR_MMCR0_PMAO 0x00000080
#define SPR_MMCR0_FCPC 0x00001000
#define SPR_MMCR0_FC56 0x00000010
#define SPR_MMCR0_PMC1SEL(x) ((x) << 8)
#define SPR_MMCR0_PMC2SEL(x) ((x) << 1)
#define SPR_MMCR0_74XX_PMC1SEL(x) (((x) & 0x3f) << 6)
#define SPR_MMCR0_74XX_PMC2SEL(x) (((x) & 0x3f) << 0)
#define SPR_MMCR1 0x31e
#define SPR_MMCR1_PMC3SEL(x) (((x) & 0x1f) << 27)
#define SPR_MMCR1_PMC4SEL(x) (((x) & 0x1f) << 22)
#define SPR_MMCR1_PMC5SEL(x) (((x) & 0x1f) << 17)
#define SPR_MMCR1_PMC6SEL(x) (((x) & 0x1f) << 12)
#define SPR_MMCR1_74XX_PMC6SEL(x) (((x) & 0x3f) << 11)
#define SPR_MMCR1_PMC7SEL(x) (((x) & 0x1f) << 7)
#define SPR_MMCR1_PMC8SEL(x) (((x) & 0x1f) << 2)
#define SPR_MMCR1_P8_PMCSEL_ALL 0xffffffff
#define SPR_MMCR1_P8_PMCNSEL_MASK(n) (0xffUL << ((3-(n))*8))
#define SPR_MMCR1_P8_PMCNSEL(n, v) ((unsigned long)(v) << ((3-(n))*8))
#define SPR_MMCR2 0x311
#define SPR_MMCR2_CNBIT(n, bit) ((bit) << (((5 - (n)) * 9) + 10))
#define SPR_MMCR2_FCNS(n) SPR_MMCR2_CNBIT(n, 0x100ULL)
#define SPR_MMCR2_FCNP0(n) SPR_MMCR2_CNBIT(n, 0x080ULL)
#define SPR_MMCR2_FCNP1(n) SPR_MMCR2_CNBIT(n, 0x040ULL)
#define SPR_MMCR2_FCNM1(n) SPR_MMCR2_CNBIT(n, 0x020ULL)
#define SPR_MMCR2_FCNM0(n) SPR_MMCR2_CNBIT(n, 0x010ULL)
#define SPR_MMCR2_FCNWAIT(n) SPR_MMCR2_CNBIT(n, 0x008ULL)
#define SPR_MMCR2_FCNH(n) SPR_MMCR2_CNBIT(n, 0x004ULL)
#define SPR_MMCR2_FCNHSP(n) \
(SPR_MMCR2_FCNS(n) | SPR_MMCR2_FCNP0(n) | \
SPR_MMCR2_FCNP1(n) | SPR_MMCR2_FCNH(n))
#define SPR_M_TWB 0x31c
#define M_TWB_L1TB 0xfffff000
#define M_TWB_L1INDX 0x00000ffc
#define SPR_MD_TWC 0x31d
#define SPR_MD_RPN 0x31e
#define SPR_MD_TW 0x31f
#define SPR_BESCRS 0x320
#define SPR_BESCRSU 0x321
#define SPR_BESCRR 0x322
#define SPR_BESCRRU 0x323
#define SPR_EBBHR 0x324
#define SPR_EBBRR 0x325
#define SPR_BESCR 0x326
#define SPR_LMRR 0x32d
#define SPR_LMSER 0x32e
#define SPR_TAR 0x32f
#define SPR_MI_CAM 0x330
#define SPR_MI_RAM0 0x331
#define SPR_MI_RAM1 0x332
#define SPR_MD_CAM 0x338
#define SPR_MD_RAM0 0x339
#define SPR_MD_RAM1 0x33a
#define SPR_PSSCR 0x357
#define PSSCR_PLS_S 60
#define PSSCR_PLS_M (0xf << PSSCR_PLS_S)
#define PSSCR_SD (1 << 22)
#define PSSCR_ESL (1 << 21)
#define PSSCR_EC (1 << 20)
#define PSSCR_PSLL_S 16
#define PSSCR_PSLL_M (0xf << PSSCR_PSLL_S)
#define PSSCR_TR_S 8
#define PSSCR_TR_M (0x3 << PSSCR_TR_S)
#define PSSCR_MTL_S 4
#define PSSCR_MTL_M (0xf << PSSCR_MTL_S)
#define PSSCR_RL_S 0
#define PSSCR_RL_M (0xf << PSSCR_RL_S)
#define SPR_PMCR 0x374
#define SPR_UMMCR2 0x3a0
#define SPR_UMMCR0 0x3a8
#define SPR_USIA 0x3ab
#define SPR_UMMCR1 0x3ac
#define SPR_MMCR2_74XX 0x3b0
#define SPR_MMCR2_74XX_THRESHMULT_32 0x80000000
#define SPR_MMCR2_74XX_THRESHMULT_2 0x00000000
#define SPR_PMC5_74XX 0x3b1
#define SPR_PMC6_74XX 0x3b2
#define SPR_MMCR0_74XX 0x3b8
#define SPR_PMC1_74XX 0x3b9
#define SPR_PMC2_74XX 0x3ba
#define SPR_SIA 0x3bb
#define SPR_MMCR1_74XX 0x3bc
#define SPR_PMC3_74XX 0x3bd
#define SPR_PMC4_74XX 0x3be
#define SPR_DMISS 0x3d0
#define SPR_DCMP 0x3d1
#define SPR_HASH1 0x3d2
#define SPR_HASH2 0x3d3
#define SPR_IMISS 0x3d4
#define SPR_TLBMISS 0x3d4
#define SPR_DEAR 0x03d
#define SPR_ICMP 0x3d5
#define SPR_PTEHI 0x3d5
#define SPR_RPA 0x3d6
#define SPR_PTELO 0x3d6
#define SPR_TSR 0x150
#define SPR_TCR 0x154
#define TSR_ENW 0x80000000
#define TSR_WIS 0x40000000
#define TSR_WRS_MASK 0x30000000
#define TSR_WRS_NONE 0x00000000
#define TSR_WRS_CORE 0x10000000
#define TSR_WRS_CHIP 0x20000000
#define TSR_WRS_SYSTEM 0x30000000
#define TSR_PIS 0x08000000
#define TSR_DIS 0x08000000
#define TSR_FIS 0x04000000
#define TCR_WP_MASK 0xc0000000
#define TCR_WP_2_17 0x00000000
#define TCR_WP_2_21 0x40000000
#define TCR_WP_2_25 0x80000000
#define TCR_WP_2_29 0xc0000000
#define TCR_WRC_MASK 0x30000000
#define TCR_WRC_NONE 0x00000000
#define TCR_WRC_CORE 0x10000000
#define TCR_WRC_CHIP 0x20000000
#define TCR_WRC_SYSTEM 0x30000000
#define TCR_WIE 0x08000000
#define TCR_PIE 0x04000000
#define TCR_DIE 0x04000000
#define TCR_FP_MASK 0x03000000
#define TCR_FP_2_9 0x00000000
#define TCR_FP_2_13 0x01000000
#define TCR_FP_2_17 0x02000000
#define TCR_FP_2_21 0x03000000
#define TCR_FIE 0x00800000
#define TCR_ARE 0x00400000
#define SPR_HID0 0x3f0
#define SPR_HID1 0x3f1
#define SPR_HID2 0x3f3
#define SPR_HID4 0x3f4
#define SPR_HID5 0x3f6
#define SPR_HID6 0x3f9
#define SPR_CELL_TSRL 0x380
#define SPR_CELL_TSCR 0x399
#if defined(AIM)
#define SPR_PIR 0x3ff
#elif defined(BOOKE)
#define SPR_PIR 0x11e
#endif
#define DBCR0_EDM 0x80000000
#define DBCR0_IDM 0x40000000
#define DBCR0_RST_MASK 0x30000000
#define DBCR0_RST_NONE 0x00000000
#define DBCR0_RST_CORE 0x10000000
#define DBCR0_RST_CHIP 0x20000000
#define DBCR0_RST_SYSTEM 0x30000000
#define DBCR0_IC 0x08000000
#define DBCR0_BT 0x04000000
#define DBCR0_EDE 0x02000000
#define DBCR0_TDE 0x01000000
#define DBCR0_IA1 0x00800000
#define DBCR0_IA2 0x00400000
#define DBCR0_IA12 0x00200000
#define DBCR0_IA12X 0x00100000
#define DBCR0_IA3 0x00080000
#define DBCR0_IA4 0x00040000
#define DBCR0_IA34 0x00020000
#define DBCR0_IA34X 0x00010000
#define DBCR0_IA12T 0x00008000
#define DBCR0_IA34T 0x00004000
#define DBCR0_FT 0x00000001
#define SPR_IABR 0x3f2
#define SPR_DABR 0x3f5
#define SPR_MSSCR0 0x3f6
#define MSSCR0_SHDEN 0x80000000
#define MSSCR0_SHDPEN3 0x40000000
#define MSSCR0_L1INTVEN 0x38000000
#define MSSCR0_L2INTVEN 0x07000000
#define MSSCR0_DL1HWF 0x00800000
#define MSSCR0_MBO 0x00400000
#define MSSCR0_EMODE 0x00200000
#define MSSCR0_ABD 0x00100000
#define MSSCR0_MBZ 0x000fffff
#define MSSCR0_L2PFE 0x00000003
#define SPR_MSSSR0 0x3f7
#define MSSSR0_L2TAG 0x00040000
#define MSSSR0_L2DAT 0x00020000
#define MSSSR0_L3TAG 0x00010000
#define MSSSR0_L3DAT 0x00008000
#define MSSSR0_APE 0x00004000
#define MSSSR0_DPE 0x00002000
#define MSSSR0_TEA 0x00001000
#define SPR_LDSTCR 0x3f8
#define SPR_L2PM 0x3f8
#define SPR_L2CR 0x3f9
#define L2CR_L2E 0x80000000
#define L2CR_L2PE 0x40000000
#define L2CR_L2SIZ 0x30000000
#define L2SIZ_2M 0x00000000
#define L2SIZ_256K 0x10000000
#define L2SIZ_512K 0x20000000
#define L2SIZ_1M 0x30000000
#define L2CR_L2CLK 0x0e000000
#define L2CLK_DIS 0x00000000
#define L2CLK_10 0x02000000
#define L2CLK_15 0x04000000
#define L2CLK_20 0x08000000
#define L2CLK_25 0x0a000000
#define L2CLK_30 0x0c000000
#define L2CR_L2RAM 0x01800000
#define L2RAM_FLOWTHRU_BURST 0x00000000
#define L2RAM_PIPELINE_BURST 0x01000000
#define L2RAM_PIPELINE_LATE 0x01800000
#define L2CR_L2DO 0x00400000
#define L2CR_L2I 0x00200000
#define L2CR_L2IO_7450 0x00010000
#define L2CR_L2CTL 0x00100000
#define L2CR_L2WT 0x00080000
#define L2CR_L2TS 0x00040000
#define L2CR_L2OH 0x00030000
#define L2CR_L2DO_7450 0x00010000
#define L2CR_L2SL 0x00008000
#define L2CR_L2DF 0x00004000
#define L2CR_L2BYP 0x00002000
#define L2CR_L2FA 0x00001000
#define L2CR_L2HWF 0x00000800
#define L2CR_L2IO 0x00000400
#define L2CR_L2CLKSTP 0x00000200
#define L2CR_L2DRO 0x00000100
#define L2CR_L2IP 0x00000001
#define SPR_L3CR 0x3fa
#define L3CR_L3E 0x80000000
#define L3CR_L3PE 0x40000000
#define L3CR_L3APE 0x20000000
#define L3CR_L3SIZ 0x10000000
#define L3CR_L3CLKEN 0x08000000
#define L3CR_L3CLK 0x03800000
#define L3CR_L3IO 0x00400000
#define L3CR_L3CLKEXT 0x00200000
#define L3CR_L3CKSPEXT 0x00100000
#define L3CR_L3OH1 0x00080000
#define L3CR_L3SPO 0x00040000
#define L3CR_L3CKSP 0x00030000
#define L3CR_L3PSP 0x0000e000
#define L3CR_L3REP 0x00001000
#define L3CR_L3HWF 0x00000800
#define L3CR_L3I 0x00000400
#define L3CR_L3RT 0x00000300
#define L3CR_L3NIRCA 0x00000080
#define L3CR_L3DO 0x00000040
#define L3CR_PMEN 0x00000004
#define L3CR_PMSIZ 0x00000003
#define SPR_THRM1 0x3fc
#define SPR_THRM2 0x3fd
#define SPR_THRM_TIN 0x80000000
#define SPR_THRM_TIV 0x40000000
#define SPR_THRM_THRESHOLD(x) ((x) << 23)
#define SPR_THRM_TID 0x00000004
#define SPR_THRM_TIE 0x00000002
#define SPR_THRM_VALID 0x00000001
#define SPR_THRM3 0x3fe
#define SPR_THRM_TIMER(x) ((x) << 1)
#define SPR_THRM_ENABLE 0x00000001
#define SPR_FPECR 0x3fe
#define TBR_TBL 0x10c
#define TBR_TBU 0x10d
#define TBR_TBWL 0x11c
#define TBR_TBWU 0x11d
#define PMC_OVERFLOW 0x80000000
#define PMCN_NONE 0
#define PMCN_CYCLES 1
#define PMCN_ICOMP 2
#define PMCN_TBLTRANS 3
#define PCMN_IDISPATCH 4
#define PMC970N_NONE 0x8
#define PMC970N_CYCLES 0xf
#define PMC970N_ICOMP 0x9
#if defined(BOOKE)
#define SPR_MCARU 0x239
#define SPR_MCSR 0x23c
#define MCSR_MCP 0x80000000
#define MCSR_L2MMU_MHIT 0x08000000
#define MCSR_NMI 0x00100000
#define MCSR_MAV 0x00080000
#define MCSR_MEA 0x00040000
#define MCSR_IF 0x00010000
#define MCSR_LD 0x00008000
#define MCSR_ST 0x00004000
#define MCSR_LDG 0x00002000
#define MCSR_TLBSYNC 0x00000002
#define SPR_MCAR 0x23d
#define SPR_ESR 0x003e
#define ESR_PIL 0x08000000
#define ESR_PPR 0x04000000
#define ESR_PTR 0x02000000
#define ESR_ST 0x00800000
#define ESR_DLK 0x00200000
#define ESR_ILK 0x00100000
#define ESR_BO 0x00020000
#define ESR_SPE 0x00000080
#define SPR_CSRR0 0x03a
#define SPR_CSRR1 0x03b
#define SPR_MCSRR0 0x23a
#define SPR_MCSRR1 0x23b
#define SPR_DSRR0 0x23e
#define SPR_DSRR1 0x23f
#define SPR_MMUCSR0 0x3f4
#define MMUCSR0_L2TLB0_FI 0x04
#define MMUCSR0_L2TLB1_FI 0x02
#define SPR_SVR 0x3ff
#define SVR_MPC8533 0x8034
#define SVR_MPC8533E 0x803c
#define SVR_MPC8541 0x8072
#define SVR_MPC8541E 0x807a
#define SVR_MPC8548 0x8031
#define SVR_MPC8548E 0x8039
#define SVR_MPC8555 0x8071
#define SVR_MPC8555E 0x8079
#define SVR_MPC8572 0x80e0
#define SVR_MPC8572E 0x80e8
#define SVR_P1011 0x80e5
#define SVR_P1011E 0x80ed
#define SVR_P1013 0x80e7
#define SVR_P1013E 0x80ef
#define SVR_P1020 0x80e4
#define SVR_P1020E 0x80ec
#define SVR_P1022 0x80e6
#define SVR_P1022E 0x80ee
#define SVR_P2010 0x80e3
#define SVR_P2010E 0x80eb
#define SVR_P2020 0x80e2
#define SVR_P2020E 0x80ea
#define SVR_P2041 0x8210
#define SVR_P2041E 0x8218
#define SVR_P3041 0x8211
#define SVR_P3041E 0x8219
#define SVR_P4040 0x8200
#define SVR_P4040E 0x8208
#define SVR_P4080 0x8201
#define SVR_P4080E 0x8209
#define SVR_P5010 0x8221
#define SVR_P5010E 0x8229
#define SVR_P5020 0x8220
#define SVR_P5020E 0x8228
#define SVR_P5021 0x8205
#define SVR_P5021E 0x820d
#define SVR_P5040 0x8204
#define SVR_P5040E 0x820c
#define SVR_VER(svr) (((svr) >> 16) & 0xffff)
#define SPR_PID0 0x030
#define SPR_PID1 0x279
#define SPR_PID2 0x27a
#define SPR_TLB0CFG 0x2B0
#define SPR_TLB1CFG 0x2B1
#define TLBCFG_ASSOC_MASK 0xff000000
#define TLBCFG_ASSOC_SHIFT 24
#define TLBCFG_NENTRY_MASK 0x00000fff
#define SPR_IVPR 0x03f
#define SPR_IVOR0 0x190
#define SPR_IVOR1 0x191
#define SPR_IVOR2 0x192
#define SPR_IVOR3 0x193
#define SPR_IVOR4 0x194
#define SPR_IVOR5 0x195
#define SPR_IVOR6 0x196
#define SPR_IVOR7 0x197
#define SPR_IVOR8 0x198
#define SPR_IVOR9 0x199
#define SPR_IVOR10 0x19a
#define SPR_IVOR11 0x19b
#define SPR_IVOR12 0x19c
#define SPR_IVOR13 0x19d
#define SPR_IVOR14 0x19e
#define SPR_IVOR15 0x19f
#define SPR_IVOR32 0x210
#define SPR_IVOR33 0x211
#define SPR_IVOR34 0x212
#define SPR_IVOR35 0x213
#define SPR_MAS0 0x270
#define SPR_MAS1 0x271
#define SPR_MAS2 0x272
#define SPR_MAS3 0x273
#define SPR_MAS4 0x274
#define SPR_MAS5 0x275
#define SPR_MAS6 0x276
#define SPR_MAS7 0x3B0
#define SPR_MAS8 0x155
#define SPR_L1CFG0 0x203
#define SPR_L1CFG1 0x204
#define SPR_CCR1 0x378
#define CCR1_L2COBE 0x00000040
#define DCR_L2DCDCRAI 0x0000
#define DCR_L2DCDCRDI 0x0001
#define DCR_L2CR0 0x00
#define L2CR0_AS 0x30000000
#define SPR_L1CSR0 0x3F2
#define L1CSR0_DCPE 0x00010000
#define L1CSR0_DCLFR 0x00000100
#define L1CSR0_DCFI 0x00000002
#define L1CSR0_DCE 0x00000001
#define SPR_L1CSR1 0x3F3
#define L1CSR1_ICPE 0x00010000
#define L1CSR1_ICUL 0x00000400
#define L1CSR1_ICLFR 0x00000100
#define L1CSR1_ICFI 0x00000002
#define L1CSR1_ICE 0x00000001
#define SPR_L2CFG0 0x207
#define SPR_L2CSR0 0x3F9
#define L2CSR0_L2E 0x80000000
#define L2CSR0_L2PE 0x40000000
#define L2CSR0_L2FI 0x00200000
#define L2CSR0_L2LFC 0x00000400
#define SPR_BUCSR 0x3F5
#define BUCSR_BPEN 0x00000001
#define BUCSR_BBFI 0x00000200
#endif
#endif