summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libcpu/powerpc/ppc403/vectors
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1995-12-05 19:23:05 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1995-12-05 19:23:05 +0000
commite57b0e23d4781e597299281524f6395dae4a25ad (patch)
treee38d371378fd92931847deee5076c3b44d23ac83 /c/src/lib/libcpu/powerpc/ppc403/vectors
parentbug fix in statistics from Tony Bennett (tbennett@divnc.com) (diff)
downloadrtems-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.s25
-rw-r--r--c/src/lib/libcpu/powerpc/ppc403/vectors/vectors.s67
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