]> git.sur5r.net Git - u-boot/blobdiff - cpu/ppc4xx/start.S
Merge with /home/hs/U-Boot/u-boot-dev
[u-boot] / cpu / ppc4xx / start.S
index c6a9edad4e2d69e35581419b9d591f0654ac68ee..647088f721a2eefe0beedce2780d33375a7eac6a 100644 (file)
@@ -42,7 +42,7 @@
 /*      LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M */
 /*------------------------------------------------------------------------------- */
 
-/*  U-Boot - Startup Code for IBM 4xx PowerPC based Embedded Boards
+/*  U-Boot - Startup Code for AMCC 4xx PowerPC based Embedded Boards
  *
  *
  *  The processor starts at 0xfffffffc and the code is executed
@@ -158,15 +158,20 @@ _start_440:
        /*----------------------------------------------------------------*/
        /* Clear and set up some registers. */
        /*----------------------------------------------------------------*/
-       iccci   r0,r0           /* NOTE: operands not used for 440 */
-       dccci   r0,r0           /* NOTE: operands not used for 440 */
+       iccci   r0,r0           /* NOTE: operands not used for 440 */
+       dccci   r0,r0           /* NOTE: operands not used for 440 */
        sync
        li      r0,0
        mtspr   srr0,r0
        mtspr   srr1,r0
        mtspr   csrr0,r0
        mtspr   csrr1,r0
-
+#if defined(CONFIG_440GX) || defined(CONFIG_440SP) /* NOTE: 440GX adds machine check status regs */
+       mtspr   mcsrr0,r0
+       mtspr   mcsrr1,r0
+       mfspr   r1, mcsr
+       mtspr   mcsr,r1
+#endif
        /*----------------------------------------------------------------*/
        /* Initialize debug */
        /*----------------------------------------------------------------*/
@@ -199,13 +204,13 @@ _start_440:
        /* Setup interrupt vectors */
        /*----------------------------------------------------------------*/
        mtspr   ivpr,r0         /* Vectors start at 0x0000_0000 */
-       li      r1,0x0100
+       li      r1,0x0100
        mtspr   ivor0,r1        /* Critical input */
-       li      r1,0x0200
+       li      r1,0x0200
        mtspr   ivor1,r1        /* Machine check */
-       li      r1,0x0300
+       li      r1,0x0300
        mtspr   ivor2,r1        /* Data storage */
-       li      r1,0x0400
+       li      r1,0x0400
        mtspr   ivor3,r1        /* Instruction storage */
        li      r1,0x0500
        mtspr   ivor4,r1        /* External interrupt */
@@ -335,9 +340,6 @@ _start:
        mtspr   tcr,r0                  /* disable all */
        mtspr   esr,r0                  /* clear exception syndrome register */
        mtxer   r0                      /* clear integer exception register */
-       lis     r1,0x0002               /* set CE bit (Critical Exceptions) */
-       ori     r1,r1,0x1000            /* set ME bit (Machine Exceptions) */
-       mtmsr   r1                      /* change MSR */
 
        /*----------------------------------------------------------------*/
        /* Debug setup -- some (not very good) ice's need an event*/
@@ -358,6 +360,26 @@ _start:
        /* Setup the internal SRAM */
        /*----------------------------------------------------------------*/
        li      r0,0
+#if defined(CONFIG_440EP) || defined(CONFIG_440GR)
+       /* Clear Dcache to use as RAM */
+       addis   r3,r0,CFG_INIT_RAM_ADDR@h
+       ori     r3,r3,CFG_INIT_RAM_ADDR@l
+       addis   r4,r0,CFG_INIT_RAM_END@h
+       ori     r4,r4,CFG_INIT_RAM_END@l
+       rlwinm. r5,r4,0,27,31
+       rlwinm  r5,r4,27,5,31
+       beq     ..d_ran
+       addi    r5,r5,0x0001
+..d_ran:
+       mtctr   r5
+..d_ag:
+       dcbz    r0,r3
+       addi    r3,r3,32
+       bdnz    ..d_ag
+#else
+#if defined (CONFIG_440GX) || defined(CONFIG_440SP)
+       mtdcr   l2_cache_cfg,r0         /* Ensure L2 Cache is off */
+#endif
        mtdcr   isram0_sb1cr,r0         /* Disable bank 1 */
 
        li      r2,0x7fff
@@ -370,15 +392,29 @@ _start:
        mtdcr   isram0_pmeg,r1
 
        lis     r1,0x8000               /* BAS = 8000_0000 */
