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