summaryrefslogtreecommitdiffstats
path: root/c/src/exec/score/cpu/a29k/cpu_asm.s
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1996-12-02 19:48:29 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1996-12-02 19:48:29 +0000
commit29d8227e6d16aa2e8c116b3835ef5c33495741c5 (patch)
tree0af3df93d81525ca551a5ab4f75aa6b84ca5658b /c/src/exec/score/cpu/a29k/cpu_asm.s
parentUpdate from Chris Johns <cjohns@awa.com.au> to add better support for (diff)
downloadrtems-29d8227e6d16aa2e8c116b3835ef5c33495741c5.tar.bz2
Updates from Derrick Ostertag <ostertag@transition.com> to fix bug in
interrupt handling.
Diffstat (limited to '')
-rw-r--r--c/src/exec/score/cpu/a29k/cpu_asm.s25
1 files changed, 20 insertions, 5 deletions
diff --git a/c/src/exec/score/cpu/a29k/cpu_asm.s b/c/src/exec/score/cpu/a29k/cpu_asm.s
index e915dd2ecf..78a3300627 100644
--- a/c/src/exec/score/cpu/a29k/cpu_asm.s
+++ b/c/src/exec/score/cpu/a29k/cpu_asm.s
@@ -391,6 +391,18 @@ __CPU_Context_save:
; jmpi lr0
; nop
+ .global _a29k_getops
+_a29k_getops:
+ asneq 113, gr96, gr96
+ jmpi lr0
+ nop
+
+ .global _a29k_getops_sup
+_a29k_getops_sup:
+ mfsr gr96, ops ; caller wants ops
+ iret
+ nop
+
.global _a29k_disable
_a29k_disable:
asneq 110, gr96, gr96
@@ -400,6 +412,7 @@ _a29k_disable:
.global _a29k_disable_sup
_a29k_disable_sup:
mfsr kt0, ops
+ add gr96, kt0, 0 ; return ops to caller
const kt1, (DI | TD)
consth kt1, (DI | TD)
or kt1, kt0, kt1
@@ -416,8 +429,8 @@ _a29k_disable_all:
.global _a29k_disable_all_sup
_a29k_disable_all_sup:
mfsr kt0, ops
- const kt1, DA
- consth kt1, DA
+ const kt1, (DI | TD)
+ consth kt1, (DI | TD)
or kt1, kt0, kt1
mtsr ops, kt1
iret
@@ -432,8 +445,8 @@ _a29k_enable_all:
.global _a29k_enable_all_sup
_a29k_enable_all_sup:
mfsr kt0, ops
- const kt1, DA
- consth kt1, DA
+ const kt1, (DI | TD)
+ consth kt1, (DI | TD)
andn kt1, kt0, kt1
mtsr ops, kt1
iret
@@ -450,7 +463,9 @@ _a29k_enable_sup:
mfsr kt0, ops
const kt1, (DI | TD)
consth kt1, (DI | TD)
- andn kt1, kt0, kt1
+ and kt3, lr2, kt1
+ andn kt0, kt0, kt1
+ or kt1, kt0, kt3
mtsr ops, kt1
iret
nop