ack/mach/m68020/libsys/head_em.s
1992-06-30 15:22:55 +00:00

77 lines
1.4 KiB
ArmAsm

.define .lino,.filn
.define EXIT,BRK,WRITE
.define begtext,begdata,begbss
.define EARRAY,ERANGE,ESET,EIDIVZ,EHEAP,EILLINS,ECASE,EBADGTO
.define hol0,.reghp,.limhp,.trpim,.trppc
.sect .text
.sect .rom
.sect .data
.sect .bss
! runtime startof for 68020 machine
LINO_AD = 0
FILN_AD = 4
EARRAY = 0
ERANGE = 1
ESET = 2
EIDIVZ = 6
EHEAP = 17
EILLINS = 18
ECASE = 20
EBADGTO = 27
.sect .text
begtext:
move.l d0,(splimit) ! load splimit with the initial stack limit
sub.l #8,sp
move.l (8,sp),(sp) ! argc
lea (12,sp),a0
move.l a0,(4,sp) ! argv
move.l a0,a1
1:
tst.l (a0)+ ! null args term?
bne 1b
cmp.l (a1),a0 ! end of 'argv[]' and in *argv[] strings?
blt 2f ! skip if a0 is less than start of *argv[]
sub.l #4,a0 ! else backup one to set env = 0 (NULL)
2:
move.l a0,(8,sp) ! env
! move.l a0, environ ! indir is 0 if no env; not 0 if env
! jsr (initfpu) ! call to dummy floating point init routine
jsr (__m_a_i_n)
move.l d0,(sp) ! no stack cleanup needed
EXIT:
jsr (__exit)
WRITE:
jmp (__write)
BRK:
jmp (__brk)
.sect .data
begdata:
splimit:
.data4 0 ! may be at virtual address 0 with no problem
hol0:
.lino:
.data4 0 ! lino
.filn:
.data4 0 ! filn
.reghp:
.data4 endbss
.limhp:
.data4 endbss
.trppc:
.data4 0
.trpim:
.data4 0 ! USED TO BE 2 BYTES; IS THIS RIGHT?
.sect .bss
begbss: !initialization is not needed because ALL entries are in zero space!