]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - include/asm-ppc/processor.h
Merge branch 'next' of git://git.denx.de/u-boot-coldfire
[karo-tx-uboot.git] / include / asm-ppc / processor.h
index 9fbbdf8c56ad0e9229281ab963cca721a1e58dd4..2841104515147921028c199f747aa7bfb923f519 100644 (file)
@@ -18,9 +18,9 @@
 #define MSR_SF         (1<<63)
 #define MSR_ISF                (1<<61)
 #endif /* CONFIG_PPC64BRIDGE */
-#define MSR_UCLE        (1<<26)         /* User-mode cache lock enable (e500) */
+#define MSR_UCLE       (1<<26)         /* User-mode cache lock enable (e500) */
 #define MSR_VEC                (1<<25)         /* Enable AltiVec(74xx) */
-#define MSR_SPE         (1<<25)         /* Enable SPE(e500) */
+#define MSR_SPE                (1<<25)         /* Enable SPE(e500) */
 #define MSR_POW                (1<<18)         /* Enable Power Management */
 #define MSR_WE         (1<<18)         /* Wait State Enable */
 #define MSR_TGPR       (1<<17)         /* TLB Update registers in use */
 #define MSR_ME         (1<<12)         /* Machine Check Enable */
 #define MSR_FE0                (1<<11)         /* Floating Exception mode 0 */
 #define MSR_SE         (1<<10)         /* Single Step */
-#define MSR_DWE         (1<<10)         /* Debug Wait Enable (4xx) */
-#define MSR_UBLE        (1<<10)         /* BTB lock enable (e500) */
+#define MSR_DWE                (1<<10)         /* Debug Wait Enable (4xx) */
+#define MSR_UBLE       (1<<10)         /* BTB lock enable (e500) */
 #define MSR_BE         (1<<9)          /* Branch Trace */
 #define MSR_DE         (1<<9)          /* Debug Exception Enable */
 #define MSR_FE1                (1<<8)          /* Floating Exception mode 1 */
 #define MSR_IP         (1<<6)          /* Exception prefix 0x000/0xFFF */
 #define MSR_IR         (1<<5)          /* Instruction Relocate */
-#define MSR_IS          (1<<5)          /* Book E Instruction space */
+#define MSR_IS         (1<<5)          /* Book E Instruction space */
 #define MSR_DR         (1<<4)          /* Data Relocate */
-#define MSR_DS          (1<<4)          /* Book E Data space */
+#define MSR_DS         (1<<4)          /* Book E Data space */
 #define MSR_PE         (1<<3)          /* Protection Enable */
 #define MSR_PX         (1<<2)          /* Protection Exclusive Mode */
-#define MSR_PMM         (1<<2)          /* Performance monitor mark bit (e500) */
+#define MSR_PMM                (1<<2)          /* Performance monitor mark bit (e500) */
 #define MSR_RI         (1<<1)          /* Recoverable Exception */
 #define MSR_LE         (1<<0)          /* Little Endian */
 
@@ -54,7 +54,7 @@
 #define MSR_           MSR_ME|MSR_RI
 #endif
 #ifndef CONFIG_E500
-#define MSR_KERNEL      MSR_|MSR_IR|MSR_DR
+#define MSR_KERNEL     MSR_|MSR_IR|MSR_DR
 #else
 #define MSR_KERNEL     MSR_ME
 #endif
 #define CONFIG_BOOKE
 #endif
 
+#define SPRN_CCR0      0x3B3   /* Core Configuration Register 0 */
+#ifdef CONFIG_BOOKE
+#define SPRN_CCR1      0x378   /* Core Configuration Register for 440 only */
+#endif
 #define SPRN_CDBCR     0x3D7   /* Cache Debug Control Register */
 #define SPRN_CTR       0x009   /* Count Register */
 #define SPRN_DABR      0x3F5   /* Data Address Breakpoint Register */
 #define SPRN_DAC1      0x3F6   /* Data Address Compare 1 */
 #define SPRN_DAC2      0x3F7   /* Data Address Compare 2 */
 #else
-#define SPRN_DAC1       0x13C   /* Book E Data Address Compare 1 */
-#define SPRN_DAC2       0x13D   /* Book E Data Address Compare 2 */
-#endif  /* CONFIG_BOOKE */
+#define SPRN_DAC1      0x13C   /* Book E Data Address Compare 1 */
+#define SPRN_DAC2      0x13D   /* Book E Data Address Compare 2 */
+#endif /* CONFIG_BOOKE */
 #define SPRN_DAR       0x013   /* Data Address Register */
 #define SPRN_DBAT0L    0x219   /* Data BAT 0 Lower Register */
 #define SPRN_DBAT0U    0x218   /* Data BAT 0 Upper Register */
 #define SPRN_DBAT2U    0x21C   /* Data BAT 2 Upper Register */
 #define SPRN_DBAT3L    0x21F   /* Data BAT 3 Lower Register */
 #define SPRN_DBAT3U    0x21E   /* Data BAT 3 Upper Register */
-#define SPRN_DBAT4L    0x239   /* Data BAT 4 Lower Register */
-#define SPRN_DBAT4U    0x238   /* Data BAT 4 Upper Register */
-#define SPRN_DBAT5L    0x23B   /* Data BAT 5 Lower Register */
-#define SPRN_DBAT5U    0x23A   /* Data BAT 5 Upper Register */
-#define SPRN_DBAT6L    0x23D   /* Data BAT 6 Lower Register */
-#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 Lower Register */
+#define SPRN_DBAT4L    0x239   /* Data BAT 4 Lower Register */
+#define SPRN_DBAT4U    0x238   /* Data BAT 4 Upper Register */
+#define SPRN_DBAT5L    0x23B   /* Data BAT 5 Lower Register */
+#define SPRN_DBAT5U    0x23A   /* Data BAT 5 Upper Register */
+#define SPRN_DBAT6L    0x23D   /* Data BAT 6 Lower Register */
+#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 Lower Register */
 #define SPRN_DBCR      0x3F2   /* Debug Control Regsiter */
 #define   DBCR_EDM     0x80000000
 #define   DBCR_IDM     0x40000000
 #define   DBCR_JOI     0x00000002      /* JTAG Serial Outbound Int. Enable */
 #define   DBCR_JII     0x00000001      /* JTAG Serial Inbound Int. Enable */
 #ifndef CONFIG_BOOKE
-#define SPRN_DBCR0      0x3F2           /* Debug Control Register 0 */
+#define SPRN_DBCR0     0x3F2           /* Debug Control Register 0 */
 #else
