linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / ppc / kernel / head.S
index a6ac3c7..53ea845 100644 (file)
@@ -31,7 +31,7 @@
 #include <asm/cache.h>
 #include <asm/thread_info.h>
 #include <asm/ppc_asm.h>
-#include <asm/offsets.h>
+#include <asm/asm-offsets.h>
 
 #ifdef CONFIG_APUS
 #include <asm/amigappc.h>
@@ -349,12 +349,12 @@ i##n:                                                             \
 
 /* System reset */
 /* core99 pmac starts the seconary here by changing the vector, and
-   putting it back to what it was (UnknownException) when done.  */
+   putting it back to what it was (unknown_exception) when done.  */
 #if defined(CONFIG_GEMINI) && defined(CONFIG_SMP)
        . = 0x100
        b       __secondary_start_gemini
 #else
-       EXCEPTION(0x100, Reset, UnknownException, EXC_XFER_STD)
+       EXCEPTION(0x100, Reset, unknown_exception, EXC_XFER_STD)
 #endif
 
 /* Machine check */
@@ -389,7 +389,7 @@ i##n:                                                               \
        cmpwi   cr1,r4,0
        bne     cr1,1f
 #endif
-       EXC_XFER_STD(0x200, MachineCheckException)
+       EXC_XFER_STD(0x200, machine_check_exception)
 #ifdef CONFIG_PPC_CHRP
 1:     b       machine_check_in_rtas
 #endif
@@ -456,10 +456,10 @@ Alignment:
        mfspr   r5,SPRN_DSISR
        stw     r5,_DSISR(r11)
        addi    r3,r1,STACK_FRAME_OVERHEAD
-       EXC_XFER_EE(0x600, AlignmentException)
+       EXC_XFER_EE(0x600, alignment_exception)
 
 /* Program check exception */
-       EXCEPTION(0x700, ProgramCheck, ProgramCheckException, EXC_XFER_STD)
+       EXCEPTION(0x700, ProgramCheck, program_check_exception, EXC_XFER_STD)
 
 /* Floating-point unavailable */
        . = 0x800
@@ -467,13 +467,13 @@ FPUnavailable:
        EXCEPTION_PROLOG
        bne     load_up_fpu             /* if from user, just load it up */
        addi    r3,r1,STACK_FRAME_OVERHEAD
-       EXC_XFER_EE_LITE(0x800, KernelFP)
+       EXC_XFER_EE_LITE(0x800, kernel_fp_unavailable_exception)
 
 /* Decrementer */
        EXCEPTION(0x900, Decrementer, timer_interrupt, EXC_XFER_LITE)
 
-       EXCEPTION(0xa00, Trap_0a, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0xb00, Trap_0b, UnknownException, EXC_XFER_EE)
+       EXCEPTION(0xa00, Trap_0a, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0xb00, Trap_0b, unknown_exception, EXC_XFER_EE)
 
 /* System call */
        . = 0xc00
@@ -482,8 +482,8 @@ SystemCall:
        EXC_XFER_EE_LITE(0xc00, DoSyscall)
 
 /* Single step - not used on 601 */
-       EXCEPTION(0xd00, SingleStep, SingleStepException, EXC_XFER_STD)
-       EXCEPTION(0xe00, Trap_0e, UnknownException, EXC_XFER_EE)
+       EXCEPTION(0xd00, SingleStep, single_step_exception, EXC_XFER_STD)
+       EXCEPTION(0xe00, Trap_0e, unknown_exception, EXC_XFER_EE)
 
 /*
  * The Altivec unavailable trap is at 0x0f20.  Foo.
@@ -502,7 +502,7 @@ SystemCall:
 Trap_0f:
        EXCEPTION_PROLOG
        addi    r3,r1,STACK_FRAME_OVERHEAD
-       EXC_XFER_EE(0xf00, UnknownException)
+       EXC_XFER_EE(0xf00, unknown_exception)
 
 /*
  * Handle TLB miss for instruction on 603/603e.
@@ -702,44 +702,44 @@ DataStoreTLBMiss:
        rfi
 
 #ifndef CONFIG_ALTIVEC
-#define AltivecAssistException UnknownException
+#define altivec_assist_exception       unknown_exception
 #endif
 
-       EXCEPTION(0x1300, Trap_13, InstructionBreakpoint, EXC_XFER_EE)
+       EXCEPTION(0x1300, Trap_13, instruction_breakpoint_exception, EXC_XFER_EE)
        EXCEPTION(0x1400, SMI, SMIException, EXC_XFER_EE)
-       EXCEPTION(0x1500, Trap_15, UnknownException, EXC_XFER_EE)
+       EXCEPTION(0x1500, Trap_15, unknown_exception, EXC_XFER_EE)
 #ifdef CONFIG_POWER4
-       EXCEPTION(0x1600, Trap_16, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x1700, Trap_17, AltivecAssistException, EXC_XFER_EE)
+       EXCEPTION(0x1600, Trap_16, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x1700, Trap_17, altivec_assist_exception, EXC_XFER_EE)
        EXCEPTION(0x1800, Trap_18, TAUException, EXC_XFER_STD)
 #else /* !CONFIG_POWER4 */
