1*29955Skarels /* srt0.c 1.3 86/11/03 */ 225870Ssam 325870Ssam #include "../machine/mtpr.h" 425870Ssam #define LOCORE 525870Ssam 625870Ssam /* 725870Ssam * Startup code for standalone system 825870Ssam */ 925870Ssam 1025870Ssam .globl _end 1125870Ssam .globl _main 1225870Ssam .globl __rtt 1325870Ssam .globl _openfirst 1425870Ssam .globl _start 1525870Ssam 1625870Ssam .set HIGH,31 # mask for total disable 1725870Ssam 18*29955Skarels .globl _entry 19*29955Skarels _entry: 2025870Ssam #ifndef REL 2125870Ssam .word 0x00 # 'call' by relsrt0. 2225870Ssam #endif 2325870Ssam _start: 2425870Ssam mtpr $HIGH,$IPL # just in case 25*29955Skarels #ifdef REL 2629553Sroot movl $RELOC,sp 2725870Ssam 2825870Ssam movl $0x800,r0 /* source address to copy from */ 2925870Ssam movl $RELOC,r1 /* destination address */ 30*29955Skarels movl aedata,r2 /* length to copy */ 3129553Sroot addl2 r2,r0 3229553Sroot addl2 r2,r1 3325870Ssam mvloop: 3429553Sroot decl r0 3529553Sroot decl r1 3625870Ssam movb (r0),(r1) 3725870Ssam decl r2 3829553Sroot bgeq mvloop 3929553Sroot 40*29955Skarels /* 41*29955Skarels * zero bss 42*29955Skarels */ 43*29955Skarels movab _edata,r1 /* destination address */ 44*29955Skarels subl3 aend,aedata,r2 /* length to zero */ 45*29955Skarels zloop: 46*29955Skarels movb $0,(r1) 47*29955Skarels incl r1 48*29955Skarels decl r2 49*29955Skarels bgeq zloop 50*29955Skarels 5125870Ssam mtpr $0,$PACC 5225870Ssam jmp *abegin 53*29955Skarels #endif 5429553Sroot 5525870Ssam begin: 56*29955Skarels movl fp,ofp 5725870Ssam movl $1,_openfirst 5825870Ssam callf $4,_main 59*29955Skarels #ifdef REL 60*29955Skarels halt 61*29955Skarels #endif 62*29955Skarels ret 6325870Ssam 6425870Ssam __rtt: 6525870Ssam .word 0x0 66*29955Skarels #ifdef REL 67*29955Skarels halt 68*29955Skarels #endif 69*29955Skarels movl ofp,fp 70*29955Skarels ret 7125870Ssam 7225870Ssam .data 7325870Ssam abegin: .long begin 74*29955Skarels aend: .long _end-RELOC 75*29955Skarels aedata: .long _edata-RELOC 76*29955Skarels ofp: .long 0 77