Subversion Repositories Kolibri OS

Rev

Rev 4872 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4349 Serge 1
 
2
#include 
3
#include 
4
#include 
5
#include 
6
#include 
7
#include 
8
#include 
9
#include 
10
11
 
12
{
13
    char  banner[8];
14
    int   version;
15
    int   start;
16
    int   iend;
17
    int   memsize;
18
    int   stacktop;
19
    char  *cmdline;
20
    char  *path;
21
    int    reserved;
22
    void  *__idata_start;
23
    void  *__idata_end;
24
    int  (*main)(int argc, char **argv, char **envp);
25
};
26
27
 
28
char **_argv;
29
30
 
31
 
32
int (*entry)(int, char **, char **);
33
34
 
35
36
 
37
 
38
39
 
40
41
 
42
__thread_startup (int (*entry)(void*), void *param,
43
                  void *stacklow, void *stackhigh)
44
{
45
    int retval;
46
47
 
48
49
 
50
    "movl %0, %%fs:8    \n\t"           // use TLS
51
    "movl %1, %%fs:12    \n\t"
52
    ::"r"(stacklow), "r"(stackhigh));
53
54
 
55
56
 
57
58
 
59
};
60
61
 
62
{
63
    return NULL;
64
}
65
66
 
67
int link_app();
68
69
 
70
int   __appcwdlen;
71
char* __appenv;
72
int   __appenv_size;
73
74
 
75
76
 
77
78
 
79
libc_crt_startup (void *libc_base)
80
{
81
    struct   app_hdr *header = NULL;
82
83
 
84
    char *p;
85
86
 
87
    int retval = 0;
88
89
 
90
91
 
92
    _tls_map[0] = 0xE0;
93
    init_reent();
94
    __initPOSIXHandles();
95
96
 
97
98
 
99
100
 
101
        goto done;
102
103
 
104
    __appcwdlen = __appcwdlen > 1022 ? 1022 : __appcwdlen;
105
    memcpy(__appcwd, header->path, __appcwdlen);
106
    set_cwd(__appcwd);
107
108
 
109
110
 
111
    {
112
        _argc = 2;
113
        arg[1] = header->cmdline;
114
    }
115
    else _argc = 1;
116
117
 
118
119
 
120
done:
121
    exit (retval);
122
}
123