ARM: Fix arm-mes-gcc _start.
* lib/linux/arm-mes-gcc/crt1.c: Fix arm-mes-gcc _start.
This commit is contained in:
parent
37149aa84d
commit
5199db9d8e
|
@ -25,59 +25,48 @@
|
||||||
void
|
void
|
||||||
_start ()
|
_start ()
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
asm (
|
asm (
|
||||||
"mov $0,%%eax\n\t"
|
"mov r0,#0\n\t"
|
||||||
"mov %%eax,%0\n"
|
"mov %0,r0\n"
|
||||||
: "=r" (__stdin)
|
: "=r" (__stdin)
|
||||||
: //no inputs ""
|
: //no inputs ""
|
||||||
);
|
);
|
||||||
|
|
||||||
asm (
|
asm (
|
||||||
"mov $1,%%eax\n\t"
|
"mov r0,$1\n\t"
|
||||||
"mov %%eax,%0\n"
|
"mov %0,r0\n"
|
||||||
: "=r" (__stdout)
|
: "=r" (__stdout)
|
||||||
: //no inputs ""
|
: //no inputs ""
|
||||||
);
|
);
|
||||||
|
|
||||||
asm (
|
asm (
|
||||||
"mov $2,%%eax\n\t"
|
"mov r0,$2\n\t"
|
||||||
"mov %%eax,%0\n"
|
"mov %0,r0\n"
|
||||||
: "=r" (__stderr)
|
: "=r" (__stderr)
|
||||||
: //no inputs ""
|
: //no inputs ""
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/* environ = argv + argc + 1 */
|
||||||
asm (
|
asm (
|
||||||
"mov %%ebp,%%eax\n\t"
|
"pop {r7}\n\t" /* gcc has a strange preable pushing r7. FIXME: Be nicer. */
|
||||||
"add $4,%%eax\n\t"
|
"ldr r0,[sp]\n\t" /* r0 = argc */
|
||||||
"movzbl (%%eax),%%eax\n\t"
|
"add r1,sp,#4\n\t" /* r1 = &argv[0] */
|
||||||
"add $3,%%eax\n\t"
|
"add r2,r1,#1\n\t" /* r2 = r1 + 1 */
|
||||||
"shl $2,%%eax\n\t"
|
"lsl r2,#2\n\t" /* r2 = (r1 + 1) << 2 */
|
||||||
"add %%ebp,%%eax\n\t"
|
"push {r2}\n\t" /* envp */
|
||||||
"mov %%eax,%0\n\t"
|
"push {r1}\n\t" /* argv */
|
||||||
"push %%eax\n\t"
|
"push {r0}\n\t" /* argc */
|
||||||
|
"mov %0,r2\n\t"
|
||||||
: "=r" (environ)
|
: "=r" (environ)
|
||||||
: //no inputs ""
|
: //no inputs ""
|
||||||
);
|
);
|
||||||
asm (
|
asm (
|
||||||
"mov %ebp,%eax\n\t"
|
"ldr r0,[sp]\n\t" /* argc */
|
||||||
"add $8,%eax\n\t"
|
"ldr r1,[sp, #4]\n\t" /* argv */
|
||||||
"push %eax\n\t"
|
"ldr r2,[sp, #8]\n\t" /* envp */
|
||||||
|
|
||||||
"mov %ebp,%eax\n\t"
|
|
||||||
"add $4,%eax\n\t"
|
|
||||||
"movzbl (%eax),%eax\n\t"
|
|
||||||
);
|
|
||||||
#endif
|
|
||||||
asm (
|
|
||||||
"mov r2, $0\n\t"
|
|
||||||
"push {r2}\n\t"
|
|
||||||
"mov r1, $0\n\t"
|
|
||||||
"push {r1}\n\t"
|
|
||||||
"mov r0, $1\n\t"
|
|
||||||
"push {r0}\n\t"
|
|
||||||
"bl main\n\t"
|
"bl main\n\t"
|
||||||
"mov r7, $1\n\t"
|
"mov r7, #1\n\t"
|
||||||
"swi $0\n\t"
|
"swi #0\n\t"
|
||||||
"wfi \n\t"
|
"wfi \n\t"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue