diff options
Diffstat (limited to 'libc/sysdeps/linux/powerpc/crt0.c')
| -rw-r--r-- | libc/sysdeps/linux/powerpc/crt0.c | 13 | 
1 files changed, 12 insertions, 1 deletions
| diff --git a/libc/sysdeps/linux/powerpc/crt0.c b/libc/sysdeps/linux/powerpc/crt0.c index c16bde89f..b7e7f9b15 100644 --- a/libc/sysdeps/linux/powerpc/crt0.c +++ b/libc/sysdeps/linux/powerpc/crt0.c @@ -24,7 +24,12 @@  asm(  	"\t.global _start\n"  	"\t_start:\n" +	//"\tmr 9,1\n" +	//"\trlwinm 1,1,0,0,27\n" +	"\tli 0,0\n"  	"\tstwu	1,-32(1)\n" +	"\tmtlr 0\n" +	//"\tstw 0,0(1)\n"  	"\tb _start2\n");  void __uClibc_main(int argc,void *argv,void *envp); @@ -34,10 +39,16 @@ void _start2(void)  	void **p;  	int argc; -	p=__builtin_frame_address(2); +	p=__builtin_frame_address(0)+0x30;  	argc=*(int *)p; +	/* gross hack for dynamic linker */ +	if(argc==0){ +		p=((void *)p)+0x10; +		argc=*(int *)p; +	} +  	__uClibc_main(argc,p+1,p+2+argc);  } | 
