From: Graeme Russ Date: Fri, 23 Apr 2010 14:05:39 +0000 (+1000) Subject: x86: Fix do_go_exec() X-Git-Tag: v2010.06-rc1~56 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=9e08efcfee22570bb3a9ea384bf4d60b378f6092;p=oweals%2Fu-boot.git x86: Fix do_go_exec() This was broken a long time ago by a49864593e083a5d0779fb9ca98e5a0f2053183d which munged the NIOS and x86 do_go_exec() Signed-off-by: Graeme Russ --- diff --git a/arch/i386/lib/board.c b/arch/i386/lib/board.c index af81cd5b23..5e28c6f7df 100644 --- a/arch/i386/lib/board.c +++ b/arch/i386/lib/board.c @@ -422,10 +422,10 @@ void hang (void) unsigned long do_go_exec (ulong (*entry)(int, char *[]), int argc, char *argv[]) { /* - * TODO: Test this function - changed to fix compiler error. - * Original code was: - * return (entry >> 1) (argc, argv); - * with a comment about Nios function pointers are address >> 1 + * x86 does not use a dedicated register to pass the pointer + * to the global_data */ + argv[-1] = (char *)gd; + return (entry) (argc, argv); }