|
|
1.1 root 1: # 1 "temp$.s"
2:
3:
4:
5:
6:
7: .set SBR,0
8: .set SLR,1
9: .set P0BR,2
10: .set P0LR,3
11: .set P1BR,4
12: .set P1LR,5
13: .set P2BR,6
14: .set P2LR,7
15: .set IPL,8
16: .set MME,9
17: .set TBIA,10
18:
19: .set TBIS,11
20:
21: .set DCK,12
22: .set CCK,13
23: .set PCBB,14
24: .set ISP,15
25: .set SIRR,16
26: .set SISR,17
27: .set SCBB,18
28: .set KSP,19
29: .set USP,20
30: .set DCB,21
31: .set PACC,23
32:
33: .set P1DC,24
34: .set PADC,25
35:
36: .set HISR,26
37: .set DCR,27
38: .set PDCS,28
39:
40:
41: #TAHOE program status longword
42:
43:
44: .set PSL_C,0x00000001
45: .set PSL_V,0x00000002
46: .set PSL_Z,0x00000004
47: .set Z,0x00000004
48: .set PSL_N,0x00000008
49: .set PSL_T,0x00000010
50: .set PSL_I,0x00000020
51: .set PSL_EN_OVFL,0x20
52: .set PSL_EN_UNDFL,0x40
53: .set PSL_DBL,0x80
54: .set PSL_IPL,0x001f0000
55: .set PSL_MOD,0x01000000
56: .set PSL_IS,0x04000000
57: .set PSL_TP,0x40000000
58:
59:
60: # TAHOE page table entry
61: #/
62: .set PG_V,0x8000000
63: .set PG_PROT,0x78000000
64: .set PG_M,0x04000000
65: .set PG_USED,0x02000000
66: .set PG_NC,0x01000000
67: .set PG_PFNUM,0x003fffff
68:
69: .set PG_NOACC,0
70: .set PG_KR,0x40000000
71: .set PG_KW,0x60000000
72: .set PG_URKR,0x50000000
73: .set PG_URKW,0x70000000
74: .set PG_UW,0x78000000
75:
76: #* PCB offsets & diagnostic extension to pcb */
77: #* PCB is at pcb0 */
78:
79:
80: .set PCB_SIZE, 24
81: .set PCB_KSP, 0
82: .set PCB_USP, 4
83: .set PCB_R0, 8
84: .set PCB_R1, 12
85: .set PCB_R2, 16
86: .set PCB_R3, 20
87: .set PCB_R4, 24
88: .set PCB_R5, 28
89: .set PCB_R6, 32
90: .set PCB_R7, 36
91: .set PCB_R8, 40
92: .set PCB_R9, 44
93: .set PCB_R10, 48
94: .set PCB_R11, 52
95: .set PCB_R12, 56
96: .set PCB_R13, 60
97: .set PCB_PC, 64
98: .set PCB_PSL, 68
99: .set PCB_P0BR, 72
100: .set PCB_P0LR, 76
101: .set PCB_P1BR, 80
102: .set PCB_P1LR, 84
103: .set PCB_P2BR, 88
104: .set PCB_P2LR, 92
105: .set PCB_ACCM, 96
106: .set PCB_ACCL, 100
107: #*
108: # Diagnostic pcb extension
109: #/
110: .set PCB_STAT, 104
111:
112:
113:
114: #* fundamental constants */
115:
116: #*
117: # fundamental constants of the implementation--
118: # cannot be changed easily.
119: #/
120:
121: .set NBPG,1024
122: .set PGOFSET,(NBPG-1)
123: .set PGSHIFT,10
124: .set HIGH,0x1f
125:
126:
127: #* SCB offsets */
128: #* SCB is at scb */
129:
130: .set PFVEC,1*4
131: .set PRVEC,2*4
132: .set CLOCKVEC,7*4
133: .set CRVEC,0xa*4
134: .set CXVEC,44
135: .set SIVEC1,0x1e*4
136:
137:
138: .set BEVEC,0x20*4
139: .set SYSVEC,0x2b*4
140: .set PINSTVEC,0x2c*4
141: .set PRIVSVEC,0x2c*4
142: .set ROVEC,0x2d*4
143: .set RAVEC,0x2e*4
144: .set PROTVEC,0x2f*4
145: .set TRANS,0x30
146: .set TRANSVEC,0x30*4
147: .set KSPVEC,0x31*4
148: .set TRACEVEC,0x32*4
149: .set BPTVEC,0x33*4
150: .set ARITHVEC,0x34*4
151: .set ALIGNVEC,0x35*4
152: .set FPMVEC,0x37*4
153: .set IO14VEC,256
154: .set IO15VEC,320
155: .set IO16VEC,384
156: .set IO17VEC,448
157:
158: #* SPT (system page table) offsets */
159: #* SPT is at Sysmap */
160:
161: .set SCBPTE,8
162: .set BUFPTE,12
163: .set ISPTE,16
164: .set IS1PTE,20
165: .set SPTPTE,20
166: .set SPT1PTE,20
167: .set IOMAPPTE,24
168: .set PCBPTE,28
169: .set U0P0PTE,32
170: .set U0P1PTE,36
171: .set U0P2PTE,40
172: .set U1P0PTE,44
173: .set U1P1PTE,48
174: .set U1P2PTE,52
175: .set U2P0PTE,56
176: .set U2P1PTE,60
177: .set U2P2PTE,64
178: .set U3P0PTE,68
179: .set U3P1PTE,72
180: .set U3P2PTE,76
181: .set U4P0PTE,80
182: .set U4P1PTE,84
183: .set U4P2PTE,88
184: .set U5P0PTE,92
185: .set U5P1PTE,96
186: .set U5P2PTE,100
187: .set U6P0PTE,104
188: .set U6P1PTE,108
189: .set U6P2PTE,112
190: .set U7P0PTE,116
191: .set U7P1PTE,120
192: .set U7P2PTE,124
193: .set IOB0PTE,128
194: .set IOB1PTE,132
195: .set IOB2PTE,136
196: .set IOB3PTE,140
197: .set IOB4PTE,144
198: .set IOB5PTE,148
199: .set IOB6PTE,152
200: .set IOB7PTE,156
201:
202:
203: #* trap.h 4.6 81/03/03 */
204:
205: #*
206: #* Trap type values
207: #/
208:
209: .set RESADFLT,0
210: .set PRIVINFLT,1
211: .set RESOPFLT,2
212: .set BPTFLT,3
213: .set ALIGNFLT,4
214: .set SYSCALL,5
215: .set ARITHTRAP,6
216: .set PROTFLT,7
217: .set TRCTRAP,8
218: .set TRANSFLT,9
219: .set DONE,255
220:
221:
222: # Event codes
223:
224: .set RTCLOCK_CODE,7
225: .set RESOP_CODE,0x2d
226: .set RESAD_CODE,0x2e
227: .set ARITH_CODE,0x34
228: .set FPM_CODE,0x37
229: .set INTEGER_OVERFLOW,1
230:
231:
232: # Arithmetic Event types
233:
234: .set INT_OVFL_CODE,1
235: .set INT_0_DIV_CODE,2
236: .set FLT_0_DIV_CODE,3
237: .set FLT_OVFL_CODE,4
238: .set FLT_UNDFL_CODE,5
239:
240:
241: # Floating Point Instruction Op-Codes
242:
243: .set LDF_OP_CODE,0x06
244: .set LDD_OP_CODE,0x07
245: .set LNF_OP_CODE,0x16
246: .set LND_OP_CODE,0x17
247: .set STF_OP_CODE,0x26
248: .set STD_OP_CODE,0x27
249: .set CMPF_OP_CODE,0x36
250: .set CMPD_OP_CODE,0x37
251: .set CMPF2_OP_CODE,0x46
252: .set CMPD2_OP_CODE,0x47
253: .set TSTF_OP_CODE,0x56
254: .set TSTD_OP_CODE,0x57
255: .set PUSHD_OP_CODE,0x67
256: .set CVLF_OP_CODE,0x76
257: .set CVLD_OP_CODE,0x77
258: .set CVFL_OP_CODE,0x86
259: .set CVDL_OP_CODE,0x87
260: .set LDFD_OP_CODE,0x97
261: .set CVDF_OP_CODE,0xa6
262: .set NEGF_OP_CODE,0xb6
263: .set NEGD_OP_CODE,0xb7
264: .set ADDF_OP_CODE,0xc6
265: .set ADDD_OP_CODE,0xc7
266: .set SUBF_OP_CODE,0xd6
267: .set SUBD_OP_CODE,0xd7
268: .set MULF_OP_CODE,0xe6
269: .set MULD_OP_CODE,0xe7
270: .set DIVF_OP_CODE,0xf6
271: .set DIVD_OP_CODE,0xf7
272: .set SINF_OP_CODE,0x05
273: .set COSF_OP_CODE,0x15
274: .set ATANF_OP_CODE,0x25
275: .set LOGF_OP_CODE,0x35
276: .set SQRTF_OP_CODE,0x45
277: .set EXPF_OP_CODE,0x55
278: .set MULL2_OP_CODE,0x4c
279: .set MULL3_OP_CODE,0x5c
280:
281:
282:
283: # Addressing test constants - These must agree with "fpp_defs.h"
284:
285: .set ADR_ABSOLUTE,1
286: .set ADR_LITERAL,2
287: .set ADR_IM_B,3
288: .set ADR_IM_W,4
289: .set ADR_IM_L,5
290: .set ADR_B_DSP,6
291: .set ADR_W_DSP,7
292: .set ADR_L_DSP,8
293: .set ADR_B_DSP_DEF,9
294: .set ADR_W_DSP_DEF,10
295: .set ADR_L_DSP_DEF,11
296: .set ADR_REG,12
297: .set ADR_REG_DEF,13
298: .set ADR_FP_DEF,14
299: .set ADR_SP_DEF,15
300: .set ADR_PUSH,16
301: .set ADR_POP,17
302: .set ADR_POP_DEF,18
303: .set ADR_REG_B,19
304: .set ADR_REG_W,20
305: .set ADR_REG_L,21
306: .set ADR_REG_B_DEF,22
307: .set ADR_REG_W_DEF,23
308: .set ADR_REG_L_DEF,24
309: .set ADR_I_FP_DEF,25
310: .set ADR_I_L,26
311:
312:
313: #*************************************************************************
314:
315: # Stuff for the Demand Paging , Events, & Addressing Tests
316:
317: #************************************************************************/
318: .set SGL,1
319: .set DBL,2
320: .set ENABLE_EVENTS,0x60
321: .set NONE,0
322: .set LOAD,1
323: .set STORE,2
324:
325: .set NO_EVT_HLT,1
326: .set EVT_MSK_HLT,2
327: .set BAD_PSL_HLT,3
328: .set PUSH_CNT_HLT,4
329: .set PUSH_PSL_HLT,5
330: .set PUSH_PC_HLT,6
331: .set BAD_REG_HLT,7
332: .set BAD_ACC_HLT,8
333:
334:
335: # set DMP_PG_0 to the 1st empty page
336:
337: .set DMP_PG_0,0x36000
338: .set DMP_PG_1,DMP_PG_0+0x400
339: .set DMP_PG_2,DMP_PG_1+0x400
340: .set DMP_PG_3,DMP_PG_2+0x400
341: .set DMP_PG_4,DMP_PG_3+0x400
342: .set DMP_PG_5,DMP_PG_4+0x400
343: .set DMP_PG_6,DMP_PG_5+0x400
344: .set DMP_PG_7,DMP_PG_6+0x400
345: .set DMP_PG_8,DMP_PG_7+0x400
346: .set DMP_PG_9,DMP_PG_8+0x400
347: .set DMP_PG_10,DMP_PG_9+0x400
348: .set DMP_PG_11,DMP_PG_10+0x400
349: .set DMP_PG_12,DMP_PG_11+0x400
350: .set DMP_PG_13,DMP_PG_12+0x400
351:
352:
353: # test code space for the address / demand page tests
354:
355: .set START_OF_CODE,DMP_PG_1-20
356: .set CODE_BUF_SIZE,40
357: .set END_OF_CODE,START_OF_CODE+CODE_BUF_SIZE
358:
359:
360: # data locations used by the event and demand page tests
361:
362: .set _dmp_byte_op_1,DMP_PG_1+0x30
363: .set _dmp_byte_op_2,DMP_PG_1+0x50
364: .set _dmp_byte_op_3,DMP_PG_1+0x70
365: .set _dmp_op_1,DMP_PG_3-4
366: .set _dmp_op_1_ptr,DMP_PG_4+0x30
367: .set _dmp_op_2_ptr,DMP_PG_5+0x30
368: .set _dmp_op_2,DMP_PG_7-4
369: .set _dmp_op_3,DMP_PG_8
370: .set _dmp_op_3_ptr,DMP_PG_9+0x30
371: .set _dmp_op_4,DMP_PG_10
372: .set _dmp_op_5,DMP_PG_11
373: .set _sp_minus,DMP_PG_13-4
374: .set _sp_page,DMP_PG_13
375: .set _sp_plus,DMP_PG_13+4
376:
377:
378:
379: # INIT.X for the Demand Pageing Tests
380:
381: # This file is a diagnostic version of locore.s.
382: # It contains the following:
383: # *system data area = scb, dump buffer, interrupt stack,
384: # *system page table,user page tables,pcbs,iomap, & io buffers.
385: #
386: # *system code = interrupt vectors, initialization of system data,
387: # *memory size calculation,initialization of SPT, zeroing of
388: # *unused memory, & loading of SBR & SLR.
389: # *
390: # *at the end of this code, you are ready to go to virtual mode.
391: # * --- GOOD LUCK!
392:
393: ##########################################################################
394:
395: # 6-Mar-85 : changed to user mode execution
396: # 11-Mar-85 : moved mode changeing from here to RUN_CODE
397: # 17-Jul-85 : added "mtpr" test for fpp/no-fpp wcs
398: ##########################################################################
399:
400:
401:
402:
403: # 1 "./prvreg.h"
404:
405:
406:
407:
408:
409:
410:
411: .set SBR,0
412: .set SLR,1
413: .set P0BR,2
414: .set P0LR,3
415: .set P1BR,4
416: .set P1LR,5
417: .set P2BR,6
418: .set P2LR,7
419: .set IPL,8
420: .set MME,9
421: .set TBIA,10
422:
423: .set TBIS,11
424:
425: .set DCK,12
426: .set CCK,13
427:
428:
429: .set PCBB,14
430: .set ISP,15
431: .set SIRR,16
432: .set SISR,17
433: .set SCBB,18
434: .set KSP,19
435: .set USP,20
436: .set DCB,21
437: .set PACC,23
438:
439: .set P1DC,24
440: .set PADC,25
441:
442: .set HISR,26
443: .set DCR,27
444: .set PDCS,28
445: # 402 "temp$.s"
446:
447:
448:
449: # 1 "./psl.h"
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475: # 405 "temp$.s"
476:
477:
478:
479: # 1 "./pte.h"
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509: # 408 "temp$.s"
510:
511:
512:
513: # 1 "./pcboffset.h"
514:
515:
516:
517:
518:
519: .set PCB_KSP, 0
520: .set PCB_USP, 4
521: .set PCB_R0, 8
522: .set PCB_R1, 12
523: .set PCB_R2, 16
524: .set PCB_R3, 20
525: .set PCB_R4, 24
526: .set PCB_R5, 28
527: .set PCB_R6, 32
528: .set PCB_R7, 36
529: .set PCB_R8, 40
530: .set PCB_R9, 44
531: .set PCB_R10, 48
532: .set PCB_R11, 52
533: .set PCB_R12, 56
534: .set PCB_R13, 60
535: .set PCB_PC, 64
536: .set PCB_PSL, 68
537: .set PCB_P0BR, 72
538: .set PCB_P0LR, 76
539: .set PCB_P1BR, 80
540: .set PCB_P1LR, 84
541: .set PCB_P2BR, 88
542: .set PCB_P2LR, 92
543:
544:
545:
546: .set PCB_STAT, 96
547:
548:
549: # 411 "temp$.s"
550:
551:
552:
553: # 1 "./const.h"
554:
555:
556:
557:
558:
559:
560:
561:
562:
563:
564:
565:
566:
567:
568:
569:
570:
571:
572:
573:
574:
575:
576:
577:
578:
579:
580:
581:
582:
583:
584:
585:
586:
587:
588:
589:
590:
591:
592:
593:
594:
595:
596:
597:
598:
599:
600:
601:
602:
603:
604: # 414 "temp$.s"
605:
606:
607:
608: # 1 "./scboffset.h"
609:
610:
611:
612:
613: .set PFVEC,4
614: .set CLOCKVEC,28
615: .set CRVEC,40
616: .set CXVEC,44
617: .set SIVEC1,120
618:
619:
620: .set BEVEC,128
621: .set SYSVEC,172
622: .set PINSTVEC,176
623: .set ROVEC,180
624: .set RAVEC,184
625: .set PROTVEC,188
626:
627: .set TRANS,0x30
628: .set TRANSVEC,192
629:
630: .set KSPVEC,196
631: .set TRACEVEC,200
632: .set BPTVEC,204
633: .set ARITHVEC,208
634: .set ALIGNVEC,212
635: .set FPMVEC,220
636: .set IO14VEC,256
637: .set IO15VEC,320
638: .set IO16VEC,384
639: .set IO17VEC,448
640:
641: # 417 "temp$.s"
642:
643:
644: # 1 "./sptoffset.h"
645:
646:
647:
648:
649:
650:
651:
652:
653: .set SCBPTE,8
654: .set BUFPTE,12
655: .set ISPTE,16
656: .set IS1PTE,20
657: .set SPTPTE,20
658: .set SPT1PTE,20
659: .set IOMAPPTE,24
660: .set PCBPTE,28
661: .set U0P0PTE,32
662: .set U0P1PTE,36
663: .set U0P2PTE,40
664: .set U1P0PTE,44
665: .set U1P1PTE,48
666: .set U1P2PTE,52
667: .set U2P0PTE,56
668: .set U2P1PTE,60
669: .set U2P2PTE,64
670: .set U3P0PTE,68
671: .set U3P1PTE,72
672: .set U3P2PTE,76
673: .set U4P0PTE,80
674: .set U4P1PTE,84
675: .set U4P2PTE,88
676: .set U5P0PTE,92
677: .set U5P1PTE,96
678: .set U5P2PTE,100
679: .set U6P0PTE,104
680: .set U6P1PTE,108
681: .set U6P2PTE,112
682: .set U7P0PTE,116
683: .set U7P1PTE,120
684: .set U7P2PTE,124
685: .set IOB0PTE,128
686: .set IOB1PTE,132
687: .set IOB2PTE,136
688: .set IOB3PTE,140
689: .set IOB4PTE,144
690: .set IOB5PTE,148
691: .set IOB6PTE,152
692: .set IOB7PTE,156
693:
694:
695: # 419 "temp$.s"
696:
697:
698:
699: # 1 "./trap.h"
700:
701:
702:
703:
704:
705:
706:
707:
708:
709:
710:
711:
712:
713:
714:
715:
716: # 422 "temp$.s"
717:
718:
719:
720:
721:
722: .set HIGH,0x1f
723: .set MCKVEC,4
724: .set NISP,2
725: .set DONE,255
726: .set TTRAP,0x32
727: .set PRIVS,0x2c
728:
729: .text
730:
731:
732:
733: # 1 "./pstorage.s"
734: #
735:
736:
737:
738:
739:
740:
741:
742:
743:
744:
745:
746:
747:
748:
749:
750:
751:
752:
753: _pstore:
754: .globl _pstore
755: .space 1024
756:
757: _pstore1:
758: .globl _pstore1
759:
760: _pcbb: .space 4
761: .globl _isp
762: _isp: .space 4
763: _sirr: .space 4
764: .globl _sisr
765: _sisr: .space 4
766:
767: .space 4
768: .space 4
769: .space 4
770:
771: _cpmdcb: .space 4
772: _cpfdcb: .space 4
773: _cpcdcb: .space 4
774: _cpidcb: .space 4
775: _cpstat: .space 4
776: _cpctl: .space 4
777:
778: .globl _hisr
779: _hisr: .space 4
780: _dcr: .space 4
781:
782: .space 4*48
783:
784: _pstemp:
785: .globl _pstemp
786:
787: _tr0: .space 16
788:
789: _tpc: .space 4
790: _tpsl: .space 4
791: _tsp: .space 4
792: _tksp: .space 4
793: _tusp: .space 4
794: _tcck: .space 4
795: _tdck: .space 4
796: _ttbk: .space 4
797: _tsbr: .space 4
798: _tslr: .space 4
799: _tp0br: .space 4
800: _tp0lr: .space 4
801: _tp1br: .space 4
802: _tp1lr: .space 4
803: _tp2br: .space 4
804: _tp2lr: .space 4
805: _tipl: .space 4
806: _tmme: .space 4
807: _ttbia: .space 4
808: _ttbis: .space 4
809:
810:
811: _tpcbb: .space 4
812: _tisp: .space 4
813: _tsirr: .space 4
814: _tsisr: .space 4
815: _tscbb: .space 4
816: _tp1cc: .space 4
817:
818: _tpacc: .space 4
819:
820: _tp1dc: .space 4
821: _tpadc: .space 4
822: _tcpmdcb:
823: .space 4
824: _tcpfdcb:
825: .space 4
826: _tcpcdcb:
827: .space 4
828: _tcpidcb:
829: .space 4
830: _tcpstat:
831: .space 4
832: _tcpctl:
833: .space 4
834:
835: _probflag:
836: .space 4
837: _inexcflg:
838: .space 4
839:
840: .space 4*10
841: _psend: .globl _psend
842: .set MM,(_psend - _pstore1)
843: .space 1024 - MM
844:
845:
846: #
847:
848:
849:
850:
851:
852: .set PCBB,0x400 #process control block base
853:
854: .globl INTSP
855: .set INTSP,0x404 #Interrupt stack pointer
856: .set SIRR,0x408 #Software interrupt request
857:
858: .globl SSR
859: .set SSR,0x40C #Software interrupt summary
860:
861: .globl HSR
862: .set HSR,0x410 #Hardware interrupt summary
863:
864: .set SBB,0x414 #Pointer to system control block base
865: .set TBCR,0x418 #Current value of hardware TBCR
866: .set CPMDCB,0x420 #pointer to CP master DCB
867: .set CPCTL,0x424 #CPU control word
868: .set CPREQ,0x428 #CPU request
869: .set CPRUN,0x42C #CPU run status (8 = step mode)
870: .set CPRSW,0x430 #CP interrupt request word
871: .set PSL,0x434 #Software Process Status Longword
872: .set TVAPR,0x5E8 #saved vapr register
873: .set TRA,0x5EC #
874: .set TLSP,0x5F0 #
875: .set TIAR,0x5F4 #
876: .set TLIA,0x5F8 #
877: .set TQ,0x5FC #
878: .set TR0,0x600 #decellerated processor registers
879: .set TR1,0x604 #decellerated processor registers
880: .set TR2,0x608 #decellerated processor registers
881: .set TR3,0x60C #decellerated processor registers
882: .set TR4,0x610 #decellerated processor registers
883: .set TR5,0x614 #decellerated processor registers
884: .set TR6,0x618 #decellerated processor registers
885: .set TR7,0x61C #decellerated processor registers
886: .set TR8,0x620 #decellerated processor registers
887: .set TR9,0x624 #decellerated processor registers
888: .set TR10,0x628 #decellerated processor registers
889: .set TR11,0x62C #decellerated processor registers
890: .set TR12,0x630 #decellerated processor registers
891: .set TR13,0x634 #decellerated processor registers
892: .set TR14,0x638 #decellerated processor registers
893: .set TR15,0x63C #decellerated processor registers
894: .set TPC,0x640 #decellerated program counter
895: .set TPSL,0x644 #decellerated process status longword
896: .set TSP,0x648 #decellerated stack pointer
897: .set TKSP,0x64C #decellerated kernel stack pointer
898: .set TUSP,0x650 #decellerated user stack pointer
899: .globl TCCK
900: .set TCCK,0x654 #decellerated Code cache key
901: .globl TDCK
902: .set TDCK,0x658 #decellerated data cache key
903: .set TTBK,0x65C #decellerated translation buffer key
904: .set TSBR,0x660 #decellerated System Base Register
905: .set TSLR,0x664 #decellerated System length register
906: .set TP0BR,0x668 #decellerated P0 base register
907: .set TP0LR,0x66C #decellerated P0 length register
908: .set TP1BR,0x670 #decellerated P1 base register
909: .set TP1LR,0x674 #decellerated P1 length register
910: .set TP2BR,0x678 #decellerated P2 base register
911: .set TP2LR,0x67C #decellerated P1 length register
912: .set TIPL,0x680 #decellerated Interrupt priority level
913: .set TMME,0x684 #decellerated Memory management enable
914: .set TTBIA,0x68C #decellerated translation buffer invalid
915: .set TTBIS,0x68C #decellerated transl buffer invalid single
916: .set TPCBB,0x690 #decellerated Process control block base
917: .set TISP,0x694 #decellerated Interrupt stack pointer
918: .set TSIRR,0x698 #decellerated Software interrupt request
919: .set TSISR,0x69C #decellerated Software interrupt summary
920: .set TSCBB,0x6A0 #decellerated System control block base
921: .set TP1CC,0x6A4 #decellerated
922: .set TPACC,0x6A8 #decellerated
923: .set TP1DC,0x6AC #decellerated
924: .set TPADC,0x6B0 #decellerated
925: .set TCPMDCB,0x6B4 #decellerated address of master DCB
926: .set PROBFLG,0x6B8 #decellerated
927: .set INEXCFLG,0x6BC #decellerated
928: .set PCTYPFLG,0x6C0 #
929: .set NOOFPARS,0x6C4 #
930: .set STKPAR1,0x6C8 #
931: .set STKPAR2,0x6CC #
932: .set JMPVEC,0x6D0 #
933: .set PSEND,0x7FC #
934: # 438 "temp$.s"
935:
936: .globl _Entry
937: _Entry:
938: jmp start
939: .space (1024-6)
940:
941:
942:
943:
944:
945:
946:
947: .set NLWU,35
948:
949:
950:
951: .globl _Codek
952: _Codek: .long 0
953:
954: .globl _restart
955: _restart:
956: .space 4
957:
958:
959:
960: .globl _maxmem
961: _maxmem:
962: .space 4
963:
964: .globl _maxpages
965: _maxpages:
966: .space 4
967:
968: .globl _lastadd
969: _lastadd:
970: .space 4
971:
972: .globl _unused
973: _unused:
974: .space 4
975:
976: .globl _ctlblk
977: _ctlblk:
978: .long 0
979:
980: .globl _savvec0
981: _savvec0:
982: .space 4
983:
984: .globl _savvec1
985: _savvec1:
986: .space 4
987:
988: .globl _savvec2
989: _savvec2:
990: .space 4
991:
992: .globl _savvec3
993: _savvec3:
994: .space 4
995:
996: .globl _savvec4
997: _savvec4:
998: .space 4
999:
1000: .globl _savvec5
1001: _savvec5:
1002: .space 4
1003: .globl _savvec6
1004: _savvec6:
1005: .space 4
1006: .globl _savvec7
1007: _savvec7:
1008: .space 4
1009:
1010: .globl _savvec8
1011: _savvec8:
1012: .space 4
1013:
1014: .globl _r_no
1015: _r_no:
1016: .long 0
1017: .globl _pt_base
1018: _pt_base:
1019: .long 0
1020: .globl _saved_psl
1021: _saved_psl:
1022: .long 0
1023: .globl _saved_sp
1024: _saved_sp:
1025: .long 0
1026: .globl _saved_fp
1027: _saved_fp:
1028: .long 0
1029: .globl _ret_adr
1030: _ret_adr:
1031: .long 0
1032: .globl _exp_par0
1033: _exp_par0:
1034: .long 0
1035: .globl _exp_par1
1036: _exp_par1:
1037: .long 0
1038: .globl _f_vaddr
1039: _f_vaddr:
1040: .long 0
1041:
1042: .globl _f_ptr
1043: _f_ptr:
1044: .long 0
1045: .globl _df_cnt
1046: _df_cnt:
1047: .long 0
1048:
1049: .globl _if_cnt
1050: _if_cnt:
1051: .long 0
1052:
1053: .globl _newepc
1054: _newepc:
1055: .long 0
1056:
1057: .globl _errcnt
1058: _errcnt:
1059: .long 0
1060:
1061: .globl _clk_cnt
1062: _clk_cnt:
1063: .long 0
1064:
1065: .globl _ttcnt
1066: _ttcnt:
1067: .long 0
1068: .globl _trcnt
1069: _trcnt:
1070: .long 0
1071:
1072: .globl _Ufpte
1073: _Ufpte: .long 0
1074: .globl _Ulpte
1075: _Ulpte: .long 0
1076:
1077: .globl _dbuf
1078: _dbuf:
1079: .space 1024 - (NLWU *4)
1080: edbuf:
1081:
1082:
1083: .globl _intstack
1084: _intstack:
1085: .space NISP* 1024
1086: eintstack:
1087:
1088:
1089: .set SYSPTSIZE,512
1090:
1091:
1092:
1093:
1094: .align 2
1095: .globl _Sysmap
1096: _Sysmap:
1097: .space SYSPTSIZE*4
1098: eSysmap:
1099: .globl _Syssize
1100: .set _Syssize,(eSysmap-_Sysmap)/4
1101:
1102: .globl _iomap
1103: _iomap: .space 1024
1104: .globl _eiomap
1105: _eiomap:
1106:
1107: .globl _pcb0
1108: _pcb0: .space 128
1109: .globl _pcb1
1110: _pcb1: .space 128
1111: .globl _pcb2
1112: _pcb2: .space 128
1113: .globl _pcb3
1114: _pcb3: .space 128
1115: .globl _pcb4
1116: _pcb4: .space 128
1117: .globl _pcb5
1118: _pcb5: .space 128
1119: .globl _pcb6
1120: _pcb6: .space 128
1121: .globl _pcb7
1122: _pcb7: .space 128
1123:
1124:
1125:
1126:
1127:
1128: .align 2
1129: .globl _u0p0pt
1130: _u0p0pt:
1131: .space 1024
1132: .globl _u0p1pt
1133: _u0p1pt:
1134: .space 1024
1135: .globl _u0p2pt
1136: _u0p2pt:
1137: .space 1020
1138: eu0p2pt:
1139: .space 4
1140:
1141:
1142:
1143:
1144:
1145: .align 2
1146: .globl _u1p0pt
1147: _u1p0pt:
1148: .space 1024
1149: .globl _u1p1pt
1150: _u1p1pt:
1151: .space 1024
1152: .globl _u1p2pt
1153: _u1p2pt:
1154: .space 1020
1155: eu1p2pt:
1156: .space 4
1157:
1158:
1159:
1160:
1161:
1162:
1163: .align 2
1164: .globl _u2p0pt
1165: _u2p0pt:
1166: .space 1024
1167: .globl _u2p1pt
1168: _u2p1pt:
1169: .space 1024
1170: .globl _u2p2pt
1171: _u2p2pt:
1172: .space 1020
1173: eu2p2pt:
1174: .space 4
1175:
1176:
1177:
1178:
1179:
1180:
1181: .align 2
1182: .globl _u3p0pt
1183: _u3p0pt:
1184: .space 1024
1185: .globl _u3p1pt
1186: _u3p1pt:
1187: .space 1024
1188: .globl _u3p2pt
1189: _u3p2pt:
1190: .space 1020
1191: eu3p2pt:
1192: .space 4
1193:
1194:
1195:
1196:
1197:
1198: .globl _u4p0pt
1199: _u4p0pt:
1200: .space (9* 1024) - 4
1201: eu6p2pt:
1202: .space 4
1203:
1204:
1205:
1206:
1207:
1208:
1209: .align 2
1210: .globl _Kstack
1211: _Kstack:
1212: .space 3* 1024
1213: .globl ekstack
1214: ekstack:
1215:
1216:
1217: .globl _iob0
1218: _iob0: .space 1024
1219: .globl _iob1
1220: _iob1: .space 1024
1221: .globl _iob2
1222: _iob2: .space 1024
1223: .globl _iob3
1224: _iob3: .space 1024
1225: .globl _iob4
1226: _iob4: .space 1024
1227: .globl _iob5
1228: _iob5: .space 1024
1229: .globl _iob6
1230: _iob6: .space 1024
1231: esysdata:
1232:
1233:
1234:
1235: # 1 "./scblock.s"
1236:
1237: #
1238:
1239:
1240: .align 2
1241: .globl _scb
1242: _scb:
1243:
1244:
1245:
1246:
1247:
1248:
1249:
1250: .long _Xunknown; .long _Xpowerfail;
1251: .long _Xunknown; .long _Xunknown;
1252: .long _Xunknown; .long _Xunknown;
1253: .long _Xunknown; .long _Xhardclock;
1254: .long _Xunknown; .long _Xunknown;
1255: .long _Xcnrint; .long _Xcnxint;
1256: .long _Xunknown; .long _Xunknown;
1257: .long _Xunknown; .long _Xunknown;
1258: .long _Xs15; .long _Xs14;
1259: .long _Xs13; .long _Xs12;
1260: .long _Xs11; .long _Xs10;
1261: .long _Xs9; .long _Xs8;
1262: .long _Xs7; .long _Xs6;
1263: .long _Xs5; .long _Xs4;
1264: .long _Xs3; .long _Xs2;
1265: .long _Xs1; .long _Xunknown;
1266: .long _Xbuserror; .long _Xunknown;
1267: .long _Xunknown; .long _Xunknown;
1268: .long _Xunknown; .long _Xunknown;
1269: .long _Xunknown; .long _Xunknown;
1270: .long _Xunknown; .long _Xunknown;
1271: .long _Xunknown; .long _Xkcall;
1272: .long _Xprvinflt; .long _Xresopflt;
1273: .long _Xresadflt; .long _Xprotflt;
1274: .long _Xtransflt; .long _Xkspnotval;
1275: .long _Xtracep; .long _Xbptflt;
1276: .long _Xarithtrap; .long _Xalignflt;
1277: .long _Xunknown; .long _Xfpp_emulate;
1278: .long _Xunknown; .long _Xunknown;
1279: .long _Xunknown; .long _Xunknown;
1280: .long _Xunknown; .long _Xunknown;
1281: .long _Xunknown; .long _Xunknown;
1282: .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;
1283: .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;
1284: .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;
1285: .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;
1286:
1287: .space 512
1288:
1289:
1290: # 738 "temp$.s"
1291:
1292:
1293:
1294:
1295: # 1 "./evthandlers.s"
1296:
1297:
1298:
1299:
1300:
1301:
1302:
1303:
1304:
1305:
1306:
1307:
1308:
1309:
1310:
1311:
1312:
1313:
1314:
1315:
1316:
1317:
1318:
1319:
1320:
1321:
1322:
1323:
1324:
1325:
1326:
1327:
1328:
1329:
1330:
1331:
1332:
1333:
1334: .align 2 .globl _Xunknown _Xunknown:
1335: pushl $0
1336: callf $8,_XTrap
1337: halt
1338:
1339:
1340:
1341:
1342:
1343:
1344:
1345:
1346:
1347:
1348:
1349:
1350: .align 2 .globl _Xpowerfail _Xpowerfail:
1351: pushl $1
1352: callf $8,_XTrap
1353: halt
1354:
1355:
1356:
1357:
1358:
1359:
1360: .align 2 .globl _Xhardclock _Xhardclock:
1361: incl _clock_event
1362: rei
1363:
1364:
1365:
1366:
1367:
1368: .align 2 .globl _Xcnrint _Xcnrint:
1369: pushl $0xa
1370: callf $8,_XTrap
1371: halt
1372:
1373:
1374:
1375:
1376: .align 2 .globl _Xcnxint _Xcnxint:
1377: rei
1378:
1379:
1380:
1381:
1382: .align 2 .globl _Xs15 _Xs15:
1383: pushl $0x10
1384: callf $8,_XTrap
1385: halt
1386:
1387:
1388:
1389:
1390: .align 2 .globl _Xs14 _Xs14:
1391: pushl $0x11
1392: callf $8,_XTrap
1393: halt
1394:
1395:
1396:
1397:
1398: .align 2 .globl _Xs13 _Xs13:
1399: pushl $0x12
1400: callf $8,_XTrap
1401: halt
1402:
1403:
1404:
1405:
1406: .align 2 .globl _Xs12 _Xs12:
1407: pushl $0x13
1408: callf $8,_XTrap
1409: halt
1410:
1411:
1412:
1413:
1414: .align 2 .globl _Xs11 _Xs11:
1415: pushl $0x14
1416: callf $8,_XTrap
1417: halt
1418:
1419:
1420:
1421:
1422: .align 2 .globl _Xs10 _Xs10:
1423: pushl $0x15
1424: callf $8,_XTrap
1425: halt
1426:
1427:
1428:
1429:
1430: .align 2 .globl _Xs9 _Xs9:
1431: pushl $0x16
1432: callf $8,_XTrap
1433: halt
1434:
1435:
1436:
1437:
1438: .align 2 .globl _Xs8 _Xs8:
1439: pushl $0x17
1440: callf $8,_XTrap
1441: halt
1442:
1443:
1444:
1445:
1446: .align 2 .globl _Xs7 _Xs7:
1447: pushl $0x18
1448: callf $8,_XTrap
1449: halt
1450:
1451:
1452:
1453:
1454: .align 2 .globl _Xs6 _Xs6:
1455: pushl $0x19
1456: callf $8,_XTrap
1457: halt
1458:
1459:
1460:
1461:
1462: .align 2 .globl _Xs5 _Xs5:
1463: pushl $0x1a
1464: callf $8,_XTrap
1465: halt
1466:
1467:
1468:
1469:
1470: .align 2 .globl _Xs4 _Xs4:
1471: pushl $0x1b
1472: callf $8,_XTrap
1473: halt
1474:
1475:
1476:
1477:
1478: .align 2 .globl _Xs3 _Xs3:
1479: pushl $0x1c
1480: callf $8,_XTrap
1481: halt
1482:
1483:
1484:
1485:
1486: .align 2 .globl _Xs2 _Xs2:
1487: pushl $0x1d
1488: callf $8,_XTrap
1489: halt
1490:
1491:
1492:
1493:
1494: .align 2 .globl _Xs1 _Xs1:
1495: pushl $0x1e
1496: callf $8,_XTrap
1497: halt
1498:
1499:
1500:
1501:
1502:
1503: .align 2 .globl _Xiovec14 _Xiovec14:
1504: halt
1505: .align 2 .globl _Xiovec15 _Xiovec15:
1506: halt
1507: .align 2 .globl _Xiovec16 _Xiovec16:
1508: halt
1509: .align 2 .globl _Xiovec17 _Xiovec17:
1510: halt
1511:
1512:
1513:
1514:
1515:
1516:
1517:
1518:
1519:
1520:
1521:
1522:
1523:
1524:
1525:
1526:
1527:
1528:
1529: .align 2 .globl _Xbuserror _Xbuserror:
1530: pushl $0x20
1531: callf $8,_XTrap
1532: halt
1533:
1534:
1535:
1536:
1537:
1538:
1539:
1540:
1541:
1542:
1543:
1544: .align 2 .globl _Xkspnotval _Xkspnotval:
1545: pushl $0x31
1546: callf $8,_XTrap
1547: halt
1548:
1549:
1550:
1551:
1552:
1553: .align 2 .globl _Xprvinflt _Xprvinflt:
1554: movpsl _psl_val
1555: mtpr $0x1f,$IPL
1556: bitl $PSL_DBL,_psl_val
1557: beql 1f
1558: std _post_evt_acc
1559: brb 2f
1560: 1: stf _post_evt_acc
1561: 2: storer $0x1fff,_store_regs
1562: moval (r13),_post_event_fp
1563: moval (r14),_post_event_sp
1564: pushl $0x2c
1565: callf $8,_XTrap
1566: halt
1567:
1568:
1569:
1570:
1571:
1572:
1573: .align 2 .globl _Xresopflt _Xresopflt:
1574: mtpr $0x1f,$IPL
1575: movpsl _psl_val
1576: bitl $PSL_DBL,_psl_val
1577: beql 1f
1578: std _post_evt_acc
1579: brw 2f
1580: 1: stf _post_evt_acc
1581: clrl _post_evt_acc+4
1582: 2:
1583: storer $0x1fff,_store_regs
1584: moval (r13),_post_event_fp
1585: moval (r14),_post_event_sp
1586: pushl $0x2d
1587: callf $8,_XTrap
1588: halt
1589:
1590:
1591: .align 2 .globl _Xresadflt _Xresadflt:
1592: movpsl _psl_val
1593: mtpr $0x1f,$IPL
1594: bitl $PSL_DBL,_psl_val
1595: beql 1f
1596: std _post_evt_acc
1597: brb 2f
1598: 1: stf _post_evt_acc
1599: 2: storer $0x1fff,_store_regs
1600: moval (r13),_post_event_fp
1601: moval (r14),_post_event_sp
1602: pushl $0x2e
1603: callf $8,_XTrap
1604: halt
1605:
1606: .align 2 .globl _Xbptflt _Xbptflt:
1607: pushl $0x33
1608: callf $8,_XTrap
1609: halt
1610:
1611: .align 2 .globl _Xtracep _Xtracep:
1612: movpsl _psl_val
1613: mtpr $0x1f,$IPL
1614: bitl $PSL_DBL,_psl_val
1615: beql 1f
1616: std _post_evt_acc
1617: brb 2f
1618: 1: stf _post_evt_acc
1619: 2: storer $0x1fff,_store_regs
1620: pushl $0x32
1621: callf $8,_XTrap
1622: halt
1623:
1624:
1625:
1626:
1627:
1628:
1629: .align 2 .globl _Xarithtrap _Xarithtrap:
1630: mtpr $0x1f,$IPL
1631: movpsl _psl_val
1632: bitl $PSL_DBL,_psl_val
1633: beql 1f
1634: std _post_evt_acc
1635: brw 2f
1636: 1:
1637: stf _post_evt_acc
1638: clrl _post_evt_acc+4
1639: 2:
1640: storer $0x1fff,_store_regs
1641: moval (r13),_post_event_fp
1642: moval (r14),_post_event_sp
1643: pushl $0x34
1644: callf $8,_XTrap
1645: halt
1646:
1647:
1648: .align 2 .globl _Xprotflt _Xprotflt:
1649: movpsl _psl_val
1650: moval (r14),_post_event_sp
1651: pushl $0x2f
1652: callf $8,_XTrap
1653: halt
1654: .align 2 .globl _Xtransflt _Xtransflt:
1655: pushl $0x30
1656: callf $8,_XTrap
1657: halt
1658: .align 2 .globl _Xalignflt _Xalignflt:
1659: movpsl _psl_val
1660: mtpr $0x1f,$IPL
1661: bitl $PSL_DBL,_psl_val
1662: beql 1f
1663: std _post_evt_acc
1664: brb 2f
1665: 1: stf _post_evt_acc
1666: 2: storer $0x1fff,_store_regs
1667: pushl $0x35
1668: callf $8,_XTrap
1669: halt
1670: .align 2 .globl _Xfpp_emulate _Xfpp_emulate:
1671: movpsl _psl_val
1672: movl _psl_val,_post_event_psl
1673: storer $0x1fff,_store_regs
1674: moval (r13),_post_event_fp
1675: moval (r14),_post_event_sp
1676: movl (sp),_fpm_ms_op
1677: movl 4(sp),_fpm_ls_op
1678: movl 8(sp),_fpm_op_code
1679: movl 12(sp),_fpm_pc
1680: movl 16(sp),_fpm_psl
1681: bitl $PSL_DBL,_psl_val
1682: beql 1f
1683: std _post_evt_acc
1684: brb 2f
1685: 1: stf _post_evt_acc
1686: clrl _post_evt_acc+4
1687: 2:
1688: pushl $0x37
1689: callf $8,_XTrap
1690: halt
1691:
1692: alltraps:
1693: halt
1694:
1695: .align 2 .globl _Xkcall _Xkcall:
1696: pushl $0x2b
1697: callf $8,_XTrap
1698: halt
1699:
1700:
1701: # 742 "temp$.s"
1702:
1703:
1704:
1705:
1706:
1707: # *INITIALIZATION CODE
1708: # *
1709: # * MME off; mode = k; IPL = 31; IS = 1
1710: # *
1711:
1712:
1713: .globl start
1714: start:
1715: mtpr $0,$MME
1716: movl r0,_run_list
1717: movl r1,_OPTIONS
1718: clrl _nonstop
1719: movl r2,_count
1720: bneq 1f
1721: movl $1,_count
1722: 1: bgeq 1f
1723: movl $1,_nonstop
1724: 1:
1725: mtpr $0x400,$DCR
1726: tstl r1
1727: bneq 1f
1728: movl $1,_no_fpp_wcs
1729: 1:
1730: movab _scb,r0
1731: andl2 $0x3ffffc00,r0
1732: mtpr r0,$SCBB
1733: mtpr $0x1f,$IPL
1734:
1735: andl3 $4,r11,_ss1
1736:
1737:
1738: # clear the option flags
1739:
1740: clrl _halt_flg
1741: clrl _loop_on_err
1742: movl $1,_prt_error
1743: movl $1,_prt_hdrs
1744: movl $1,_en_data_cache
1745: movl $1,_user_mode
1746: clrl _exp_event
1747: clrl _event_return
1748: clrl _unexp_event_ret
1749:
1750:
1751: # set the option flags as needed
1752:
1753: bitl $1,_OPTIONS
1754: beql 1f
1755: movl $1,_halt_flg
1756: 1:
1757: bitl $2,_OPTIONS
1758: beql 1f
1759: movl $1,_loop_on_err
1760: 1:
1761: bitl $4,_OPTIONS
1762: beql 1f
1763: clrl _prt_error
1764: 1:
1765: bitl $8,_OPTIONS
1766: beql 1f
1767: clrl _prt_hdrs
1768: 1:
1769: bitl $16,_OPTIONS
1770: beql 1f
1771: clrl _en_data_cache
1772: 1:
1773: bitl $32,_OPTIONS
1774: beql 1f
1775: clrl _user_mode
1776: 1:
1777: movpsl r1
1778: andl2 $0xffffff00,r1
1779: cmpl r1,$0x041f0000
1780: beql 1f
1781: 2: movl $1,r0
1782: movl $0x041f0000,r2
1783: halt
1784: 1:
1785: movl $_intstack+NISP* 1024,r0
1786: andl2 $0x3fffffff,r0
1787: mtpr r0,$ISP
1788: movl r0,sp
1789: movab (sp),fp
1790:
1791: # Clear system data area all the way upto system code
1792: # this includes dump buffer,interrupt stack,spt,iomap,pcbs,user
1793: # page tables, & io buffer area.
1794:
1795: 3:
1796: movab esysdata,r7
1797: movab _restart,r6
1798: 1: clrl (r6)
1799: addl2 $4,r6; cmpl r6,r7; bleq 1b;
1800:
1801: # Initialize System Page Table
1802:
1803: 5:
1804: clrl r2
1805: movab esysdata,r1
1806: andl2 $0x3fffffff,r1
1807: shar $ 10 ,r1,r1
1808:
1809: 1:
1810: orl3 $ 0x80000000| 0x60000000,r2,_Sysmap[r2]
1811: aoblss r1,r2,1b
1812:
1813:
1814: # Map system text area 1 to 1, Kernel read/write.
1815: # For this to work, the label _etext must exist at the end
1816: # of system code; Add in 4 more pages for data area used in C
1817:
1818: movab _Esys,r1
1819: andl2 $0x3fffffff,r1
1820: shar $ 10 ,r1,r1
1821: 1:
1822: orl3 $ 0x80000000| 0x60000000,r2,_Sysmap[r2]
1823: aobleq r1,r2,1b
1824:
1825: # Map from here to last page used by user :
1826: # invalid, User access, & virtual = physical
1827:
1828: movl r2,_unused
1829: movl r2,_Ufpte
1830: movl $0x80000,r1
1831: shar $ 10 ,r1,r1
1832: movl r1,_Ulpte
1833:
1834: 1:
1835: orl3 $ 0x80000000| 0x78000000,r2,_Sysmap[r2]
1836: aoblss r1,r2,1b
1837:
1838:
1839: # Initialize SBR, SLR
1840:
1841: sysrdy:
1842: mtpr $_Sysmap,$SBR
1843: mtpr $_Syssize,$SLR
1844: mtpr $64,$DCR
1845:
1846: # GO TO VIRTUAL MODE
1847: # Double map the kernel into user addresses :
1848: # This will enable system to go to virtual mode the 1st time !!
1849:
1850:
1851: orl3 $0xc0000000,$_Sysmap,r0
1852: mtpr r0,$P0BR
1853: mtpr $_Syssize,$P0LR
1854: mtpr $1,$PADC
1855: mtpr $1,$TBIA
1856:
1857: mfpr $SCBB,r0
1858: movab _Trans,TRANSVEC(r0)
1859: movab _Prvis,PRIVSVEC(r0)
1860: moval _FPM_handler,FPMVEC(r0)
1861: mtpr $_pcb0,$0xe
1862:
1863: movab _pcb0,r0
1864: movab ekstack,PCB_KSP(r0)
1865: movab eustack,PCB_USP(r0)
1866: mfpr $P0BR,PCB_P0BR(r0)
1867: mfpr $P0LR,PCB_P0LR(r0)
1868: movl $0x001f000,PCB_PSL(r0)
1869: ldpctx
1870:
1871: mtpr $1,$PACC
1872: movl $1,_Codek
1873: mtpr _Codek,$CCK
1874:
1875: callf $4,_monitor
1876:
1877:
1878:
1879: # 1 "./fault_handlers.s"
1880:
1881:
1882:
1883:
1884:
1885:
1886:
1887:
1888:
1889:
1890:
1891:
1892:
1893:
1894:
1895:
1896:
1897:
1898:
1899:
1900:
1901:
1902:
1903:
1904:
1905:
1906:
1907:
1908:
1909:
1910:
1911:
1912:
1913:
1914:
1915:
1916:
1917:
1918:
1919: .align 2
1920: .globl _Trans
1921: _Trans:
1922: mtpr $0x1f,$IPL
1923: movl r0,_trans_r0
1924: movl (sp)+,r0
1925: movl (sp)+,_f_vaddr
1926: incl _no_page_faults
1927: tstl _pipe_test
1928: bneq 1f
1929: cmpl (sp),_code_addr
1930: beql 1f
1931: movl r0,_pop_val_1
1932: movl _f_vaddr,_pop_val_2
1933: movl (sp),_pop_val_3
1934: movl (sp)+,_pop_val_3
1935: callf $4,_bad_trans_stack
1936: 1: nop
1937: shar $ 10 ,_f_vaddr,r0
1938: orl2 $0x80000000,_Sysmap[r0]
1939: mtpr _f_vaddr,$TBIS
1940:
1941:
1942:
1943: movl _no_page_faults,r0
1944: cmpl $1,r0
1945: bneq 1f
1946: brb 2f
1947: 1: cmpl $2,r0
1948: bneq 1f
1949: nop
1950: nop
1951: brb 2f
1952: 1: cmpl $3,r0
1953: bneq 1f
1954: nop
1955: nop
1956: brb 2f
1957: 1: cmpl $4,r0
1958: bneq 1f
1959: nop
1960: nop
1961: brb 2f
1962: 1: cmpl $5,r0
1963: bneq 1f
1964: nop
1965: nop
1966: brb 2f
1967: 1: cmpl $6,r0
1968: bneq 1f
1969: nop
1970: nop
1971: brb 2f
1972: 1: cmpl $7,r0
1973: bneq 1f
1974: nop
1975: nop
1976: brb 2f
1977: 1: cmpl $8,r0
1978: bneq 1f
1979: nop
1980: nop
1981: brb 2f
1982: 1: cmpl $9,r0
1983: bneq 1f
1984: nop
1985: nop
1986: brb 2f
1987: nop
1988: nop
1989: 2:
1990:
1991:
1992:
1993: tstl _pipe_test
1994: bneq 1f
1995: tstl _load_type_inst
1996: bneq 1f
1997: tstl _force_loop
1998: bneq 1f
1999: tstl _trans_acc_error
2000: bneq 1f
2001: callf $4,_chk_trans_acc
2002: 1:
2003:
2004:
2005:
2006: tstl _i_cache_hit
2007: bneq 2f
2008: incl _Codek
2009: cmpl _Codek,$255
2010: jlss 1f
2011: movl $1,_Codek
2012: mtpr $1,$PACC
2013: 1:
2014: mtpr _Codek,$CCK
2015: 2:
2016: nop
2017: movl _trans_r0,r0
2018: rei
2019:
2020: .align 2
2021: _trans_r0:
2022: .long 0
2023:
2024:
2025:
2026:
2027:
2028:
2029:
2030:
2031:
2032:
2033:
2034:
2035:
2036:
2037:
2038: .align 2
2039: .globl _Prvis
2040: _Prvis:
2041: mtpr $0x1f,$IPL
2042: movl (sp)+,_act_pc
2043: movl (sp)+,_f_ptr
2044: cmpl _act_pc,$_run_code_mtpr
2045: bneq 1f
2046: pushl _run_code_psl
2047: pushl $_run_code_mtpr
2048: rei
2049: 1:
2050: pushl _f_ptr
2051: pushl _act_pc
2052: pushl $0x2c
2053: callf $8,_XTrap
2054:
2055:
2056:
2057:
2058:
2059:
2060:
2061:
2062:
2063:
2064:
2065:
2066:
2067:
2068:
2069:
2070:
2071:
2072:
2073:
2074:
2075:
2076:
2077:
2078:
2079:
2080:
2081: .align 2
2082: .globl _FPM_handler
2083: _FPM_handler:
2084: movpsl _psl_val
2085: mtpr $0x1f,$IPL
2086: movl _psl_val,_post_event_psl
2087: storer $0x1fff,_store_regs
2088: moval (r13),_post_event_fp
2089: moval (r14),_post_event_sp
2090: movl $1,_fpm_trap_occurred
2091: tstl _emulated_inst
2092: bneq 1f
2093: pushl $FPM_CODE
2094: callf $8,_XTrap
2095: halt
2096: 1:
2097: cmpl _acc_st_size,$DBL
2098: beql 1f
2099: stf _dbl_st_acc
2100: brb 2f
2101: 1: std _dbl_st_acc
2102: 2:
2103: movl (sp)+,_fpm_ms_op
2104: movl (sp)+,_fpm_ls_op
2105: movl (sp)+,_fpm_op_code
2106: movl (sp)+,_fpm_pc
2107: movl (sp)+,_fpm_psl
2108: bitl $PSL_DBL,_psl_val
2109: beql 1f
2110: std _post_evt_acc
2111: brb 2f
2112: 1: stf _post_evt_acc
2113: clrl _post_evt_acc+4
2114: 2:
2115: pushl _run_code_psl
2116: pushl _event_return
2117: rei
2118:
2119: # 919 "temp$.s"
2120:
2121:
2122: #
2123:
2124:
2125:
2126: .globl _Esys
2127: _Esys:
2128: .space 1024
2129:
2130: .globl _Ustack
2131: _Ustack:
2132: .space (2* 1024)-4
2133: .globl eustack
2134: eustack:
2135: .long 0
2136:
2137: .globl U_area
2138: U_area:
2139:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.