|
|
1.1 root 1: #
2: # initialization
3: #
4: # ipl 0x1f; mapen 0
5: # nothing much set up
6: #
7:
8: .data
9: .globl eintstack
10: intstack:
11: .space NISP*NBPG
12: eintstack:
13:
14: .text
15:
16: .globl start
17: start:
18: .word 0
19: movl r11,bootflags # save boot flags; wrong, should be r5
20: mtpr $0,$ICCS # stop the clock
21: subl3 $KA,$scb,r0 # init system control block
22: mtpr r0,$SCBB
23: moval *$eintstack,sp # absolute addr so kernel bit is set
24: #
25: # miscellaneous hacks:
26: # fix up rpb, esp checksum
27: # silly speed hacks
28: #
29: movab _rpb,r0
30: bbcc $31,4(r0),0f # make restart addr physical (sigh)
31: movl 4(r0),r1
32: 0: movl $0x1f,r2
33: clrl r3
34: 1: addl2 (r1)+,r3
35: sobgtr r2,1b
36: movl r3,8(r0)
37: clrl 12(r0) # so a restart can happen
38: bisw2 $0x0fff,_trap # speed hack, known in trap
39: bisw2 $0x0fff,_syscall # speed hack, known in syscall
40: #
41: # clear bss
42: #
43: movab _edata,r1
44: movab _end,r2
45: 1: clrq (r1)+
46: cmpl r1,r2
47: blss 1b
48: #
49: # count up memory into r0
50: #
51: movab 9f,_nofault
52: clrl r0
53: 1: tstl (r0)
54: acbl $MAXPHMEM-1,$64*1024,r0,1b
55: 9: clrl _nofault
56: #
57: # write the system page table, set SBR and SLR
58: #
59: pushl r0
60: calls $1,_machmem # some vaxes have ideas about top of mem
61: pushl r0
62: calls $1,_mmapinit
63: #
64: # hand-craft the bare bones of proc[0]
65: # set up page table, initial pcb, allocate user block
66: #
67: pushab *$1f # first kernel pc; abs addr so kernel bit set
68: calls $1,_uctinit
69: #
70: # turn on memory mapping
71: # P0BR dance gives us time to change the pc
72: #
73: mtpr _Sysmap,$P0BR
74: mfpr $SLR,r0
75: mtpr r0,$P0LR
76: mtpr $0,$TBIA
77: mtpr $1,$MAPEN
78: jmp *$0f; 0: # load kernel address into pc
79: #
80: # use the pcb: go to kernel mode, kernel stack
81: #
82: ldpctx
83: rei
84: 1:
85: #
86: # any other hardware-dependent initialization
87: #
88: calls $0,_machinit
89: #
90: # start unix
91: #
92: calls $0,_main
93: #
94: # return here as process 1: run icode
95: #
96: pushl $0x03c00000 # mode (user,user)
97: pushl $0 # pc 0
98: rei
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.