|
|
1.1 root 1: /* srt0.c 6.1 83/07/29 */
2:
3: #include "../vax/mtpr.h"
4: #define LOCORE
5: #include "../vax/cpu.h"
6:
7: /*
8: * Startup code for standalone system
9: * Non-relocating version -- for programs which are loaded by boot
10: */
11:
12: .globl _end
13: .globl _edata
14: .globl _main
15: .globl __rtt
16: .globl _configure
17: .globl _cpu
18: .globl _openfirst
19:
20: .set HIGH,31 # mask for total disable
21:
22: entry: .globl entry
23: .word 0x0
24: mtpr $HIGH,$IPL # just in case
25: #ifdef REL
26: movl $RELOC,sp
27: #else
28: movl $RELOC-0x2400,sp
29: #endif
30: start:
31: movl aedata,r0
32: clr:
33: clrl (r0)+
34: cmpl r0,sp
35: jlss clr
36: #ifdef REL
37: movc3 aedata,*$0,(sp)
38: /*
39: * Reclear bss segment separately from text and data
40: * since movc3 can't move more than 64K bytes
41: */
42: dclr:
43: clrl (r3)+
44: cmpl r3,$_end
45: jlss dclr
46: /* this loop shouldn't be necessary, but is when booting from an ra81 */
47: xclr:
48: clrl (r3)+
49: cmpl r3,$0x100000
50: jlss xclr
51: jmp *abegin
52: begin:
53: #endif
54: mtpr $0,$SCBB
55: calls $0,_configure
56: movl $1,_openfirst
57: calls $0,_main
58: #ifndef TP
59: jmp start
60: #else
61: ret
62: #endif
63:
64: .data
65: #ifdef REL
66: abegin: .long begin
67: aedata: .long _edata-RELOC
68: #else
69: aedata: .long _edata
70: #endif
71:
72: __rtt:
73: .word 0x0
74: jmp start
75:
76: .globl _badloc
77: _badloc:
78: .word 0
79: movl $1,r0
80: movl 4(ap),r3
81: movl $4,r2
82: movab 9f,(r2)
83: tstl (r3)
84: 1: clrl r0 # made it w/o machine checks
85: 2: movl $4,r2
86: clrl (r2)
87: ret
88: .align 2
89: 9:
90: casel _cpu,$1,$VAX_MAX
91: 0:
92: .word 8f-0b # 1 is 780
93: .word 5f-0b # 2 is 750
94: .word 5f-0b # 3 is 730
95: 5:
96: mtpr $0xf,$MCESR
97: brb 1f
98: 8:
99: mtpr $0,$SBIFS
100: 1:
101: addl2 (sp)+,sp # discard mchchk trash
102: movab 2b,(sp)
103: rei
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.