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