+#if defined(CONFIG_440GX) || defined(CONFIG_440SP)
+       ori     r1,r1,0x0980            /* first 64k */
+       mtdcr   isram0_sb0cr,r1
+       lis     r1,0x8001
+       ori     r1,r1,0x0980            /* second 64k */
+       mtdcr   isram0_sb1cr,r1
+       lis     r1, 0x8002
+       ori     r1,r1, 0x0980           /* third 64k */
+       mtdcr   isram0_sb2cr,r1
+       lis     r1, 0x8003
+       ori     r1,r1, 0x0980           /* fourth 64k */
+       mtdcr   isram0_sb3cr,r1
+#else
        ori     r1,r1,0x0380            /* 8k rw */
        mtdcr   isram0_sb0cr,r1
+#endif
+#endif
 
        /*----------------------------------------------------------------*/
        /* Setup the stack in internal SRAM */
        /*----------------------------------------------------------------*/
        lis     r1,CFG_INIT_RAM_ADDR@h
        ori     r1,r1,CFG_INIT_SP_OFFSET@l
-
        li      r0,0
        stwu    r0,-4(r1)
        stwu    r0,-4(r1)               /* Terminate call chain */
@@ -390,6 +426,8 @@ _start:
        stw     r0,+12(r1)              /* Save return addr (underflow vect) */
 
        GET_GOT
+
+       bl      cpu_init_f      /* run low-level CPU init code     (from Flash) */
        bl      board_init_f
 
 #endif /* CONFIG_440 */
@@ -403,9 +441,6 @@ _start:
        mtspr   esr,r0                  /* clear Exception Syndrome Reg */
        mttcr   r0                      /* timer control register */
        mtexier r0                      /* disable all interrupts */
-       addi    r4,r0,0x1000            /* set ME bit (Machine Exceptions) */
-       oris    r4,r4,0x2               /* set CE bit (Critical Exceptions) */
-       mtmsr   r4                      /* change MSR */
        addis   r4,r0,0xFFFF            /* set r4 to 0xFFFFFFFF (status in the */
        ori     r4,r4,0xFFFF            /* dbsr is cleared by setting bits to 1) */
        mtdbsr  r4                      /* clear/reset the dbsr */
@@ -516,9 +551,6 @@ _start:
        mttcr   r4                      /* clear Timer Control Reg */
        mtxer   r4                      /* clear Fixed-Point Exception Reg */
        mtevpr  r4                      /* clear Exception Vector Prefix Reg */
-       addi    r4,r0,0x1000            /* set ME bit (Machine Exceptions) */
-       oris    r4,r4,0x0002            /* set CE bit (Critical Exceptions) */
-       mtmsr   r4                      /* change MSR */
        addi    r4,r0,(0xFFFF-0x10000)          /* set r4 to 0xFFFFFFFF (status in the */
                                        /* dbsr is cleared by setting bits to 1) */
        mtdbsr  r4                      /* clear/reset the dbsr */
@@ -556,11 +588,11 @@ _start:
        /*----------------------------------------------------------------------- */
        /* DMA Status, clear to come up clean */
        /*----------------------------------------------------------------------- */
-        addis   r3,r0, 0xFFFF         /* Clear all existing DMA status */
-        ori     r3,r3, 0xFFFF
-        mtdcr   dmasr, r3
+       addis   r3,r0, 0xFFFF         /* Clear all existing DMA status */
+       ori     r3,r3, 0xFFFF
+       mtdcr   dmasr, r3
 
-       bl      ppc405ep_init         /* do ppc405ep specific init */
+       bl      ppc405ep_init         /* do ppc405ep specific init */
 #endif /* CONFIG_405EP */
 
 #if defined(CFG_OCM_DATA_ADDR) && defined(CFG_OCM_DATA_SIZE)
@@ -568,21 +600,21 @@ _start:
         * Setup OCM - On Chip Memory
         *******************************************************************/
        /* Setup OCM */
-       lis     r0, 0x7FFF
-       ori     r0, r0, 0xFFFF
-       mfdcr   r3, ocmiscntl           /* get instr-side IRAM config */
-       mfdcr   r4, ocmdscntl   /* get data-side IRAM config */
-       and     r3, r3, r0      /* disable data-side IRAM */
-       and     r4, r4, r0      /* disable data-side IRAM */
-       mtdcr   ocmiscntl, r3   /* set instr-side IRAM config */
-       mtdcr   ocmdscntl, r4   /* set data-side IRAM config */
-       isync
+       lis     r0, 0x7FFF
+       ori     r0, r0, 0xFFFF
+       mfdcr   r3, ocmiscntl           /* get instr-side IRAM config */
+       mfdcr   r4, ocmdscntl   /* get data-side IRAM config */
+       and     r3, r3, r0      /* disable data-side IRAM */
+       and     r4, r4, r0      /* disable data-side IRAM */
+       mtdcr   ocmiscntl, r3   /* set instr-side IRAM config */
+       mtdcr   ocmdscntl, r4   /* set data-side IRAM config */
+       isync
 
        addis   r3, 0, CFG_OCM_DATA_ADDR@h /* OCM location */
        mtdcr   ocmdsarc, r3
        addis   r4, 0, 0xC000           /* OCM data area enabled */
        mtdcr   ocmdscntl, r4
