|
|
1.1 ! root 1: 1 00000000 LL0: ! 2: 2 00000000 .data ! 3: 3 00000464 * .text ! 4: 4 00000000 .align 1 ! 5: 5 00000000 .globl _pipe_18 ! 6: 6 00000000 _pipe_18: ! 7: 7 00032A84 0000 .word L215 ! 8: 8 00032A86 # #include "fpp_defs.h" ! 9: 9 00032A86 # ! 10: 10 00032A86 # ! 11: 11 00032A86 # /***************************************************************************** ! 12: 12 00032A86 # * ! 13: 13 00032A86 # * PIPELINE TEST #18 ! 14: 14 00032A86 # * ! 15: 15 00032A86 # * LDD(op1), MULD(op2), CVDL r0, SUBD operand[r0], STD ! 16: 16 00032A86 # * ! 17: 17 00032A86 # * -where the operands are the fmacro1 MULD data patterns. The SUBD operand's ! 18: 18 00032A86 # * address is based on the result of the CVDL. ! 19: 19 00032A86 # * -The load, multiply, and convert will be done twice. The first time will ! 20: 20 00032A86 # * be to get the index and the data to subtract. The data to subtract will ! 21: 21 00032A86 # * be the same as the accumulator so we'll expect a reasult of zero. The ! 22: 22 00032A86 # * data will be stored based on the 1st CVDL result. ! 23: 23 00032A86 # * -If the 2nd CVDL doesn't get done before the SUBD operand is fetched then ! 24: 24 00032A86 # * we won't get a final accumulator of zero. ! 25: 25 00032A86 # * -For size reasons, only the MULD data with a result between -100 and +100 ! 26: 26 00032A86 # * will be used for this test. ! 27: 27 00032A86 # *****************************************************************************/ ! 28: 28 00032A86 # pipe_18() ! 29: 29 00032A86 # { ! 30: 30 00032A86 13 01cc jbr L217 ! 31: 31 00032A89 L218: ! 32: 32 00032A89 # asm(".globl _pipeline_18_t"); ! 33: 33 00032A89 .globl _pipeline_18_t ! 34: 34 00032A89 # asm("_pipeline_18_t:"); ! 35: 35 00032A89 _pipeline_18_t: ! 36: 36 00032A89 # if( (cycle == 1) && (prt_hdrs) ) /* print headers on 1st cycle */ ! 37: 37 00032A89 1d effffffff5 01 cmpl _cycle,$1 ! 38: 38 00032A90 21 15 jneq L219 ! 39: 39 00032A92 5d efffffffec tstl _prt_hdrs ! 40: 40 00032A98 31 0d jeql L219 ! 41: 41 00032A9A # writes(" PIPE_18"); ! 42: 42 00032A9A .data 1 ! 43: 43 00000464 * L221: ! 44: 44 00000464 * 20504950455F313800 .ascii " PIPE_18\0" ! 45: 45 0000046d * .text ! 46: 46 00032A9A dd 8f00000464 pushl $L221 ! 47: 47 00032AA0 fe 08 efffffffdd callf $8,_writes ! 48: 48 00032AA7 # force_loop = FALSE; /* clear force_loop flag */ ! 49: 49 00032AA7 L219: ! 50: 50 00032AA7 4d efffffffd7 clrl _force_loop ! 51: 51 00032AAD # for( index = 0; index <= max_muld_1_index; index++ ) { ! 52: 52 00032AAD 4d efffffffd1 clrl _index ! 53: 53 00032AB3 L224: ! 54: 54 00032AB3 1d efffffffcb efffffffc6 cmpl _index,_max_muld_1_index ! 55: 55 00032ABE 51 03 13 018b jgtr L223 ! 56: 56 00032AC3 # dbl_value_1 = muld_1_data[index].op_1; /* get the data */ ! 57: 57 00032AC3 5c 18 efffffffba 50 mull3 $24,_index,r0 ! 58: 58 00032ACB 0c 8f00000000 50 addl2 $_muld_1_data,r0 ! 59: 59 00032AD2 0d a004 efffffffae movl 4(r0),_dbl_value_1+4 ! 60: 60 00032ADA 0d 60 efffffffa3 movl (r0),_dbl_value_1 ! 61: 61 00032AE1 # dbl_value_2 = muld_1_data[index].op_2; /* operands */ ! 62: 62 00032AE1 5c 18 efffffff9c 50 mull3 $24,_index,r0 ! 63: 63 00032AE9 0c 8f00000008 50 addl2 $_muld_1_data+8,r0 ! 64: 64 00032AF0 0d a004 efffffff90 movl 4(r0),_dbl_value_2+4 ! 65: 65 00032AF8 0d 60 efffffff85 movl (r0),_dbl_value_2 ! 66: 66 00032AFF # dbl_expected.m = dbl_expected.l = 0; /* result s/b 0 */ ! 67: 67 00032AFF 4d efffffff83 clrl _dbl_expected+4 ! 68: 68 00032B05 0d efffffff7d 50 movl _dbl_expected+4,r0 ! 69: 69 00032B0C 0d 50 efffffff71 movl r0,_dbl_expected ! 70: 70 00032B13 # asm("ldd _dbl_value_1"); ! 71: 71 00032B13 07 efffffff6b ldd _dbl_value_1 ! 72: 72 00032B19 # asm("muld _dbl_value_2"); ! 73: 73 00032B19 e7 efffffff65 muld _dbl_value_2 ! 74: 74 00032B1F # asm("cvdl _index2"); ! 75: 75 00032B1F 87 efffffff5f cvdl _index2 ! 76: 76 00032B25 # asm("nop"); ! 77: 77 00032B25 10 nop ! 78: 78 00032B26 # if( (index2 >= -99) && (index2 <= 99) ) { ! 79: 79 00032B26 1d efffffff58 889d cmpl _index2,$-99 ! 80: 80 00032B2E 81 03 13 0112 jlss L225 ! 81: 81 00032B33 1d efffffff4b 8863 cmpl _index2,$99 ! 82: 82 00032B3B 41 f3 jgtr L225 ! 83: 83 00032B3D # if( index2 ) { ! 84: 84 00032B3D 5d efffffff41 tstl _index2 ! 85: 85 00032B43 31 35 jeql L226 ! 86: 86 00032B45 # sgl_value_5 = 0; /* set a dummy index */ ! 87: 87 00032B45 4d efffffff39 clrl _sgl_value_5 ! 88: 88 00032B4B # adr_dpipe_ops[sgl_value_5].m = 0; ! 89: 89 00032B4B 0d efffffff33 50 movl _sgl_value_5,r0 ! 90: 90 00032B52 48 03 50 50 shll $3,r0,r0 ! 91: 91 00032B56 1c 50 efffffff27 50 addl3 r0,_adr_dpipe_ops,r0 ! 92: 92 00032B5E 4d 60 clrl (r0) ! 93: 93 00032B60 # adr_dpipe_ops[sgl_value_5].l = 0xabadface; ! 94: 94 00032B60 48 03 efffffff1d 50 shll $3,_sgl_value_5,r0 ! 95: 95 00032B68 1c 50 efffffff15 50 addl3 r0,_adr_dpipe_ops,r0 ! 96: 96 00032B70 0d 8fabadface a004 movl $-1414661426,4(r0) ! 97: 97 00032B78 # } else { ! 98: 98 00032B78 11 39 jbr L227 ! 99: 99 00032B7A L226: ! 100: 100 00032B7A # sgl_value_5 = 6; /* set a dummy index */ ! 101: 101 00032B7A 0d 06 efffffff03 movl $6,_sgl_value_5 ! 102: 102 00032B81 # adr_dpipe_ops[sgl_value_5].m = 0xabadbabe; ! 103: 103 00032B81 0d effffffefd 50 movl _sgl_value_5,r0 ! 104: 104 00032B88 48 03 50 50 shll $3,r0,r0 ! 105: 105 00032B8C 1c 50 effffffef1 50 addl3 r0,_adr_dpipe_ops,r0 ! 106: 106 00032B94 0d 8fabadbabe 60 movl $-1414677826,(r0) ! 107: 107 00032B9B # adr_dpipe_ops[sgl_value_5].l = 0xabadface; ! 108: 108 00032B9B 48 03 effffffee2 50 shll $3,_sgl_value_5,r0 ! 109: 109 00032BA3 1c 50 effffffeda 50 addl3 r0,_adr_dpipe_ops,r0 ! 110: 110 00032BAB 0d 8fabadface a004 movl $-1414661426,4(r0) ! 111: 111 00032BB3 # } ! 112: 112 00032BB3 L227: ! 113: 113 00032BB3 # asm("movl _index2,r0"); /* save the index */ ! 114: 114 00032BB3 0d effffffecb 50 movl _index2,r0 ! 115: 115 00032BBA # asm("std _dpipe_ops[r0]"); /* save the Acc's value */ ! 116: 116 00032BBA 27 40effffffec3 std _dpipe_ops[r0] ! 117: 117 00032BC1 # asm("std _dbl_value_3"); /* save this value */ ! 118: 118 00032BC1 27 effffffebd std _dbl_value_3 ! 119: 119 00032BC7 # /* ! 120: 120 00032BC7 # * This is the start of the LOOP ON ERROR section ! 121: 121 00032BC7 # */ ! 122: 122 00032BC7 # asm("_pipe18_1_lp:"); ! 123: 123 00032BC7 _pipe18_1_lp: ! 124: 124 00032BC7 # asm("movl _sgl_value_5,r0"); /* save the bum index */ ! 125: 125 00032BC7 0d effffffeb7 50 movl _sgl_value_5,r0 ! 126: 126 00032BCE # asm("ldd _dbl_value_1"); ! 127: 127 00032BCE 07 effffffeb0 ldd _dbl_value_1 ! 128: 128 00032BD4 # asm("muld _dbl_value_2"); ! 129: 129 00032BD4 e7 effffffeaa muld _dbl_value_2 ! 130: 130 00032BDA # asm("cvdl r0"); /* set up the index to use */ ! 131: 131 00032BDA 87 50 cvdl r0 ! 132: 132 00032BDC # asm("subd _dpipe_ops[r0]"); /* subtract saved value */ ! 133: 133 00032BDC d7 40effffffea1 subd _dpipe_ops[r0] ! 134: 134 00032BE3 # asm("std _dbl_st_acc"); ! 135: 135 00032BE3 27 effffffe9b std _dbl_st_acc ! 136: 136 00032BE9 # asm("movl r0,_sgl_value_6"); /* save the index used */ ! 137: 137 00032BE9 0d 50 effffffe94 movl r0,_sgl_value_6 ! 138: 138 00032BF0 # if( force_loop ) ! 139: 139 00032BF0 5d effffffe8e tstl _force_loop ! 140: 140 00032BF6 31 02 jeql L228 ! 141: 141 00032BF8 # asm("brb _pipe18_1_lp");; /* loop on the error */ ! 142: 142 00032BF8 11 cd brb _pipe18_1_lp ! 143: 143 00032BFA L228: ! 144: 144 00032BFA # /* ! 145: 145 00032BFA # * Verify the results (the accumulator should be = 0) ! 146: 146 00032BFA # */ ! 147: 147 00032BFA # if( (dbl_st_acc.m) || (dbl_st_acc.l) ) { ! 148: 148 00032BFA 5d effffffe84 tstl _dbl_st_acc ! 149: 149 00032C00 21 08 jneq L9999 ! 150: 150 00032C02 5d effffffe80 tstl _dbl_st_acc+4 ! 151: 151 00032C08 31 3b jeql L229 ! 152: 152 00032C0A L9999: ! 153: 153 00032C0A # errcnt++; /* bump the error count */ ! 154: 154 00032C0A 6d effffffe74 incl _errcnt ! 155: 155 00032C10 # if ( prt_error ) ! 156: 156 00032C10 5d effffffe6e tstl _prt_error ! 157: 157 00032C16 31 07 jeql L230 ! 158: 158 00032C18 # pipe18_print(); /* print the error mesage */ ! 159: 159 00032C18 fe 04 ef00000039 callf $4,_pipe18_print ! 160: 160 00032C1F # if ( halt_flg ) ! 161: 161 00032C1F L230: ! 162: 162 00032C1F 5d effffffe5f tstl _halt_flg ! 163: 163 00032C25 31 09 jeql L232 ! 164: 164 00032C27 # pipe18_halt( 1 ); /* halt on the error */ ! 165: 165 00032C27 dd 01 pushl $1 ! 166: 166 00032C29 fe 08 ef000001dc callf $8,_pipe18_halt ! 167: 167 00032C30 # if ( loop_on_err ) { ! 168: 168 00032C30 L232: ! 169: 169 00032C30 5d effffffe4e tstl _loop_on_err ! 170: 170 00032C36 31 0d jeql L234 ! 171: 171 00032C38 # force_loop = TRUE; ! 172: 172 00032C38 0d 01 effffffe45 movl $1,_force_loop ! 173: 173 00032C3F # asm("jmp _pipe18_1_lp");; ! 174: 174 00032C3F 71 efffffff82 jmp _pipe18_1_lp ! 175: 175 00032C45 # } ! 176: 176 00032C45 # } ! 177: 177 00032C45 L234: ! 178: 178 00032C45 # } ! 179: 179 00032C45 L229: ! 180: 180 00032C45 # } ! 181: 181 00032C45 L225: ! 182: 182 00032C45 L222: ! 183: 183 00032C45 6d effffffe39 incl _index ! 184: 184 00032C4B 13 fe65 jbr L224 ! 185: 185 00032C4E L223: ! 186: 186 00032C4E # asm("jmp *return"); /* return to the test monitor */ ! 187: 187 00032C4E 71 fffffffe30 jmp *return ! 188: 188 00032C54 # } ! 189: 189 00032C54 40 ret#2 ! 190: 190 00032C55 .set L215,0x0 ! 191: 191 00032C55 L217: ! 192: 192 00032C55 13 fe31 jbr L218 ! 193: 193 00032C58 .data ! 194: 194 00000464 * .text ! 195: 195 00032C58 .align 1 ! 196: 196 00032C58 .globl _pipe18_print ! 197: 197 00032C58 _pipe18_print: ! 198: 198 00032C58 0000 .word L235 ! 199: 199 00032C5A # ! 200: 200 00032C5A # ! 201: 201 00032C5A # ! 202: 202 00032C5A # ! 203: 203 00032C5A # /* ! 204: 204 00032C5A # ************************************************************************** ! 205: 205 00032C5A # * ! 206: 206 00032C5A # * print an error message of the form ! 207: 207 00032C5A # * ! 208: 208 00032C5A # * cycle: xx Test xx, Error with subtract data based on CVDL value, index = xx ! 209: 209 00032C5A # * test sequence = LDD(op1), MULD(op2), CVDL r0, SUBD operand[r0], STD ! 210: 210 00032C5A # *operand 1 = xxxxxxx xxxxxxx, final Acc = xxxxxxx xxxxxxx, index = xxxxxxx ! 211: 211 00032C5A # *operand 2 = xxxxxxx xxxxxxx, expected Acc = xxxxxxx xxxxxxx ! 212: 212 00032C5A # *operand 3 = xxxxxxx xxxxxxx, CVDL result = xxxxxxx ! 213: 213 00032C5A # * int expected = xxxxxxx ! 214: 214 00032C5A # ************************************************************************** ! 215: 215 00032C5A # */ ! 216: 216 00032C5A # pipe18_print() ! 217: 217 00032C5A # { ! 218: 218 00032C5A 13 01ac jbr L237 ! 219: 219 00032C5D L238: ! 220: 220 00032C5D # writes(" \n"); /* start a new print line */ ! 221: 221 00032C5D .data 1 ! 222: 222 0000046d * L239: ! 223: 223 0000046d * 200A00 .ascii " \12\0" ! 224: 224 00000470 * .text ! 225: 225 00032C5D dd 8f0000046d pushl $L239 ! 226: 226 00032C63 fe 08 effffffe1a callf $8,_writes ! 227: 227 00032C6A # writes("cycle: "); ! 228: 228 00032C6A .data 1 ! 229: 229 00000470 * L240: ! 230: 230 00000470 * 6379636C653A2000 .ascii "cycle: \0" ! 231: 231 00000478 * .text ! 232: 232 00032C6A dd 8f00000470 pushl $L240 ! 233: 233 00032C70 fe 08 effffffe0d callf $8,_writes ! 234: 234 00032C77 # writed( cycle ); ! 235: 235 00032C77 dd effffffe07 pushl _cycle ! 236: 236 00032C7D fe 08 effffffe00 callf $8,_writed ! 237: 237 00032C84 # writes(" Test "); ! 238: 238 00032C84 .data 1 ! 239: 239 00000478 * L242: ! 240: 240 00000478 * 2020546573742000 .ascii " Test \0" ! 241: 241 00000480 * .text ! 242: 242 00032C84 dd 8f00000478 pushl $L242 ! 243: 243 00032C8A fe 08 effffffdf3 callf $8,_writes ! 244: 244 00032C91 # writed( test_no ); ! 245: 245 00032C91 dd effffffded pushl _test_no ! 246: 246 00032C97 fe 08 effffffde6 callf $8,_writed ! 247: 247 00032C9E # writes(" (Pipe 18), error\n"); ! 248: 248 00032C9E .data 1 ! 249: 249 00000480 * L243: ! 250: 250 00000480 * 20202850697065203138292C2 .ascii " (Pipe 18), error\12\0" ! 251: 0206572726F720A00 ! 252: 251 00000495 * .text ! 253: 252 00032C9E dd 8f00000480 pushl $L243 ! 254: 253 00032CA4 fe 08 effffffdd9 callf $8,_writes ! 255: 254 00032CAB # writes(" LDD(op1), MULD(op2), CVDL(r0), SUBD(op3), STD\n"); ! 256: 255 00032CAB .data 1 ! 257: 256 00000495 * L244: ! 258: 257 00000495 * 204C4444286F7031292C204D5 .ascii " LDD(op1), MULD(op2), CVDL(r0), SUBD(op3), STD\12\0" ! 259: 54C44286F7032292C20435644 ! 260: 4C287230292C2053554244286 ! 261: F7033292C205354440A00 ! 262: 258 000004c5 * .text ! 263: 259 00032CAB dd 8f00000495 pushl $L244 ! 264: 260 00032CB1 fe 08 effffffdcc callf $8,_writes ! 265: 261 00032CB8 # writes("operand 1 = "); ! 266: 262 00032CB8 .data 1 ! 267: 263 000004c5 * L245: ! 268: 264 000004c5 * 6F706572616E642031203D200 .ascii "operand 1 = \0" ! 269: 0 ! 270: 265 000004d2 * .text ! 271: 266 00032CB8 dd 8f000004c5 pushl $L245 ! 272: 267 00032CBE fe 08 effffffdbf callf $8,_writes ! 273: 268 00032CC5 # write32h( dbl_value_1.m ); ! 274: 269 00032CC5 dd effffffdb9 pushl _dbl_value_1 ! 275: 270 00032CCB fe 08 effffffdb2 callf $8,_write32h ! 276: 271 00032CD2 # writec(' '); ! 277: 272 00032CD2 dd 20 pushl $32 ! 278: 273 00032CD4 fe 08 effffffda9 callf $8,_writec ! 279: 274 00032CDB # write32h( dbl_value_1.l ); ! 280: 275 00032CDB dd effffffda7 pushl _dbl_value_1+4 ! 281: 276 00032CE1 fe 08 effffffd9c callf $8,_write32h ! 282: 277 00032CE8 # writes(", final Acc = "); ! 283: 278 00032CE8 .data 1 ! 284: 279 000004d2 * L248: ! 285: 280 000004d2 * 2C2020202066696E616C20416 .ascii ", final Acc = \0" ! 286: 363203D2000 ! 287: 281 000004e4 * .text ! 288: 282 00032CE8 dd 8f000004d2 pushl $L248 ! 289: 283 00032CEE fe 08 effffffd8f callf $8,_writes ! 290: 284 00032CF5 # write32h( dbl_st_acc.m ); ! 291: 285 00032CF5 dd effffffd89 pushl _dbl_st_acc ! 292: 286 00032CFB fe 08 effffffd82 callf $8,_write32h ! 293: 287 00032D02 # writec(' '); ! 294: 288 00032D02 dd 20 pushl $32 ! 295: 289 00032D04 fe 08 effffffd79 callf $8,_writec ! 296: 290 00032D0B # write32h( dbl_st_acc.l ); ! 297: 291 00032D0B dd effffffd77 pushl _dbl_st_acc+4 ! 298: 292 00032D11 fe 08 effffffd6c callf $8,_write32h ! 299: 293 00032D18 # writes(", index = "); ! 300: 294 00032D18 .data 1 ! 301: 295 000004e4 * L249: ! 302: 296 000004e4 * 2C2020696E646578203D2000 .ascii ", index = \0" ! 303: 297 000004f0 * .text ! 304: 298 00032D18 dd 8f000004e4 pushl $L249 ! 305: 299 00032D1E fe 08 effffffd5f callf $8,_writes ! 306: 300 00032D25 # writed( index ); ! 307: 301 00032D25 dd effffffd59 pushl _index ! 308: 302 00032D2B fe 08 effffffd52 callf $8,_writed ! 309: 303 00032D32 # writes("\noperand 2 = "); ! 310: 304 00032D32 .data 1 ! 311: 305 000004f0 * L250: ! 312: 306 000004f0 * 0A6F706572616E642032203D2 .ascii "\12operand 2 = \0" ! 313: 000 ! 314: 307 000004fe * .text ! 315: 308 00032D32 dd 8f000004f0 pushl $L250 ! 316: 309 00032D38 fe 08 effffffd45 callf $8,_writes ! 317: 310 00032D3F # write32h( dbl_value_2.m ); ! 318: 311 00032D3F dd effffffd3f pushl _dbl_value_2 ! 319: 312 00032D45 fe 08 effffffd38 callf $8,_write32h ! 320: 313 00032D4C # writec(' '); ! 321: 314 00032D4C dd 20 pushl $32 ! 322: 315 00032D4E fe 08 effffffd2f callf $8,_writec ! 323: 316 00032D55 # write32h( dbl_value_2.l ); ! 324: 317 00032D55 dd effffffd2d pushl _dbl_value_2+4 ! 325: 318 00032D5B fe 08 effffffd22 callf $8,_write32h ! 326: 319 00032D62 # writes(", expected Acc = "); ! 327: 320 00032D62 .data 1 ! 328: 321 000004fe * L251: ! 329: 322 000004fe * 2C20657870656374656420416 .ascii ", expected Acc = \0" ! 330: 363203D2000 ! 331: 323 00000510 * .text ! 332: 324 00032D62 dd 8f000004fe pushl $L251 ! 333: 325 00032D68 fe 08 effffffd15 callf $8,_writes ! 334: 326 00032D6F # write32h( dbl_expected.m ); ! 335: 327 00032D6F dd effffffd0f pushl _dbl_expected ! 336: 328 00032D75 fe 08 effffffd08 callf $8,_write32h ! 337: 329 00032D7C # writec(' '); ! 338: 330 00032D7C dd 20 pushl $32 ! 339: 331 00032D7E fe 08 effffffcff callf $8,_writec ! 340: 332 00032D85 # write32h( dbl_expected.l ); ! 341: 333 00032D85 dd effffffcfd pushl _dbl_expected+4 ! 342: 334 00032D8B fe 08 effffffcf2 callf $8,_write32h ! 343: 335 00032D92 # writes("\noperand 3 = "); ! 344: 336 00032D92 .data 1 ! 345: 337 00000510 * L252: ! 346: 338 00000510 * 0A6F706572616E642033203D2 .ascii "\12operand 3 = \0" ! 347: 000 ! 348: 339 0000051e * .text ! 349: 340 00032D92 dd 8f00000510 pushl $L252 ! 350: 341 00032D98 fe 08 effffffce5 callf $8,_writes ! 351: 342 00032D9F # write32h( dbl_value_3.m ); ! 352: 343 00032D9F dd effffffcdf pushl _dbl_value_3 ! 353: 344 00032DA5 fe 08 effffffcd8 callf $8,_write32h ! 354: 345 00032DAC # writec(' '); ! 355: 346 00032DAC dd 20 pushl $32 ! 356: 347 00032DAE fe 08 effffffccf callf $8,_writec ! 357: 348 00032DB5 # write32h( dbl_value_3.l ); ! 358: 349 00032DB5 dd effffffccd pushl _dbl_value_3+4 ! 359: 350 00032DBB fe 08 effffffcc2 callf $8,_write32h ! 360: 351 00032DC2 # writes(", CVDL result = "); ! 361: 352 00032DC2 .data 1 ! 362: 353 0000051e * L253: ! 363: 354 0000051e * 2C20204356444C20726573756 .ascii ", CVDL result = \0" ! 364: C74203D2000 ! 365: 355 00000530 * .text ! 366: 356 00032DC2 dd 8f0000051e pushl $L253 ! 367: 357 00032DC8 fe 08 effffffcb5 callf $8,_writes ! 368: 358 00032DCF # write32h( sgl_value_6 ); ! 369: 359 00032DCF dd effffffcaf pushl _sgl_value_6 ! 370: 360 00032DD5 fe 08 effffffca8 callf $8,_write32h ! 371: 361 00032DDC # writec('\n'); ! 372: 362 00032DDC dd 0a pushl $10 ! 373: 363 00032DDE fe 08 effffffc9f callf $8,_writec ! 374: 364 00032DE5 # writes(" int expected = "); ! 375: 365 00032DE5 .data 1 ! 376: 366 00000530 * L254: ! 377: 367 00000530 * 2020202020202020202020202 .ascii " int expected = \0" ! 378: 0202020202020202020202020 ! 379: 202020202020696E742065787 ! 380: 06563746564203D2000 ! 381: 368 0000055f * .text ! 382: 369 00032DE5 dd 8f00000530 pushl $L254 ! 383: 370 00032DEB fe 08 effffffc92 callf $8,_writes ! 384: 371 00032DF2 # write32h( index2 ); ! 385: 372 00032DF2 dd effffffc8c pushl _index2 ! 386: 373 00032DF8 fe 08 effffffc85 callf $8,_write32h ! 387: 374 00032DFF # writec('\n'); ! 388: 375 00032DFF dd 0a pushl $10 ! 389: 376 00032E01 fe 08 effffffc7c callf $8,_writec ! 390: 377 00032E08 # } ! 391: 378 00032E08 40 ret#2 ! 392: 379 00032E09 .set L235,0x0 ! 393: 380 00032E09 L237: ! 394: 381 00032E09 13 fe51 jbr L238 ! 395: 382 00032E0C .data ! 396: 383 00000464 * .text ! 397: 384 00032E0C .align 1 ! 398: 385 00032E0C .globl _pipe18_halt ! 399: 386 00032E0C _pipe18_halt: ! 400: 387 00032E0C 0000 .word L255 ! 401: 388 00032E0E # ! 402: 389 00032E0E # ! 403: 390 00032E0E # ! 404: 391 00032E0E # /* ! 405: 392 00032E0E # ************************************************************************** ! 406: 393 00032E0E # * ! 407: 394 00032E0E # * HALT ON AN ERROR ! 408: 395 00032E0E # * ! 409: 396 00032E0E # ************************************************************************** ! 410: 397 00032E0E # */ ! 411: 398 00032E0E # pipe18_halt() ! 412: 399 00032E0E # { ! 413: 400 00032E0E 13 00d1 jbr L257 ! 414: 401 00032E11 L258: ! 415: 402 00032E11 # sgl_value_1 = dbl_value_1.m; ! 416: 403 00032E11 0d effffffc6d effffffc68 movl _dbl_value_1,_sgl_value_1 ! 417: 404 00032E1C # sgl_value_2 = dbl_value_1.l; ! 418: 405 00032E1C 0d effffffc66 effffffc5d movl _dbl_value_1+4,_sgl_value_2 ! 419: 406 00032E27 # sgl_value_3 = dbl_value_2.m; ! 420: 407 00032E27 0d effffffc57 effffffc52 movl _dbl_value_2,_sgl_value_3 ! 421: 408 00032E32 # sgl_value_4 = dbl_value_2.l; ! 422: 409 00032E32 0d effffffc50 effffffc47 movl _dbl_value_2+4,_sgl_value_4 ! 423: 410 00032E3D # asm("movl _test_no,r0"); /* r0 = test number */ ! 424: 411 00032E3D 0d effffffc41 50 movl _test_no,r0 ! 425: 412 00032E44 # asm("movl $1,r1"); /* r1 = subtest number */ ! 426: 413 00032E44 0d 01 51 movl $1,r1 ! 427: 414 00032E47 # asm("movl $1,r2"); /* r2 = error code */ ! 428: 415 00032E47 0d 01 52 movl $1,r2 ! 429: 416 00032E4A # asm("movl _cycle,r3"); /* r3 = cycle count */ ! 430: 417 00032E4A 0d effffffc34 53 movl _cycle,r3 ! 431: 418 00032E51 # asm("movl _sgl_value_1,r4"); /* r4 = MS of dbl operand #1 */ ! 432: 419 00032E51 0d effffffc2d 54 movl _sgl_value_1,r4 ! 433: 420 00032E58 # asm("movl _sgl_value_2,r5"); /* r5 = LS of dbl operand #1 */ ! 434: 421 00032E58 0d effffffc26 55 movl _sgl_value_2,r5 ! 435: 422 00032E5F # asm("movl _sgl_value_3,r6"); /* r6 = MS of dbl operand #2 */ ! 436: 423 00032E5F 0d effffffc1f 56 movl _sgl_value_3,r6 ! 437: 424 00032E66 # asm("movl _sgl_value_4,r7"); /* r7 = LS of dbl operand #2 */ ! 438: 425 00032E66 0d effffffc18 57 movl _sgl_value_4,r7 ! 439: 426 00032E6D # sgl_value_1 = dbl_st_acc.m; ! 440: 427 00032E6D 0d effffffc11 effffffc0c movl _dbl_st_acc,_sgl_value_1 ! 441: 428 00032E78 # sgl_value_2 = dbl_st_acc.l; ! 442: 429 00032E78 0d effffffc0a effffffc01 movl _dbl_st_acc+4,_sgl_value_2 ! 443: 430 00032E83 # sgl_value_3 = dbl_expected.m; ! 444: 431 00032E83 0d effffffbfb effffffbf6 movl _dbl_expected,_sgl_value_3 ! 445: 432 00032E8E # sgl_value_4 = dbl_expected.l; ! 446: 433 00032E8E 0d effffffbf4 effffffbeb movl _dbl_expected+4,_sgl_value_4 ! 447: 434 00032E99 # sgl_value_5 = dbl_value_3.m; ! 448: 435 00032E99 0d effffffbe5 effffffbe0 movl _dbl_value_3,_sgl_value_5 ! 449: 436 00032EA4 # sgl_value_6 = dbl_value_3.l; ! 450: 437 00032EA4 0d effffffbde effffffbd5 movl _dbl_value_3+4,_sgl_value_6 ! 451: 438 00032EAF # asm("movl _sgl_value_5,r8"); /* r8 = MS of dbl operand #3 */ ! 452: 439 00032EAF 0d effffffbcf 58 movl _sgl_value_5,r8 ! 453: 440 00032EB6 # asm("movl _sgl_value_6,r9"); /* r9 = LS of dbl operand #3 */ ! 454: 441 00032EB6 0d effffffbc8 59 movl _sgl_value_6,r9 ! 455: 442 00032EBD # asm("movl _sgl_value_1,r10"); /* r10 = MS of final result */ ! 456: 443 00032EBD 0d effffffbc1 5a movl _sgl_value_1,r10 ! 457: 444 00032EC4 # asm("movl _sgl_value_2,r11"); /* r11 = LS of final result */ ! 458: 445 00032EC4 0d effffffbba 5b movl _sgl_value_2,r11 ! 459: 446 00032ECB # asm("movl _sgl_value_3,r12"); /* r12 = MS of expected result */ ! 460: 447 00032ECB 0d effffffbb3 5c movl _sgl_value_3,r12 ! 461: 448 00032ED2 # asm("movl _sgl_value_4,r13"); /* r13 = LS of expected result */ ! 462: 449 00032ED2 0d effffffbac 5d movl _sgl_value_4,r13 ! 463: 450 00032ED9 # asm("movl _index,r14"); /* r14 = data index */ ! 464: 451 00032ED9 0d effffffba5 5e movl _index,r14 ! 465: 452 00032EE0 # asm("halt"); /* HALT ... */ ! 466: 453 00032EE0 00 halt ! 467: 454 00032EE1 # } ! 468: 455 00032EE1 40 ret#2 ! 469: 456 00032EE2 .set L255,0x0 ! 470: 457 00032EE2 L257: ! 471: 458 00032EE2 13 ff2c jbr L258 ! 472: 459 00032EE5 .data ! 473: 460 00000464 * # ! 474: 460 00000464 * #
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.