]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - cpu/mpc8260/start.S
* Patch by Hans-Joerg Frieden, 06 Dec 2002
[karo-tx-uboot.git] / cpu / mpc8260 / start.S
index 10a8988ee855925fd0f05ffce10064bc5dc2b203..d79c5789f78d5f7117ec63a10753d31215b71420 100644 (file)
@@ -324,7 +324,14 @@ SystemCall:
        add     r11,r11,r0
        lwz     r11,0(r11)
 
-       li      r12,0xd00-4*3           /* save LR & SRRx */
+       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
@@ -349,7 +356,9 @@ _back:
        mtmsr   r11
        SYNC
 
-       li      r12,0xd00-4*3           /* restore regs */
+       li      r12,0xd00-4             /* restore regs */
+       lwz     r12,0(r12)
+
        lwz     r11,0(r12)
        mtlr    r11
        lwz     r11,4(r12)
@@ -357,8 +366,13 @@ _back:
        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(0xd00, SingleStep, UnknownException)