|
|
1.1 root 1: # 1 "temp$.s"
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20: # 1 "./conf.h"
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45: # 19 "temp$.s"
46:
47:
48: # 1 "./prvreg.h"
49:
50:
51:
52:
53:
54:
55:
56: .globl SBR
57: .set SBR,0
58:
59: .globl SLR
60: .set SLR,1
61:
62: .set P0BR,2
63: .set P0LR,3
64: .set P1BR,4
65: .set P1LR,5
66: .set P2BR,6
67: .set P2LR,7
68: .set IPL,8
69: .set MME,9
70: .globl TBIA
71: .set TBIA,10
72:
73: .set TBIS,11
74:
75: .set DCK,12
76: .set CCK,13
77: .set PCBB,14
78: .set ISP,15
79: .set SIRR,16
80: .set SISR,17
81: .set SCBB,18
82: .set KSP,19
83: .set USP,20
84: .set P1CC,21
85:
86: .globl DCB
87: .set DCB,22
88: .set PACC,23
89:
90: .set P1DC,24
91: .globl PADC
92: .set PADC,25
93:
94: .set HISR,26
95: .globl DCR
96: .set DCR,27
97: # 21 "temp$.s"
98:
99:
100:
101: # 1 "./psl.h"
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127: # 24 "temp$.s"
128:
129:
130:
131: # 1 "./pte.h"
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161: # 27 "temp$.s"
162:
163:
164:
165: # 1 "./pcboffset.h"
166:
167:
168:
169:
170:
171: .set PCB_KSP, 0
172: .set PCB_USP, 4
173: .set PCB_R0, 8
174: .set PCB_R1, 12
175: .set PCB_R2, 16
176: .set PCB_R3, 20
177: .set PCB_R4, 24
178: .set PCB_R5, 28
179: .set PCB_R6, 32
180: .set PCB_R7, 36
181: .set PCB_R8, 40
182: .set PCB_R9, 44
183: .set PCB_R10, 48
184: .set PCB_R11, 52
185: .set PCB_R12, 56
186: .set PCB_R13, 60
187: .set PCB_PC, 64
188: .set PCB_PSL, 68
189: .set PCB_P0BR, 72
190: .set PCB_P0LR, 76
191: .set PCB_P1BR, 80
192: .set PCB_P1LR, 84
193: .set PCB_P2BR, 88
194: .set PCB_P2LR, 92
195:
196:
197:
198: .set PCB_STAT, 96
199:
200:
201: # 30 "temp$.s"
202:
203:
204:
205: # 1 "./const.h"
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256: # 33 "temp$.s"
257:
258:
259:
260: # 1 "./scboffset.h"
261:
262:
263:
264:
265: .set PFVEC,4
266: .set CLOCK,7
267: .set CLOCKVEC,28
268: .set CRVEC,40
269: .set CXVEC,44
270: .set SIVEC1,120
271:
272:
273: .set BUSER,32
274: .set BEVEC,128
275: .set SYSVEC,172
276: .set PINSTVEC,176
277: .set ROVEC,180
278: .set RAVEC,184
279: .set PROTVEC,188
280: .set TRANSVEC,192
281: .set KSPVEC,196
282: .set TRACEVEC,200
283: .set BPTVEC,204
284: .set ARITHVEC,208
285: .set ALIGNVEC,212
286: .set IO14VEC,256
287: .set IO15VEC,320
288: .set IO16VEC,384
289: .set IO17VEC,448
290:
291: # 36 "temp$.s"
292:
293:
294: # 1 "./sptoffset.h"
295:
296:
297:
298:
299:
300:
301:
302:
303: .set SCBPTE,8
304: .set BUFPTE,12
305: .set ISPTE,16
306: .set IS1PTE,20
307: .set SPTPTE,20
308: .set SPT1PTE,20
309: .set IOMAPPTE,24
310: .set PCBPTE,28
311: .set U0P0PTE,32
312: .set U0P1PTE,36
313: .set U0P2PTE,40
314: .set U1P0PTE,44
315: .set U1P1PTE,48
316: .set U1P2PTE,52
317: .set U2P0PTE,56
318: .set U2P1PTE,60
319: .set U2P2PTE,64
320: .set U3P0PTE,68
321: .set U3P1PTE,72
322: .set U3P2PTE,76
323: .set U4P0PTE,80
324: .set U4P1PTE,84
325: .set U4P2PTE,88
326: .set U5P0PTE,92
327: .set U5P1PTE,96
328: .set U5P2PTE,100
329: .set U6P0PTE,104
330: .set U6P1PTE,108
331: .set U6P2PTE,112
332: .set U7P0PTE,116
333: .set U7P1PTE,120
334: .set U7P2PTE,124
335: .set IOB0PTE,128
336: .set IOB1PTE,132
337: .set IOB2PTE,136
338: .set IOB3PTE,140
339: .set IOB4PTE,144
340: .set IOB5PTE,148
341: .set IOB6PTE,152
342: .set IOB7PTE,156
343:
344:
345: # 38 "temp$.s"
346:
347:
348:
349: # 1 "./trap.h"
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366: # 41 "temp$.s"
367:
368:
369:
370:
371:
372: .set HIGH,0x1f
373: .set MCKVEC,4
374: .set NISP,2
375: .set DONE,255
376:
377: .text
378:
379:
380: # 1 "./pstorage.s"
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401: _pstore:
402: .globl _pstore
403: .space 1024
404:
405: _pstore1:
406: .globl _pstore1
407:
408: _pcbb: .space 4
409: _isp: .space 4
410: _sirr: .space 4
411: _sisr: .space 4
412:
413: .space 4
414: .space 4
415: .space 4
416:
417: _cpmdcb: .space 4
418: _cpfdcb: .space 4
419: _cpcdcb: .space 4
420: _cpidcb: .space 4
421: _cpstat: .space 4
422: _cpctl: .space 4
423:
424: _hisr: .space 4
425: _dcr: .space 4
426:
427: .space 4*48
428:
429: _pstemp:
430: .globl _pstemp
431:
432: _tr0: .space 16
433:
434: _tpc: .space 4
435: _tpsl: .space 4
436: _tsp: .space 4
437: _tksp: .space 4
438: _tusp: .space 4
439: _tcck: .space 4
440: _tdck: .space 4
441: _ttbk: .space 4
442: _tsbr: .space 4
443: _tslr: .space 4
444: _tp0br: .space 4
445: _tp0lr: .space 4
446: _tp1br: .space 4
447: _tp1lr: .space 4
448: _tp2br: .space 4
449: _tp2lr: .space 4
450: _tipl: .space 4
451: _tmme: .space 4
452: _ttbia: .space 4
453: _ttbis: .space 4
454:
455:
456: _tpcbb: .space 4
457: _tisp: .space 4
458: _tsirr: .space 4
459: _tsisr: .space 4
460: _tscbb: .space 4
461: _tp1cc: .space 4
462:
463: _tpacc: .space 4
464:
465: _tp1dc: .space 4
466: _tpadc: .space 4
467: _tcpmdcb:
468: .space 4
469: _tcpfdcb:
470: .space 4
471: _tcpcdcb:
472: .space 4
473: _tcpidcb:
474: .space 4
475: _tcpstat:
476: .space 4
477: _tcpctl:
478: .space 4
479:
480: _probflag:
481: .space 4
482: _inexcflg:
483: .space 4
484:
485: .space 4*10
486: _psend: .globl _psend
487: .set MM,(_psend - _pstore1)
488: .space 1024 - MM
489:
490: # 54 "temp$.s"
491:
492: .globl _Entry
493: _Entry:
494: jmp start
495: .space (1024-6)
496:
497:
498:
499:
500:
501:
502:
503:
504:
505: .set NLWU,32
506:
507:
508:
509: .globl _restart
510: _restart:
511: .space 4
512:
513:
514:
515:
516: .globl _cyconf
517: _cyconf:
518: .space 4
519: .space 4
520:
521:
522: .globl _lastadd
523: _lastadd:
524: .space 4
525:
526: .globl _unused
527: _unused:
528: .space 4
529:
530: .globl _ctlblk
531: _ctlblk:
532: .long 0
533:
534: .globl _savvec0
535: _savvec0:
536: .space 4
537:
538: .globl _savvec1
539: _savvec1:
540: .space 4
541:
542: .globl _savvec2
543: _savvec2:
544: .space 4
545:
546: .globl _savvec3
547: _savvec3:
548: .space 4
549:
550: .globl _savvec4
551: _savvec4:
552: .space 4
553:
554: .globl _savvec5
555: _savvec5:
556: .space 4
557: .globl _savvec6
558: _savvec6:
559: .space 4
560: .globl _savvec7
561: _savvec7:
562: .space 4
563:
564: .globl _savvec8
565: _savvec8:
566: .space 4
567:
568: testno: .long 0
569:
570: .globl _dbuf
571: .globl _r_no
572: _r_no:
573: .long 0
574: .globl _pt_base
575: _pt_base:
576: .long 0
577: .globl _saved_psl
578: _saved_psl:
579: .long 0
580: .globl _saved_sp
581: _saved_sp:
582: .long 0
583: .globl _saved_fp
584: _saved_fp:
585: .long 0
586: .globl _p_ptr
587: _p_ptr:
588: .long 0
589: .globl _ret_adr
590: _ret_adr:
591: .long 0
592: .globl _exp_par0
593: _exp_par0:
594: .long 0
595: .globl _exp_par1
596: _exp_par1:
597: .long 0
598: .globl _exp_par2
599: _exp_par2:
600: .long 0
601: .globl _exp_par3
602: _exp_par3:
603: .long 0
604: .globl _act_par0
605: _act_par0:
606: .long 0
607: .globl _act_par1
608: _act_par1:
609: .long 0
610:
611: .globl _IOpage
612: _IOpage:
613: .long 0
614:
615:
616:
617: .globl _proc_no
618: _proc_no:
619: .long 0
620:
621: .globl _clk_cnt
622: _clk_cnt:
623: .long 0
624: _dbuf:
625: .space 1024 - (NLWU *4)
626: edbuf:
627:
628:
629: .globl _intstack
630: _intstack:
631: .space NISP* 1024
632: eintstack:
633:
634:
635: .set SYSPTSIZE,512
636:
637:
638:
639:
640: .align 2
641: .globl _Sysmap
642: _Sysmap:
643: .space SYSPTSIZE*4
644: eSysmap:
645: .globl _Syssize
646: .set _Syssize,(eSysmap-_Sysmap)/4
647:
648: .globl _iomap
649: _iomap: .space 1024
650: .globl _eiomap
651: _eiomap:
652:
653: .globl _pcb0
654: _pcb0: .space 128
655: .globl _pcb1
656: _pcb1: .space 128
657: .globl _pcb2
658: _pcb2: .space 128
659: .globl _pcb3
660: _pcb3: .space 128
661: .globl _pcb4
662: _pcb4: .space 128
663: .globl _pcb5
664: _pcb5: .space 128
665: .globl _pcb6
666: _pcb6: .space 128
667: .globl _pcb7
668: _pcb7: .space 128
669:
670:
671:
672:
673:
674: .align 2
675: .globl _u0p0pt
676: _u0p0pt:
677: .space 1024
678: .globl _u0p1pt
679: _u0p1pt:
680: .space 1024
681: .globl _u0p2pt
682: _u0p2pt:
683: .space 1020
684: eu0p2pt:
685: .space 4
686:
687:
688:
689:
690:
691: .align 2
692: .globl _u1p0pt
693: _u1p0pt:
694: .space 1024
695: .globl _u1p1pt
696: _u1p1pt:
697: .space 1024
698: .globl _u1p2pt
699: _u1p2pt:
700: .space 1020
701: eu1p2pt:
702: .space 4
703:
704:
705:
706:
707:
708:
709: .align 2
710: .globl _u2p0pt
711: _u2p0pt:
712: .space 1024
713: .globl _u2p1pt
714: _u2p1pt:
715: .space 1024
716: .globl _u2p2pt
717: _u2p2pt:
718: .space 1020
719: eu2p2pt:
720: .space 4
721:
722:
723:
724:
725:
726:
727: .align 2
728: .globl _u3p0pt
729: _u3p0pt:
730: .space 1024
731: .globl _u3p1pt
732: _u3p1pt:
733: .space 1024
734: .globl _u3p2pt
735: _u3p2pt:
736: .space 1020
737: eu3p2pt:
738: .space 4
739:
740:
741:
742:
743:
744: .globl _u4p0pt
745: _u4p0pt:
746: .space (9* 1024) - 4
747: eu6p2pt:
748: .space 4
749:
750:
751:
752:
753:
754: .align 2
755: .globl _u7p0pt
756: _u7p0pt:
757: .space 1024
758: .globl _u7p1pt
759: _u7p1pt:
760: .space 1024
761: .globl _u7p2pt
762: _u7p2pt:
763: .space 1020
764: eu7p2pt:
765: .space 4
766:
767: .globl _Ksp0
768: _Ksp0: .space 1020
769: _Eksp0: .long 0
770:
771: .globl _Ksp1
772: _Ksp1: .space 1020
773: _Eksp1: .long 0
774:
775: .globl _Ksp2
776: _Ksp2: .space 1020
777: _Eksp2: .long 0
778:
779: .globl _Ksp3
780: _Ksp3: .space 1020
781: _Eksp3: .long 0
782:
783: .globl _Ksp4
784: _Ksp4: .space 1020
785: _Eksp4: .long 0
786:
787: .globl _Ksp5
788: _Ksp5: .space 1020
789: _Eksp5: .long 0
790:
791: .globl _Ksp6
792: _Ksp6: .space 1020
793: _Eksp6: .long 0
794:
795: # I/O buffers
796:
797: .globl _iob0
798: _iob0: .space 1024
799: .globl _iob1
800: _iob1: .space 1024
801: .globl _iob2
802: _iob2: .space 1024
803: .globl _iob3
804: _iob3: .space 1024
805: .globl _iob4
806: _iob4: .space 1024
807: .globl _iob5
808: _iob5: .space 1024
809:
810: esysdata:
811:
812:
813: # 1 "./scblock.s"
814:
815:
816:
817:
818:
819:
820:
821: .align 2
822: _scb: .globl _scb
823:
824:
825:
826:
827:
828:
829:
830: .long _Xunknown; .long _Xpowerfail;
831: .long _Xunknown; .long _Xunknown;
832: .long _Xunknown; .long _Xunknown;
833: .long _Xunknown; .long _Xhardclock;
834: .long _Xunknown; .long _Xunknown;
835: .long _Xcnrint; .long _Xcnxint;
836: .long _Xunknown; .long _Xunknown;
837: .long _Xunknown; .long _Xunknown;
838: .long _Xs15; .long _Xs14;
839: .long _Xs13; .long _Xs12;
840: .long _Xs11; .long _Xs10;
841: .long _Xs9; .long _Xs8;
842: .long _Xs7; .long _Xs6;
843: .long _Xs5; .long _Xs4;
844: .long _Xs3; .long _Xs2;
845: .long _Xs1; .long _Xunknown;
846: .long _Xbuserror; .long _Xunknown;
847: .long _Xunknown; .long _Xunknown;
848: .long _Xunknown; .long _Xunknown;
849: .long _Xunknown; .long _Xunknown;
850: .long _Xunknown; .long _Xunknown;
851: .long _Xunknown; .long _Xkcall;
852: .long _Xprvinflt; .long _Xresopflt;
853: .long _Xresadflt; .long _Xprotflt;
854: .long _Xtransflt; .long _Xkspnotval;
855: .long _Xtracep; .long _Xbptflt;
856: .long _Xarithtrap; .long _Xalignflt;
857: .long _Xunknown; .long _Xunknown;
858: .long _Xunknown; .long _Xunknown;
859: .long _Xunknown; .long _Xunknown;
860: .long _Xunknown; .long _Xunknown;
861: .long _Xunknown; .long _Xunknown;
862: .long _Xiovec14; .long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;
863: .long _Xiovec15; .long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;
864: .long _Xiovec16; .long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;
865: .long _Xiovec17; .long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;
866:
867: .space 512
868:
869:
870: # 376 "temp$.s"
871:
872:
873:
874:
875:
876:
877:
878: # 1 "./evthandlers.s"
879:
880:
881:
882:
883:
884:
885:
886:
887:
888:
889:
890:
891:
892:
893:
894:
895:
896:
897:
898:
899:
900:
901:
902:
903:
904:
905:
906: .align 2 .globl _Xunknown _Xunknown:
907: halt
908:
909:
910:
911:
912:
913:
914:
915:
916:
917:
918:
919:
920: .align 2 .globl _Xpowerfail _Xpowerfail:
921:
922:
923:
924: halt
925:
926:
927:
928:
929:
930:
931:
932: .align 2 .globl _Xhardclock _Xhardclock:
933: halt
934:
935:
936:
937:
938: .align 2 .globl _Xcnrint _Xcnrint:
939: rei
940:
941:
942:
943:
944: .align 2 .globl _Xcnxint _Xcnxint:
945: rei
946: halt
947:
948:
949:
950:
951: .align 2 .globl _Xs15 _Xs15:
952: halt
953:
954:
955:
956:
957: .align 2 .globl _Xs14 _Xs14:
958: halt
959:
960:
961:
962:
963: .align 2 .globl _Xs13 _Xs13:
964: halt
965:
966:
967:
968:
969: .align 2 .globl _Xs12 _Xs12:
970: halt
971:
972:
973:
974:
975: .align 2 .globl _Xs11 _Xs11:
976: halt
977:
978:
979:
980:
981: .align 2 .globl _Xs10 _Xs10:
982: halt
983:
984:
985:
986:
987: .align 2 .globl _Xs9 _Xs9:
988: halt
989:
990:
991:
992:
993: .align 2 .globl _Xs8 _Xs8:
994: halt
995:
996:
997:
998:
999: .align 2 .globl _Xs7 _Xs7:
1000: halt
1001:
1002:
1003:
1004:
1005: .align 2 .globl _Xs6 _Xs6:
1006: halt
1007:
1008:
1009:
1010:
1011: .align 2 .globl _Xs5 _Xs5:
1012: halt
1013:
1014:
1015:
1016:
1017: .align 2 .globl _Xs4 _Xs4:
1018: halt
1019:
1020:
1021:
1022:
1023: .align 2 .globl _Xs3 _Xs3:
1024: halt
1025:
1026:
1027:
1028:
1029: .align 2 .globl _Xs2 _Xs2:
1030: halt
1031:
1032:
1033:
1034:
1035: .align 2 .globl _Xs1 _Xs1:
1036: halt
1037:
1038:
1039:
1040:
1041:
1042: .align 2 .globl _Xiovec14 _Xiovec14:
1043: halt
1044: .align 2 .globl _Xiovec15 _Xiovec15:
1045: halt
1046: .align 2 .globl _Xiovec16 _Xiovec16:
1047: halt
1048: .align 2 .globl _Xiovec17 _Xiovec17:
1049: halt
1050:
1051:
1052:
1053:
1054:
1055:
1056:
1057:
1058:
1059:
1060:
1061:
1062:
1063:
1064:
1065:
1066:
1067:
1068: .align 2 .globl _Xbuserror _Xbuserror:
1069: halt
1070:
1071:
1072:
1073:
1074:
1075:
1076:
1077:
1078:
1079:
1080:
1081: .align 2 .globl _Xkspnotval _Xkspnotval:
1082: halt
1083:
1084:
1085:
1086:
1087:
1088: .align 2 .globl _Xprvinflt _Xprvinflt:
1089: halt
1090: .align 2 .globl _Xresopflt _Xresopflt:
1091: halt
1092: .align 2 .globl _Xresadflt _Xresadflt:
1093: halt
1094: .align 2 .globl _Xbptflt _Xbptflt:
1095: halt
1096: .align 2 .globl _Xtracep _Xtracep:
1097: halt
1098: .align 2 .globl _Xarithtrap _Xarithtrap:
1099: halt
1100: .align 2 .globl _Xprotflt _Xprotflt:
1101: halt
1102: .align 2 .globl _Xtransflt _Xtransflt:
1103: halt
1104: .align 2 .globl _Xalignflt _Xalignflt:
1105: halt
1106:
1107: alltraps:
1108: halt
1109:
1110:
1111:
1112:
1113:
1114:
1115:
1116:
1117:
1118:
1119:
1120:
1121:
1122: .align 2 .globl _Xkcall _Xkcall:
1123: halt
1124:
1125:
1126:
1127:
1128:
1129:
1130:
1131:
1132:
1133:
1134:
1135:
1136:
1137:
1138:
1139:
1140: # 383 "temp$.s"
1141:
1142:
1143:
1144:
1145:
1146:
1147:
1148:
1149:
1150:
1151:
1152:
1153:
1154:
1155:
1156: .globl start
1157: start:
1158: mtpr $0,$MME
1159: movl r0,tst_mask
1160: movab _scb,r0
1161: andl2 $0x3ffffc00,r0
1162: mtpr r0,$SCBB
1163: mtpr $0x1f,$IPL
1164:
1165: movpsl r1
1166: andl2 $0x001f0000,r1
1167: cmpl r1,$0x001f0000
1168: beql 1f
1169: 2: movl $1,r0
1170: movl $0x041f0000,r2
1171: halt
1172: 1:
1173: movl $_intstack+NISP* 1024,r0
1174: andl2 $0x3fffffff,r0
1175: mtpr r0,$ISP
1176: movl r0,sp
1177: movab (sp),fp
1178:
1179: # Clear system data area all the way upto system code
1180: # this includes dump buffer,interrupt stack,spt,iomap,pcbs,user
1181: # page tables, & io buffer area.
1182:
1183: 3:
1184: movab esysdata,r7
1185: movab _restart,r6
1186: 1: clrl (r6)
1187: addl2 $4,r6;cmpl r6,r7;bleq 1b;
1188:
1189: # Initialize System Page Table
1190:
1191: 5:
1192: clrl r2
1193: movab _Ksp6,r1
1194: andl2 $0x3fffffff,r1
1195: shar $ 10 ,r1,r1
1196: 1:
1197: movl r2,r11
1198: orl2 $ 0x80000000| 0x60000000,r11
1199: orl2 r11,_Sysmap[r2]
1200: aobleq r1,r2,1b
1201:
1202: movab esysdata,r1
1203: andl2 $0x3fffffff,r1
1204: shar $ 10 ,r1,r1
1205: 1:
1206: movl r2,r11
1207: orl2 $ 0x80000000| 0x60000000| 0x01000000,r11
1208: orl2 r11,_Sysmap[r2]
1209: aoblss r1,r2,1b
1210:
1211: # Map system text area 1 to 1, Kernel read/write.
1212: # For this to work, the label _etext must exist at the end
1213: # of system code; Add in 4 more pages for data area used in C
1214:
1215: movab _end + ( 1024-1),r1
1216: andl3 $0x3ffffc00,r1,_IOpage
1217: addl2 $64*(1024),r1
1218: andl2 $0x3fffffff,r1
1219: shar $ 10 ,r1,r1
1220: 1:
1221: movl r2,r11
1222: orl2 $ 0x80000000| 0x60000000| 0x01000000,r11
1223: orl2 r11,_Sysmap[r2]
1224: aoblss r1,r2,1b
1225:
1226: # Map from here (1st unused page) to page 512 :
1227: # * invalid,no access, & virtual = physical
1228:
1229: movl r2,_unused
1230: movl $511 +1,r1
1231: 1: movl r2,_Sysmap[r2]
1232: aoblss r1,r2,1b
1233:
1234: sysrdy:
1235: movab _Sysmap,r0
1236: mtpr r0,$ 0
1237: mtpr $_Syssize,$SLR
1238: orl2 $0xc0000000,r0
1239: mtpr r0,$P0BR
1240: mtpr $_Syssize,$P0LR
1241:
1242: movl $CLOCK,r0
1243: movab _Xclock,_scb[r0]
1244:
1245: movl $BUSER,r0
1246: movab _Buser,_scb[r0]
1247:
1248: clrl _bturn
1249: clrl _bell
1250: clrl _btime
1251: mtpr $1,$IPL
1252: _bmore:
1253: cmpl _btime,$0x5
1254: jeql 1f
1255: jmp _bmore
1256: 1: incl _bell
1257:
1258: .globl _ready
1259: _ready:
1260: clrl _proc_no
1261: mtpr $1,$PACC
1262: mtpr $1,$PADC
1263: mtpr $1,$TBIA
1264: mtpr $1,$CCK
1265: mtpr $1,$DCK
1266: mtpr $1,$MME
1267: jmp *$1f
1268: 1:
1269: movab _pcb0,r0
1270: movab _Eksp0,(r0)
1271: mfpr $P0BR,PCB_P0BR(r0)
1272: mfpr $P0LR,PCB_P0LR(r0)
1273: mtpr r0,$PCBB
1274: ldpctx
1275: mtpr $1,$IPL
1276: movl (sp)+,r12
1277: movl (sp)+,r11
1278:
1279: # The following tests are included : Tape, Vioc, Vddc.
1280: # Bit 0-2 correspond to Tape, Vioc, Vddc test. To disable
1281: # a particular test just set the corresponding bit to 1 before
1282: # start. For example, if only Vddc test to be run, set R0=3.
1283: # To run all, set R0 = 0.
1284:
1285: 1: clrl _Multi
1286:
1287: # Tape Master Test
1288:
1289: andl3 $0x1,tst_mask,r0
1290: jneq 1f
1291: incl _IOinit
1292: clrl _Berr
1293: callf $4,_tape
1294: cmpl $0,_Berr
1295: jneq 2f
1296: cmpl $1,r0
1297: jeql Ttst
1298: 2:
1299: pushab tmsg
1300: callf $8,_writes
1301: clrl _tape_ON
1302: brw 1f
1303: Ttst:
1304: clrl _IOinit
1305: callf $4,_tm_ex
1306:
1307: # VIOC Controller Test
1308:
1309: 1:
1310: andl3 $0x2,tst_mask,r0
1311: jneq 1f
1312: incl _IOinit
1313: clrl _Berr
1314: callf $4,_vioc
1315: cmpl $0,_Berr
1316: jneq 2f
1317: cmpl $1,r0
1318: jeql Vtst
1319: 2:
1320: pushab vmsg
1321: callf $8,_writes
1322: clrl _vioc_ON
1323: brw 1f
1324: Vtst:
1325: clrl _IOinit
1326: callf $4,_v_ex
1327:
1328: # VDDC Controller Test
1329:
1330: 1:
1331: andl3 $0x4,tst_mask,r0
1332: jneq 1f
1333: incl _IOinit
1334: clrl _Berr
1335: callf $4,_vddc
1336: cmpl $0,_Berr
1337: jneq 2f
1338: cmpl $1,r0
1339: jeql VDtst
1340: 2:
1341: pushab vdmsg
1342: callf $8,_writes
1343: clrl _vddc_ON
1344: brw 1f
1345: VDtst:
1346: clrl _IOinit
1347: callf $4,_vddc_ex
1348:
1349:
1350:
1351: 1:
1352: pushab emsg
1353: callf $4,_writes
1354: movl $0xcafebabe,r0
1355: halt
1356:
1357: # Real time clock Handler
1358:
1359: .align 2
1360: .globl _Xclock
1361: _Xclock:
1362: tstl _bell
1363: jneq 2f
1364: incl _bturn
1365: cmpl _bturn,$0x20
1366: jneq 2f
1367: pushl $7
1368: callf $8,_writec
1369: incl _btime
1370: clrl _bturn
1371: 2: rei
1372:
1373:
1374: # Bus error handler
1375:
1376: .align 2
1377: .globl _Buser
1378: _Buser:
1379: movab (sp),-(sp)
1380: callf $8,_buserror
1381: incl _Berr
1382: movl (sp)+,r0
1383: movl (sp)+,r0
1384: rei
1385:
1386:
1387: .align 2
1388: tst_mask:
1389: .long 0
1390: _bell: .long 0
1391: _bturn: .long 0
1392: _btime: .long 0
1393: .globl _Multi
1394: _Multi: .long 0
1395: .globl _Berr
1396: _Berr: .long 0
1397: .globl _IOinit
1398: _IOinit: .long 0
1399: .globl _tape_ON
1400: _tape_ON:
1401: .long 1
1402: .globl _vioc_ON
1403: _vioc_ON:
1404: .long 1
1405: .globl _vddc_ON
1406: _vddc_ON:
1407: .long 1
1408: .globl _xy_ON
1409: _xy_ON:
1410: .long 1
1411:
1412: .align 1
1413: tmsg: .ascii "\nTape controller not found !\12\0"
1414: vmsg: .ascii "\nVIOC controller not found !\12\0"
1415: vdmsg: .ascii "\nVDDC controller not found !\12\0"
1416: emsg: .ascii "\nDone ...\12\0"
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.