-       isync
+       isync
 #endif
 
        /*----------------------------------------------------------------------- */
@@ -612,13 +644,13 @@ _start:
        /* set stack pointer and clear stack to known value */
 
        lis     r1,CFG_INIT_RAM_ADDR@h
-       ori     r1,r1,CFG_INIT_SP_OFFSET@l
+       ori     r1,r1,CFG_INIT_SP_OFFSET@l
 
        li      r4,2048                 /* we store 2048 words to stack */
        mtctr   r4
 
        lis     r2,CFG_INIT_RAM_ADDR@h          /* we also clear data area */
-       ori     r2,r2,CFG_INIT_RAM_END@l        /* so cant copy value from r1 */
+       ori     r2,r2,CFG_INIT_RAM_END@l        /* so cant copy value from r1 */
 
        lis     r4,0xdead               /* we store 0xdeaddead in the stack */
        ori     r4,r4,0xdead
@@ -667,7 +699,7 @@ _start:
 #endif /* CFG_INIT_DCACHE_CS */
 
        /*----------------------------------------------------------------------- */
-       /* Initialize SDRAM Controller  */
+       /* Initialize SDRAM Controller  */
        /*----------------------------------------------------------------------- */
        bl      sdram_init
 
@@ -693,16 +725,17 @@ _start:
        ori     r0, r0, RESET_VECTOR@l
        stwu    r1, -8(r1)              /* Save back chain and move SP */
        stw     r0, +12(r1)             /* Save return addr (underflow vect) */
-#endif /* !(CFG_INIT_DCACHE_CS  || !CFG_TEM_STACK_OCM) */
+#endif /* !(CFG_INIT_DCACHE_CS || !CFG_TEM_STACK_OCM) */
 
        GET_GOT                 /* initialize GOT access                        */
 
-               bl      cpu_init_f      /* run low-level CPU init code     (from Flash) */
+       bl      cpu_init_f      /* run low-level CPU init code     (from Flash) */
 
        /* NEVER RETURNS! */
        bl      board_init_f    /* run first part of init code (from Flash)     */
 
-#endif /* CONFIG_405GP || CONFIG_405CR */
+#endif /* CONFIG_405GP || CONFIG_405CR || CONFIG_405 || CONFIG_405EP */
+       /*----------------------------------------------------------------------- */
 
 
 /*****************************************************************************/
@@ -769,75 +802,7 @@ ProgramCheck:
        STD_EXCEPTION(0x900, Decrementer, timer_interrupt)
        STD_EXCEPTION(0xa00, Trap_0a, UnknownException)
        STD_EXCEPTION(0xb00, Trap_0b, UnknownException)
-
-       . = 0xc00
-/*
- * r0 - SYSCALL number
- * r3-... arguments
- */
-SystemCall:
-       addis   r11,r0,0                /* get functions table addr */
-       ori     r11,r11,0               /* Note: this code is patched in trap_init */
-       addis   r12,r0,0                /* get number of functions */
-       ori     r12,r12,0
-
-       cmplw   0, r0, r12
-       bge     1f
-
-       rlwinm  r0,r0,2,0,31            /* fn_addr = fn_tbl[r0] */
-       add     r11,r11,r0
-       lwz     r11,0(r11)
-
-       li      r20,0xd00-4             /* Get stack pointer */
-       lwz     r12,0(r20)
-       subi    r12,r12,12              /* Adjust stack pointer */
-       li      r0,0xc00+_end_back-SystemCall
-       cmplw   0, r0, r12              /* Check stack overflow */
-       bgt     1f
-       stw     r12,0(r20)
-
-       mflr    r0
-       stw     r0,0(r12)
-       mfspr   r0,SRR0
-       stw     r0,4(r12)
-       mfspr   r0,SRR1
-       stw     r0,8(r12)
-
-       li      r12,0xc00+_back-SystemCall
-       mtlr    r12
-       mtspr   SRR0,r11
-
-1:     SYNC
-       rfi
-
-_back:
-
-       mfmsr   r11                     /* Disable interrupts */
-       li      r12,0
-       ori     r12,r12,MSR_EE
-       andc    r11,r11,r12
-       SYNC                            /* Some chip revs need this... */
-       mtmsr   r11
-       SYNC
-
-       li      r12,0xd00-4             /* restore regs */
-       lwz     r12,0(r12)
-
-       lwz     r11,0(r12)
-       mtlr    r11
-       lwz     r11,4(r12)
-       mtspr   SRR0,r11
-       lwz     r11,8(r12)
-       mtspr   SRR1,r11
-
-       addi    r12,r12,12              /* Adjust stack pointer */
-       li      r20,0xd00-4
-       stw     r12,0(r20)
-
-       SYNC
-       rfi
-_end_back:
-
+       STD_EXCEPTION(0xc00, SystemCall, UnknownException)
        STD_EXCEPTION(0xd00, SingleStep, UnknownException)
 
        STD_EXCEPTION(0xe00, Trap_0e, UnknownException)
