123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- / prt0.s (emx+fpc) -- Made from crt0.s,
- / Copyright (c) 1990-1999-2001 by Eberhard Mattes.
- / Changed for Free Pascal in 1997 Daniel Mantione.
- / This code is _not_ under the Library GNU Public
- / License, because the original is not. See copying.emx
- / for details. You should have received it with this
- / product, write the author if you haven't.
- .globl __text
- .globl ___SYSCALL
- .globl __data
- .globl __init
- .globl __dos_init
- .globl __dos_syscall
- .comm _excptregptr, 4
- .text
- __text:
- push $__data
- call __dos_init
- jmp __init
- ___SYSCALL:
- call __dos_syscall
- ret
- .space 6, 0x90
- __init: cld
- pushl %eax
- pushl %eax
- pushl %eax
- movl %esp,%eax
- addl $4,%eax
- movl %eax, _excptregptr
- popl %eax
- call _main
- movb $0x4c,%ah
- call ___SYSCALL
- 2: jmp 2b
- / In executables created with emxbind, the call to _dos_init will
- / be fixed up at load time to _emx_init of emx.dll. Under DOS,
- / this dummy is called instead as there is no fixup. This module
- / must be linked statically to avoid having two fixups for the
- / same location.
- __dos_init:
- ret $4
- .align 2, 0x90
- __dos_syscall:
- int $0x21
- ret
- .data
- / The data segment starts with a table containing the start and end
- / addresses of the text, data and bss segments
- __data:
- .long __text
- .long __etext
- .long __data
- .long __edata
- .long __edata
- .long __end
- __heap_base:
- .long 0
- __heap_end:
- .long 0
- __heap_brk:
- .long 0
- .long 0
- .long __os2dll
- .long 0
- .long 0
- .long 0x02000000
- .long 0
- .long 0
- .byte 0
- .space 63, 0
- / Don't touch this. It's EMX vodoo. In short, this causes the __os2dll symbol
- / point to table of DLL data that the linker includes in the executable.
- .stabs "__os2dll", 21, 0, 0, 0xffffffff
- .stabs "___CTOR_LIST__", 21, 0, 0, 0xffffffff
- .stabs "___DTOR_LIST__", 21, 0, 0, 0xffffffff
- .stabs "___crtinit1__", 21, 0, 0, 0xffffffff
- .stabs "___crtexit1__", 21, 0, 0, 0xffffffff
- .stabs "___eh_frame__", 21, 0, 0, 0xffffffff
|