diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1995-12-05 19:23:05 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1995-12-05 19:23:05 +0000 |
commit | e57b0e23d4781e597299281524f6395dae4a25ad (patch) | |
tree | e38d371378fd92931847deee5076c3b44d23ac83 /c/src/lib/libcpu/powerpc/ppc403/vectors | |
parent | bug fix in statistics from Tony Bennett (tbennett@divnc.com) (diff) | |
download | rtems-e57b0e23d4781e597299281524f6395dae4a25ad.tar.bz2 |
update from Andy Bray <andy@i-cubed.co.uk>
Diffstat (limited to 'c/src/lib/libcpu/powerpc/ppc403/vectors')
-rw-r--r-- | c/src/lib/libcpu/powerpc/ppc403/vectors/align_h.s | 25 | ||||
-rw-r--r-- | c/src/lib/libcpu/powerpc/ppc403/vectors/vectors.s | 67 |
2 files changed, 19 insertions, 73 deletions
diff --git a/c/src/lib/libcpu/powerpc/ppc403/vectors/align_h.s b/c/src/lib/libcpu/powerpc/ppc403/vectors/align_h.s index ab80fc5c6a..00266b87e9 100644 --- a/c/src/lib/libcpu/powerpc/ppc403/vectors/align_h.s +++ b/c/src/lib/libcpu/powerpc/ppc403/vectors/align_h.s @@ -1,4 +1,4 @@ -/* align_h.s 1.0 - 95/09/26 +/* align_h.s 1.1 - 95/12/04 * * This file contains the assembly code for the PowerPC 403 * alignment exception handler for RTEMS. @@ -25,7 +25,7 @@ * * Modifications: * - * Author: Andrew Bray <andy@i-cubed.demon.co.uk> + * Author: Andrew Bray <andy@i-cubed.co.uk> * * COPYRIGHT (c) 1995 by i-cubed ltd. * @@ -121,17 +121,17 @@ align_h: stw r8,Open_lr(r1) stw r9,Open_cr(r1) stw r10,Open_ctr(r1) - mfsrr2 r7 - mfsrr3 r8 - mfsrr0 r9 - mfsrr1 r10 + mfspr r7, srr2 /* SRR 2 */ + mfspr r8, srr3 /* SRR 3 */ + mfspr r9, srr0 /* SRR 0 */ + mfspr r10, srr1 /* SRR 1 */ stw r7,Open_srr2(r1) stw r8,Open_srr3(r1) stw r9,Open_srr0(r1) stw r10,Open_srr1(r1) /* Set up common registers */ - mfdear r5 /* R5 is data exception address */ + mfspr r5, dear /* DEAR: R5 is data exception address */ lwz r9,Open_srr0(r1) /* get faulting instruction */ addi r7,r9,4 /* bump instruction */ stw r7,Open_srr0(r1) /* restore to image */ @@ -425,12 +425,9 @@ align_complete: mtlr r25 mtctr r26 mtcrf 0xFF, r27 - mtsrr2 r28 - mtsrr3 r29 - mtsrr0 r30 - mtsrr1 r31 - mttcr r30 - mtexier r31 + mtspr srr2, r28 /* SRR 2 */ + mtspr srr3, r29 /* SRR 3 */ + mtspr srr0, r30 /* SRR 0 */ + mtspr srr1, r31 /* SRR 1 */ lmw r0,Open_gpr0+ALIGN_REGS(r0) rfi - diff --git a/c/src/lib/libcpu/powerpc/ppc403/vectors/vectors.s b/c/src/lib/libcpu/powerpc/ppc403/vectors/vectors.s index c5fb7b738c..b764207648 100644 --- a/c/src/lib/libcpu/powerpc/ppc403/vectors/vectors.s +++ b/c/src/lib/libcpu/powerpc/ppc403/vectors/vectors.s @@ -1,9 +1,9 @@ -/* vectors.s 1.0 - 95/08/08 +/* vectors.s 1.1 - 95/12/04 * * This file contains the assembly code for the PowerPC 403 * interrupt veneers for RTEMS. * - * Author: Andrew Bray <andy@i-cubed.demon.co.uk> + * Author: Andrew Bray <andy@i-cubed.co.uk> * * COPYRIGHT (c) 1995 by i-cubed ltd. * @@ -18,7 +18,6 @@ * i-cubed limited makes no representations about the suitability * of this software for any purpose. * - * $Id$ */ /* @@ -37,6 +36,8 @@ * The variable 'PPC_VECTOR_FILE_BASE' must be defined to be the * offset from 0x????0000 to the first location in the file. This * will usually be 0x0000 or 0x0100. + * + * $Id$ */ #include "asm.h" @@ -113,9 +114,6 @@ SYM (__vectors): /* Critical error handling */ .org crit_vector - file_base - mtsprg1 r0 - mfsprg2 r0 - mtmsr r0 #if (PPC_ABI == PPC_ABI_POWEROPEN || PPC_ABI == PPC_ABI_GCC27) #if (PPC_HAS_FPU) stwu r1, -(20*4 + 18*8 + IP_END)(r1) @@ -125,7 +123,6 @@ SYM (__vectors): #else stwu r1, -(IP_END)(r1) #endif - mfsprg1 r0 stw r0, IP_0(r1) li r0, PPC_IRQ_CRIT @@ -133,9 +130,6 @@ SYM (__vectors): /* Machine check exception */ .org mach_vector - file_base - mtsprg1 r0 - mfsprg2 r0 - mtmsr r0 #if (PPC_ABI == PPC_ABI_POWEROPEN || PPC_ABI == PPC_ABI_GCC27) #if (PPC_HAS_FPU) stwu r1, -(20*4 + 18*8 + IP_END)(r1) @@ -145,7 +139,6 @@ SYM (__vectors): #else stwu r1, -(IP_END)(r1) #endif - mfsprg1 r0 stw r0, IP_0(r1) li r0, PPC_IRQ_MCHECK @@ -153,9 +146,6 @@ SYM (__vectors): /* Protection exception */ .org prot_vector - file_base - mtsprg0 r0 - mfsprg2 r0 - mtmsr r0 #if (PPC_ABI == PPC_ABI_POWEROPEN || PPC_ABI == PPC_ABI_GCC27) #if (PPC_HAS_FPU) stwu r1, -(20*4 + 18*8 + IP_END)(r1) @@ -165,7 +155,6 @@ SYM (__vectors): #else stwu r1, -(IP_END)(r1) #endif - mfsprg0 r0 stw r0, IP_0(r1) li r0, PPC_IRQ_PROTECT @@ -173,9 +162,6 @@ SYM (__vectors): /* External interrupt */ .org ext_vector - file_base - mtsprg0 r0 - mfsprg2 r0 - mtmsr r0 #if (PPC_ABI == PPC_ABI_POWEROPEN || PPC_ABI == PPC_ABI_GCC27) #if (PPC_HAS_FPU) stwu r1, -(20*4 + 18*8 + IP_END)(r1) @@ -185,7 +171,6 @@ SYM (__vectors): #else stwu r1, -(IP_END)(r1) #endif - mfsprg0 r0 stw r0, IP_0(r1) li r0, PPC_IRQ_EXTERNAL @@ -198,9 +183,6 @@ SYM (__vectors): /* Program exception */ .org prog_vector - file_base - mtsprg0 r0 - mfsprg2 r0 - mtmsr r0 #if (PPC_ABI == PPC_ABI_POWEROPEN || PPC_ABI == PPC_ABI_GCC27) #if (PPC_HAS_FPU) stwu r1, -(20*4 + 18*8 + IP_END)(r1) @@ -210,7 +192,6 @@ SYM (__vectors): #else stwu r1, -(IP_END)(r1) #endif - mfsprg0 r0 stw r0, IP_0(r1) li r0, PPC_IRQ_PROGRAM @@ -218,9 +199,6 @@ SYM (__vectors): /* System call */ .org sys_vector - file_base - mtsprg0 r0 - mfsprg2 r0 - mtmsr r0 #if (PPC_ABI == PPC_ABI_POWEROPEN || PPC_ABI == PPC_ABI_GCC27) #if (PPC_HAS_FPU) stwu r1, -(20*4 + 18*8 + IP_END)(r1) @@ -230,7 +208,6 @@ SYM (__vectors): #else stwu r1, -(IP_END)(r1) #endif - mfsprg0 r0 stw r0, IP_0(r1) li r0, PPC_IRQ_SCALL @@ -238,21 +215,6 @@ SYM (__vectors): /* PIT interrupt */ .org pit_vector - file_base - b pit - -/* FIT interrupt */ - .org fit_vector - file_base - b fit - -/* Watchdog interrupt */ - .org wadt_vector - file_base - b watch - -/* PIT interrupt */ -pit: - mtsprg0 r0 - mfsprg2 r0 - mtmsr r0 #if (PPC_ABI == PPC_ABI_POWEROPEN || PPC_ABI == PPC_ABI_GCC27) #if (PPC_HAS_FPU) stwu r1, -(20*4 + 18*8 + IP_END)(r1) @@ -262,17 +224,13 @@ pit: #else stwu r1, -(IP_END)(r1) #endif - mfsprg0 r0 stw r0, IP_0(r1) li r0, PPC_IRQ_PIT b PROC (_ISR_Handler) - + /* FIT interrupt */ -fit: - mtsprg0 r0 - mfsprg2 r0 - mtmsr r0 + .org fit_vector - file_base #if (PPC_ABI == PPC_ABI_POWEROPEN || PPC_ABI == PPC_ABI_GCC27) #if (PPC_HAS_FPU) stwu r1, -(20*4 + 18*8 + IP_END)(r1) @@ -282,17 +240,13 @@ fit: #else stwu r1, -(IP_END)(r1) #endif - mfsprg0 r0 stw r0, IP_0(r1) li r0, PPC_IRQ_FIT b PROC (_ISR_Handler) - + /* Watchdog interrupt */ -watch: - mtsprg1 r0 - mfsprg2 r0 - mtmsr r0 + .org wadt_vector - file_base #if (PPC_ABI == PPC_ABI_POWEROPEN || PPC_ABI == PPC_ABI_GCC27) #if (PPC_HAS_FPU) stwu r1, -(20*4 + 18*8 + IP_END)(r1) @@ -302,7 +256,6 @@ watch: #else stwu r1, -(IP_END)(r1) #endif - mfsprg1 r0 stw r0, IP_0(r1) li r0, PPC_IRQ_WATCHDOG @@ -310,9 +263,6 @@ watch: /* Debug exception */ debug: - mtsprg1 r0 - mfsprg2 r0 - mtmsr r0 #if (PPC_ABI == PPC_ABI_POWEROPEN || PPC_ABI == PPC_ABI_GCC27) #if (PPC_HAS_FPU) stwu r1, -(20*4 + 18*8 + IP_END)(r1) @@ -322,7 +272,6 @@ debug: #else stwu r1, -(IP_END)(r1) #endif - mfsprg1 r0 stw r0, IP_0(r1) li r0, PPC_IRQ_DEBUG |