Module Name: src Committed By: matt Date: Wed Jul 18 16:56:51 UTC 2012
Modified Files: src/sys/arch/powerpc/powerpc: trap_subr.S Log Message: Add conditionals so this should work for the MPC8XX SoCs. Turn on PSL_RI in interrupts. To generate a diff of this commit: cvs rdiff -u -r1.73 -r1.74 src/sys/arch/powerpc/powerpc/trap_subr.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/powerpc/powerpc/trap_subr.S diff -u src/sys/arch/powerpc/powerpc/trap_subr.S:1.73 src/sys/arch/powerpc/powerpc/trap_subr.S:1.74 --- src/sys/arch/powerpc/powerpc/trap_subr.S:1.73 Wed Feb 1 05:25:58 2012 +++ src/sys/arch/powerpc/powerpc/trap_subr.S Wed Jul 18 16:56:51 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: trap_subr.S,v 1.73 2012/02/01 05:25:58 matt Exp $ */ +/* $NetBSD: trap_subr.S,v 1.74 2012/07/18 16:56:51 matt Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. @@ -79,6 +79,14 @@ ldreg t0,_C_LABEL(kernel_pmap_)+PM_STEG@l(t0); \ mtasr t0 +#elif defined(PPC_MPC8XX) + +/* + * PPC_MPC8XX don't have SRs to load + */ +#define RESTORE_USER_SRS(t0,t1) +#define RESTORE_KERN_SRS(t0,t1) + #else /* not OEA64 */ /* @@ -216,6 +224,7 @@ _C_LABEL(alitrap): #endif _C_LABEL(alisize) = .-_C_LABEL(alitrap) +#if !defined(PPC_MPC8XX) /* * Similar to the above for DSI * Has to handle BAT spills @@ -232,10 +241,11 @@ _C_LABEL(dsitrap): streg %r31,(CI_DISISAVE+CPUSAVE_R31)(%r1) /* save r31 */ mfsprg1 %r1 mfcr %r29 /* save CR */ - mfxer %r30 /* save XER */ - mtsprg2 %r30 /* in SPRG2 */ mfsrr1 %r31 /* test kernel mode */ mtcr %r31 +#if !defined(PPC_MPC8XX) + mfxer %r30 /* save XER */ + mtsprg2 %r30 /* in SPRG2 */ bt MSR_PR,1f /* branch if PSL_PR is set */ mfdar %r31 /* get fault address */ rlwinm %r31,%r31,3+(32-BAT_ADDR_SHIFT),BAT_ADDR_SHIFT-3,28 @@ -296,6 +306,7 @@ dsitrap_fix_dbat7: mfsprg1 %r1 RFI /* return to trapped code */ 1: +#endif /* !PPC_MPC8XX */ mflr %r28 /* save LR */ mtsprg1 %r1 /* save SP */ #if defined(DISTANT_KERNEL) @@ -307,6 +318,7 @@ dsitrap_fix_dbat7: bla disitrap #endif _C_LABEL(dsisize) = .-_C_LABEL(dsitrap) +#endif /* !PPC_MPC8XX */ #if defined(PPC_OEA601) /* @@ -444,7 +456,7 @@ _C_LABEL(decrint): #endif _C_LABEL(decrsize) = .-_C_LABEL(decrint) -#if !defined(PPC_OEA64) +#if !defined(PPC_OEA64) && !defined(PPC_MPC8XX) /* * Now the tlb software load for 603 processors: * (Code essentially from the 603e User Manual, Chapter 5, but @@ -648,7 +660,7 @@ _C_LABEL(tlbdsmiss): ba EXC_DSI #endif _C_LABEL(tlbdsmsize) = .-_C_LABEL(tlbdsmiss) -#endif /* !defined(PPC_OEA64) */ +#endif /* !PPC_OEA64 && !PPC_MPC8XX */ #if defined(DDB) || defined(KGDB) /* @@ -1112,6 +1124,9 @@ _C_LABEL(sctrapexit): streg %r4,FRAME_CTR(%r1); \ streg %r11,FRAME_SRR0(%r1); \ streg %r12,FRAME_SRR1(%r1); \ + mfmsr %r30; \ + ori %r30,%r30,PSL_RI; /* turn on recovery interrupt */\ + mtmsr %r30; \ SAVE_VRSAVE(%r1,%r6); \ SAVE_MQ(%r1,%r7) @@ -1337,5 +1352,7 @@ _C_LABEL(trapend): * All OEA have FPUs so include this too. Some OEA have AltiVec so include * that too. */ +#if !defined(PPC_MPC8XX) #include <powerpc/powerpc/fpu_subr.S> #include <powerpc/oea/altivec_subr.S> +#endif