Commit | Line | Data |
---|---|---|
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 | |
11 | init: | |
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 | 15 | start: |
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 | 29 | start2: /* 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 | 34 | 1: |
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 | 39 | 2: |
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 | 45 | done: |
006cccbe SL |
46 | tstl (sp)+ /* pop address */ |
47 | popr $0xffff /* END FIREWALL */ | |
2e6422fd SL |
48 | movl $PROGSIZE,r3 |
49 | clrcor: | |
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 | 56 | end: |