@@ -988,7 +953,8 @@ invalidate_icache:
 invalidate_dcache:
        addi    r6,0,0x0000             /* clear GPR 6 */
        /* Do loop for # of dcache congruence classes. */
-       addi    r7,r0, (CFG_DCACHE_SIZE / CFG_CACHELINE_SIZE / 2)
+       lis     r7, (CFG_DCACHE_SIZE / CFG_CACHELINE_SIZE / 2)@ha       /* TBS for large sized cache */
+       ori     r7, r7, (CFG_DCACHE_SIZE / CFG_CACHELINE_SIZE / 2)@l
                                        /* NOTE: dccci invalidates both */
        mtctr   r7                      /* ways in the D cache */
 ..dcloop:
@@ -1009,10 +975,12 @@ flush_dcache:
        mtdccr  r10
 
        /* do loop for # of congruence classes. */
-       addi    r10,r0,(CFG_DCACHE_SIZE / CFG_CACHELINE_SIZE / 2)
-       addi    r11,r0,(CFG_DCACHE_SIZE / 2) /* D cache set size - 2 way sets */
+       lis     r10,(CFG_DCACHE_SIZE / CFG_CACHELINE_SIZE / 2)@ha       /* TBS: for large cache sizes */
+       ori     r10,r10,(CFG_DCACHE_SIZE / CFG_CACHELINE_SIZE / 2)@l
+       lis     r11,(CFG_DCACHE_SIZE / 2)@ha /* D cache set size - 2 way sets */
+       ori     r11,r11,(CFG_DCACHE_SIZE / 2)@l /* D cache set size - 2 way sets */
        mtctr   r10
-       addi    r10,r0,(0xE000-0x10000) /* start at 0xFFFFE000 */
+       addi    r10,r0,(0xE000-0x10000) /* start at 0xFFFFE000 */
        add     r11,r10,r11             /* add to get to other side of cache line */
 ..flush_dcache_loop:
        lwz     r3,0(r10)               /* least recently used side */
@@ -1229,6 +1197,22 @@ ppcSync:
  */
        .globl  relocate_code
 relocate_code:
+#if defined(CONFIG_440EP) || defined(CONFIG_440GR)
+       /*
+        * On some 440er platforms the cache is enabled in the first TLB (Boot-CS)
+        * to speed up the boot process. Now this cache needs to be disabled.
+        */
+       iccci   0,0                     /* Invalidate inst cache */
+       dccci   0,0                     /* Invalidate data cache, now no longer our stack */
+       sync
+       isync
+       addi    r1,r0,0x0000            /* TLB entry #0 */
+       tlbre   r0,r1,0x0002            /* Read contents */
+       ori     r0,r0,0x0c00            /* Or in the inhibit, write through bit */
+       tlbwe   r0,r1,0x0002            /* Save it out */
+       sync
+       isync
+#endif
        mr      r1,  r3         /* Set new stack pointer                */
        mr      r9,  r4         /* Save copy of Init Data pointer       */
        mr      r10, r5         /* Save copy of Destination Address     */
@@ -1428,6 +1412,24 @@ trap_init:
        cmplw   0, r7, r8
        blt     4b
 
+#if !defined(CONFIG_440_GX)
+       addi    r7,r0,0x1000            /* set ME bit (Machine Exceptions) */
+       oris    r7,r7,0x0002            /* set CE bit (Critical Exceptions) */
+       mtmsr   r7                      /* change MSR */
+#else
+       bl      __440gx_msr_set
+       b       __440gx_msr_continue
+
+__440gx_msr_set:
+       addi    r7,r0,0x1000            /* set ME bit (Machine Exceptions) */
+       oris    r7,r7,0x0002            /* set CE bit (Critical Exceptions) */
+       mtspr   srr1,r7
+       mflr    r7
+       mtspr   srr0,r7
+       rfi
+__440gx_msr_continue:
+#endif
+
        mtlr    r4                      /* restore link register        */
        blr
 