-#define SPRN_DBCR0      0x134           /* Book E Debug Control Register 0 */
+#define SPRN_DBCR0     0x134           /* Book E Debug Control Register 0 */
 #endif /* CONFIG_BOOKE */
 #ifndef CONFIG_BOOKE
 #define SPRN_DBCR1     0x3BD   /* Debug Control Register 1 */
 #define SPRN_DBSR      0x3F0   /* Debug Status Register */
 #else
-#define SPRN_DBCR1      0x135           /* Book E Debug Control Register 1 */
-#define SPRN_DBSR       0x130           /* Book E Debug Status Register */
-#define   DBSR_IC           0x08000000  /* Book E Instruction Completion  */
-#define   DBSR_TIE          0x01000000  /* Book E Trap Instruction Event */
+#define SPRN_DBCR1     0x135           /* Book E Debug Control Register 1 */
+#ifdef CONFIG_BOOKE
+#define        SPRN_DBDR       0x3f3           /* Debug Data Register */
+#endif
+#define SPRN_DBSR      0x130           /* Book E Debug Status Register */
+#define   DBSR_IC          0x08000000  /* Book E Instruction Completion  */
+#define   DBSR_TIE         0x01000000  /* Book E Trap Instruction Event */
 #endif /* CONFIG_BOOKE */
 #define SPRN_DCCR      0x3FA   /* Data Cache Cacheability Register */
 #define   DCCR_NOCACHE         0       /* Noncacheable */
 #define   DCCR_CACHE           1       /* Cacheable */
+#ifndef CONFIG_BOOKE
+#define        SPRN_DCDBTRL    0x39c   /* Data Cache Debug Tag Register Low */
+#define        SPRN_DCDBTRH    0x39d   /* Data Cache Debug Tag Register High */
+#endif
 #define SPRN_DCMP      0x3D1   /* Data TLB Compare Register */
 #define SPRN_DCWR      0x3BA   /* Data Cache Write-thru Register */
 #define   DCWR_COPY            0       /* Copy-back */
 #ifndef CONFIG_BOOKE
 #define SPRN_DEAR      0x3D5   /* Data Error Address Register */
 #else
-#define SPRN_DEAR       0x03D   /* Book E Data Error Address Register */
+#define SPRN_DEAR      0x03D   /* Book E Data Error Address Register */
 #endif /* CONFIG_BOOKE */
 #define SPRN_DEC       0x016   /* Decrement Register */
 #define SPRN_DMISS     0x3D0   /* Data TLB Miss Register */
+#ifdef CONFIG_BOOKE
+#define        SPRN_DNV0       0x390   /* Data Cache Normal Victim 0 */
+#define        SPRN_DNV1       0x391   /* Data Cache Normal Victim 1 */
+#define        SPRN_DNV2       0x392   /* Data Cache Normal Victim 2 */
+#define        SPRN_DNV3       0x393   /* Data Cache Normal Victim 3 */
+#endif
 #define SPRN_DSISR     0x012   /* Data Storage Interrupt Status Register */
+#ifdef CONFIG_BOOKE
+#define        SPRN_DTV0       0x394   /* Data Cache Transient Victim 0 */
+#define        SPRN_DTV1       0x395   /* Data Cache Transient Victim 1 */
+#define        SPRN_DTV2       0x396   /* Data Cache Transient Victim 2 */
+#define        SPRN_DTV3       0x397   /* Data Cache Transient Victim 3 */
+#define        SPRN_DVLIM      0x398   /* Data Cache Victim Limit */
+#endif
 #define SPRN_EAR       0x11A   /* External Address Register */
 #ifndef CONFIG_BOOKE
 #define SPRN_ESR       0x3D4   /* Exception Syndrome Register */
 #else
-#define SPRN_ESR        0x03E           /* Book E Exception Syndrome Register */
+#define SPRN_ESR       0x03E           /* Book E Exception Syndrome Register */
 #endif /* CONFIG_BOOKE */
 #define   ESR_IMCP     0x80000000      /* Instr. Machine Check - Protection */
 #define   ESR_IMCN     0x40000000      /* Instr. Machine Check - Non-config */
 #define SPRN_IAC1      0x3F4   /* Instruction Address Compare 1 */
 #define SPRN_IAC2      0x3F5   /* Instruction Address Compare 2 */
 #else
-#define SPRN_IAC1       0x138   /* Book E Instruction Address Compare 1 */
-#define SPRN_IAC2       0x139   /* Book E Instruction Address Compare 2 */
+#define SPRN_IAC1      0x138   /* Book E Instruction Address Compare 1 */
+#define SPRN_IAC2      0x139   /* Book E Instruction Address Compare 2 */
 #endif /* CONFIG_BOOKE */
 #define SPRN_IBAT0L    0x211   /* Instruction BAT 0 Lower Register */
 #define SPRN_IBAT0U    0x210   /* Instruction BAT 0 Upper Register */
 #define SPRN_IBAT2U    0x214   /* Instruction BAT 2 Upper Register */
 #define SPRN_IBAT3L    0x217   /* Instruction BAT 3 Lower Register */
 #define SPRN_IBAT3U    0x216   /* Instruction BAT 3 Upper Register */
-#define SPRN_IBAT4L    0x231   /* Instruction BAT 4 Lower Register */
-#define SPRN_IBAT4U    0x230   /* Instruction BAT 4 Upper Register */
-#define SPRN_IBAT5L    0x233   /* Instruction BAT 5 Lower Register */
-#define SPRN_IBAT5U    0x232   /* Instruction BAT 5 Upper Register */
-#define SPRN_IBAT6L    0x235   /* Instruction BAT 6 Lower Register */
-#define SPRN_IBAT6U    0x234   /* Instruction BAT 6 Upper Register */
-#define SPRN_IBAT7L    0x237   /* Instruction BAT 7 Lower Register */
-#define SPRN_IBAT7U    0x236   /* Instruction BAT 7 Upper Register */
+#define SPRN_IBAT4L    0x231   /* Instruction BAT 4 Lower Register */
+#define SPRN_IBAT4U    0x230   /* Instruction BAT 4 Upper Register */
+#define SPRN_IBAT5L    0x233   /* Instruction BAT 5 Lower Register */
+#define SPRN_IBAT5U    0x232   /* Instruction BAT 5 Upper Register */
+#define SPRN_IBAT6L    0x235   /* Instruction BAT 6 Lower Register */
+#define SPRN_IBAT6U    0x234   /* Instruction BAT 6 Upper Register */
+#define SPRN_IBAT7L    0x237   /* Instruction BAT 7 Lower Register */
+#define SPRN_IBAT7U    0x236   /* Instruction BAT 7 Upper Register */
 #define SPRN_ICCR      0x3FB   /* Instruction Cache Cacheability Register */
 #define   ICCR_NOCACHE         0       /* Noncacheable */
 #define   ICCR_CACHE           1       /* Cacheable */
 #define SPRN_ICDBDR    0x3D3   /* Instruction Cache Debug Data Register */
