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