|
|
1.1 ! root 1: #define error_hdl2 error ! 2: ! 3: #define C 0x1 ! 4: #define V 0x2 ! 5: #define Z 0x4 ! 6: #define N 0x8 ! 7: ! 8: extern long scoplp; ! 9: extern long force_lp; ! 10: extern long no_opr; ! 11: extern long opr; ! 12: ! 13: /* Some globals */ ! 14: static long flag_msk, mask, src, dest, psl; ! 15: ! 16: int ix; ! 17: ! 18: /* XOR instructions */ ! 19: ! 20: x_or() ! 21: { ! 22: xorb2(); ! 23: xorb3(); ! 24: xorw2(); ! 25: xorw3(); ! 26: xorl2(); ! 27: xorl3(); ! 28: asm("jmp *return"); ! 29: } ! 30: ! 31: static xorb2() ! 32: { ! 33: long exp_psw, no_op; ! 34: char op_type; ! 35: for (ix = 1; ix < 7; ix ++) ! 36: ! 37: { ! 38: no_op = 2; ! 39: op_type ='b'; ! 40: no_opr = 2; ! 41: ! 42: /* XOR 2 BYTE_OPERANDS */ ! 43: flag_msk = exp_psw = 0; ! 44: flag_msk = N|V|C; /* set N,V,C flag */ ! 45: exp_psw = Z|C; ! 46: mask = 123; ! 47: src = 123; ! 48: xor(op_type,no_op,0,exp_psw); ! 49: ix = ix + 1; /* increment ix */ ! 50: ! 51: flag_msk = exp_psw = 0; ! 52: flag_msk = Z|V|C; /* set Z,V,C flag */ ! 53: exp_psw = N|C; ! 54: mask = 0x81; ! 55: src = 3; ! 56: xor(op_type,no_op,0x82,exp_psw); ! 57: } ! 58: } ! 59: ! 60: static xorb3() ! 61: { ! 62: long exp_psw, no_op; ! 63: char op_type; ! 64: for (ix = 1; ix < 11; ix ++) ! 65: { ! 66: ! 67: no_op = 3; ! 68: no_opr = 3; ! 69: op_type ='b'; ! 70: ! 71: /* XOR 3 BYTE_OPERANDS */ ! 72: flag_msk = exp_psw = 0; ! 73: flag_msk = N|V|C; /* set N,V,C flag */ ! 74: exp_psw = Z|C; ! 75: mask = 0xff; ! 76: src = 0xff; ! 77: xor(op_type,no_op,0,exp_psw); ! 78: ix = ix + 1; /* increment ix = execution counter */ ! 79: ! 80: flag_msk = exp_psw = 0; ! 81: flag_msk = Z|V|C; /* set Z,V,C flag */ ! 82: exp_psw = N|C; ! 83: mask = 0xaa; ! 84: src = 1; ! 85: xor(op_type,no_op,0xab,exp_psw); ! 86: } ! 87: } ! 88: ! 89: static xorw2() ! 90: { ! 91: long exp_psw, no_op; ! 92: char op_type; ! 93: for (ix = 1; ix < 7; ix ++) ! 94: { ! 95: ! 96: no_op = 2; ! 97: no_opr = 2; ! 98: op_type ='w'; ! 99: ! 100: /* XOR 2 WORD_OPERANDS */ ! 101: flag_msk = exp_psw = 0; ! 102: flag_msk = N|V|C; /* set N,V,C flag */ ! 103: exp_psw = Z|C; ! 104: mask = 0xffff; ! 105: src = 0xffff; ! 106: xor(op_type,no_op,0,exp_psw); ! 107: ix = ix + 1; /* increment ix = execution counter */ ! 108: ! 109: flag_msk = exp_psw = 0; ! 110: flag_msk = Z|V|C; /* set Z,V,C flag */ ! 111: exp_psw = N|C; ! 112: mask = 0xbbbb; ! 113: src = 3; ! 114: xor(op_type,no_op,0xbbb8,exp_psw); ! 115: } ! 116: } ! 117: ! 118: static xorw3() ! 119: { ! 120: long exp_psw, no_op; ! 121: char op_type; ! 122: for (ix = 1; ix < 11; ix ++) ! 123: { ! 124: ! 125: no_op = 3; ! 126: no_opr = 3; ! 127: op_type ='w'; ! 128: ! 129: /* XOR 3 WORD_OPERANDS */ ! 130: flag_msk = exp_psw = 0; ! 131: flag_msk = N|V|C; /* set N,V,C flag */ ! 132: exp_psw = Z|C; ! 133: mask = 0xff01; ! 134: src = 0xff01; ! 135: xor(op_type,no_op,0,exp_psw); ! 136: ix = ix + 1; /* increment ix = execution counter */ ! 137: ! 138: flag_msk = exp_psw = 0; ! 139: flag_msk = Z|V|C; /* set Z,V,C flag */ ! 140: exp_psw = N|C; ! 141: mask = 0xaa00; ! 142: src = 0x7001; ! 143: xor(op_type,no_op,0xda01,exp_psw); ! 144: } ! 145: } ! 146: ! 147: static xorl2() ! 148: { ! 149: long exp_psw, no_op; ! 150: char op_type; ! 151: for (ix = 1; ix < 5; ix ++) ! 152: { ! 153: ! 154: no_op = 2; ! 155: no_opr = 2; ! 156: op_type ='l'; ! 157: ! 158: /* XOR 2 LONG_OPERANDS */ ! 159: flag_msk = exp_psw = 0; ! 160: flag_msk = N|V|C; /* set N,V,C flag */ ! 161: exp_psw = Z|C; ! 162: mask = 0xffffabab; ! 163: src = 0xffffabab; ! 164: xor(op_type,no_op,0,exp_psw); ! 165: ix = ix + 1; /* increment ix = execution counter */ ! 166: ! 167: flag_msk = exp_psw = 0; ! 168: flag_msk = Z|V|C; /* set Z,V,C flag */ ! 169: exp_psw = N|C; ! 170: mask = 0xccccbbbb; ! 171: src = 0x70000001; ! 172: xor(op_type,no_op,0xbcccbbba,exp_psw); ! 173: } ! 174: } ! 175: ! 176: static xorl3() ! 177: { ! 178: long exp_psw, no_op; ! 179: char op_type; ! 180: for (ix = 1; ix < 10; ix ++) ! 181: { ! 182: ! 183: no_op = 3; ! 184: no_opr = 3; ! 185: op_type ='l'; ! 186: ! 187: /* XOR 3 LONG_OPERANDS */ ! 188: flag_msk = exp_psw = 0; ! 189: flag_msk = N|V|C; /* set N,V,C flag */ ! 190: exp_psw = Z|C; ! 191: mask = 0xffffff01; ! 192: src = 0xffffff01; ! 193: xor(op_type,no_op,0,exp_psw); ! 194: ix = ix + 1; /* increment ix = execution counter */ ! 195: ! 196: flag_msk = exp_psw = 0; ! 197: flag_msk = Z|V|C; /* set Z,V,C flag */ ! 198: exp_psw = N|C; ! 199: mask = 0xddddaa00; ! 200: src = 0x7001dddd; ! 201: xor(op_type,no_op,0xaddc77dd,exp_psw); ! 202: } ! 203: ! 204: } ! 205: ! 206: /* This routine execute XORB2,XORB3,XORW2,XORW3,XORL2,XORL3 instructions */ ! 207: ! 208: static xor(op_type,no_op,exp_reslt,exp_psw) ! 209: long exp_reslt, exp_psw, no_op; ! 210: char op_type; ! 211: { ! 212: long op1, op2, psw; ! 213: char *msg1, *msg2; ! 214: ! 215: flag_msk = flag_msk << 16; ! 216: op1 = mask; ! 217: op2 = src; ! 218: for(;;) ! 219: { ! 220: ! 221: if (op_type == 'b') ! 222: { ! 223: if (no_op==2) ! 224: { ! 225: asm("bicpsw $0xf"); /* clear all flags */ ! 226: asm("bispsw _flag_msk"); ! 227: ! 228: asm(".globl _xorbb2"); ! 229: asm("_xorbb2:"); ! 230: ! 231: if (ix==1){ ! 232: setjmp(); ! 233: asm("x1: movab x1,_stpc"); ! 234: asm("movl $1,_subtst"); ! 235: asm("xorb2 _mask+3,_src+3"); /* mem to mem */ ! 236: asm("movpsl _psl"); ! 237: dest = src; ! 238: } ! 239: if (ix==2){ ! 240: setjmp(); ! 241: asm("x2: movab x2,_stpc"); ! 242: asm("movl $2,_subtst"); ! 243: exp_psw = C; ! 244: asm("movl _mask,r6"); /* load source reg */ ! 245: asm("movl _src,r7"); /* load dest reg */ ! 246: asm("xorb2 r6,r7"); /* reg to reg */ ! 247: asm("movpsl _psl"); ! 248: asm("movl r7,_src"); /* reload dest loc */ ! 249: dest = src; ! 250: } ! 251: if (ix==3){ ! 252: setjmp(); ! 253: asm("x3: movab x3,_stpc"); ! 254: asm("movl $3,_subtst"); ! 255: asm("movl _mask,r6"); /* load source reg */ ! 256: asm("xorb2 r6,_src+3"); /* reg to mem */ ! 257: asm("movpsl _psl"); ! 258: dest = src; ! 259: } ! 260: if (ix==4){ ! 261: setjmp(); ! 262: asm("x4: movab x4,_stpc"); ! 263: asm("movl $4,_subtst"); ! 264: asm("movl _src,r7"); /* load dest reg */ ! 265: asm("xorb2 _mask+3,r7"); /* mem to reg */ ! 266: asm("movpsl _psl"); ! 267: asm("movl r7,_src"); /* reload dest loc */ ! 268: asm("andl2 $0xff,_src"); ! 269: dest = src; ! 270: } ! 271: if (ix==5){ ! 272: setjmp(); ! 273: asm("x5: movab x5,_stpc"); ! 274: asm("movl $5,_subtst"); ! 275: asm("xorb2 $123,_src+3"); /* data to mem */ ! 276: asm("movpsl _psl"); ! 277: dest = src; ! 278: } ! 279: if (ix==6){ ! 280: setjmp(); ! 281: asm("x6: movab x6,_stpc"); ! 282: asm("movl $6,_subtst"); ! 283: asm("movl _src,r7"); /* load dest reg */ ! 284: asm("xorb2 $-0x7f,r7"); /* data to reg */ ! 285: asm("movpsl _psl"); ! 286: asm("movl r7,_src"); /* load dest reg */ ! 287: asm("andl2 $0xff,_src"); ! 288: dest = src; ! 289: } ! 290: } ! 291: else ! 292: { ! 293: asm("bicpsw $0xf"); /* clear all flags */ ! 294: asm("bispsw _flag_msk"); ! 295: asm(".globl _xorbb3"); ! 296: asm("_xorbb3:"); ! 297: if (ix==1){ ! 298: setjmp(); ! 299: asm("x7: movab x7,_stpc"); ! 300: asm("movl $7,_subtst"); ! 301: asm("xorb3 _mask+3,_src+3,_dest+3"); /* mem mem mem */ ! 302: asm("movpsl _psl"); ! 303: } ! 304: if (ix==2){ ! 305: setjmp(); ! 306: asm("x8: movab x8,_stpc"); ! 307: asm("movl $8,_subtst"); ! 308: asm("movb _dest,r7"); /* load dest reg */ ! 309: asm("xorb3 _mask+3,_src+3,r7"); /* mem mem reg */ ! 310: asm("movpsl _psl"); ! 311: asm("movl r7,_dest"); /* load dest location */ ! 312: asm("andl2 $0xff,_dest"); ! 313: } ! 314: if (ix==3){ ! 315: setjmp(); ! 316: asm("x9: movab x9,_stpc"); ! 317: asm("movl $9,_subtst"); ! 318: exp_psw = N|C; ! 319: asm("movl _src,r6"); /* load src reg */ ! 320: asm("xorb3 _mask+3,r6,_dest+3"); /* mem reg mem */ ! 321: asm("movpsl _psl"); ! 322: asm("movl r6,_src"); /* load src location */ ! 323: } ! 324: if (ix==4){ ! 325: setjmp(); ! 326: asm("x10: movab x10,_stpc"); ! 327: asm("movl $0xa,_subtst"); ! 328: asm("xorb3 _mask+3,$0x1,_dest+3"); /* mem data mem */ ! 329: asm("movpsl _psl"); ! 330: } ! 331: if (ix==5){ ! 332: setjmp(); ! 333: asm("x11: movab x11,_stpc"); ! 334: asm("movl $0xb,_subtst"); ! 335: asm("xorb3 $-1,$-1,_dest+3"); /* data data mem */ ! 336: asm("movpsl _psl"); ! 337: } ! 338: if (ix==6){ ! 339: setjmp(); ! 340: asm("x12: movab x12,_stpc"); ! 341: asm("movl $0xc,_subtst"); ! 342: asm("movl _src,r6"); /* load src reg */ ! 343: asm("xorb3 $-0x56,r6,_dest+3"); /* data reg mem */ ! 344: asm("movpsl _psl"); ! 345: asm("movl r6,_src"); /* load src location */ ! 346: } ! 347: if (ix==7){ ! 348: setjmp(); ! 349: asm("x13: movab x13,_stpc"); ! 350: asm("movl $0xd,_subtst"); ! 351: exp_psw = N|C; ! 352: asm("movl _src,r6"); /* load src reg */ ! 353: asm("movl _dest,r7"); /* load dest reg */ ! 354: asm("xorb3 $-1,r6,r7"); /* data reg reg */ ! 355: asm("movpsl _psl"); ! 356: asm("movl r6,_src"); /* load src location */ ! 357: asm("movl r7,_dest"); /* load dest location */ ! 358: asm("andl2 $0xff,_dest"); ! 359: } ! 360: if (ix==8){ ! 361: setjmp(); ! 362: asm("x14: movab x14,_stpc"); ! 363: asm("movl $0xe,_subtst"); ! 364: exp_psw = C; ! 365: asm("movl _mask,r5"); /* load mask reg */ ! 366: asm("movl _dest,r7"); /* load dest reg */ ! 367: asm("xorb3 r5,$0x1,r7"); /* reg data reg */ ! 368: asm("movpsl _psl"); ! 369: asm("movl r5,_mask"); /* load mask location */ ! 370: asm("movl r7,_dest"); /* load dest location */ ! 371: asm("andl2 $0xff,_dest"); ! 372: } ! 373: if (ix==9){ ! 374: setjmp(); ! 375: asm("x15: movab x15,_stpc"); ! 376: asm("movl $0xf,_subtst"); ! 377: asm("movl _mask,r5"); /* load mask reg */ ! 378: asm("movl _src,r6"); /* load src reg */ ! 379: asm("movl _dest,r7"); /* load dest reg */ ! 380: asm("xorb3 r5,r6,r7"); /* reg reg reg */ ! 381: asm("movpsl _psl"); ! 382: asm("movl r5,_mask"); /* load mask location */ ! 383: asm("movl r6,_src"); /* load src location */ ! 384: asm("movl r7,_dest"); /* load dest location */ ! 385: asm("andl2 $0xff,_dest"); ! 386: } ! 387: if (ix==10){ ! 388: setjmp(); ! 389: asm("x16: movab x16,_stpc"); ! 390: asm("movl $0x10,_subtst"); ! 391: exp_psw = C; ! 392: asm("movl _mask,r5"); /* load mask reg */ ! 393: asm("movl _src,r6"); /* load src reg */ ! 394: asm("xorb3 r5,r6,_dest+3"); /* reg reg mem */ ! 395: asm("movpsl _psl"); ! 396: asm("movl r5,_mask"); /* load mask location */ ! 397: asm("movl r6,_src"); /* load src location */ ! 398: } ! 399: } ! 400: } ! 401: else if (op_type == 'w') ! 402: { ! 403: op1 = mask; ! 404: op2 = src; ! 405: if (no_op==2) ! 406: { ! 407: asm("bicpsw $0xf"); /* clear all flags */ ! 408: asm("bispsw _flag_msk"); ! 409: asm(".globl _xorwd2"); ! 410: asm("_xorwd2:"); ! 411: if (ix==1){ ! 412: setjmp(); ! 413: asm("x17: movab x17,_stpc"); ! 414: asm("movl $0x11,_subtst"); ! 415: asm("xorw2 _mask+2,_src+2"); /* mem to mem */ ! 416: asm("movpsl _psl"); ! 417: dest = src; ! 418: } ! 419: if (ix==2){ ! 420: setjmp(); ! 421: asm("x18: movab x18,_stpc"); ! 422: asm("movl $0x12,_subtst"); ! 423: exp_psw = C; ! 424: asm("movl _mask,r6"); /* load source reg */ ! 425: asm("movl _src,r7"); /* load dest reg */ ! 426: asm("xorw2 r6,r7"); /* reg to reg */ ! 427: asm("movpsl _psl"); ! 428: asm("movl r7,_src"); /* reload dest loc */ ! 429: asm("andl2 $0xffff,_src"); ! 430: dest = src; ! 431: } ! 432: if (ix==3){ ! 433: setjmp(); ! 434: asm("x19: movab x19,_stpc"); ! 435: asm("movl $0x13,_subtst"); ! 436: exp_psw = N|C; ! 437: asm("movl _mask,r6"); /* load source reg */ ! 438: asm("xorw2 r6,_src+2"); /* reg to mem */ ! 439: asm("movpsl _psl"); ! 440: dest = src; ! 441: } ! 442: if (ix==4){ ! 443: setjmp(); ! 444: asm("x20: movab x20,_stpc"); ! 445: asm("movl $0x14,_subtst"); ! 446: asm("movl _src,r7"); /* load dest reg */ ! 447: asm("xorw2 _mask+2,r7"); /* mem to reg */ ! 448: asm("movpsl _psl"); ! 449: asm("movl r7,_src"); /* reload dest loc */ ! 450: asm("andl2 $0xffff,_src"); ! 451: dest = src; ! 452: } ! 453: if (ix==5){ ! 454: setjmp(); ! 455: asm("x21: movab x21,_stpc"); ! 456: asm("movl $0x15,_subtst"); ! 457: asm("xorw2 $-0x0001,_src+2"); /* data to mem */ ! 458: asm("movpsl _psl"); ! 459: dest = src; ! 460: } ! 461: if (ix==6){ ! 462: setjmp(); ! 463: asm("x22: movab x22,_stpc"); ! 464: asm("movl $0x16,_subtst"); ! 465: asm("movl _src,r7"); /* load dest reg */ ! 466: asm("xorw2 $-0x4445,r7"); /* data to reg */ ! 467: asm("movpsl _psl"); ! 468: asm("movl r7,_src"); /* reload dest loc */ ! 469: asm("andl2 $0xffff,_src"); ! 470: dest = src; ! 471: } ! 472: } ! 473: else ! 474: { ! 475: asm("bicpsw $0xf"); /* clear all flags */ ! 476: asm("bispsw _flag_msk"); ! 477: asm(".globl _xorwd3"); ! 478: asm("_xorwd3:"); ! 479: if (ix==1){ ! 480: setjmp(); ! 481: asm("x23: movab x23,_stpc"); ! 482: asm("movl $0x17,_subtst"); ! 483: asm("xorw3 _mask+2,_src+2,_dest+2"); /*mem mem mem*/ ! 484: asm("movpsl _psl"); ! 485: } ! 486: if (ix==2){ ! 487: setjmp(); ! 488: asm("x24: movab x24,_stpc"); ! 489: asm("movl $0x18,_subtst"); ! 490: asm("movl _src,r6"); /* load src reg */ ! 491: asm("xorw3 _mask+2,r6,_dest+2"); /*mem reg mem*/ ! 492: asm("movpsl _psl"); ! 493: asm("movl r6,_src"); /* load src location */ ! 494: } ! 495: if (ix==3){ ! 496: setjmp(); ! 497: asm("x25: movab x25,_stpc"); ! 498: asm("movl $0x19,_subtst"); ! 499: asm("xorw3 _mask+2,$-0x00ff,_dest+2"); /*mem dat mem*/ ! 500: asm("movpsl _psl"); ! 501: } ! 502: if (ix==4){ ! 503: setjmp(); ! 504: asm("x26: movab x26,_stpc"); ! 505: asm("movl $0x1a,_subtst"); ! 506: asm("xorw3 $-0x5600,$0x7001,_dest+2"); /*lit dat mem*/ ! 507: asm("movpsl _psl"); ! 508: } ! 509: if (ix==5){ ! 510: setjmp(); ! 511: asm("x27: movab x27,_stpc"); ! 512: asm("movl $0x1b,_subtst"); ! 513: asm("movl _dest,r7"); /* load dest reg */ ! 514: asm("xorw3 _mask+2,_src+2,r7"); /*mem mem reg */ ! 515: asm("movpsl _psl"); ! 516: asm("movl r7,_dest"); /* load dest location */ ! 517: asm("andl2 $0xffff,_dest"); ! 518: } ! 519: if (ix==6){ ! 520: setjmp(); ! 521: asm("x28: movab x28,_stpc"); ! 522: asm("movl $0x1c,_subtst"); ! 523: asm("movl _src,r6"); /* load src reg */ ! 524: asm("xorw3 $-0x5600,r6,_dest+2"); /*lit reg mem*/ ! 525: asm("movpsl _psl"); ! 526: asm("movl r6,_src"); /* load src location */ ! 527: } ! 528: if (ix==7){ ! 529: setjmp(); ! 530: asm("x29: movab x29,_stpc"); ! 531: asm("movl $0x1d,_subtst"); ! 532: exp_psw = N|C; ! 533: asm("movl _src,r6"); /* load src reg */ ! 534: asm("movl _dest,r7"); /* load dest reg */ ! 535: asm("xorw3 $-0x00ff,r6,r7"); /*dat reg reg*/ ! 536: asm("movpsl _psl"); ! 537: asm("movl r6,_src"); /* load src location */ ! 538: asm("movl r7,_dest"); /* load dest location */ ! 539: asm("andl2 $0xffff,_dest"); ! 540: } ! 541: if (ix==8){ ! 542: setjmp(); ! 543: asm("x30: movab x30,_stpc"); ! 544: asm("movl $0x1e,_subtst"); ! 545: exp_psw = C; ! 546: asm("movl _mask,r5"); /* load mask reg */ ! 547: asm("movl _dest,r7"); /* load dest reg */ ! 548: asm("xorw3 r5,$0x7001,r7"); /*reg dat reg*/ ! 549: asm("movpsl _psl"); ! 550: asm("movl r5,_mask"); /* load mask location */ ! 551: asm("movl r7,_dest"); /* load dest location */ ! 552: asm("andl2 $0xffff,_dest"); ! 553: } ! 554: if (ix==9){ ! 555: setjmp(); ! 556: asm("x31: movab x31,_stpc"); ! 557: asm("movl $0x1f,_subtst"); ! 558: asm("movl _mask,r5"); /* load mask reg */ ! 559: asm("movl _src,r6"); /* load src reg */ ! 560: asm("movl _dest,r7"); /* load dest reg */ ! 561: asm("xorw3 r5,r6,r7"); /*reg reg reg*/ ! 562: asm("movpsl _psl"); ! 563: asm("movl r5,_mask"); /* load mask location */ ! 564: asm("movl r6,_src"); /* load src location */ ! 565: asm("movl r7,_dest"); /* load dest location */ ! 566: asm("andl2 $0xffff,_dest"); ! 567: } ! 568: if (ix==10){ ! 569: setjmp(); ! 570: asm("x32: movab x32,_stpc"); ! 571: asm("movl $0x20,_subtst"); ! 572: exp_psw = C; ! 573: asm("movl _mask,r5"); /* load mask reg */ ! 574: asm("movl _src,r6"); /* load src reg */ ! 575: asm("xorw3 r5,r6,_dest+2"); /*reg reg mem*/ ! 576: asm("movpsl _psl"); ! 577: asm("movl r5,_mask"); /* load mask location */ ! 578: asm("movl r6,_src"); /* load src location */ ! 579: } ! 580: } ! 581: } ! 582: else ! 583: { ! 584: if (no_op==2) ! 585: { ! 586: asm("bicpsw $0xf"); /* clear all flags */ ! 587: asm("bispsw _flag_msk"); ! 588: asm(".globl _xorlw2"); ! 589: asm("_xorlw2:"); ! 590: if (ix==1) { ! 591: setjmp(); ! 592: asm("x33: movab x33,_stpc"); ! 593: asm("movl $0x21,_subtst"); ! 594: asm("xorl2 _mask,_src"); /* mem to mem */ ! 595: asm("movpsl _psl"); ! 596: dest = src; ! 597: } ! 598: if (ix==2) { ! 599: setjmp(); ! 600: asm("x34: movab x34,_stpc"); ! 601: asm("movl $0x22,_subtst"); ! 602: asm("movl _mask,r5"); /* load mask reg */ ! 603: asm("movl _src,r6"); /* load src reg */ ! 604: asm("xorl2 r5,r6"); /* reg to reg */ ! 605: asm("movpsl _psl"); ! 606: asm("movl r5,_mask"); /* load mask location */ ! 607: asm("movl r6,_src"); /* load src location */ ! 608: dest = src; ! 609: } ! 610: if (ix==3) { ! 611: setjmp(); ! 612: asm("x35: movab x35,_stpc"); ! 613: asm("movl $0x23,_subtst"); ! 614: asm("movl _mask,r5"); /* load mask reg */ ! 615: asm("xorl2 r5,_src"); /* reg to mem */ ! 616: asm("movpsl _psl"); ! 617: asm("movl r5,_mask"); /* load mask location */ ! 618: dest = src; ! 619: } ! 620: if (ix==4) { ! 621: setjmp(); ! 622: asm("x36: movab x36,_stpc"); ! 623: asm("movl $0x24,_subtst"); ! 624: asm("movl _src,r6"); /* load src reg */ ! 625: asm("xorl2 $0xccccbbbb,r6"); /* data to reg */ ! 626: asm("movpsl _psl"); ! 627: asm("movl r6,_src"); /* load src location */ ! 628: dest = src; ! 629: } ! 630: } ! 631: else ! 632: { ! 633: asm("bicpsw $0xf"); /* clear all flags */ ! 634: asm("bispsw _flag_msk"); ! 635: asm(".globl _xorlw3"); ! 636: asm("_xorlw3:"); ! 637: if (ix==1) { ! 638: setjmp(); ! 639: asm("x37: movab x37,_stpc"); ! 640: asm("movl $0x25,_subtst"); ! 641: asm("xorl3 _mask,_src,_dest"); /*mem mem mem*/ ! 642: asm("movpsl _psl"); ! 643: } ! 644: if (ix==2) { ! 645: setjmp(); ! 646: asm("x38: movab x38,_stpc"); ! 647: asm("movl $0x26,_subtst"); ! 648: asm("movl _mask,r5"); /* load mask reg */ ! 649: asm("movl _src,r6"); /* load src reg */ ! 650: asm("movl _dest,r7"); /* load dest reg */ ! 651: asm("xorl3 r5,r6,r7"); /* reg reg reg */ ! 652: asm("movpsl _psl"); ! 653: asm("movl r5,_mask"); /* load mask location */ ! 654: asm("movl r6,_src"); /* load src location */ ! 655: asm("movl r7,_dest"); /* load dest location */ ! 656: } ! 657: if (ix==3) { ! 658: setjmp(); ! 659: asm("x39: movab x39,_stpc"); ! 660: asm("movl $0x27,_subtst"); ! 661: asm("movl _mask,r5"); /* load mask reg */ ! 662: asm("movl _src,r6"); /* load src reg */ ! 663: asm("xorl3 r5,r6,_dest"); /* reg reg mem */ ! 664: asm("movpsl _psl"); ! 665: asm("movl r5,_mask"); /* load mask location */ ! 666: asm("movl r6,_src"); /* load src location */ ! 667: } ! 668: if (ix==4) { ! 669: setjmp(); ! 670: asm("x40: movab x40,_stpc"); ! 671: asm("movl $0x28,_subtst"); ! 672: asm("movl _src,r6"); /* load src reg */ ! 673: asm("xorl3 $0xddddaa00,r6,_dest"); /* dat reg mem */ ! 674: asm("movpsl _psl"); ! 675: asm("movl r6,_src"); /* load src location */ ! 676: } ! 677: if (ix==5) { ! 678: setjmp(); ! 679: asm("x41: movab x41,_stpc"); ! 680: asm("movl $0x29,_subtst"); ! 681: asm("movl _mask,r5"); /* load mask reg */ ! 682: asm("xorl3 r5,$0xffffff01,_dest"); /* reg dat mem */ ! 683: asm("movpsl _psl"); ! 684: asm("movl r5,_mask"); /* load mask location */ ! 685: } ! 686: if (ix==6) { ! 687: setjmp(); ! 688: asm("x42: movab x42,_stpc"); ! 689: asm("movl $0x2a,_subtst"); ! 690: asm("movl _src,r6"); /* load src reg */ ! 691: asm("movl _dest,r7"); /* load dest reg */ ! 692: asm("xorl3 $0xddddaa00,r6,r7"); /* dat reg reg */ ! 693: asm("movpsl _psl"); ! 694: asm("movl r6,_src"); /* load src location */ ! 695: asm("movl r7,_dest"); /* load dest location */ ! 696: } ! 697: if (ix==7) { ! 698: setjmp(); ! 699: asm("x43: movab x43,_stpc"); ! 700: asm("movl $0x2b,_subtst"); ! 701: asm("movl _mask,r5"); /* load mask reg */ ! 702: asm("movl _dest,r7"); /* load dest reg */ ! 703: asm("xorl3 r5,$0xffffff01,r7"); /* reg dat reg */ ! 704: asm("movpsl _psl"); ! 705: asm("movl r5,_mask"); /* load mask location */ ! 706: asm("movl r7,_dest"); /* load dest location */ ! 707: } ! 708: if (ix==8) { ! 709: setjmp(); ! 710: asm("x44: movab x44,_stpc"); ! 711: asm("movl $0x2c,_subtst"); ! 712: asm("movl _dest,r7"); /* load dest reg */ ! 713: asm("xorl3 $0xddddaa00,$0x7001dddd,r7"); /* dat dat reg */ ! 714: asm("movpsl _psl"); ! 715: asm("movl r7,_dest"); /* load dest location */ ! 716: } ! 717: if (ix==9) { ! 718: setjmp(); ! 719: asm("x45: movab x45,_stpc"); ! 720: asm("movl $0x2d,_subtst"); ! 721: asm("xorl3 $0xffffff01,$0xffffff01,_dest"); /* dat dat mem */ ! 722: asm("movpsl _psl"); ! 723: } ! 724: if (ix==10) { ! 725: setjmp(); ! 726: asm("x46: movab x46,_stpc"); ! 727: asm("movl $0x2e,_subtst"); ! 728: asm("xorl3 _mask,_src,_dest"); /*mem mem mem*/ ! 729: asm("movpsl _psl"); ! 730: } ! 731: } ! 732: } ! 733: ! 734: psw = psl & 0xf; ! 735: ! 736: /* check flags */ ! 737: if (psw != exp_psw) ! 738: { ! 739: asm("movl $2,_ercode"); ! 740: if (scoplp) longjmp(); ! 741: error_hdl2(psw,exp_psw,op1,op2); ! 742: } ! 743: if (mask != op1) ! 744: { ! 745: asm("movl $3,_ercode"); ! 746: if ( scoplp) longjmp(); ! 747: error_hdl2(mask,op1,op1,op2); ! 748: } ! 749: if (no_op==3) ! 750: { ! 751: if (src != op2) ! 752: { ! 753: asm("movl $3,_ercode"); ! 754: if ( scoplp) longjmp(); ! 755: error_hdl2(src,op2,op1,op2); ! 756: } ! 757: } ! 758: if (dest != exp_reslt) ! 759: { ! 760: asm("movl $1,_ercode"); ! 761: if ( scoplp) longjmp(); ! 762: error_hdl2(dest,exp_reslt,op1,op2); ! 763: if ( force_lp) longjmp(); ! 764: } ! 765: break; ! 766: } ! 767: } ! 768: ! 769:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.