+#ifdef CONFIG_BOOKE
+#define SPRN_ICDBTRL   0x39e   /* instruction cache debug tag register low */
+#define        SPRN_ICDBTRH    0x39f   /* instruction cache debug tag register high */
+#endif
 #define SPRN_ICMP      0x3D5   /* Instruction TLB Compare Register */
 #define SPRN_ICTC      0x3FB   /* Instruction Cache Throttling Control Reg */
 #define SPRN_IMISS     0x3D4   /* Instruction TLB Miss Register */
 #define SPRN_IMMR      0x27E   /* Internal Memory Map Register */
-#define SPRN_LDSTCR    0x3F8   /* Load/Store Control Register */
+#ifdef CONFIG_BOOKE
+#define        SPRN_INV0       0x370   /* Instruction Cache Normal Victim 0 */
+#define        SPRN_INV1       0x371   /* Instruction Cache Normal Victim 1 */
+#define        SPRN_INV2       0x372   /* Instruction Cache Normal Victim 2 */
+#define        SPRN_INV3       0x373   /* Instruction Cache Normal Victim 3 */
+#define        SPRN_ITV0       0x374   /* Instruction Cache Transient Victim 0 */
+#define        SPRN_ITV1       0x375   /* Instruction Cache Transient Victim 1 */
+#define        SPRN_ITV2       0x376   /* Instruction Cache Transient Victim 2 */
+#define        SPRN_ITV3       0x377   /* Instruction Cache Transient Victim 3 */
+#define        SPRN_IVLIM      0x399   /* Instruction Cache Victim Limit */
+#endif
+#define SPRN_LDSTCR    0x3F8   /* Load/Store Control Register */
 #define SPRN_L2CR      0x3F9   /* Level 2 Cache Control Regsiter */
 #define SPRN_LR                0x008   /* Link Register */
-#define SPRN_MBAR       0x137   /* System memory base address */
+#define SPRN_MBAR      0x137   /* System memory base address */
 #define SPRN_MMCR0     0x3B8   /* Monitor Mode Control Register 0 */
 #define SPRN_MMCR1     0x3BC   /* Monitor Mode Control Register 1 */
+#ifdef CONFIG_BOOKE
+#define        SPRN_MMUCR      0x3b2   /* MMU Control Register */
+#endif
 #define SPRN_PBL1      0x3FC   /* Protection Bound Lower 1 */
 #define SPRN_PBL2      0x3FE   /* Protection Bound Lower 2 */
 #define SPRN_PBU1      0x3FD   /* Protection Bound Upper 1 */
 #define SPRN_PID       0x3B1   /* Process ID */
 #define SPRN_PIR       0x3FF   /* Processor Identification Register */
 #else
-#define SPRN_PID        0x030   /* Book E Process ID */
-#define SPRN_PIR        0x11E   /* Book E Processor Identification Register */
+#define SPRN_PID       0x030   /* Book E Process ID */
+#define SPRN_PIR       0x11E   /* Book E Processor Identification Register */
 #endif /* CONFIG_BOOKE */
 #define SPRN_PIT       0x3DB   /* Programmable Interval Timer */
 #define SPRN_PMC1      0x3B9   /* Performance Counter Register 1 */
 #define SPRN_PMC4      0x3BE   /* Performance Counter Register 4 */
 #define SPRN_PVR       0x11F   /* Processor Version Register */
 #define SPRN_RPA       0x3D6   /* Required Physical Address Register */
+#ifdef CONFIG_BOOKE
+#define        SPRN_RSTCFG     0x39b   /* Reset Configuration */
+#endif
 #define SPRN_SDA       0x3BF   /* Sampled Data Address Register */
 #define SPRN_SDR1      0x019   /* MMU Hash Base Register */
 #define SPRN_SGR       0x3B9   /* Storage Guarded Register */
 #define SPRN_SRR1      0x01B   /* Save/Restore Register 1 */
 #define SPRN_SRR2      0x3DE   /* Save/Restore Register 2 */
 #define SPRN_SRR3      0x3DF   /* Save/Restore Register 3 */
+
 #ifdef CONFIG_BOOKE
 #define SPRN_SVR       0x3FF   /* System Version Register */
 #else
 #ifndef CONFIG_BOOKE
 #define SPRN_TCR       0x3DA   /* Timer Control Register */
 #else
-#define SPRN_TCR        0x154   /* Book E Timer Control Register */
+#define SPRN_TCR       0x154   /* Book E Timer Control Register */
 #endif /* CONFIG_BOOKE */
 #define   TCR_WP(x)            (((x)&0x3)<<30) /* WDT Period */
 #define     WP_2_17            0               /* 2^17 clocks */
 #define SPRN_THRM2     0x3FD   /* Thermal Management Register 2 */
 #define SPRN_THRM3     0x3FE   /* Thermal Management Register 3 */
 #define   THRM3_E              (1<<31)
-#define SPRN_TLBMISS    0x3D4   /* 980 7450 TLB Miss Register */
+#define SPRN_TLBMISS   0x3D4   /* 980 7450 TLB Miss Register */
 #ifndef CONFIG_BOOKE
 #define SPRN_TSR       0x3D8   /* Timer Status Register */
 #else
-#define SPRN_TSR        0x150   /* Book E Timer Status Register */
+#define SPRN_TSR       0x150   /* Book E Timer Status Register */
 #endif /* CONFIG_BOOKE */
 #define   TSR_ENW              0x80000000      /* Enable Next Watchdog */
 #define   TSR_WIS              0x40000000      /* WDT Interrupt Status */
 #define SPRN_IVOR15    0x19f   /* Interrupt Vector Offset Register 15 */
 
 /* e500 definitions */
