xref: /csrg-svn/sys/vax/stand/srt0.c (revision 12366)
1*12366Ssam /*	srt0.c	4.11	83/05/11	*/
2326Sbill 
39186Ssam #include "../vax/mtpr.h"
43349Swnj #define	LOCORE
59186Ssam #include "../vax/cpu.h"
63263Swnj 
71914Swnj /*
81914Swnj  * Startup code for standalone system
91914Swnj  * Non-relocating version -- for programs which are loaded by boot
101914Swnj  */
11326Sbill 
123349Swnj 	.globl	_end
131757Sbill 	.globl	_edata
14326Sbill 	.globl	_main
15326Sbill 	.globl	__rtt
163263Swnj 	.globl	_configure
173349Swnj 	.globl	_cpu
183349Swnj 	.globl	_openfirst
19326Sbill 
20326Sbill 	.set	HIGH,31		# mask for total disable
21326Sbill 
222438Swnj entry:	.globl	entry
23326Sbill 	.word	0x0
24326Sbill 	mtpr	$HIGH,$IPL		# just in case
253349Swnj #ifdef REL
263349Swnj 	movl	$RELOC,sp
273349Swnj #else
283349Swnj 	movl	$RELOC-0x2400,sp
293349Swnj #endif
302438Swnj start:
313349Swnj 	movl	aedata,r0
32411Sbill clr:
33411Sbill 	clrl	(r0)+
34411Sbill 	cmpl	r0,sp
35411Sbill 	jlss	clr
363349Swnj #ifdef REL
37*12366Ssam 	movc3	aedata,*$0,(sp)
38*12366Ssam /*
39*12366Ssam  * Reclear bss segment separately from text and data
40*12366Ssam  * since movc3 can't move more than 64K bytes
41*12366Ssam  */
42*12366Ssam dclr:
43*12366Ssam 	clrl	(r3)+
44*12366Ssam 	cmpl	r3,$_end
45*12366Ssam 	jlss	dclr
46*12366Ssam /* this loop shouldn't be necessary, but is when booting from an ra81 */
47*12366Ssam xclr:
48*12366Ssam 	clrl	(r3)+
49*12366Ssam 	cmpl	r3,$0x100000
50*12366Ssam 	jlss	xclr
513349Swnj 	jmp	*abegin
523349Swnj begin:
533349Swnj #endif
543349Swnj 	mtpr	$0,$SCBB
553263Swnj 	calls	$0,_configure
563349Swnj 	movl	$1,_openfirst
57326Sbill 	calls	$0,_main
583349Swnj #ifndef TP
59326Sbill 	jmp	start
603349Swnj #else
613349Swnj 	ret
623349Swnj #endif
63326Sbill 
643349Swnj 	.data
653349Swnj #ifdef REL
663349Swnj abegin:	.long	begin
673349Swnj aedata:	.long	_edata-RELOC
683349Swnj #else
693349Swnj aedata:	.long	_edata
703349Swnj #endif
713349Swnj 
72326Sbill __rtt:
73326Sbill 	.word	0x0
74326Sbill 	jmp	start
753349Swnj 
763349Swnj 	.globl	_badloc
773349Swnj _badloc:
783349Swnj 	.word	0
793349Swnj 	movl	$1,r0
803349Swnj 	movl	4(ap),r3
813349Swnj 	movl	$4,r2
823349Swnj 	movab	9f,(r2)
833349Swnj 	tstl	(r3)
843349Swnj 1:	clrl	r0			# made it w/o machine checks
853349Swnj 2:	movl	$4,r2
863349Swnj 	clrl	(r2)
873349Swnj 	ret
883349Swnj 	.align	2
893349Swnj 9:
903349Swnj 	casel	_cpu,$1,$VAX_MAX
913349Swnj 0:
923349Swnj 	.word	8f-0b		# 1 is 780
933349Swnj 	.word	5f-0b		# 2 is 750
947446Sroot 	.word	5f-0b		# 3 is 730
953349Swnj 5:
963349Swnj 	mtpr	$0xf,$MCESR
973349Swnj 	brb	1f
983349Swnj 8:
993349Swnj 	mtpr	$0,$SBIFS
1003349Swnj 1:
1013349Swnj 	addl2	(sp)+,sp		# discard mchchk trash
1023349Swnj 	movab	2b,(sp)
1033349Swnj 	rei
104