mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-21 01:18:52 +09:00
![Simon Glass](/assets/img/avatar_default.png)
This is already set up in crt0.S. We don't need a new structure and don't really want one in the 'data' section of the image, since it will be empty and crt0.S's changes will be ignored. As an interim measure, remove it only if CONFIG_DM is not defined. This allows us to press ahead with driver model in SPL and allow the stragglers to catch up. Signed-off-by: Simon Glass <sjg@chromium.org>
68 lines
1.7 KiB
C
68 lines
1.7 KiB
C
/*
|
|
* (C) Copyright 2010-2012
|
|
* Texas Instruments, <www.ti.com>
|
|
*
|
|
* Aneesh V <aneesh@ti.com>
|
|
* Tom Rini <trini@ti.com>
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
#include <common.h>
|
|
#include <config.h>
|
|
#include <spl.h>
|
|
#include <image.h>
|
|
#include <linux/compiler.h>
|
|
|
|
#ifndef CONFIG_DM
|
|
/* Pointer to as well as the global data structure for SPL */
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
|
|
/*
|
|
* WARNING: This is going away very soon. Don't use it and don't submit
|
|
* pafches that rely on it. The global_data area is set up in crt0.S.
|
|
*/
|
|
gd_t gdata __attribute__ ((section(".data")));
|
|
#endif
|
|
|
|
/*
|
|
* In the context of SPL, board_init_f must ensure that any clocks/etc for
|
|
* DDR are enabled, ensure that the stack pointer is valid, clear the BSS
|
|
* and call board_init_f. We provide this version by default but mark it
|
|
* as __weak to allow for platforms to do this in their own way if needed.
|
|
*/
|
|
void __weak board_init_f(ulong dummy)
|
|
{
|
|
/* Clear the BSS. */
|
|
memset(__bss_start, 0, __bss_end - __bss_start);
|
|
|
|
#ifndef CONFIG_DM
|
|
/* TODO: Remove settings of the global data pointer here */
|
|
gd = &gdata;
|
|
#endif
|
|
|
|
board_init_r(NULL, 0);
|
|
}
|
|
|
|
/*
|
|
* This function jumps to an image with argument. Normally an FDT or ATAGS
|
|
* image.
|
|
* arg: Pointer to paramter image in RAM
|
|
*/
|
|
#ifdef CONFIG_SPL_OS_BOOT
|
|
void __noreturn jump_to_image_linux(void *arg)
|
|
{
|
|
unsigned long machid = 0xffffffff;
|
|
#ifdef CONFIG_MACH_TYPE
|
|
machid = CONFIG_MACH_TYPE;
|
|
#endif
|
|
|
|
debug("Entering kernel arg pointer: 0x%p\n", arg);
|
|
typedef void (*image_entry_arg_t)(int, int, void *)
|
|
__attribute__ ((noreturn));
|
|
image_entry_arg_t image_entry =
|
|
(image_entry_arg_t) spl_image.entry_point;
|
|
cleanup_before_linux();
|
|
image_entry(0, machid, arg);
|
|
}
|
|
#endif
|