1 /* srt0.c 1.8 90/12/16 */ 2 3 #include "../include/mtpr.h" 4 #define LOCORE 5 6 /* 7 * Startup code for standalone system 8 */ 9 10 .globl _end 11 .globl _main 12 .globl __rtt 13 .globl _openfirst 14 .globl _start 15 .globl _boothowto 16 .globl _bootdev 17 18 .set HIGH,31 # mask for total disable 19 20 #ifndef REL 21 .globl _device_space 22 _device_space: # Tapemaster config block, etc. 23 .space 0x1000-RELOC 24 25 .globl _entry 26 _entry: 27 .word 0x00 # 'call' by relsrt0. 28 #endif 29 _start: 30 mtpr $HIGH,$IPL # just in case 31 #ifdef REL 32 movl $BOOTRELOC,sp 33 34 movl $RELOC,r0 /* source address to copy from */ 35 movl $BOOTRELOC,r1 /* destination address */ 36 movl tdlen,r2 /* length to copy */ 37 addl2 r2,r0 38 addl2 r2,r1 39 mvloop: 40 decl r0 41 decl r1 42 movb (r0),(r1) 43 decl r2 44 bgeq mvloop 45 46 /* 47 * zero bss 48 */ 49 movl aedata,r1 /* destination address */ 50 subl3 $_edata,$_end,r2 /* length to zero */ 51 zloop: 52 movb $0,(r1) 53 incl r1 54 decl r2 55 bgeq zloop 56 57 mtpr $1,$PACC 58 mtpr $1,$PADC 59 jmp *abegin 60 #endif 61 62 begin: 63 movl fp,ofp 64 movl r11,_boothowto 65 movl r10,_bootdev 66 movl $1,_openfirst 67 callf $4,_main 68 #ifdef REL 69 halt 70 #endif 71 ret 72 73 __rtt: 74 .word 0x0 75 #ifdef REL 76 halt 77 #endif 78 movl ofp,fp 79 ret 80 81 .data 82 abegin: .long begin 83 #ifdef REL 84 aedata: .long _edata 85 tdlen: .long _edata-BOOTRELOC 86 #endif 87 ofp: .long 0 88 _boothowto: .long 0 89 _bootdev: .long 0 90