diff options
author | wdenk <wdenk> | 2002-12-07 00:20:59 +0000 |
---|---|---|
committer | wdenk <wdenk> | 2002-12-07 00:20:59 +0000 |
commit | 7c7a23bd5a0bc149d2edd665ec46381726b24e0c (patch) | |
tree | d859f82ea2561180db2ffd7569f0b9007d710769 /cpu/74xx_7xx | |
parent | 1f53a41603b9093c59741f4208fef0ab3790d6ce (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.S | 21 |
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 */ |