-#define SPRN_L1CSR0     0x3f2   /* L1 Data Cache Control and Status Register 0 */
-#define   L1CSR0_CPE            0x00010000     /* Data Cache Parity Enable */
-#define   L1CSR0_DCFI           0x00000002      /* Data Cache Flash Invalidate */
-#define   L1CSR0_DCE            0x00000001      /* Data Cache Enable */
-#define SPRN_L1CSR1     0x3f3   /* L1 Instruction Cache Control and Status Register 1 */
-#define   L1CSR1_CPE            0x00010000     /* Instruction Cache Parity Enable */
-#define   L1CSR1_ICFI           0x00000002      /* Instruction Cache Flash Invalidate */
-#define   L1CSR1_ICE            0x00000001      /* Instruction Cache Enable */
-
+#define SPRN_L1CFG0    0x203   /* L1 Cache Configuration Register 0 */
+#define SPRN_L1CFG1    0x204   /* L1 Cache Configuration Register 1 */
+#define SPRN_L2CFG0    0x207   /* L2 Cache Configuration Register 0 */
+#define SPRN_L1CSR0    0x3f2   /* L1 Data Cache Control and Status Register 0 */
+#define   L1CSR0_CPE           0x00010000      /* Data Cache Parity Enable */
+#define   L1CSR0_DCFI          0x00000002      /* Data Cache Flash Invalidate */
+#define   L1CSR0_DCE           0x00000001      /* Data Cache Enable */
+#define SPRN_L1CSR1    0x3f3   /* L1 Instruction Cache Control and Status Register 1 */
+#define   L1CSR1_CPE           0x00010000      /* Instruction Cache Parity Enable */
+#define   L1CSR1_ICFI          0x00000002      /* Instruction Cache Flash Invalidate */
+#define   L1CSR1_ICE           0x00000001      /* Instruction Cache Enable */
+#define SPRN_L1CSR2    0x25e   /* L1 Data Cache Control and Status Register 2 */
+#define SPRN_L2CSR0    0x3f9   /* L2 Data Cache Control and Status Register 0 */
+#define   L2CSR0_L2E           0x80000000      /* L2 Cache Enable */
+#define   L2CSR0_L2PE          0x40000000      /* L2 Cache Parity/ECC Enable */
+#define   L2CSR0_L2WP          0x1c000000      /* L2 I/D Way Partioning */
+#define   L2CSR0_L2CM          0x03000000      /* L2 Cache Coherency Mode */
+#define   L2CSR0_L2FI          0x00200000      /* L2 Cache Flash Invalidate */
+#define   L2CSR0_L2IO          0x00100000      /* L2 Cache Instruction Only */
+#define   L2CSR0_L2DO          0x00010000      /* L2 Cache Data Only */
+#define   L2CSR0_L2REP         0x00003000      /* L2 Line Replacement Algo */
+#define   L2CSR0_L2FL          0x00000800      /* L2 Cache Flush */
+#define   L2CSR0_L2LFC         0x00000400      /* L2 Cache Lock Flash Clear */
+#define   L2CSR0_L2LOA         0x00000080      /* L2 Cache Lock Overflow Allocate */
+#define   L2CSR0_L2LO          0x00000020      /* L2 Cache Lock Overflow */
+#define SPRN_L2CSR1    0x3fa   /* L2 Data Cache Control and Status Register 1 */
+
+#define SPRN_TLB0CFG   0x2B0   /* TLB 0 Config Register */
+#define SPRN_TLB1CFG   0x2B1   /* TLB 1 Config Register */
 #define SPRN_MMUCSR0   0x3f4   /* MMU control and status register 0 */
-#define SPRN_MAS0       0x270   /* MMU Assist Register 0 */
-#define SPRN_MAS1       0x271   /* MMU Assist Register 1 */
-#define SPRN_MAS2       0x272   /* MMU Assist Register 2 */
-#define SPRN_MAS3       0x273   /* MMU Assist Register 3 */
-#define SPRN_MAS4       0x274   /* MMU Assist Register 4 */
-#define SPRN_MAS5       0x275   /* MMU Assist Register 5 */
-#define SPRN_MAS6       0x276   /* MMU Assist Register 6 */
+#define SPRN_MAS0      0x270   /* MMU Assist Register 0 */
+#define SPRN_MAS1      0x271   /* MMU Assist Register 1 */
+#define SPRN_MAS2      0x272   /* MMU Assist Register 2 */
+#define SPRN_MAS3      0x273   /* MMU Assist Register 3 */
+#define SPRN_MAS4      0x274   /* MMU Assist Register 4 */
+#define SPRN_MAS5      0x275   /* MMU Assist Register 5 */
+#define SPRN_MAS6      0x276   /* MMU Assist Register 6 */
 #define SPRN_MAS7      0x3B0   /* MMU Assist Register 7 */
 
-#define SPRN_IVOR32     0x210   /* Interrupt Vector Offset Register 32 */
-#define SPRN_IVOR33     0x211   /* Interrupt Vector Offset Register 33 */
-#define SPRN_IVOR34     0x212   /* Interrupt Vector Offset Register 34 */
-#define SPRN_IVOR35     0x213   /* Interrupt Vector Offset Register 35 */
-#define SPRN_SPEFSCR    0x200   /* SPE & Embedded FP Status & Control */
+#define SPRN_IVOR32    0x210   /* Interrupt Vector Offset Register 32 */
+#define SPRN_IVOR33    0x211   /* Interrupt Vector Offset Register 33 */
+#define SPRN_IVOR34    0x212   /* Interrupt Vector Offset Register 34 */
+#define SPRN_IVOR35    0x213   /* Interrupt Vector Offset Register 35 */
+#define SPRN_SPEFSCR   0x200   /* SPE & Embedded FP Status & Control */
 
-#define SPRN_MCSRR0     0x23a   /* Machine Check Save and Restore Register 0 */
-#define SPRN_MCSRR1     0x23b   /* Machine Check Save and Restore Register 1 */
+#define SPRN_MCSRR0    0x23a   /* Machine Check Save and Restore Register 0 */
+#define SPRN_MCSRR1    0x23b   /* Machine Check Save and Restore Register 1 */
 #define SPRN_BUCSR     0x3f5   /* Branch Control and Status Register */
-#define SPRN_BBEAR      0x201   /* Branch Buffer Entry Address Register */
-#define SPRN_BBTAR      0x202   /* Branch Buffer Target Address Register */
-#define SPRN_PID1       0x279   /* Process ID Register 1 */
-#define SPRN_PID2       0x27a   /* Process ID Register 2 */
+#define SPRN_BBEAR     0x201   /* Branch Buffer Entry Address Register */
+#define SPRN_BBTAR     0x202   /* Branch Buffer Target Address Register */
+#define SPRN_PID1      0x279   /* Process ID Register 1 */
+#define SPRN_PID2      0x27a   /* Process ID Register 2 */
 #define SPRN_MCSR      0x23c   /* Machine Check Syndrome register */
 #define SPRN_MCAR      0x23d   /* Machine Check Address register */
-#ifdef CONFIG_440
 #define MCSR_MCS       0x80000000      /* Machine Check Summary */
 #define MCSR_IB                0x40000000      /* Instruction PLB Error */
+#if defined(CONFIG_440)
 #define MCSR_DRB       0x20000000      /* Data Read PLB Error */
 #define MCSR_DWB       0x10000000      /* Data Write PLB Error */
