summaryrefslogtreecommitdiff
path: root/sys/dev/microcode
diff options
context:
space:
mode:
authorbouyer <bouyer@NetBSD.org>2000-05-25 10:10:54 +0000
committerbouyer <bouyer@NetBSD.org>2000-05-25 10:10:54 +0000
commitb063b2ec3643129d343b0b72e5bb5e3cac4ea4f0 (patch)
tree46175835151c3a9489d81284c0ce97ddabf0cb86 /sys/dev/microcode
parent4a42668b31614f8cf9b4e62e4fa3f72dd25383d7 (diff)
Separate the sheduler from the main script, allocate another DMA-safe
memory page for the sheduler. Put the main script in the on-chip RAM when available. Avoid a null-pointer dereference when DSA is invalid.
Diffstat (limited to 'sys/dev/microcode')
-rw-r--r--sys/dev/microcode/siop/siop.ss13
1 files changed, 5 insertions, 8 deletions
diff --git a/sys/dev/microcode/siop/siop.ss b/sys/dev/microcode/siop/siop.ss
index 79f3ff7afd1..6d222ed9fd5 100644
--- a/sys/dev/microcode/siop/siop.ss
+++ b/sys/dev/microcode/siop/siop.ss
@@ -1,4 +1,4 @@
-; $NetBSD: siop.ss,v 1.5 2000/05/15 07:43:45 bouyer Exp $
+; $NetBSD: siop.ss,v 1.6 2000/05/25 10:10:54 bouyer Exp $
;
; Copyright (c) 2000 Manuel Bouyer.
@@ -70,7 +70,6 @@ ENTRY disconnect;
ENTRY reselect;
ENTRY selected;
ENTRY get_extmsgdata;
-ENTRY sheduler;
ENTRY slot;
ENTRY idsa0;
ENTRY idsa1;
@@ -80,6 +79,7 @@ ENTRY slotdata;
ENTRY nextslot;
ENTRY endslot;
+EXTERN script_abs_shed;
EXTERN slot_nextp;
EXTERN slot_shed_addrsrc;
EXTERN slot_abs_reselect;
@@ -116,7 +116,7 @@ reselect_fail:
; check that host asserted SIGP, this'll clear SIGP in ISTAT
MOVE CTEST2 & 0x40 TO SFBR;
INT int_resfail, IF 0x00;
- JUMP REL(sheduler);
+ JUMP script_abs_shed;
msgin:
CLEAR ATN
@@ -207,9 +207,9 @@ handle_dis:
CALL REL(disconnect);
; if we didn't get sdp, or if offset is 0, no need to interrupt
MOVE SCRATCHA0 & flag_sdp TO SFBR;
- JUMP REL(sheduler), if 0x00;
+ JUMP script_abs_shed, if 0x00;
MOVE SCRATCHA1 TO SFBR;
- JUMP REL(sheduler), if 0x00;
+ JUMP script_abs_shed, if 0x00;
; Ok, we need to save data pointers
INT int_disc;
@@ -232,9 +232,6 @@ get_extmsgdata:
MOVE FROM t_ext_msg_data, WHEN MSG_IN;
INT int_extmsgdata;
-sheduler:
- NOP; /* will be changed by the slot scripts */
-
; script used for the sheduler: when a slot is free the JUMP points to
; the next slot so that instructions for this slot are not run.
; once the CPU has set up the slot variables (DSA address) it changes