diff options
| author | bouyer <bouyer@NetBSD.org> | 2000-05-25 10:10:54 +0000 |
|---|---|---|
| committer | bouyer <bouyer@NetBSD.org> | 2000-05-25 10:10:54 +0000 |
| commit | b063b2ec3643129d343b0b72e5bb5e3cac4ea4f0 (patch) | |
| tree | 46175835151c3a9489d81284c0ce97ddabf0cb86 /sys/dev/microcode | |
| parent | 4a42668b31614f8cf9b4e62e4fa3f72dd25383d7 (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.ss | 13 |
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 |