@@ -1447,161 +1449,241 @@ trap_reloc:
 
 
 /**************************************************************************/
-/* PPC405EP specific stuff                                                */
+/* PPC405EP specific stuff                                               */
 /**************************************************************************/
 #ifdef CONFIG_405EP
 ppc405ep_init:
-        /*
-        !-----------------------------------------------------------------------
-        ! Check FPGA for PCI internal/external arbitration
-        !   If board is set to internal arbitration, update cpc0_pci
-        !-----------------------------------------------------------------------
+
+#ifdef CONFIG_BUBINGA
+       /*
+        * Initialize EBC chip selects 1 & 4 and GPIO pins (for alternate
+        * function) to support FPGA and NVRAM accesses below.
+        */
+
+       lis     r3,GPIO0_OSRH@h         /* config GPIO output select */
+       ori     r3,r3,GPIO0_OSRH@l
+       lis     r4,CFG_GPIO0_OSRH@h
+       ori     r4,r4,CFG_GPIO0_OSRH@l
+       stw     r4,0(r3)
+       lis     r3,GPIO0_OSRL@h
+       ori     r3,r3,GPIO0_OSRL@l
+       lis     r4,CFG_GPIO0_OSRL@h
+       ori     r4,r4,CFG_GPIO0_OSRL@l
+       stw     r4,0(r3)
+
+       lis     r3,GPIO0_ISR1H@h        /* config GPIO input select */
+       ori     r3,r3,GPIO0_ISR1H@l
+       lis     r4,CFG_GPIO0_ISR1H@h
+       ori     r4,r4,CFG_GPIO0_ISR1H@l
+       stw     r4,0(r3)
+       lis     r3,GPIO0_ISR1L@h
+       ori     r3,r3,GPIO0_ISR1L@l
+       lis     r4,CFG_GPIO0_ISR1L@h
+       ori     r4,r4,CFG_GPIO0_ISR1L@l
+       stw     r4,0(r3)
+
+       lis     r3,GPIO0_TSRH@h         /* config GPIO three-state select */
+       ori     r3,r3,GPIO0_TSRH@l
+       lis     r4,CFG_GPIO0_TSRH@h
+       ori     r4,r4,CFG_GPIO0_TSRH@l
+       stw     r4,0(r3)
+       lis     r3,GPIO0_TSRL@h
+       ori     r3,r3,GPIO0_TSRL@l
+       lis     r4,CFG_GPIO0_TSRL@h
+       ori     r4,r4,CFG_GPIO0_TSRL@l
+       stw     r4,0(r3)
+
+       lis     r3,GPIO0_TCR@h          /* config GPIO driver output enables */
+       ori     r3,r3,GPIO0_TCR@l
+       lis     r4,CFG_GPIO0_TCR@h
+       ori     r4,r4,CFG_GPIO0_TCR@l
+       stw     r4,0(r3)
+
+       li      r3,pb1ap                /* program EBC bank 1 for RTC access */
+       mtdcr   ebccfga,r3
+       lis     r3,CFG_EBC_PB1AP@h
+       ori     r3,r3,CFG_EBC_PB1AP@l
+       mtdcr   ebccfgd,r3
+       li      r3,pb1cr
+       mtdcr   ebccfga,r3
+       lis     r3,CFG_EBC_PB1CR@h
+       ori     r3,r3,CFG_EBC_PB1CR@l
+       mtdcr   ebccfgd,r3
+
+       li      r3,pb1ap                /* program EBC bank 1 for RTC access */
+       mtdcr   ebccfga,r3
+       lis     r3,CFG_EBC_PB1AP@h
+       ori     r3,r3,CFG_EBC_PB1AP@l
+       mtdcr   ebccfgd,r3
+       li      r3,pb1cr
+       mtdcr   ebccfga,r3
+       lis     r3,CFG_EBC_PB1CR@h
+       ori     r3,r3,CFG_EBC_PB1CR@l
+       mtdcr   ebccfgd,r3
+
+       li      r3,pb4ap                /* program EBC bank 4 for FPGA access */
+       mtdcr   ebccfga,r3
+       lis     r3,CFG_EBC_PB4AP@h
+       ori     r3,r3,CFG_EBC_PB4AP@l
+       mtdcr   ebccfgd,r3
+       li      r3,pb4cr
+       mtdcr   ebccfga,r3
+       lis     r3,CFG_EBC_PB4CR@h
+       ori     r3,r3,CFG_EBC_PB4CR@l
+       mtdcr   ebccfgd,r3
+#endif
+
+       addi    r3,0,CPC0_PCI_HOST_CFG_EN
+#ifdef CONFIG_BUBINGA
+       /*
+       !-----------------------------------------------------------------------
+       ! Check FPGA for PCI internal/external arbitration
+       !   If board is set to internal arbitration, update cpc0_pci
+       !-----------------------------------------------------------------------
        */