+#else
+#define MCSR_DB                0x20000000      /* Data PLB Error */
+#endif /* defined(CONFIG_440) */
 #define MCSR_TLBP      0x08000000      /* TLB Parity Error */
 #define MCSR_ICP       0x04000000      /* I-Cache Parity Error */
 #define MCSR_DCSP      0x02000000      /* D-Cache Search Parity Error */
 #define MCSR_DCFP      0x01000000      /* D-Cache Flush Parity Error */
 #define MCSR_IMPE      0x00800000      /* Imprecise Machine Check Exception */
-#endif
-#define ESR_ST          0x00800000      /* Store Operation */
+#define ESR_ST         0x00800000      /* Store Operation */
 
 #if defined(CONFIG_MPC86xx)
 #define SPRN_MSSCR0    0x3f6
 #define SPRN_MSSSR0    0x3f7
 #endif
 
-
 /* Short-hand versions for a number of the above SPRNs */
 
 #define CTR    SPRN_CTR        /* Counter Register */
 #define DBAT2U SPRN_DBAT2U     /* Data BAT 2 Upper Register */
 #define DBAT3L SPRN_DBAT3L     /* Data BAT 3 Lower Register */
 #define DBAT3U SPRN_DBAT3U     /* Data BAT 3 Upper Register */
-#define DBAT4L SPRN_DBAT4L     /* Data BAT 4 Lower Register */
-#define DBAT4U SPRN_DBAT4U     /* Data BAT 4 Upper Register */
-#define DBAT5L SPRN_DBAT5L     /* Data BAT 5 Lower Register */
-#define DBAT5U SPRN_DBAT5U     /* Data BAT 5 Upper Register */
-#define DBAT6L SPRN_DBAT6L     /* Data BAT 6 Lower Register */
-#define DBAT6U SPRN_DBAT6U     /* Data BAT 6 Upper Register */
-#define DBAT7L SPRN_DBAT7L     /* Data BAT 7 Lower Register */
-#define DBAT7U SPRN_DBAT7U     /* Data BAT 7 Upper Register */
+#define DBAT4L SPRN_DBAT4L     /* Data BAT 4 Lower Register */
+#define DBAT4U SPRN_DBAT4U     /* Data BAT 4 Upper Register */
+#define DBAT5L SPRN_DBAT5L     /* Data BAT 5 Lower Register */
+#define DBAT5U SPRN_DBAT5U     /* Data BAT 5 Upper Register */
+#define DBAT6L SPRN_DBAT6L     /* Data BAT 6 Lower Register */
+#define DBAT6U SPRN_DBAT6U     /* Data BAT 6 Upper Register */
+#define DBAT7L SPRN_DBAT7L     /* Data BAT 7 Lower Register */
+#define DBAT7U SPRN_DBAT7U     /* Data BAT 7 Upper Register */
 #define DBCR0  SPRN_DBCR0      /* Debug Control Register 0 */
 #define DBCR1  SPRN_DBCR1      /* Debug Control Register 1 */
 #define DBSR   SPRN_DBSR       /* Debug Status Register */
 #define ICMP   SPRN_ICMP       /* Instruction TLB Compare Register */
 #define IMISS  SPRN_IMISS      /* Instruction TLB Miss Register */
 #define IMMR   SPRN_IMMR       /* PPC 860/821 Internal Memory Map Register */
-#define LDSTCR SPRN_LDSTCR     /* Load/Store Control Register */
+#define LDSTCR SPRN_LDSTCR     /* Load/Store Control Register */
 #define L2CR   SPRN_L2CR       /* PPC 750 L2 control register */
 #define LR     SPRN_LR
-#define MBAR    SPRN_MBAR       /* System memory base address */
+#define MBAR   SPRN_MBAR       /* System memory base address */
 #if defined(CONFIG_MPC86xx)
 #define MSSCR0 SPRN_MSSCR0
 #endif
 #define SPR1   SPRN_SPRG1
 #define SPR2   SPRN_SPRG2
 #define SPR3   SPRN_SPRG3
-#define SPRG0   SPRN_SPRG0
-#define SPRG1   SPRN_SPRG1
-#define SPRG2   SPRN_SPRG2
-#define SPRG3   SPRN_SPRG3
-#define SPRG4   SPRN_SPRG4
-#define SPRG5   SPRN_SPRG5
-#define SPRG6   SPRN_SPRG6
-#define SPRG7   SPRN_SPRG7
+#define SPRG0  SPRN_SPRG0
+#define SPRG1  SPRN_SPRG1
+#define SPRG2  SPRN_SPRG2
+#define SPRG3  SPRN_SPRG3
+#define SPRG4  SPRN_SPRG4
+#define SPRG5  SPRN_SPRG5
+#define SPRG6  SPRN_SPRG6
+#define SPRG7  SPRN_SPRG7
 #define SRR0   SPRN_SRR0       /* Save and Restore Register 0 */
 #define SRR1   SPRN_SRR1       /* Save and Restore Register 1 */
 #define SRR2   SPRN_SRR2       /* Save and Restore Register 2 */
 #define MCSRR1 SPRN_MCSRR1
 #define L1CSR0 SPRN_L1CSR0
 #define L1CSR1 SPRN_L1CSR1
+#define L1CSR2 SPRN_L1CSR2
+#define L1CFG0 SPRN_L1CFG0
+#define L1CFG1 SPRN_L1CFG1
+#define L2CFG0 SPRN_L2CFG0
+#define L2CSR0 SPRN_L2CSR0
+#define L2CSR1 SPRN_L2CSR1
 #define MCSR   SPRN_MCSR
 #define MMUCSR0        SPRN_MMUCSR0
 #define BUCSR  SPRN_BUCSR
 #define DCRN_DMACC0    0x0C4   /* DMA Chained Count Register 0 */
 #define DCRN_DMACC1    0x0CC   /* DMA Chained Count Register 1 */
 #define DCRN_DMACC2    0x0D4   /* DMA Chained Count Register 2 */