-       EXCEPTION(0x1600, Trap_16, AltivecAssistException, EXC_XFER_EE)
+       EXCEPTION(0x1600, Trap_16, altivec_assist_exception, EXC_XFER_EE)
        EXCEPTION(0x1700, Trap_17, TAUException, EXC_XFER_STD)
-       EXCEPTION(0x1800, Trap_18, UnknownException, EXC_XFER_EE)
+       EXCEPTION(0x1800, Trap_18, unknown_exception, EXC_XFER_EE)
 #endif /* CONFIG_POWER4 */
-       EXCEPTION(0x1900, Trap_19, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x1a00, Trap_1a, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x1b00, Trap_1b, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x1c00, Trap_1c, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x1d00, Trap_1d, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x1e00, Trap_1e, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x1f00, Trap_1f, UnknownException, EXC_XFER_EE)
+       EXCEPTION(0x1900, Trap_19, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x1a00, Trap_1a, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x1b00, Trap_1b, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x1c00, Trap_1c, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x1d00, Trap_1d, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x1e00, Trap_1e, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x1f00, Trap_1f, unknown_exception, EXC_XFER_EE)
        EXCEPTION(0x2000, RunMode, RunModeException, EXC_XFER_EE)
-       EXCEPTION(0x2100, Trap_21, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x2200, Trap_22, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x2300, Trap_23, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x2400, Trap_24, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x2500, Trap_25, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x2600, Trap_26, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x2700, Trap_27, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x2800, Trap_28, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x2900, Trap_29, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x2a00, Trap_2a, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x2b00, Trap_2b, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x2c00, Trap_2c, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x2d00, Trap_2d, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x2e00, Trap_2e, UnknownException, EXC_XFER_EE)
-       EXCEPTION(0x2f00, MOLTrampoline, UnknownException, EXC_XFER_EE_LITE)
+       EXCEPTION(0x2100, Trap_21, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x2200, Trap_22, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x2300, Trap_23, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x2400, Trap_24, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x2500, Trap_25, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x2600, Trap_26, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x2700, Trap_27, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x2800, Trap_28, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x2900, Trap_29, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x2a00, Trap_2a, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x2b00, Trap_2b, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x2c00, Trap_2c, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x2d00, Trap_2d, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x2e00, Trap_2e, unknown_exception, EXC_XFER_EE)
+       EXCEPTION(0x2f00, MOLTrampoline, unknown_exception, EXC_XFER_EE_LITE)
 
        .globl mol_trampoline
        .set mol_trampoline, i0x2f00
@@ -751,7 +751,8 @@ AltiVecUnavailable:
 #ifdef CONFIG_ALTIVEC
        bne     load_up_altivec         /* if from user, just load it up */
 #endif /* CONFIG_ALTIVEC */
-       EXC_XFER_EE_LITE(0xf20, AltivecUnavailException)
+       addi    r3,r1,STACK_FRAME_OVERHEAD
+       EXC_XFER_EE_LITE(0xf20, altivec_unavailable_exception)
 
 #ifdef CONFIG_PPC64BRIDGE
 DataAccess:
@@ -767,12 +768,12 @@ DataSegment:
        addi    r3,r1,STACK_FRAME_OVERHEAD
        mfspr   r4,SPRN_DAR
        stw     r4,_DAR(r11)
-       EXC_XFER_STD(0x380, UnknownException)
+       EXC_XFER_STD(0x380, unknown_exception)
 
 InstructionSegment:
        EXCEPTION_PROLOG
        addi    r3,r1,STACK_FRAME_OVERHEAD
