arch/x86: initial Intel64 bootstrap framework

This patch adds basic build infrastructure, definitions, a linker
script, etc. to use the Zephyr and 0.10.1 SDK to build a 64-bit
ELF binary suitable for use with GRUB to minimally bootstrap an
Apollo Lake (e.g., UpSquared) board. The resulting binary can hardly
be called a Zephyr kernel as it is lacking most of the glue logic,
but it is a starting point to flesh those out in the x86 tree.

The "kernel" builds with a few harmless warnings, both with GCC from
the Zephyr SDK and with ICC (which is currently being worked on in
a separate branch). These warnings are either related to pointer size
differences (since this is an LP64 build) and/or dummy functions
that will be replaced with working versions shortly.

Signed-off-by: Charles E. Youse <charles.youse@intel.com>
This commit is contained in:
Charles E. Youse 2019-07-04 13:49:06 -07:00 committed by Andrew Boie
commit 34307a54f0
10 changed files with 291 additions and 1 deletions

View file

@ -1,5 +1,6 @@
/*
* Copyright (c) 2011-2014, Wind River Systems, Inc.
* Copyright (c) 2019 Intel Corp.
*
* SPDX-License-Identifier: Apache-2.0
*/
@ -7,6 +8,12 @@
#include <autoconf.h>
#include <generated_dts_board.h>
#ifdef CONFIG_X86_LONGMODE
#include <arch/x86/intel64/linker.ld>
#else /* IA32 */
#define PHYS_LOAD_ADDR DT_PHYS_RAM_ADDR
#define PHYS_RAM_ADDR DT_PHYS_RAM_ADDR
@ -25,3 +32,4 @@ MEMORY
#include <arch/x86/ia32/linker.ld>
#endif /* CONFIG_X86_LONGMODE */