-#define DCRN_DMACC3    0x0DC    /* DMA Chained Count Register 3 */
-#define DCRN_DMACR0    0x0C0    /* DMA Channel Control Register 0 */
-#define DCRN_DMACR1    0x0C8    /* DMA Channel Control Register 1 */
-#define DCRN_DMACR2    0x0D0    /* DMA Channel Control Register 2 */
-#define DCRN_DMACR3    0x0D8    /* DMA Channel Control Register 3 */
-#define DCRN_DMACT0    0x0C1    /* DMA Count Register 0 */
-#define DCRN_DMACT1    0x0C9    /* DMA Count Register 1 */
-#define DCRN_DMACT2    0x0D1    /* DMA Count Register 2 */
-#define DCRN_DMACT3    0x0D9    /* DMA Count Register 3 */
-#define DCRN_DMADA0    0x0C2    /* DMA Destination Address Register 0 */
-#define DCRN_DMADA1    0x0CA    /* DMA Destination Address Register 1 */
-#define DCRN_DMADA2    0x0D2    /* DMA Destination Address Register 2 */
-#define DCRN_DMADA3    0x0DA    /* DMA Destination Address Register 3 */
-#define DCRN_DMASA0    0x0C3    /* DMA Source Address Register 0 */
-#define DCRN_DMASA1    0x0CB    /* DMA Source Address Register 1 */
-#define DCRN_DMASA2    0x0D3    /* DMA Source Address Register 2 */
-#define DCRN_DMASA3    0x0DB    /* DMA Source Address Register 3 */
-#define DCRN_DMASR     0x0E0    /* DMA Status Register */
-#define DCRN_EXIER     0x042    /* External Interrupt Enable Register */
+#define DCRN_DMACC3    0x0DC    /* DMA Chained Count Register 3 */
+#define DCRN_DMACR0    0x0C0    /* DMA Channel Control Register 0 */
+#define DCRN_DMACR1    0x0C8    /* DMA Channel Control Register 1 */
+#define DCRN_DMACR2    0x0D0    /* DMA Channel Control Register 2 */
+#define DCRN_DMACR3    0x0D8    /* DMA Channel Control Register 3 */
+#define DCRN_DMACT0    0x0C1    /* DMA Count Register 0 */
+#define DCRN_DMACT1    0x0C9    /* DMA Count Register 1 */
+#define DCRN_DMACT2    0x0D1    /* DMA Count Register 2 */
+#define DCRN_DMACT3    0x0D9    /* DMA Count Register 3 */
+#define DCRN_DMADA0    0x0C2    /* DMA Destination Address Register 0 */
+#define DCRN_DMADA1    0x0CA    /* DMA Destination Address Register 1 */
+#define DCRN_DMADA2    0x0D2    /* DMA Destination Address Register 2 */
+#define DCRN_DMADA3    0x0DA    /* DMA Destination Address Register 3 */
+#define DCRN_DMASA0    0x0C3    /* DMA Source Address Register 0 */
+#define DCRN_DMASA1    0x0CB    /* DMA Source Address Register 1 */
+#define DCRN_DMASA2    0x0D3    /* DMA Source Address Register 2 */
+#define DCRN_DMASA3    0x0DB    /* DMA Source Address Register 3 */
+#define DCRN_DMASR     0x0E0    /* DMA Status Register */
+#define DCRN_EXIER     0x042    /* External Interrupt Enable Register */
 #define   EXIER_CIE    0x80000000      /* Critical Interrupt Enable */
 #define   EXIER_SRIE   0x08000000      /* Serial Port Rx Int. Enable */
 #define   EXIER_STIE   0x04000000      /* Serial Port Tx Int. Enable */
 #define   EXIER_E2IE   0x00000004      /* External Interrupt 2 Enable */
 #define   EXIER_E3IE   0x00000002      /* External Interrupt 3 Enable */
 #define   EXIER_E4IE   0x00000001      /* External Interrupt 4 Enable */
-#define DCRN_EXISR     0x040    /* External Interrupt Status Register */
-#define DCRN_IOCR      0x0A0    /* Input/Output Configuration Register */
+#define DCRN_EXISR     0x040    /* External Interrupt Status Register */
+#define DCRN_IOCR      0x0A0    /* Input/Output Configuration Register */
 #define   IOCR_E0TE    0x80000000
 #define   IOCR_E0LP    0x40000000
 #define   IOCR_E1TE    0x20000000
 #define SVR_VER(svr)   (((svr) >> 16) & 0xFFFF) /* Version field */
 #define SVR_REV(svr)   (((svr) >>  0) & 0xFFFF) /* Revision field */
 
-#define SVR_CID(svr)   (((svr) >> 28) & 0x0F)   /* Company or manufacturer ID */
-#define SVR_SOCOP(svr) (((svr) >> 22) & 0x3F)   /* SOC integration options */
-#define SVR_SID(svr)   (((svr) >> 16) & 0x3F)   /* SOC ID */
-#define SVR_PROC(svr)  (((svr) >> 12) & 0x0F)   /* Process revision field */
-#define SVR_MFG(svr)   (((svr) >>  8) & 0x0F)   /* Manufacturing revision */
-#define SVR_MJREV(svr) (((svr) >>  4) & 0x0F)   /* Major SOC design revision indicator */
-#define SVR_MNREV(svr) (((svr) >>  0) & 0x0F)   /* Minor SOC design revision indicator */
-
+#define SVR_CID(svr)   (((svr) >> 28) & 0x0F)   /* Company or manufacturer ID */
+#define SVR_SOCOP(svr) (((svr) >> 22) & 0x3F)   /* SOC integration options */
+#define SVR_SID(svr)   (((svr) >> 16) & 0x3F)   /* SOC ID */
+#define SVR_PROC(svr)  (((svr) >> 12) & 0x0F)   /* Process revision field */
+#define SVR_MFG(svr)   (((svr) >>  8) & 0x0F)   /* Manufacturing revision */
+#define SVR_MJREV(svr) (((svr) >>  4) & 0x0F)   /* Major SOC design revision indicator */
+#define SVR_MNREV(svr) (((svr) >>  0) & 0x0F)   /* Minor SOC design revision indicator */
 
 /* Processor Version Register */
 
 #define PVR_MAJ(pvr)   (((pvr) >>  4) & 0xF)   /* Major revision field */
 #define PVR_MIN(pvr)   (((pvr) >>  0) & 0xF)   /* Minor revision field */
 
+/* e600 core PVR fields */
+
+#define PVR_E600_VER(pvr)      (((pvr) >> 15) & 0xFFFF) /* Version/type */
+#define PVR_E600_TECH(pvr)     (((pvr) >> 12) & 0xF)    /* Technology */
+#define PVR_E600_MAJ(pvr)      (((pvr) >> 8) & 0xF)     /* Major revision */
+#define PVR_E600_MIN(pvr)      (((pvr) >> 0) & 0xFF)    /* Minor revision */
+
 /* Processor Version Numbers */
 
 #define PVR_403GA      0x00200000
 #define PVR_405EP_RA   0x51210950
 #define PVR_405GPR_RB  0x50910951
 #define PVR_405EZ_RA   0x41511460