-        addi    r3,0,CPC0_PCI_HOST_CFG_EN
-#ifdef CONFIG_BUBINGA405EP
-        addis   r5,r0,FPGA_REG1@h      /* set offset for FPGA_REG1 */
-        ori     r5,r5,FPGA_REG1@l
-        lbz     r5,0x0(r5)              /* read to get PCI arb selection */
-        andi.   r6,r5,FPGA_REG1_PCI_INT_ARB  /* using internal arbiter ?*/
-        beq     ..pci_cfg_set             /* if not set, then bypass reg write*/
+       addis   r5,r0,FPGA_REG1@h      /* set offset for FPGA_REG1 */
+       ori     r5,r5,FPGA_REG1@l
+       lbz     r5,0x0(r5)              /* read to get PCI arb selection */
+       andi.   r6,r5,FPGA_REG1_PCI_INT_ARB  /* using internal arbiter ?*/
+       beq     ..pci_cfg_set             /* if not set, then bypass reg write*/
 #endif
-        ori     r3,r3,CPC0_PCI_ARBIT_EN
+       ori     r3,r3,CPC0_PCI_ARBIT_EN
 ..pci_cfg_set:
-        mtdcr   CPC0_PCI, r3             /* Enable internal arbiter*/
-
-        /*
-        !-----------------------------------------------------------------------
-        ! Check to see if chip is in bypass mode.
-        ! If so, write stored CPC0_PLLMR0 and CPC0_PLLMR1 values and perform a
-        ! CPU reset   Otherwise, skip this step and keep going.
-        ! Note:  Running BIOS in bypass mode is not supported since PLB speed
-        !        will not be fast enough for the SDRAM (min 66MHz)
-        !-----------------------------------------------------------------------
+       mtdcr   CPC0_PCI, r3             /* Enable internal arbiter*/
+
+       /*
+       !-----------------------------------------------------------------------
+       ! Check to see if chip is in bypass mode.
+       ! If so, write stored CPC0_PLLMR0 and CPC0_PLLMR1 values and perform a
+       ! CPU reset   Otherwise, skip this step and keep going.
+       ! Note:  Running BIOS in bypass mode is not supported since PLB speed
+       !        will not be fast enough for the SDRAM (min 66MHz)
+       !-----------------------------------------------------------------------
        */
-        mfdcr   r5, CPC0_PLLMR1
-        rlwinm  r4,r5,1,0x1            /* get system clock source (SSCS) */
-        cmpi    cr0,0,r4,0x1
+       mfdcr   r5, CPC0_PLLMR1
+       rlwinm  r4,r5,1,0x1            /* get system clock source (SSCS) */
+       cmpi    cr0,0,r4,0x1
 
-        beq    pll_done                   /* if SSCS =b'1' then PLL has */
-                                          /* already been set */
-                                          /* and CPU has been reset */
-                                          /* so skip to next section */
+       beq    pll_done                   /* if SSCS =b'1' then PLL has */
+                                         /* already been set */
+                                         /* and CPU has been reset */
+                                         /* so skip to next section */
 
-#ifdef CONFIG_BUBINGA405EP
+#ifdef CONFIG_BUBINGA
        /*
-        !-----------------------------------------------------------------------
-        ! Read NVRAM to get value to write in PLLMR.
-        ! If value has not been correctly saved, write default value
-        ! Default config values (assuming on-board 33MHz SYS_CLK) are above.
-        ! See CPU_DEFAULT_200 and CPU_DEFAULT_266 above.
-        !
-        ! WARNING:  This code assumes the first three words in the nvram_t
-        !           structure in openbios.h.  Changing the beginning of
-        !           the structure will break this code.
-        !
-        !-----------------------------------------------------------------------
+       !-----------------------------------------------------------------------
+       ! Read NVRAM to get value to write in PLLMR.
+       ! If value has not been correctly saved, write default value
+       ! Default config values (assuming on-board 33MHz SYS_CLK) are above.
+       ! See CPU_DEFAULT_200 and CPU_DEFAULT_266 above.
+       !
+       ! WARNING:  This code assumes the first three words in the nvram_t
+       !           structure in openbios.h.  Changing the beginning of
+       !           the structure will break this code.
+       !
+       !-----------------------------------------------------------------------
        */
