avionic design with actual uboot and tooling
submodule of avionic design uboot bootloader and with included tools to get you started , read readme.md and readme-tk1-loader.md
This commit is contained in:
50
u-boot/arch/x86/lib/cmd_boot.c
Normal file
50
u-boot/arch/x86/lib/cmd_boot.c
Normal file
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* (C) Copyright 2008-2011
|
||||
* Graeme Russ, <graeme.russ@gmail.com>
|
||||
*
|
||||
* (C) Copyright 2002
|
||||
* Daniel Engström, Omicron Ceti AB, <daniel@omicron.se>
|
||||
*
|
||||
* (C) Copyright 2002
|
||||
* Wolfgang Denk, DENX Software Engineering, <wd@denx.de>
|
||||
*
|
||||
* (C) Copyright 2002
|
||||
* Sysgo Real-Time Solutions, GmbH <www.elinos.com>
|
||||
* Marius Groeger <mgroeger@sysgo.de>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <command.h>
|
||||
#include <malloc.h>
|
||||
#include <asm/u-boot-x86.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
unsigned long do_go_exec(ulong (*entry)(int, char * const []),
|
||||
int argc, char * const argv[])
|
||||
{
|
||||
unsigned long ret = 0;
|
||||
char **argv_tmp;
|
||||
|
||||
/*
|
||||
* x86 does not use a dedicated register to pass the pointer to
|
||||
* the global_data, so it is instead passed as argv[-1]. By using
|
||||
* argv[-1], the called 'Application' can use the contents of
|
||||
* argv natively. However, to safely use argv[-1] a new copy of
|
||||
* argv is needed with the extra element
|
||||
*/
|
||||
argv_tmp = malloc(sizeof(char *) * (argc + 1));
|
||||
|
||||
if (argv_tmp) {
|
||||
argv_tmp[0] = (char *)gd;
|
||||
|
||||
memcpy(&argv_tmp[1], argv, (size_t)(sizeof(char *) * argc));
|
||||
|
||||
ret = (entry) (argc, &argv_tmp[1]);
|
||||
free(argv_tmp);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
Reference in New Issue
Block a user