xref: /csrg-svn/sys/vax/mdec/raboot.c (revision 11188)
1 /*	raboot.c	4.2	83/02/20	*/
2 
3 /*
4  * UDA50 1st level boot program: loads next 7.5Kbytes from
5  * boot sector of file system and sets it up to run.
6  *	UNTESTED
7  */
8 	.set	RELOC,0x50000
9 	.set	BOOTSIZE,15		/* size of boot in sectors */
10 	.set	RABPSECT,512		/* bytes per sector */
11 
12 init:
13 	.word	0  			/* entry mask for dec monitor */
14 	nop;nop;nop;nop;nop;nop;nop;nop /* some no-ops for 750 boot to skip */
15 	nop;nop;
16 start:
17 	movl	r5,r11			/* boot flags */
18 	movl	$RELOC,sp
19 	moval	init,r9
20 	movc3	$end,(r9),(sp)
21 	jmp	*$RELOC+start2
22 /* now running relocated */
23 /* bring in the boot program */
24 start2:					/* running relocated */
25 	clrl	r9			/* transfer counter */
26 	clrl	r5			/* transfer address */
27 	movl	$1,r8			/* requested sector # */
28 1:
29 	pushr	$0xffff			/* BEGIN FIREWALL */
30 	calls	$0,(r6)			/* call ROM-based driver */
31 	blbs	r0,2f
32 	halt				/* read error */
33 2:
34 	popr	$0xffff			/* END FIREWALL */
35 	incl	r8			/* bump sector */
36 	addl2	$RABPSECT,r5		/* bump memory location */
37 	aobleq	BOOTSIZE,r9,1b
38 
39 	.set	PROGSIZE,(BOOTSIZE*RABPSECT)
40 done:
41 	movl	$PROGSIZE,r3
42 clrcor:
43 	clrq	(r3)
44 	acbl	$RELOC,$8,r3,clrcor
45 /* start loaded program */
46 	movl	$9,r10			/* major("/dev/ra0a") */
47 	calls	$0,*$0
48 	brw	start2
49 end:
50