]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/uclibc/lib/contrib/uclibc/libc/sysdeps/linux/metag/crt1.S
update
[l4.git] / l4 / pkg / uclibc / lib / contrib / uclibc / libc / sysdeps / linux / metag / crt1.S
1 !    Copyright (C) 2013 Imagination Technologies Ltd.
2
3 !    Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
4
5
6 #include <asm/unistd.h>
7
8         .text
9         .global __start
10         .type   __start,function
11 __start:
12         MOV     D0FrT,A0StP
13         MOV     A0FrP,A0StP
14
15         MOV     A0.2,#0
16         MOV     A0.3,#0
17
18         MOV     A1.1,#0
19         MOV     A1.2,#0
20         MOV     A1.3,#0
21
22         MOV     D0.5,#0
23         MOV     D0.6,#0
24         MOV     D0.7,#0
25
26         MOV     D1.5,#0
27         MOV     D1.6,#0
28         MOV     D1.7,#0
29
30         MOV     D1Ar3,D0Ar2                     ! argv
31         MOV     D0Ar2,D1Ar1                     ! argc
32         MOV     D0Ar6,D0Ar4                     ! rtld_fini
33
34 #ifdef __PIC__
35         ADDT    A1LbP,CPC1,#HI(__GLOBAL_OFFSET_TABLE__)
36         ADD     A1LbP,A1LbP,#LO(__GLOBAL_OFFSET_TABLE__+4)
37
38         MOV     D1Ar1,A1LbP
39         ADDT    D1Ar1,D1Ar1,#HI(_main@GOTOFF)
40         ADD     D1Ar1,D1Ar1,#LO(_main@GOTOFF)
41
42         MOV     D0Ar4,A1LbP
43         ADDT    D0Ar4,D0Ar4,#HI(__init@GOTOFF)
44         ADD     D0Ar4,D0Ar4,#LO(__init@GOTOFF)
45
46         MOV     D1Ar5,A1LbP
47         ADDT    D1Ar5,D1Ar5,#HI(__fini@GOTOFF)
48         ADD     D1Ar5,D1Ar5,#LO(__fini@GOTOFF)
49 #else
50         MOVT    D1Ar1,#HI(_main)
51         ADD     D1Ar1,D1Ar1,#LO(_main)
52         MOVT    D0Ar4,#HI(__init)
53         ADD     D0Ar4,D0Ar4,#LO(__init)
54         MOVT    D1Ar5,#HI(__fini)
55         ADD     D1Ar5,D1Ar5,#LO(__fini)
56 #endif
57
58         MOVT    D1Re0,#0x80
59
60         SETL    [A0StP++],D0Re0,D1Re0           ! stack_end (8Mb)
61
62         MOV     D1Re0,#0
63         MOV     D0Re0,#0
64
65 #ifdef __PIC__
66         CALLR   D1RtP, ___uClibc_main@PLT
67 #else
68         CALLR   D1RtP, ___uClibc_main
69 #endif
70
71         MOV     D1Re0,#__NR_exit
72         MOV     D1Ar1,#0x1
73         SWITCH  #0x440001                       ! exit syscall
74
75         .size __start,.-__start