summaryrefslogtreecommitdiff
path: root/fpcsrc/rtl/emx/prt0.as
blob: db12128d93b845d58e1494d6f99d7101cd72ae27 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/ 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  __heap_base
        .globl  __heap_brk
        .globl  __heap_end
        .globl  __init

        .text

__text:
        push    $__data
        call    __dos_init
        jmp     __init

___SYSCALL:
        call    __dos_syscall
        ret

        .space  6, 0x90

__init: cld
        call    __entry1

        call    _main
        movb    $0x4c,%ah
        call    ___SYSCALL
2:      jmp     2b

        .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