patch-2.4.0-test9 linux/arch/ppc/kernel/entry.S
Next file: linux/arch/ppc/kernel/feature.c
Previous file: linux/arch/ppc/kernel/chrp_time.c
Back to the patch index
Back to the overall index
- Lines: 92
- Date:
Sun Sep 17 09:48:06 2000
- Orig file:
v2.4.0-test8/linux/arch/ppc/kernel/entry.S
- Orig date:
Fri Aug 4 16:15:37 2000
diff -u --recursive --new-file v2.4.0-test8/linux/arch/ppc/kernel/entry.S linux/arch/ppc/kernel/entry.S
@@ -30,6 +30,7 @@
#include <linux/errno.h>
#include <linux/sys.h>
#include <linux/config.h>
+#include "mol.h"
#undef SHOW_SYSCALLS
#undef SHOW_SYSCALLS_TASK
@@ -85,7 +86,7 @@
beq- 10f
cmpi 0,r0,0x6666 /* Special case for 'sys_rt_sigreturn' */
beq- 16f
- lwz r10,TASK_FLAGS(r2)
+ lwz r10,TASK_PTRACE(r2)
andi. r10,r10,PT_TRACESYS
bne- 50f
cmpli 0,r0,NR_syscalls
@@ -241,6 +242,13 @@
/* XXX it would be nice to find a SPRGx for this on 6xx,7xx too */
lwz r9,PGDIR(r4) /* cache the page table root */
tophys(r9,r9) /* convert to phys addr */
+#ifdef CONFIG_8xx_CPU6
+ lis r6, cpu6_errata_word@h
+ ori r6, r6, cpu6_errata_word@l
+ li r5, 0x3980
+ stw r5, 8(r6)
+ lwz r5, 8(r6)
+#endif
mtspr M_TWB,r9 /* Update MMU base address */
tlbia
SYNC
@@ -349,21 +357,18 @@
beq+ restore
li r3,0
addi r4,r1,STACK_FRAME_OVERHEAD
+ MOL_HOOK_MMU(8,r8)
bl do_signal
.globl do_signal_ret
do_signal_ret:
-restore:
- lwz r3,_CTR(r1)
- lwz r0,_LINK(r1)
- mtctr r3
- mtlr r0
+restore:
lwz r3,_XER(r1)
mtspr XER,r3
- REST_10GPRS(3, r1)
- REST_10GPRS(13, r1)
- REST_8GPRS(23, r1)
- REST_GPR(31, r1)
-
+ REST_10GPRS(9,r1)
+ REST_10GPRS(19,r1)
+ REST_2GPRS(29,r1)
+ REST_GPR(31,r1)
+
/* make sure we hard disable here, even if rtl is active, to protect
* SRR[01] and SPRG2 -- Cort
*/
@@ -376,12 +381,28 @@
lwz r0,_MSR(r1)
andi. r0,r0,MSR_PR
beq+ 1f
+#ifdef CONFIG_ALTIVEC
+ mfpvr r8 /* check if we are on a G4 */
+ srwi r8,r8,16
+ cmpwi r8,PVR_7400@h
+ bne 2f
+ lwz r0,THREAD+THREAD_VRSAVE(r2)
+ mtspr SPRN_VRSAVE,r0 /* if so, restore VRSAVE reg */
+2:
+#endif /* CONFIG_ALTIVEC */
addi r0,r1,INT_FRAME_SIZE /* size of frame */
stw r0,THREAD+KSP(r2) /* save kernel stack pointer */
- tophys(r2,r1)
- CLR_TOP32(r2)
- mtspr SPRG2,r2 /* phys exception stack pointer */
+ tophys(r8,r1)
+ CLR_TOP32(r8)
+ MOL_HOOK_MMU(9, r4) /* mod. r0,r2-r7, lr, ctr */
+ mtspr SPRG2,r8 /* phys exception stack pointer */
1:
+ lwz r3,_CTR(r1)
+ lwz r0,_LINK(r1)
+ mtctr r3
+ mtlr r0
+ REST_4GPRS(3, r1)
+ REST_2GPRS(7, r1)
lwz r0,_MSR(r1)
FIX_SRR1(r0,r2)
mtspr SRR1,r0
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)