2008-11-03 21:14:36 +00:00
|
|
|
/*
|
|
|
|
* (C) Copyright 2008
|
|
|
|
* Niklaus Giger, niklaus.giger@member.fsf.org
|
|
|
|
*
|
2013-07-08 07:37:19 +00:00
|
|
|
* SPDX-License-Identifier: GPL-2.0+
|
2008-11-03 21:14:36 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _VXWORKS_H_
|
|
|
|
#define _VXWORKS_H_
|
|
|
|
|
2015-10-08 03:19:18 +00:00
|
|
|
/*
|
|
|
|
* VxWorks x86 E820 related stuff
|
|
|
|
*
|
|
|
|
* VxWorks on x86 gets E820 information from pre-defined address @
|
|
|
|
* 0x4a00 and 0x4000. At 0x4a00 it's an information table defined
|
|
|
|
* by VxWorks and the actual E820 table entries starts from 0x4000.
|
|
|
|
* As defined by the BIOS E820 spec, the maximum number of E820 table
|
|
|
|
* entries is 128 and each entry occupies 20 bytes, so it's 128 * 20
|
|
|
|
* = 2560 (0xa00) bytes in total. That's where VxWorks stores some
|
|
|
|
* information that is retrieved from the BIOS E820 call and saved
|
|
|
|
* later for sanity test during the kernel boot-up.
|
|
|
|
*/
|
|
|
|
#define VXWORKS_E820_DATA_ADDR 0x4000
|
|
|
|
#define VXWORKS_E820_INFO_ADDR 0x4a00
|
|
|
|
|
|
|
|
/* E820 info signatiure "SMAP" - System MAP */
|
|
|
|
#define E820_SIGNATURE 0x534d4150
|
|
|
|
|
|
|
|
struct e820info {
|
|
|
|
u32 sign; /* "SMAP" signature */
|
|
|
|
u32 x0; /* don't care, used by VxWorks */
|
|
|
|
u32 x1; /* don't care, used by VxWorks */
|
|
|
|
u32 x2; /* don't care, used by VxWorks */
|
|
|
|
u32 addr; /* last e820 table entry addr */
|
|
|
|
u32 x3; /* don't care, used by VxWorks */
|
|
|
|
u32 entries; /* e820 table entry count */
|
|
|
|
u32 error; /* must be zero */
|
|
|
|
};
|
|
|
|
|
2010-06-28 20:00:46 +00:00
|
|
|
int do_bootvx(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
|
common/cmd_bootm: extend do_bootm_vxworks to support the new VxWorks boot interface.
The next version VxWorks adopts device tree (for PowerPC and ARM) as its hardware
description mechanism. For PowerPC, the boot interface conforms to
the ePAPR standard, which is:
void (*kernel_entry)(ulong fdt_addr,
ulong r4 /* 0 */,
ulong r5 /* 0 */,
ulong r6 /* EPAPR_MAGIC */, ulong r7 /* IMA size */,
ulong r8 /* 0 */, ulong r9 /* 0 */)
For ARM, the boot interface is:
void (*kernel_entry)(void *fdt_addr)
Signed-off-by: Miao Yan <miao.yan@windriver.com>
[trini: Fix build error when !CONFIG_OF_FDT is set, typo on PowerPC,
missing extern ft_fixup_num_cores]
Signed-off-by: Tom Rini <trini@ti.com>
2013-11-28 09:51:38 +00:00
|
|
|
void boot_prep_vxworks(bootm_headers_t *images);
|
|
|
|
void boot_jump_vxworks(bootm_headers_t *images);
|
|
|
|
void do_bootvx_fdt(bootm_headers_t *images);
|
2008-11-03 21:14:36 +00:00
|
|
|
|
|
|
|
#endif
|