-#define PVR_405EXR1_RA 0x12911473 /* 405EXr rev A with Security */
-#define PVR_405EXR2_RA 0x12911471 /* 405EXr rev A without Security */
-#define PVR_405EX1_RA  0x12911477 /* 405EX rev A with Security */
-#define PVR_405EX2_RA  0x12911475 /* 405EX rev A without Security */
+#define PVR_405EXR1_RA 0x12911473 /* 405EXr rev A/B with Security */
+#define PVR_405EXR2_RA 0x12911471 /* 405EXr rev A/B without Security */
+#define PVR_405EX1_RA  0x12911477 /* 405EX rev A/B with Security */
+#define PVR_405EX2_RA  0x12911475 /* 405EX rev A/B without Security */
+#define PVR_405EXR1_RC 0x1291147B /* 405EXr rev C with Security */
+#define PVR_405EXR2_RC 0x12911479 /* 405EXr rev C without Security */
+#define PVR_405EX1_RC  0x1291147F /* 405EX rev C with Security */
+#define PVR_405EX2_RC  0x1291147D /* 405EX rev C without Security */
 #define PVR_440GP_RB   0x40120440
 #define PVR_440GP_RC   0x40120481
 #define PVR_440EP_RA   0x42221850
 #define PVR_440EP_RC   0x422218D4 /* 440EP rev C and 440GR rev B have same PVR */
 #define PVR_440GR_RA   0x422218D3 /* 440EP rev B and 440GR rev A have same PVR */
 #define PVR_440GR_RB   0x422218D4 /* 440EP rev C and 440GR rev B have same PVR */
-#define PVR_440EPX1_RA  0x216218D0 /* 440EPX rev A with Security / Kasumi */
-#define PVR_440EPX2_RA  0x216218D4 /* 440EPX rev A without Security / Kasumi */
-#define PVR_440GRX1_RA  0x216218D0 /* 440GRX rev A with Security / Kasumi */
-#define PVR_440GRX2_RA  0x216218D4 /* 440GRX rev A without Security / Kasumi */
+#define PVR_440EPX1_RA 0x216218D0 /* 440EPX rev A with Security / Kasumi */
+#define PVR_440EPX2_RA 0x216218D4 /* 440EPX rev A without Security / Kasumi */
+#define PVR_440GRX1_RA 0x216218D0 /* 440GRX rev A with Security / Kasumi */
+#define PVR_440GRX2_RA 0x216218D4 /* 440GRX rev A without Security / Kasumi */
 #define PVR_440GX_RA   0x51B21850
 #define PVR_440GX_RB   0x51B21851
 #define PVR_440GX_RC   0x51B21892
 #define PVR_440SPe_RA  0x53521890 /* 440SPe rev A without RAID 6 support       */
 #define PVR_440SPe_6_RB        0x53421891 /* 440SPe rev B with RAID 6 support enabled  */
 #define PVR_440SPe_RB  0x53521891 /* 440SPe rev B without RAID 6 support       */
+#define PVR_460EX_SE_RA        0x130218A2 /* 460EX rev A with Security Engine    */
+#define PVR_460EX_RA   0x130218A3 /* 460EX rev A without Security Engine */
+#define PVR_460EX_RB   0x130218A4 /* 460EX rev B with and without Sec Eng*/
+#define PVR_460GT_SE_RA        0x130218A0 /* 460GT rev A with Security Engine    */
+#define PVR_460GT_RA   0x130218A1 /* 460GT rev A without Security Engine */
+#define PVR_460GT_RB   0x130218A5 /* 460GT rev B with and without Sec Eng*/
+#define PVR_460SX_RA    0x13541800 /* 460SX rev A                   */
+#define PVR_460SX_RA_V1 0x13541801 /* 460SX rev A Variant 1 Security disabled */
+#define PVR_460GX_RA    0x13541802 /* 460GX rev A                   */
+#define PVR_460GX_RA_V1 0x13541803 /* 460GX rev A Variant 1 Security disabled */
 #define PVR_601                0x00010000
 #define PVR_602                0x00050000
 #define PVR_603                0x00030000
 #define PVR_750                PVR_740
 #define PVR_740P       0x10080000
 #define PVR_750P       PVR_740P
-#define PVR_7400        0x000C0000
-#define PVR_7410        0x800C0000
-#define PVR_7450        0x80000000
+#define PVR_7400       0x000C0000
+#define PVR_7410       0x800C0000
+#define PVR_7450       0x80000000
 
 #define PVR_85xx       0x80200000
 #define PVR_85xx_REV1  (PVR_85xx | 0x0010)
 #define PVR_85xx_REV2  (PVR_85xx | 0x0020)
 
 #define PVR_86xx       0x80040000
-#define PVR_86xx_REV1  (PVR_86xx | 0x0010)
+
+#define PVR_VIRTEX5     0x7ff21912
 
 /*
  * For the 8xx processors, all of them report the same PVR family for
  * PowerQUICC II family processors report different PVR values depending
  * on silicon process (HiP3, HiP4, HiP7, etc.)
  */
-#define PVR_8260        PVR_8240
-#define PVR_8260_HIP3   0x00810101
-#define PVR_8260_HIP4   0x80811014
-#define PVR_8260_HIP7   0x80822011
+#define PVR_8260       PVR_8240
+#define PVR_8260_HIP3  0x00810101
+#define PVR_8260_HIP4  0x80811014
+#define PVR_8260_HIP7  0x80822011
 #define PVR_8260_HIP7R1 0x80822013
 #define PVR_8260_HIP7RA        0x80822014
 
 #define PVR_5200       0x80822011
 #define PVR_5200B      0x80822014
 
-
 /*
  * System Version Register
  */
 #define SVR_MAJ(svr)   (((svr) >>  4) & 0xF)   /* Major revision field*/
 #define SVR_MIN(svr)   (((svr) >>  0) & 0xF)   /* Minor revision field*/
 
+/* Some parts define SVR[0:23] as the SOC version */
+#define SVR_SOC_VER(svr) (((svr) >> 8) & 0xFFFFFF)     /* SOC Version fields */
 
