0df877a65a
Ramstage needs an assembly entry point for setting up the initial state of the CPU. Therefore, a function is provided, arm64_el3_startup(), that bootstraps the state of the processor, initializes the stack pointer, and branches to a defined entry symbol. To make this work without adding too much preprocessor macro conditions provide _stack and _estack for all the stages. Currently the entry point after initialization is 'main', however it can be changed/extended to do more work such as seeding the stack contents with tombstones, etc. It should be noted that romstage and bootblock weren't tested. Only ramstage is known to work. BUG=chrome-os-partner:29923 BRANCH=None TEST=Brought up 64-bit ramstage on rush. Original-Change-Id: I1f07d5b6656e13e6667b038cdc1f4be8843d1960 Original-Signed-off-by: Aaron Durbin <adurbin@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/207262 Original-Reviewed-by: Furquan Shaikh <furquan@chromium.org> (cherry picked from commit 7850ee3a7bf48c05f2e64147edb92161f8308f19) Signed-off-by: Marc Jones <marc.jones@se-eng.com> Change-Id: Ia87697f49638c8c249215d441d95f1ec621e0949 Reviewed-on: http://review.coreboot.org/8585 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@google.com>
65 lines
1.6 KiB
Text
65 lines
1.6 KiB
Text
/*
|
|
* This file is part of the coreboot project.
|
|
*
|
|
* Copyright (C) 2006 Advanced Micro Devices, Inc.
|
|
* Copyright (C) 2008-2010 coresystems GmbH
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; version 2 of the License.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
/* We use ELF as output format. So that we can debug the code in some form. */
|
|
OUTPUT_FORMAT("elf64-littleaarch64", "elf64-littleaarch64", "elf64-littleaarch64")
|
|
OUTPUT_ARCH(aarch64)
|
|
INCLUDE ldoptions
|
|
|
|
PHDRS
|
|
{
|
|
to_load PT_LOAD;
|
|
}
|
|
|
|
ENTRY(stage_entry)
|
|
TARGET(binary)
|
|
SECTIONS
|
|
{
|
|
. = CONFIG_BOOTBLOCK_BASE;
|
|
|
|
.bootblock . : {
|
|
*(.text.stage_entry);
|
|
KEEP(*(.id));
|
|
*(.text);
|
|
*(.text.*);
|
|
*(.rodata);
|
|
*(.rodata.*);
|
|
*(.data);
|
|
*(.data.*);
|
|
*(.bss);
|
|
*(.bss.*);
|
|
*(.sbss);
|
|
*(.sbss.*);
|
|
} : to_load = 0xff
|
|
|
|
/* arm64 chipsets need to define CONFIG_BOOTBLOCK_STACK_(TOP|BOTTOM) */
|
|
_stack = CONFIG_BOOTBLOCK_STACK_BOTTOM;
|
|
_estack = CONFIG_BOOTBLOCK_STACK_TOP;
|
|
|
|
preram_cbmem_console = CONFIG_CONSOLE_PRERAM_BUFFER_BASE;
|
|
|
|
/DISCARD/ : {
|
|
*(.comment)
|
|
*(.note)
|
|
*(.comment.*)
|
|
*(.note.*)
|
|
*(.ARM.*)
|
|
}
|
|
}
|