-        addis   r3,0,NVRAM_BASE@h
-        addi    r3,r3,NVRAM_BASE@l
-
-        lwz     r4, 0(r3)
-        addis   r5,0,NVRVFY1@h
-        addi    r5,r5,NVRVFY1@l
-        cmp     cr0,0,r4,r5            /* Compare 1st NVRAM Magic number*/
-        bne     ..no_pllset
-        addi    r3,r3,4
-        lwz     r4, 0(r3)
-        addis   r5,0,NVRVFY2@h
-        addi    r5,r5,NVRVFY2@l
-        cmp     cr0,0,r4,r5            /* Compare 2 NVRAM Magic number */
-        bne     ..no_pllset
-        addi    r3,r3,8                 /* Skip over conf_size */
-        lwz     r4, 4(r3)               /* Load PLLMR1 value from NVRAM */
-        lwz     r3, 0(r3)               /* Load PLLMR0 value from NVRAM */
-        rlwinm  r5,r4,1,0x1             /* get system clock source (SSCS) */
-        cmpi     cr0,0,r5,1             /* See if PLL is locked */
-        beq     pll_write
+       addis   r3,0,NVRAM_BASE@h
+       addi    r3,r3,NVRAM_BASE@l
+
+       lwz     r4, 0(r3)
+       addis   r5,0,NVRVFY1@h
+       addi    r5,r5,NVRVFY1@l
+       cmp     cr0,0,r4,r5            /* Compare 1st NVRAM Magic number*/
+       bne     ..no_pllset
+       addi    r3,r3,4
+       lwz     r4, 0(r3)
+       addis   r5,0,NVRVFY2@h
+       addi    r5,r5,NVRVFY2@l
+       cmp     cr0,0,r4,r5            /* Compare 2 NVRAM Magic number */
+       bne     ..no_pllset
+       addi    r3,r3,8                 /* Skip over conf_size */
+       lwz     r4, 4(r3)               /* Load PLLMR1 value from NVRAM */
+       lwz     r3, 0(r3)               /* Load PLLMR0 value from NVRAM */
+       rlwinm  r5,r4,1,0x1             /* get system clock source (SSCS) */
+       cmpi     cr0,0,r5,1             /* See if PLL is locked */
+       beq     pll_write
 ..no_pllset:
-#endif /* CONFIG_BUBINGA405EP */
+#endif /* CONFIG_BUBINGA */
 
-        addis   r3,0,PLLMR0_DEFAULT@h       /* PLLMR0 default value */
-        ori     r3,r3,PLLMR0_DEFAULT@l     /* */
-        addis   r4,0,PLLMR1_DEFAULT@h       /* PLLMR1 default value */
-        ori     r4,r4,PLLMR1_DEFAULT@l     /* */
+       addis   r3,0,PLLMR0_DEFAULT@h       /* PLLMR0 default value */
+       ori     r3,r3,PLLMR0_DEFAULT@l     /* */
+       addis   r4,0,PLLMR1_DEFAULT@h       /* PLLMR1 default value */
+       ori     r4,r4,PLLMR1_DEFAULT@l     /* */
 
-        b       pll_write                 /* Write the CPC0_PLLMR with new value */
+       b       pll_write                 /* Write the CPC0_PLLMR with new value */
 
 pll_done:
-        /*
-        !-----------------------------------------------------------------------
-        ! Clear Soft Reset Register
-        ! This is needed to enable PCI if not booting from serial EPROM
-        !-----------------------------------------------------------------------
+       /*
+       !-----------------------------------------------------------------------
+       ! Clear Soft Reset Register
+       ! This is needed to enable PCI if not booting from serial EPROM
+       !-----------------------------------------------------------------------
                */
-        addi    r3, 0, 0x0
-        mtdcr   CPC0_SRR, r3
+       addi    r3, 0, 0x0
+       mtdcr   CPC0_SRR, r3
 
-        addis    r3,0,0x0010
-        mtctr   r3
+       addis    r3,0,0x0010
+       mtctr   r3
 pci_wait:
-        bdnz    pci_wait
+       bdnz    pci_wait
 
        blr                               /* return to main code */
 
 /*
 !-----------------------------------------------------------------------------
-! Function:     pll_write
-! Description:  Updates the value of the CPC0_PLLMR according to CMOS27E documentation
-!               That is:
-!                         1.  Pll is first disabled (de-activated by putting in bypass mode)
-!                         2.  PLL is reset
-!                         3.  Clock dividers are set while PLL is held in reset and bypassed
-!                         4.  PLL Reset is cleared
-!                         5.  Wait 100us for PLL to lock
-!                         6.  A core reset is performed
+! Function:    pll_write
+! Description: Updates the value of the CPC0_PLLMR according to CMOS27E documentation
+!              That is:
+!                        1.  Pll is first disabled (de-activated by putting in bypass mode)
+!                        2.  PLL is reset
+!                        3.  Clock dividers are set while PLL is held in reset and bypassed
+!                        4.  PLL Reset is cleared
+!                        5.  Wait 100us for PLL to lock
+!                        6.  A core reset is performed
 ! Input: r3 = Value to write to CPC0_PLLMR0
 ! Input: r4 = Value to write to CPC0_PLLMR1
 ! Output r3 = none
 !-----------------------------------------------------------------------------
 */
 pll_write:
-        mfdcr  r5, CPC0_UCR
-        andis. r5,r5,0xFFFF
-        ori    r5,r5,0x0101              /* Stop the UART clocks */
-        mtdcr  CPC0_UCR,r5               /* Before changing PLL */
-
-        mfdcr  r5, CPC0_PLLMR1
-        rlwinm r5,r5,0,0x7FFFFFFF        /* Disable PLL */
-        mtdcr   CPC0_PLLMR1,r5
-        oris   r5,r5,0x4000              /* Set PLL Reset */
-        mtdcr   CPC0_PLLMR1,r5
-
-        mtdcr   CPC0_PLLMR0,r3           /* Set clock dividers */
-        rlwinm r5,r4,0,0x3FFFFFFF        /* Reset & Bypass new PLL dividers */
-        oris   r5,r5,0x4000              /* Set PLL Reset */
-        mtdcr   CPC0_PLLMR1,r5           /* Set clock dividers */
-        rlwinm r5,r5,0,0xBFFFFFFF        /* Clear PLL Reset */
-        mtdcr   CPC0_PLLMR1,r5
+       mfdcr  r5, CPC0_UCR
+       andis. r5,r5,0xFFFF
+       ori    r5,r5,0x0101              /* Stop the UART clocks */
+       mtdcr  CPC0_UCR,r5               /* Before changing PLL */
+
+       mfdcr  r5, CPC0_PLLMR1
+       rlwinm r5,r5,0,0x7FFFFFFF        /* Disable PLL */
+       mtdcr   CPC0_PLLMR1,r5
+       oris   r5,r5,0x4000              /* Set PLL Reset */
+       mtdcr   CPC0_PLLMR1,r5
+
+       mtdcr   CPC0_PLLMR0,r3           /* Set clock dividers */
+       rlwinm r5,r4,0,0x3FFFFFFF        /* Reset & Bypass new PLL dividers */
+       oris   r5,r5,0x4000              /* Set PLL Reset */
+       mtdcr   CPC0_PLLMR1,r5           /* Set clock dividers */
+       rlwinm r5,r5,0,0xBFFFFFFF        /* Clear PLL Reset */
+       mtdcr   CPC0_PLLMR1,r5
 
                /*
-        ! Wait min of 100us for PLL to lock.
-        ! See CMOS 27E databook for more info.
-        ! At 200MHz, that means waiting 20,000 instructions
+       ! Wait min of 100us for PLL to lock.
+       ! See CMOS 27E databook for more info.
+       ! At 200MHz, that means waiting 20,000 instructions
                 */
-        addi    r3,0,20000              /* 2000 = 0x4e20 */
-        mtctr   r3
+       addi    r3,0,20000              /* 2000 = 0x4e20 */
+       mtctr   r3
 pll_wait:
-        bdnz    pll_wait
-
-        oris   r5,r5,0x8000             /* Enable PLL */
-        mtdcr   CPC0_PLLMR1,r5          /* Engage */
-
-        /*
-         * Reset CPU to guarantee timings are OK
-         * Not sure if this is needed...
-        */
-        addis r3,0,0x1000
-        mtspr dbcr0,r3               /* This will cause a CPU core reset, and */
-                                     /* execution will continue from the poweron */
-                                     /* vector of 0xfffffffc */
+       bdnz    pll_wait
+
+       oris   r5,r5,0x8000             /* Enable PLL */
+       mtdcr   CPC0_PLLMR1,r5          /* Engage */
+
+       /*
+        * Reset CPU to guarantee timings are OK
+        * Not sure if this is needed...
+        */
+       addis r3,0,0x1000
+       mtspr dbcr0,r3               /* This will cause a CPU core reset, and */
+                                    /* execution will continue from the poweron */
+                                    /* vector of 0xfffffffc */
 #endif /* CONFIG_405EP */