-/*
- * SVR_VER() Version Values
- */
-
-#define SVR_8540       0x8030
-#define SVR_8560       0x8070
-#define SVR_8555       0x8079
-#define SVR_8541       0x807A
-#define SVR_8544       0x8034
-#define SVR_8544_E     0x803C
-#define SVR_8548       0x8031
-#define SVR_8548_E     0x8039
-#define SVR_8610       0x80A0
-#define SVR_8641       0x8090
-#define SVR_8568_E     0x807D
-
-
-/* I am just adding a single entry for 8260 boards.  I think we may be
- * able to combine mbx, fads, rpxlite, bseip, and classic into a single
- * generic 8xx as well.  The boards containing these processors are either
- * identical at the processor level (due to the high integration) or so
- * wildly different that testing _machine at run time is best replaced by
- * conditional compilation by board type (found in their respective .h file).
- *     -- Dan
- */
-#define _MACH_prep     0x00000001
-#define _MACH_Pmac     0x00000002      /* pmac or pmac clone (non-chrp) */
-#define _MACH_chrp     0x00000004      /* chrp machine */
-#define _MACH_mbx      0x00000008      /* Motorola MBX board */
-#define _MACH_apus     0x00000010      /* amiga with phase5 powerup */
-#define _MACH_fads     0x00000020      /* Motorola FADS board */
-#define _MACH_rpxlite  0x00000040      /* RPCG RPX-Lite 8xx board */
-#define _MACH_bseip    0x00000080      /* Bright Star Engineering ip-Engine */
-#define _MACH_yk       0x00000100      /* Motorola Yellowknife */
-#define _MACH_gemini   0x00000200      /* Synergy Microsystems gemini board */
-#define _MACH_classic  0x00000400      /* RPCG RPX-Classic 8xx board */
-#define _MACH_oak      0x00000800      /* IBM "Oak" 403 eval. board */
-#define _MACH_walnut   0x00001000      /* AMCC "Walnut" 405GP eval. board */
-#define _MACH_8260     0x00002000      /* Generic 8260 */
-#define _MACH_sandpoint 0x00004000     /* Motorola SPS Processor eval board */
-#define _MACH_tqm860   0x00008000      /* TQM860/L */
-#define _MACH_tqm8xxL  0x00010000      /* TQM8xxL */
-#define _MACH_hidden_dragon 0x00020000 /* Motorola Hidden Dragon eval board */
-
-
-/* see residual.h for these */
-#define _PREP_Motorola 0x01  /* motorola prep */
-#define _PREP_Firm     0x02  /* firmworks prep */
-#define _PREP_IBM      0x00  /* ibm prep */
-#define _PREP_Bull     0x03  /* bull prep */
-#define _PREP_Radstone 0x04  /* Radstone Technology PLC prep */
+/* whether MPC8xxxE (i.e. has SEC) */
+#if defined(CONFIG_MPC85xx)
+#define IS_E_PROCESSOR(svr)    (svr & 0x80000)
+#else
+#if defined(CONFIG_MPC83xx)
+#define IS_E_PROCESSOR(spridr) (!(spridr & 0x00010000))
+#endif
+#endif
 
 /*
- * Radstone board types
+ * SVR_SOC_VER() Version Values
  */
-#define RS_SYS_TYPE_PPC1   0
-#define RS_SYS_TYPE_PPC2   1
-#define RS_SYS_TYPE_PPC1a  2
-#define RS_SYS_TYPE_PPC2a  3
-#define RS_SYS_TYPE_PPC4   4
-#define RS_SYS_TYPE_PPC4a  5
-#define RS_SYS_TYPE_PPC2ep 6
-
-/* these are arbitrary */
-#define _CHRP_Motorola 0x04  /* motorola chrp, the cobra */
-#define _CHRP_IBM      0x05  /* IBM chrp, the longtrail and longtrail 2 */
+
+#define SVR_8533       0x803400
+#define SVR_8533_E     0x803C00
+#define SVR_8535       0x803701
+#define SVR_8535_E     0x803F01
+#define SVR_8536       0x803700
+#define SVR_8536_E     0x803F00
+#define SVR_8540       0x803000
+#define SVR_8541       0x807200
+#define SVR_8541_E     0x807A00
+#define SVR_8543       0x803200
+#define SVR_8543_E     0x803A00
+#define SVR_8544       0x803401
+#define SVR_8544_E     0x803C01
+#define SVR_8545       0x803102
+#define SVR_8545_E     0x803902
+#define SVR_8547_E     0x803901
+#define SVR_8548       0x803100
+#define SVR_8548_E     0x803900
+#define SVR_8555       0x807100
+#define SVR_8555_E     0x807900
+#define SVR_8560       0x807000
+#define SVR_8567       0x807600
+#define SVR_8567_E     0x807E00
+#define SVR_8568       0x807500
+#define SVR_8568_E     0x807D00
+#define SVR_8569       0x808000
+#define SVR_8569_E     0x808800
+#define SVR_8572       0x80E000
+#define SVR_8572_E     0x80E800
+#define SVR_P2020      0x80E200
+#define SVR_P2020_E    0x80EA00
+
+#define SVR_8610       0x80A000
+#define SVR_8641       0x809000
+#define SVR_8641D      0x809001
 
 #define _GLOBAL(n)\
        .globl n;\
@@ -984,6 +1061,24 @@ n:
 #define SR15   15
 
 #ifndef __ASSEMBLY__
+
+struct cpu_type {
+       char name[15];
+       u32 soc_ver;
+};
+
+struct cpu_type *identify_cpu(u32 ver);
+
+#if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
+#define CPU_TYPE_ENTRY(n, v) \
+       { .name = #n, .soc_ver = SVR_##v, }
+#else
+#if defined(CONFIG_MPC83xx)
+#define CPU_TYPE_ENTRY(x) {#x, SPR_##x}
+#endif
+#endif
+
+
 #ifndef CONFIG_MACH_SPECIFIC
 extern int _machine;
 extern int have_of;
@@ -1043,7 +1138,7 @@ struct thread_struct {
        struct pt_regs  *regs;          /* Pointer to saved register state */
        mm_segment_t    fs;             /* for get_fs() validation */
        void            *pgdir;         /* root of page-table tree */
-       signed long     last_syscall;
+       signed long     last_syscall;
        double          fpr[32];        /* Complete floating point set */
        unsigned long   fpscr_pad;      /* fpr ... fpscr must be contiguous */
        unsigned long   fpscr;          /* Floating point status */
@@ -1068,7 +1163,7 @@ struct thread_struct {
 
 /*
  * Note: the vm_start and vm_end fields here should *not*
- * be in kernel space.  (Could vm_end == vm_start perhaps?)
+ * be in kernel space. (Could vm_end == vm_start perhaps?)
  */
 #define INIT_MMAP { &init_mm, 0, 0x1000, NULL, \
                    PAGE_SHARED, VM_READ | VM_WRITE | VM_EXEC, \
@@ -1098,7 +1193,7 @@ unsigned long get_wchan(struct task_struct *p);
 #define alloc_task_struct() \
        ((struct task_struct *) __get_free_pages(GFP_KERNEL,1))
 #define free_task_struct(p)    free_pages((unsigned long)(p),1)
-#define get_task_struct(tsk)      atomic_inc(&mem_map[MAP_NR(tsk)].count)
+#define get_task_struct(tsk)     atomic_inc(&mem_map[MAP_NR(tsk)].count)
 
 /* in process.c - for early bootup debug -- Cort */
 int ll_printk(const char *, ...);