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