made to work by rws@mit-xx
[unix-history] / usr / src / sys / vax / mdec / raboot.c
CommitLineData
006cccbe 1/* raboot.c 4.3 83/05/03 */
9495fedd
SL
2
3/*
2e6422fd
SL
4 * UDA50 1st level boot program: loads next 7.5Kbytes from
5 * boot sector of file system and sets it up to run.
9495fedd 6 */
2e6422fd 7 .set RELOC,0x50000
006cccbe 8 .set BOOTLAST,15 /* last boot sector */
2e6422fd 9 .set RABPSECT,512 /* bytes per sector */
9495fedd
SL
10
11init:
2e6422fd
SL
12 .word 0 /* entry mask for dec monitor */
13 nop;nop;nop;nop;nop;nop;nop;nop /* some no-ops for 750 boot to skip */
14 nop;nop;
9495fedd 15start:
006cccbe
SL
16 movl r1,r7 /* UNIBUS I/O page address */
17 movl r2,r8 /* boot device CSR */
18 movl r3,r9 /* unit number */
2e6422fd
SL
19 movl r5,r11 /* boot flags */
20 movl $RELOC,sp
006cccbe
SL
21 moval init,r10
22 movc3 $end,(r10),(sp)
23 movl r7,r1 /* UNIBUS I/O page address */
24 movl r8,r2 /* boot device CSR */
25 movl r9,r3 /* unit number */
2e6422fd
SL
26 jmp *$RELOC+start2
27/* now running relocated */
28/* bring in the boot program */
9495fedd 29start2: /* running relocated */
006cccbe
SL
30 pushr $0xffff /* BEGIN FIREWALL */
31 movl $1,r4 /* first boot sector */
2e6422fd 32 clrl r5 /* transfer address */
006cccbe 33 clrl -(sp) /* transfer address */
9495fedd 341:
006cccbe
SL
35 movl r4,r8 /* requested sector # */
36 jsb (r6) /* call ROM-based driver */
2e6422fd
SL
37 blbs r0,2f
38 halt /* read error */
9495fedd 392:
006cccbe
SL
40 addl2 $RABPSECT,r5 /* bump address */
41 movl r5,(sp)
42 aobleq $BOOTLAST,r4,1b
9495fedd 43
006cccbe 44 .set PROGSIZE,((BOOTLAST-1)*RABPSECT)
2e6422fd 45done:
006cccbe
SL
46 tstl (sp)+ /* pop address */
47 popr $0xffff /* END FIREWALL */
2e6422fd
SL
48 movl $PROGSIZE,r3
49clrcor:
50 clrq (r3)
51 acbl $RELOC,$8,r3,clrcor
52/* start loaded program */
53 movl $9,r10 /* major("/dev/ra0a") */
54 calls $0,*$0
55 brw start2
9495fedd 56end: