diff options
| author | bouyer <bouyer@NetBSD.org> | 2000-05-04 15:42:42 +0000 |
|---|---|---|
| committer | bouyer <bouyer@NetBSD.org> | 2000-05-04 15:42:42 +0000 |
| commit | c8ff442f7207d030d74867a7d0497f8101b5f008 (patch) | |
| tree | defa1b6dcbff557a66eef13a9fb1c8e70ae952ee /sys/dev/microcode | |
| parent | 057045f8bf31a30d9bd4a318ef11acf369af26b5 (diff) | |
Add a flag hold in scratcha0, set when we're doing a data transfer. Used
for save data pointers.
Diffstat (limited to 'sys/dev/microcode')
| -rw-r--r-- | sys/dev/microcode/siop/siop.out | 42 | ||||
| -rw-r--r-- | sys/dev/microcode/siop/siop.ss | 26 |
2 files changed, 37 insertions, 31 deletions
diff --git a/sys/dev/microcode/siop/siop.out b/sys/dev/microcode/siop/siop.out index 67a59edbbfa..24939591f48 100644 --- a/sys/dev/microcode/siop/siop.out +++ b/sys/dev/microcode/siop/siop.out @@ -1,7 +1,7 @@ -/* $NetBSD: siop.out,v 1.2 2000/04/25 16:27:06 bouyer Exp $ */ +/* $NetBSD: siop.out,v 1.3 2000/05/04 15:42:42 bouyer Exp $ */ /* * DO NOT EDIT - this file is automatically generated. - * created from siop.ss on Mon Apr 24 16:52:43 2000 + * created from siop.ss on Thu May 4 11:20:07 2000 */ const u_int32_t siop_script[] = { 0x78340000, 0x00000000, /* 000 - 0 */ @@ -17,14 +17,14 @@ const u_int32_t siop_script[] = { 0x740a8f00, 0x00000000, /* 050 - 80 */ 0x6a340000, 0x00000000, /* 058 - 88 */ 0x9f030000, 0x0000ffff, /* 060 - 96 */ - 0x1f00001c, 0x0000001c, /* 068 - 104 */ + 0x1f000020, 0x00000020, /* 068 - 104 */ 0x60000040, 0x00000000, /* 070 - 112 */ 0x98080000, 0x0000ff04, /* 078 - 120 */ 0x741a4000, 0x00000000, /* 080 - 128 */ 0x980c0000, 0x0000ff06, /* 088 - 136 */ 0x80880000, 0x00000280, /* 090 - 144 */ 0x60000008, 0x00000000, /* 098 - 152 */ - 0x1f00001c, 0x0000001c, /* 0a0 - 160 */ + 0x1f000020, 0x00000020, /* 0a0 - 160 */ 0x808c0004, 0x000001d0, /* 0a8 - 168 */ 0x808c0000, 0x000001f8, /* 0b0 - 176 */ 0x808c0002, 0x00000200, /* 0b8 - 184 */ @@ -34,15 +34,15 @@ const u_int32_t siop_script[] = { 0x80880000, 0xffffff30, /* 0d8 - 216 */ 0x58000008, 0x00000000, /* 0e0 - 224 */ 0x60000040, 0x00000000, /* 0e8 - 232 */ - 0x1e00003c, 0x0000003c, /* 0f0 - 240 */ + 0x1e000040, 0x00000040, /* 0f0 - 240 */ 0x60000008, 0x00000000, /* 0f8 - 248 */ 0x80880000, 0xffffff08, /* 100 - 256 */ - 0x1a000044, 0x00000044, /* 108 - 264 */ + 0x1a000048, 0x00000048, /* 108 - 264 */ 0x80880000, 0xfffffef8, /* 110 - 272 */ - 0x1b00004c, 0x0000004c, /* 118 - 280 */ + 0x1b000050, 0x00000050, /* 118 - 280 */ 0x80880000, 0xfffffee8, /* 120 - 288 */ 0x88880000, 0x00000098, /* 128 - 296 */ - 0x19000054, 0x00000054, /* 130 - 304 */ + 0x19000058, 0x00000058, /* 130 - 304 */ 0x7e350100, 0x00000000, /* 138 - 312 */ 0x7e100800, 0x00000000, /* 140 - 320 */ 0x7f110000, 0x00000000, /* 148 - 328 */ @@ -52,7 +52,7 @@ const u_int32_t siop_script[] = { 0x88880000, 0x000000a0, /* 168 - 360 */ 0x80880000, 0xfffffe98, /* 170 - 368 */ 0x88880000, 0x00000048, /* 178 - 376 */ - 0x18000054, 0x00000054, /* 180 - 384 */ + 0x18000058, 0x00000058, /* 180 - 384 */ 0x7e350100, 0x00000000, /* 188 - 392 */ 0x7e100800, 0x00000000, /* 190 - 400 */ 0x7f110000, 0x00000000, /* 198 - 408 */ @@ -97,11 +97,11 @@ const u_int32_t siop_script[] = { 0x80880000, 0xfffffdc0, /* 2d0 - 720 */ 0x60000040, 0x00000000, /* 2d8 - 728 */ 0x9f020000, 0x0000ffff, /* 2e0 - 736 */ - 0x1f000024, 0x00000024, /* 2e8 - 744 */ + 0x1f000028, 0x00000028, /* 2e8 - 744 */ 0x98080000, 0x0000ff02, /* 2f0 - 752 */ 0x60000040, 0x00000000, /* 2f8 - 760 */ 0x9f020000, 0x0000ffff, /* 300 - 768 */ - 0x1f00002c, 0x0000002c, /* 308 - 776 */ + 0x1f000030, 0x00000030, /* 308 - 776 */ 0x98080000, 0x0000ff03, /* 310 - 784 */ 0x10000000, 0x00000000, /* 318 - 792 */ }; @@ -112,7 +112,7 @@ const u_int32_t slot_script[] = { 0x78110100, 0x00000000, /* 010 - 16 */ 0x78120200, 0x00000000, /* 018 - 24 */ 0x78130300, 0x00000000, /* 020 - 32 */ - 0x43000014, 0x00000000, /* 028 - 40 */ + 0x43000018, 0x00000000, /* 028 - 40 */ 0xc0000004, 0x00000000, 0x00000000, /* 030 - 48 */ 0x80080000, 0x00000000, /* 03c - 60 */ 0x10000000, 0x00000000, /* 044 - 68 */ @@ -123,15 +123,15 @@ const u_int32_t endslot_script[] = { 0x80080000, 0x00000000, /* 000 - 0 */ }; -#define A_t_id 0x00000014 -#define A_t_msg_in 0x0000001c -#define A_t_ext_msg_in 0x00000024 -#define A_t_ext_msg_data 0x0000002c -#define A_t_ext_msg_tag 0x00000034 -#define A_t_msg_out 0x0000003c -#define A_t_cmd 0x00000044 -#define A_t_status 0x0000004c -#define A_t_data 0x00000054 +#define A_t_id 0x00000018 +#define A_t_msg_in 0x00000020 +#define A_t_ext_msg_in 0x00000028 +#define A_t_ext_msg_data 0x00000030 +#define A_t_ext_msg_tag 0x00000038 +#define A_t_msg_out 0x00000040 +#define A_t_cmd 0x00000048 +#define A_t_status 0x00000050 +#define A_t_data 0x00000058 #define A_int_done 0x0000ff00 #define A_int_msgin 0x0000ff01 #define A_int_extmsgin 0x0000ff02 diff --git a/sys/dev/microcode/siop/siop.ss b/sys/dev/microcode/siop/siop.ss index cb281043d03..0eb1b23f868 100644 --- a/sys/dev/microcode/siop/siop.ss +++ b/sys/dev/microcode/siop/siop.ss @@ -1,4 +1,4 @@ -; $NetBSD: siop.ss,v 1.3 2000/04/27 14:08:09 bouyer Exp $ +; $NetBSD: siop.ss,v 1.4 2000/05/04 15:42:42 bouyer Exp $ ; ; Copyright (c) 2000 Manuel Bouyer. @@ -32,15 +32,15 @@ ARCH 720 ; offsets in sym_xfer -ABSOLUTE t_id = 20; -ABSOLUTE t_msg_in = 28; -ABSOLUTE t_ext_msg_in = 36; -ABSOLUTE t_ext_msg_data = 44; -ABSOLUTE t_ext_msg_tag = 52; -ABSOLUTE t_msg_out = 60; -ABSOLUTE t_cmd = 68; -ABSOLUTE t_status = 76; -ABSOLUTE t_data = 84; +ABSOLUTE t_id = 24; +ABSOLUTE t_msg_in = 32; +ABSOLUTE t_ext_msg_in = 40; +ABSOLUTE t_ext_msg_data = 48; +ABSOLUTE t_ext_msg_tag = 56; +ABSOLUTE t_msg_out = 64; +ABSOLUTE t_cmd = 72; +ABSOLUTE t_status = 80; +ABSOLUTE t_data = 88; ;; interrupt codes ABSOLUTE int_done = 0xff00; @@ -55,6 +55,8 @@ ABSOLUTE int_err = 0xffff; ; flags for scratcha0 ABSOLUTE flag_sdp = 0x01 ; got save data pointer +ABSOLUTE flag_data = 0x02 ; we're in data phase +ABSOLUTE flag_data_mask = 0xfd ; ~flag_data ENTRY waitphase; ENTRY send_msgout; @@ -145,6 +147,7 @@ status: JUMP REL(waitphase); datain: CALL REL(savedsa); + MOVE SCRATCHA0 | flag_data TO SCRATCHA0; datain_loop: MOVE FROM t_data, WHEN DATA_IN; MOVE SCRATCHA1 + 1 TO SCRATCHA1 ; adjust offset @@ -154,10 +157,12 @@ datain_loop: MOVE DSA3 + 0 to DSA3 WITH CARRY; JUMP REL(datain_loop), WHEN DATA_IN; CALL REL(restoredsa); + MOVE SCRATCHA0 & flag_data_mask TO SCRATCHA0; JUMP REL(waitphase); dataout: CALL REL(savedsa); + MOVE SCRATCHA0 | flag_data TO SCRATCHA0; dataout_loop: MOVE FROM t_data, WHEN DATA_OUT; MOVE SCRATCHA1 + 1 TO SCRATCHA1 ; adjust offset @@ -167,6 +172,7 @@ dataout_loop: MOVE DSA3 + 0 to DSA3 WITH CARRY; JUMP REL(dataout_loop), WHEN DATA_OUT; CALL REL(restoredsa); + MOVE SCRATCHA0 & flag_data_mask TO SCRATCHA0; JUMP REL(waitphase); savedsa: |
