123242Smckusick /* 229309Smckusick * Copyright (c) 1982, 1986 Regents of the University of California. 323242Smckusick * All rights reserved. The Berkeley software License Agreement 423242Smckusick * specifies the terms and conditions for redistribution. 523242Smckusick * 6*30547Skarels * @(#)srt0.c 7.2 (Berkeley) 02/21/87 723242Smckusick */ 8326Sbill 99186Ssam #include "../vax/mtpr.h" 103349Swnj #define LOCORE 119186Ssam #include "../vax/cpu.h" 123263Swnj 131914Swnj /* 141914Swnj * Startup code for standalone system 151914Swnj * Non-relocating version -- for programs which are loaded by boot 1625442Skarels * Relocating version for boot* 171914Swnj */ 18326Sbill 193349Swnj .globl _end 201757Sbill .globl _edata 21326Sbill .globl _main 22326Sbill .globl __rtt 233263Swnj .globl _configure 243349Swnj .globl _cpu 253349Swnj .globl _openfirst 26326Sbill 27326Sbill .set HIGH,31 # mask for total disable 28326Sbill 292438Swnj entry: .globl entry 30326Sbill .word 0x0 31326Sbill mtpr $HIGH,$IPL # just in case 323349Swnj #ifdef REL 333349Swnj movl $RELOC,sp 343349Swnj #else 353349Swnj movl $RELOC-0x2400,sp 363349Swnj #endif 372438Swnj start: 383349Swnj movl aedata,r0 39411Sbill clr: 40411Sbill clrl (r0)+ 41411Sbill cmpl r0,sp 42411Sbill jlss clr 433349Swnj #ifdef REL 4412366Ssam movc3 aedata,*$0,(sp) 4512366Ssam /* 4612366Ssam * Reclear bss segment separately from text and data 4712366Ssam * since movc3 can't move more than 64K bytes 4812366Ssam */ 4912366Ssam dclr: 5012366Ssam clrl (r3)+ 5112366Ssam cmpl r3,$_end 5212366Ssam jlss dclr 5312366Ssam /* this loop shouldn't be necessary, but is when booting from an ra81 */ 5412366Ssam xclr: 5512366Ssam clrl (r3)+ 5612366Ssam cmpl r3,$0x100000 5712366Ssam jlss xclr 583349Swnj jmp *abegin 593349Swnj begin: 603349Swnj #endif 613349Swnj mtpr $0,$SCBB 623263Swnj calls $0,_configure 633349Swnj movl $1,_openfirst 64326Sbill calls $0,_main 653349Swnj #ifndef TP 66326Sbill jmp start 673349Swnj #else 683349Swnj ret 693349Swnj #endif 70326Sbill 713349Swnj .data 723349Swnj #ifdef REL 733349Swnj abegin: .long begin 743349Swnj aedata: .long _edata-RELOC 753349Swnj #else 763349Swnj aedata: .long _edata 773349Swnj #endif 783349Swnj 79326Sbill __rtt: 80326Sbill .word 0x0 8125442Skarels #ifdef REL 8225442Skarels halt 8325442Skarels #else 84326Sbill jmp start 8525442Skarels #endif 863349Swnj 87*30547Skarels .globl _badaddr 88*30547Skarels _badaddr: 893349Swnj .word 0 903349Swnj movl $1,r0 913349Swnj movl 4(ap),r3 92*30547Skarels movl 8(ap),r4 933349Swnj movl $4,r2 943349Swnj movab 9f,(r2) 95*30547Skarels bbc $0,r4,1f; tstb (r3) 96*30547Skarels 1: bbc $1,r4,1f; tstw (r3) 97*30547Skarels 1: bbc $2,r4,1f; tstl (r3) 983349Swnj 1: clrl r0 # made it w/o machine checks 993349Swnj 2: movl $4,r2 1003349Swnj clrl (r2) 1013349Swnj ret 1023349Swnj .align 2 1033349Swnj 9: 1043349Swnj casel _cpu,$1,$VAX_MAX 1053349Swnj 0: 1063349Swnj .word 8f-0b # 1 is 780 1073349Swnj .word 5f-0b # 2 is 750 1087446Sroot .word 5f-0b # 3 is 730 10924153Sbloom .word 6f-0b # 4 is 8600 1103349Swnj 5: 1113349Swnj mtpr $0xf,$MCESR 1123349Swnj brb 1f 11324153Sbloom 6: 11424153Sbloom mtpr $0,$EHSR 11524153Sbloom brb 1f 1163349Swnj 8: 1173349Swnj mtpr $0,$SBIFS 1183349Swnj 1: 1193349Swnj addl2 (sp)+,sp # discard mchchk trash 1203349Swnj movab 2b,(sp) 1213349Swnj rei 122