1: / machine language assist 2: / for 11/45 or 11/70 CPUs 3: 4: 5: / non-UNIX instructions 6: mfpi = 6500^tst 7: stst = 170300^tst 8: mtpi = 6600^tst 9: mfpd = 106500^tst 10: mtpd = 106600^tst 11: spl = 230 12: ldfps = 170100^tst 13: stfps = 170200^tst 14: wait = 1 15: rtt = 6 16: reset = 5 17: 18: .PROFIL = 0 19: HIPRI = 340 20: HIGH = 7 21: .if .PROFIL 22: HIGH = 6 23: HIPRI = 300 24: .endif 25: 26: / Mag tape dump 27: / save registers in low core and 28: / write all core onto mag tape. 29: / entry is thru 44 abs 30: 31: .data 32: .globl dump 33: dump: 34: 35: / save regs r0,r1,r2,r3,r4,r5,r6,KIA6 36: / starting at abs location 4 37: 38: mov r0,4 39: mov $6,r0 40: mov r1,(r0)+ 41: mov r2,(r0)+ 42: mov r3,(r0)+ 43: mov r4,(r0)+ 44: mov r5,(r0)+ 45: mov sp,(r0)+ 46: mov KDSA6,(r0)+ 47: 48: / dump all of core (ie to first mt error) 49: / onto mag tape. (9 track or 7 track 'binary') 50: 51: .if HTDUMP 52: mov $HTCS1,r0 53: mov $40,*$HTCS2 54: mov $2300,*$HTTC 55: clr *$HTBA 56: mov $1,(r0) 57: 1: 58: mov $-512.,*$HTFC 59: mov $-256.,*$HTWC 60: movb $61,(r0) 61: 2: 62: tstb (r0) 63: bge 2b 64: bit $1,(r0) 65: bne 2b 66: bit $40000,(r0) 67: beq 1b 68: mov $27,(r0) 69: .endif 70: HT = 0172440 71: HTCS1 = HT+0 72: HTWC = HT+2 73: HTBA = HT+4 74: HTFC = HT+6 75: HTCS2 = HT+10 76: HTTC = HT+32 77: 78: MTC = 172522 79: .if TUDUMP 80: mov $MTC,r0 81: mov $60004,(r0)+ 82: clr 2(r0) 83: 1: 84: mov $-512.,(r0) 85: inc -(r0) 86: 2: 87: tstb (r0) 88: bge 2b 89: tst (r0)+ 90: bge 1b 91: reset 92: 93: / end of file and loop 94: 95: mov $60007,-(r0) 96: .endif 97: br . 98: 99: .text 100: .globl start, _end, _edata, _etext, _main 101: 102: / 11/45 and 11/70 startup. 103: / entry is thru 0 abs. 104: / since core is shuffled, 105: / this code can be executed but once 106: 107: start: 108: bit $1,SSR0 109: beq 1f 110: mov $trap,34 111: mov $trap,0 112: mov $340+15.,2 113: bit $20,SSR3 114: beq 9f 115: mov $70.,_cputype 116: mov $3,*$MSCR 117: 9: 118: clr PS 119: br 9f 120: 1: 121: inc $-1 122: bne . 123: reset 124: / Set loc. 0 to trap to system, in case of 125: / hardware glitch 126: mov $trap,0 / in case of bad trap through 0 127: mov $340+15.,2 / high pri, trap type 15 128: clr PS 129: 130: / set KI0 to physical 0 131: 132: mov $77406,r3 133: mov $KISA0,r0 134: mov $KISD0,r1 135: clr (r0)+ 136: mov r3,(r1)+ 137: 138: / set KI1-6 to eventual text resting place 139: 140: mov $_end+63.,r2 141: ash $-6,r2 142: bic $!1777,r2 143: 1: 144: mov r2,(r0)+ 145: mov r3,(r1)+ 146: add $200,r2 147: cmp r0,$KISA7 148: blos 1b 149: 150: / set KI7 to IO seg for escape 151: 152: mov $IO,-(r0) 153: 154: / set KD0-7 to physical 155: 156: mov $KDSA0,r0 157: mov $KDSD0,r1 158: clr r2 159: 1: 160: mov r2,(r0)+ 161: mov r3,(r1)+ 162: add $200,r2 163: cmp r0,$KDSA7 164: blos 1b 165: 166: / initialization 167: / get a temp (1-word) stack 168: / turn on segmentation 169: / copy text to I space 170: / clear bss in D space 171: 172: mov $stk+2,sp 173: mov $65,SSR3 / 22-bit, map, K+U sep 174: bit $20,SSR3 175: beq 1f 176: mov $70.,_cputype 177: mov $3,*$MSCR / Disable UNIBUS traps, non-fatal traps 178: 1: 179: inc SSR0 180: mov $_etext+100,r2 181: mov $_edata+100,r1 182: add $_etext-8192.,r1 183: 1: 184: mov -(r1),-(sp) 185: mtpi -(r2) 186: cmp r1,$_edata 187: bhi 1b 188: 1: 189: clr (r1)+ 190: cmp r1,$_end 191: blo 1b 192: 193: / use KI escape to set KD7 to IO seg 194: / set KD6 to first available core 195: / If profiling, snag supervisor registers. 196: 197: mov $IO,-(sp) 198: mtpi *$KDSA7 199: 9: 200: mov $_etext-8192.+63.,r2 201: ash $-6,r2 202: bic $!1777,r2 203: add KISA1,r2 204: .if .PROFIL 205: mov r2,SISA2 206: mov r2,_proloc 207: mov $77406,SISD2 208: add $200,r2 209: mov r2,SISA2+2 210: mov $77406,SISD2+2 211: add $200,r2 212: .endif 213: mov r2,KDSA6 214: 215: / Turn off write permission on kernel text 216: / Take stuff above data out of address space 217: 218: mov $KISD0,r0 219: 1: 220: mov $77402,(r0)+ 221: cmp r0,$KISD7 222: blos 1b 223: 224: mov $_end+63.,r0 225: ash $-6,r0 226: bic $!1777,r0 227: mov $KDSD0,r1 228: 1: 229: cmp r0,$200 230: bge 2f 231: dec r0 232: bge 4f 233: clr (r1) 234: br 3f 235: 4: 236: movb r0,1(r1) 237: br 3f 238: 2: 239: movb $177,1(r1) 240: 3: 241: tst (r1)+ 242: sub $200,r0 243: cmp r1,$KDSD5 244: blos 1b 245: 246: / set up supervisor D registers 247: 248: 9: 249: mov $6,SISD0 250: mov $6,SISD1 251: 252: / set up real sp 253: / clear user block 254: / test for floating point hardware 255: 256: mov $_u+[usize*64.],sp 257: mov $1f,nofault 258: setd / jump to 1f if this traps 259: inc fpp 260: 1: 261: clr nofault 262: mov $_u,r0 263: 1: 264: clr (r0)+ 265: cmp r0,sp 266: blo 1b 267: .if .PROFIL 268: mov $40000,r0 269: mov $10000,PS / prev = super 270: 1: 271: clr -(sp) 272: mtpi (r0)+ 273: cmp r0,$100000 274: blo 1b 275: jsr pc,_isprof 276: .endif 277: 278: / set up previous mode and call main 279: / on return, enter user mode at 0R 280: 281: mov $30000,PS 282: jsr pc,_main 283: mov $170000,-(sp) 284: clr -(sp) 285: rtt 286: 287: .globl _rkboot, _rpboot 288: _rkboot: 289: jmp *$173000 290: 291: _rpboot: 292: jmp *$173006 293: 294: 295: .globl trap, call 296: .globl _trap 297: 298: / all traps and interrupts are 299: / vectored thru this routine. 300: 301: trap: 302: mov PS,saveps 303: tst nofault 304: bne 1f 305: mov SSR0,ssr 306: mov SSR1,ssr+2 307: mov SSR2,ssr+4 308: mov $1,SSR0 309: jsr r0,call1; jmp _trap 310: / no return 311: 1: 312: mov $1,SSR0 313: mov nofault,(sp) 314: rtt 315: .text 316: 317: .globl _runrun 318: call1: 319: mov saveps,-(sp) 320: spl 0 321: br 1f 322: 323: call: 324: mov PS,-(sp) 325: 1: 326: mov r1,-(sp) 327: mfpd sp 328: mov 4(sp),-(sp) 329: bic $!37,(sp) 330: bit $30000,PS 331: beq 1f 332: jsr pc,(r0)+ 333: tstb _runrun 334: beq 2f 335: mov $12.,(sp) / trap 12 is give up cpu 336: jsr pc,_trap 337: 2: 338: tst (sp)+ 339: mtpd sp 340: br 2f 341: 1: 342: bis $30000,PS 343: jsr pc,(r0)+ 344: cmp (sp)+,(sp)+ 345: 2: 346: mov (sp)+,r1 347: tst (sp)+ 348: mov (sp)+,r0 349: rtt 350: 351: .globl _savfp 352: _savfp: 353: tst fpp 354: beq 9f / No FP hardware 355: mov 2(sp),r1 356: stfps (r1)+ 357: setd 358: movf fr0,(r1)+ 359: movf fr1,(r1)+ 360: movf fr2,(r1)+ 361: movf fr3,(r1)+ 362: movf fr4,fr0 363: movf fr0,(r1)+ 364: movf fr5,fr0 365: movf fr0,(r1)+ 366: 9: 367: rts pc 368: 369: .globl _restfp 370: _restfp: 371: tst fpp 372: beq 9f 373: mov 2(sp),r1 374: mov r1,r0 375: setd 376: add $8.+2.,r1 377: movf (r1)+,fr1 378: movf (r1)+,fr2 379: movf (r1)+,fr3 380: movf (r1)+,fr0 381: movf fr0,fr4 382: movf (r1)+,fr0 383: movf fr0,fr5 384: movf 2(r0),fr0 385: ldfps (r0) 386: 9: 387: rts pc 388: 389: .globl _stst 390: _stst: 391: tst fpp 392: beq 9f 393: stst r0 394: mov r0,*2(sp) 395: 9: 396: rts pc 397: 398: .globl _addupc 399: _addupc: 400: mov r2,-(sp) 401: mov 6(sp),r2 / base of prof with base,leng,off,scale 402: mov 4(sp),r0 / pc 403: sub 4(r2),r0 / offset 404: clc 405: ror r0 406: mov 6(r2),r1 407: clc 408: ror r1 409: mul r1,r0 / scale 410: ashc $-14.,r0 411: inc r1 412: bic $1,r1 413: cmp r1,2(r2) / length 414: bhis 1f 415: add (r2),r1 / base 416: mov nofault,-(sp) 417: mov $2f,nofault 418: mfpd (r1) 419: add 12.(sp),(sp) 420: mtpd (r1) 421: br 3f 422: 2: 423: clr 6(r2) 424: 3: 425: mov (sp)+,nofault 426: 1: 427: mov (sp)+,r2 428: rts pc 429: 430: .globl _display 431: _display: 432: dec dispdly 433: bge 2f 434: clr dispdly 435: mov PS,-(sp) 436: mov $HIPRI,PS 437: mov CSW,r1 438: bit $1,r1 439: beq 1f 440: bis $30000,PS 441: dec r1 442: 1: 443: jsr pc,fuword 444: mov r0,CSW 445: mov (sp)+,PS 446: cmp r0,$-1 447: bne 2f 448: mov $120.,dispdly / 2 sec delay after CSW fault 449: 2: 450: rts pc 451: 452: .globl _backup 453: .globl _regloc 454: _backup: 455: mov 2(sp),r0 456: movb ssr+2,r1 457: jsr pc,1f 458: movb ssr+3,r1 459: jsr pc,1f 460: movb _regloc+7,r1 461: asl r1 462: add r0,r1 463: mov ssr+4,(r1) 464: clr r0 465: 2: 466: rts pc 467: 1: 468: mov r1,-(sp) 469: asr (sp) 470: asr (sp) 471: asr (sp) 472: bic $!7,r1 473: movb _regloc(r1),r1 474: asl r1 475: add r0,r1 476: sub (sp)+,(r1) 477: rts pc 478: 479: 480: .globl _fubyte, _subyte 481: .globl _fuword, _suword 482: .globl _fuibyte, _suibyte 483: .globl _fuiword, _suiword 484: _fuibyte: 485: mov 2(sp),r1 486: bic $1,r1 487: jsr pc,giword 488: br 2f 489: 490: _fubyte: 491: mov 2(sp),r1 492: bic $1,r1 493: jsr pc,gword 494: 495: 2: 496: cmp r1,2(sp) 497: beq 1f 498: swab r0 499: 1: 500: bic $!377,r0 501: rts pc 502: 503: _suibyte: 504: mov 2(sp),r1 505: bic $1,r1 506: jsr pc,giword 507: mov r0,-(sp) 508: cmp r1,4(sp) 509: beq 1f 510: movb 6(sp),1(sp) 511: br 2f 512: 1: 513: movb 6(sp),(sp) 514: 2: 515: mov (sp)+,r0 516: jsr pc,piword 517: clr r0 518: rts pc 519: 520: _subyte: 521: mov 2(sp),r1 522: bic $1,r1 523: jsr pc,gword 524: mov r0,-(sp) 525: cmp r1,4(sp) 526: beq 1f 527: movb 6(sp),1(sp) 528: br 2f 529: 1: 530: movb 6(sp),(sp) 531: 2: 532: mov (sp)+,r0 533: jsr pc,pword 534: clr r0 535: rts pc 536: 537: _fuiword: 538: mov 2(sp),r1 539: fuiword: 540: jsr pc,giword 541: rts pc 542: 543: _fuword: 544: mov 2(sp),r1 545: fuword: 546: jsr pc,gword 547: rts pc 548: 549: giword: 550: mov PS,-(sp) 551: spl HIGH 552: mov nofault,-(sp) 553: mov $err,nofault 554: mfpi (r1) 555: mov (sp)+,r0 556: br 1f 557: 558: gword: 559: mov PS,-(sp) 560: spl HIGH 561: mov nofault,-(sp) 562: mov $err,nofault 563: mfpd (r1) 564: mov (sp)+,r0 565: br 1f 566: 567: _suiword: 568: mov 2(sp),r1 569: mov 4(sp),r0 570: suiword: 571: jsr pc,piword 572: rts pc 573: 574: _suword: 575: mov 2(sp),r1 576: mov 4(sp),r0 577: suword: 578: jsr pc,pword 579: rts pc 580: 581: piword: 582: mov PS,-(sp) 583: spl HIGH 584: mov nofault,-(sp) 585: mov $err,nofault 586: mov r0,-(sp) 587: mtpi (r1) 588: br 1f 589: 590: pword: 591: mov PS,-(sp) 592: spl HIGH 593: mov nofault,-(sp) 594: mov $err,nofault 595: mov r0,-(sp) 596: mtpd (r1) 597: 1: 598: mov (sp)+,nofault 599: mov (sp)+,PS 600: rts pc 601: 602: err: 603: mov (sp)+,nofault 604: mov (sp)+,PS 605: tst (sp)+ 606: mov $-1,r0 607: rts pc 608: 609: .globl _copyin, _copyout 610: .globl _copyiin, _copyiout 611: _copyiin: 612: jsr pc,copsu 613: 1: 614: mfpi (r0)+ 615: mov (sp)+,(r1)+ 616: sob r2,1b 617: br 2f 618: 619: _copyin: 620: jsr pc,copsu 621: 1: 622: mfpd (r0)+ 623: mov (sp)+,(r1)+ 624: sob r2,1b 625: br 2f 626: 627: _copyiout: 628: jsr pc,copsu 629: 1: 630: mov (r0)+,-(sp) 631: mtpi (r1)+ 632: sob r2,1b 633: br 2f 634: 635: _copyout: 636: jsr pc,copsu 637: 1: 638: mov (r0)+,-(sp) 639: mtpd (r1)+ 640: sob r2,1b 641: 2: 642: mov (sp)+,nofault 643: mov (sp)+,r2 644: clr r0 645: rts pc 646: 647: copsu: 648: mov (sp)+,r0 649: mov r2,-(sp) 650: mov nofault,-(sp) 651: mov r0,-(sp) 652: mov 10(sp),r0 653: mov 12(sp),r1 654: mov 14(sp),r2 655: asr r2 656: mov $1f,nofault 657: rts pc 658: 659: 1: 660: mov (sp)+,nofault 661: mov (sp)+,r2 662: mov $-1,r0 663: rts pc 664: 665: .globl _idle, _waitloc 666: _idle: 667: mov PS,-(sp) 668: spl 0 669: wait 670: waitloc: 671: mov (sp)+,PS 672: rts pc 673: 674: .data 675: _waitloc: 676: waitloc 677: .text 678: 679: .globl _save 680: _save: 681: mov (sp)+,r1 682: mov (sp),r0 683: mov r2,(r0)+ 684: mov r3,(r0)+ 685: mov r4,(r0)+ 686: mov r5,(r0)+ 687: mov sp,(r0)+ 688: mov r1,(r0)+ 689: clr r0 690: jmp (r1) 691: 692: .globl _resume 693: _resume: 694: mov 2(sp),r0 / new process 695: mov 4(sp),r1 / new stack 696: spl 7 697: mov r0,KDSA6 / In new process 698: mov (r1)+,r2 699: mov (r1)+,r3 700: mov (r1)+,r4 701: mov (r1)+,r5 702: mov (r1)+,sp 703: mov $1,r0 704: spl 0 705: jmp *(r1)+ 706: 707: .globl _spl0, _spl1, _spl4, _spl5, _spl6, _spl7, _splx 708: _spl0: 709: mov PS,r0 710: spl 0 711: rts pc 712: 713: _spl1: 714: mov PS,r0 715: spl 1 716: rts pc 717: 718: _spl4: 719: mov PS,r0 720: spl 4 721: rts pc 722: 723: _spl5: 724: mov PS,r0 725: spl 5 726: rts pc 727: 728: _spl6: 729: mov PS,r0 730: spl 6 731: rts pc 732: 733: _spl7: 734: mov PS,r0 735: spl HIGH 736: rts pc 737: 738: _splx: 739: mov 2(sp),PS 740: rts pc 741: 742: .globl _copyseg 743: _copyseg: 744: mov PS,-(sp) 745: mov 4(sp),SISA0 746: mov 6(sp),SISA1 747: mov $10000+HIPRI,PS 748: mov r2,-(sp) 749: clr r0 750: mov $8192.,r1 751: mov $32.,r2 752: 1: 753: mfpd (r0)+ 754: mtpd (r1)+ 755: sob r2,1b 756: mov (sp)+,r2 757: mov (sp)+,PS 758: rts pc 759: 760: .globl _clearseg 761: _clearseg: 762: mov PS,-(sp) 763: mov 4(sp),SISA0 764: mov $10000+HIPRI,PS 765: clr r0 766: mov $32.,r1 767: 1: 768: clr -(sp) 769: mtpd (r0)+ 770: sob r1,1b 771: mov (sp)+,PS 772: rts pc 773: 774: / Long quotient 775: 776: .globl ldiv 777: ldiv: 778: jsr r5,csv 779: mov 10.(r5),r3 780: sxt r4 781: bpl 1f 782: neg r3 783: 1: 784: cmp r4,8.(r5) 785: bne hardldiv 786: mov 6.(r5),r2 787: mov 4.(r5),r1 788: bge 1f 789: neg r1 790: neg r2 791: sbc r1 792: com r4 793: 1: 794: mov r4,-(sp) 795: clr r0 796: div r3,r0 797: mov r0,r4 /high quotient 798: mov r1,r0 799: mov r2,r1 800: div r3,r0 801: bvc 1f 802: sub r3,r0 / this is the clever part 803: div r3,r0 804: tst r1 805: sxt r1 806: add r1,r0 / cannot overflow! 807: 1: 808: mov r0,r1 809: mov r4,r0 810: tst (sp)+ 811: bpl 9f 812: neg r0 813: neg r1 814: sbc r0 815: 9: 816: jmp cret 817: 818: hardldiv: 819: 4 820: 821: / Long remainder 822: 823: .globl lrem 824: lrem: 825: jsr r5,csv 826: mov 10.(r5),r3 827: sxt r4 828: bpl 1f 829: neg r3 830: 1: 831: cmp r4,8.(r5) 832: bne hardlrem 833: mov 6.(r5),r2 834: mov 4.(r5),r1 835: mov r1,r4 836: bge 1f 837: neg r1 838: neg r2 839: sbc r1 840: 1: 841: clr r0 842: div r3,r0 843: mov r1,r0 844: mov r2,r1 845: div r3,r0 846: bvc 1f 847: sub r3,r0 848: div r3,r0 849: tst r1 850: beq 9f 851: add r3,r1 852: 1: 853: tst r4 854: bpl 9f 855: neg r1 856: 9: 857: sxt r0 858: jmp cret 859: 860: / The divisor is known to be >= 2^15. Only 16 cycles are 861: / needed to get a remainder. 862: hardlrem: 863: 4 864: 865: /.globl lmul 866: /lmul: 867: / mov r2,-(sp) 868: / mov r3,-(sp) 869: / mov 8(sp),r2 870: / sxt r1 871: / sub 6(sp),r1 872: / mov 12.(sp),r0 873: / sxt r3 874: / sub 10.(sp),r3 875: / mul r0,r1 876: / mul r2,r3 877: / add r1,r3 878: / mul r2,r0 879: / sub r3,r0 880: / mov (sp)+,r3 881: / mov (sp)+,r2 882: / rts pc 883: 884: .globl csv 885: csv: 886: mov r5,r0 887: mov sp,r5 888: mov r4,-(sp) 889: mov r3,-(sp) 890: mov r2,-(sp) 891: jsr pc,(r0) 892: 893: .globl cret 894: cret: 895: mov r5,r2 896: mov -(r2),r4 897: mov -(r2),r3 898: mov -(r2),r2 899: mov r5,sp 900: mov (sp)+,r5 901: rts pc 902: 903: .globl _u 904: _u = 140000 905: usize = 16. 906: 907: CSW = 177570 908: PS = 177776 909: SSR0 = 177572 910: SSR1 = 177574 911: SSR2 = 177576 912: SSR3 = 172516 913: KISA0 = 172340 914: KISA1 = 172342 915: KISA7 = 172356 916: KISD0 = 172300 917: KISD7 = 172316 918: KDSA0 = 172360 919: KDSA6 = 172374 920: KDSA7 = 172376 921: KDSD0 = 172320 922: KDSD5 = 172332 923: SISA0 = 172240 924: SISA1 = 172242 925: SISA2 = 172244 926: SISD0 = 172200 927: SISD1 = 172202 928: SISD2 = 172204 929: MSCR = 017777746 / 11/70 memory control register 930: IO = 177600 931: 932: SWR = 177570 933: .data 934: .globl _ka6 935: .globl _cputype 936: 937: _ka6: KDSA6 938: _cputype:45. 939: stk: 0 940: 941: .bss 942: nofault:.=.+2 943: fpp: .=.+2 944: ssr: .=.+6 945: dispdly:.=.+2 946: saveps: .=.+2 947: 948: .text 949: / system profiler 950: / Expects to have a KW11-P in addition to the line-frequency 951: / clock, and it should be set to BR7. 952: / Uses supervisor I space register 2&3 (40000-100000) 953: / to maintain the profile. 954: 955: .if .PROFIL 956: CCSB = 172542 957: CCSR = 172540 958: 959: .globl _sprof, _xprobuf, _probsiz, _mode 960: _probsiz = 37777 961: 962: _isprof: 963: mov $1f,nofault 964: mov $_sprof,104 / interrupt 965: mov $340,106 / pri 966: mov $100.,CCSB / count set = 100 967: mov $113,CCSR / count down, 10kHz, repeat 968: 1: 969: clr nofault 970: rts pc 971: 972: _sprof: 973: mov r0,-(sp) 974: mov PS,r0 975: ash $-10.,r0 976: bic $!14,r0 977: add $1,_mode+2(r0) 978: adc _mode(r0) 979: cmp r0,$14 / user 980: beq done 981: mov 2(sp),r0 / pc 982: asr r0 983: asr r0 984: bic $140001,r0 985: cmp r0,$_probsiz 986: blo 1f 987: inc _outside 988: br done 989: 1: 990: mov $10340,PS / prev = super 991: mfpi 40000(r0) 992: inc (sp) 993: mtpi 40000(r0) 994: bne done 995: mov r1,-(sp) 996: mov $_xprobuf,r1 997: 2: 998: cmp (r1)+,r0 999: bne 3f 1000: inc (r1) 1001: br 4f 1002: 3: 1003: tst (r1)+ 1004: bne 2b 1005: sub $4,r1 1006: mov r0,(r1)+ 1007: mov $1,(r1)+ 1008: 4: 1009: mov (sp)+,r1 1010: done: 1011: mov (sp)+,r0 1012: mov $113,CCSR 1013: rtt 1014: 1015: / count subroutine calls during profiling 1016: / of the system. 1017: 1018: .globl mcount, _profcnts, _profsize 1019: 1020: .bss 1021: _profcnts: 1022: .=.+[6*340.] 1023: 1024: .globl countbase 1025: .data 1026: countbase: 1027: _profcnts 1028: _profsize: 1029: 340. 1030: .text 1031: 1032: mcount: 1033: mov (r0),r1 1034: bne 1f 1035: mov countbase,r1 1036: beq 2f 1037: add $6,countbase 1038: cmp countbase,$_profcnts+[6*340.] 1039: blo 3f 1040: clr countbase 1041: rts pc 1042: 3: 1043: mov (sp),(r1)+ 1044: mov r1,(r0) 1045: 1: 1046: inc 2(r1) 1047: bne 2f 1048: inc (r1) 1049: 2: 1050: rts pc 1051: 1052: .bss 1053: _xprobuf:.=.+512. 1054: _proloc:.=.+2 1055: _mode: .=.+16. 1056: _outside: .=.+2 1057: 1058: .endif