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
76