summaryrefslogtreecommitdiff
path: root/cpu/74xx_7xx
diff options
context:
space:
mode:
authorwdenk <wdenk>2002-12-07 00:20:59 +0000
committerwdenk <wdenk>2002-12-07 00:20:59 +0000
commit7c7a23bd5a0bc149d2edd665ec46381726b24e0c (patch)
treed859f82ea2561180db2ffd7569f0b9007d710769 /cpu/74xx_7xx
parent1f53a41603b9093c59741f4208fef0ab3790d6ce (diff)
* Patch by Hans-Joerg Frieden, 06 Dec 2002LABEL_2002_12_07_0120
Fix misc problems with AmigaOne support * Patch by Chris Hallinan, 3 Dec 2002: minor cleanup to the MPC8245 EPIC driver * Patch by Pierre Aubert , 28 Nov 2002 Add support for external (SIU) interrupts on MPC8xx * Patch by Pierre Aubert , 28 Nov 2002 Fix nested syscalls bug in standalone applications * Patch by David Müller, 27 Nov 2002: fix output of "pciinfo" command for CardBus bridge devices. * Fix bug in TQM8260 board detection - boards got stuck when board ID was not readable
Diffstat (limited to 'cpu/74xx_7xx')
-rw-r--r--cpu/74xx_7xx/start.S21
1 files changed, 19 insertions, 2 deletions
diff --git a/cpu/74xx_7xx/start.S b/cpu/74xx_7xx/start.S
index fe08f8e8379..0d63144356f 100644
--- a/cpu/74xx_7xx/start.S
+++ b/cpu/74xx_7xx/start.S
@@ -177,7 +177,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
@@ -202,7 +209,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)
@@ -210,8 +219,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)
@@ -716,6 +730,9 @@ in_ram:
bne 5b
6:
mr r3, r10 /* Destination Address */
+#ifdef CONFIG_AMIGAONEG3SE
+ mr r4, r9 /* Use RAM copy of the global data */
+#endif
bl after_reloc
/* not reached - end relocate_code */