-       EXC_XFER_STD(0x480, UnknownException)
+       EXC_XFER_STD(0x480, unknown_exception)
 #endif /* CONFIG_PPC64BRIDGE */
 
 #ifdef CONFIG_ALTIVEC
@@ -804,7 +805,7 @@ load_up_altivec:
        beq     1f
        add     r4,r4,r6
        addi    r4,r4,THREAD    /* want THREAD of last_task_used_altivec */
-       SAVE_32VR(0,r10,r4)
+       SAVE_32VRS(0,r10,r4)
        mfvscr  vr0
        li      r10,THREAD_VSCR
        stvx    vr0,r10,r4
@@ -824,7 +825,7 @@ load_up_altivec:
        stw     r4,THREAD_USED_VR(r5)
        lvx     vr0,r10,r5
        mtvscr  vr0
-       REST_32VR(0,r10,r5)
+       REST_32VRS(0,r10,r5)
 #ifndef CONFIG_SMP
        subi    r4,r5,THREAD
        sub     r4,r4,r6
@@ -870,7 +871,7 @@ giveup_altivec:
        addi    r3,r3,THREAD            /* want THREAD of task */
        lwz     r5,PT_REGS(r3)
        cmpwi   0,r5,0
-       SAVE_32VR(0, r4, r3)
+       SAVE_32VRS(0, r4, r3)
        mfvscr  vr0
        li      r4,THREAD_VSCR
        stvx    vr0,r4,r3
@@ -916,7 +917,7 @@ relocate_kernel:
 copy_and_flush:
        addi    r5,r5,-4
        addi    r6,r6,-4
-4:     li      r0,L1_CACHE_LINE_SIZE/4
+4:     li      r0,L1_CACHE_BYTES/4
        mtctr   r0
 3:     addi    r6,r6,4                 /* copy a cache line */
        lwzx    r0,r6,r4
@@ -1023,23 +1024,21 @@ __secondary_start_gemini:
         andc    r4,r4,r3
         mtspr   SPRN_HID0,r4
         sync
-        bl      gemini_prom_init
         b       __secondary_start
 #endif /* CONFIG_GEMINI */
-       .globl  __secondary_start_psurge
-__secondary_start_psurge:
-       li      r24,1                   /* cpu # */
-       b       __secondary_start_psurge99
-       .globl  __secondary_start_psurge2
-__secondary_start_psurge2:
-       li      r24,2                   /* cpu # */
-       b       __secondary_start_psurge99
-       .globl  __secondary_start_psurge3
-__secondary_start_psurge3:
-       li      r24,3                   /* cpu # */
-       b       __secondary_start_psurge99
-__secondary_start_psurge99:
-       /* we come in here with IR=0 and DR=1, and DBAT 0
+
+       .globl  __secondary_start_pmac_0
+__secondary_start_pmac_0:
+       /* NB the entries for cpus 0, 1, 2 must each occupy 8 bytes. */
+       li      r24,0
+       b       1f
+       li      r24,1
+       b       1f
+       li      r24,2
+       b       1f
+       li      r24,3
+1:
+       /* on powersurge, we come in here with IR=0 and DR=1, and DBAT 0
           set to map the 0xf0000000 - 0xffffffff region */
        mfmsr   r0
        rlwinm  r0,r0,0,28,26           /* clear DR (0x10) */
@@ -1061,7 +1060,6 @@ __secondary_start:
 
        lis     r3,-KERNELBASE@h
        mr      r4,r24
-       bl      identify_cpu
        bl      call_setup_cpu          /* Call setup_cpu for this CPU */
 #ifdef CONFIG_6xx
        lis     r3,-KERNELBASE@h
@@ -1111,11 +1109,6 @@ __secondary_start:
  * Those generic dummy functions are kept for CPUs not
  * included in CONFIG_6xx
  */
-_GLOBAL(__setup_cpu_power3)
-       blr
-_GLOBAL(__setup_cpu_generic)
-       blr
-
 #if !defined(CONFIG_6xx) && !defined(CONFIG_POWER4)
 _GLOBAL(__save_cpu_setup)
        blr
@@ -1349,7 +1342,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_HIGH_BATS)
 flush_tlbs:
        lis     r10, 0x40
 1:     addic.  r10, r10, -0x1000
-       tlbie   r10,0
+       tlbie   r10
        blt     1b
        sync
        blr