arm64: Set 16 byte alignment and ramstage start address

To align with arm use the RAMSTAGE_BASE Kconfig option
for start of ramstage. Also, use 16-byte alignment for the
start and end of the sections. 4 bytes were previously used, but
it definitely seems more appropriate to at least have the heap
handing out 16-byte aligned pointers.

BUG=chrome-os-partner:29923
BRANCH=None
TEST=Built and booted through attempting to load payload

Original-Change-Id: I39329055696ae21a9ed1d9a64769981ab4dcdddd
Original-Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/207432
Original-Reviewed-by: Furquan Shaikh <furquan@chromium.org>
(cherry picked from commit 6291f3bed705154743be78a881a26dfc9d041c5e)
Signed-off-by: Marc Jones <marc.jones@se-eng.com>

Change-Id: Ic280b4c6435c4f8e0e783fe5bd4694832ce9b550
Reviewed-on: http://review.coreboot.org/8588
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
Aaron Durbin 2014-07-10 17:04:25 -05:00 committed by Marc Jones
parent 00263d0d8e
commit bc772c3f3d
1 changed files with 12 additions and 11 deletions

View File

@ -32,7 +32,7 @@ PHDRS
SECTIONS SECTIONS
{ {
. = CONFIG_SYS_SDRAM_BASE; . = CONFIG_RAMSTAGE_BASE;
/* First we place the code and read only data (typically const declared). /* First we place the code and read only data (typically const declared).
* This could theoretically be placed in rom. * This could theoretically be placed in rom.
*/ */
@ -56,11 +56,11 @@ SECTIONS
.rodata : { .rodata : {
_rodata = .; _rodata = .;
. = ALIGN(4); . = ALIGN(16);
console_drivers = .; console_drivers = .;
KEEP(*(.rodata.console_drivers)); KEEP(*(.rodata.console_drivers));
econsole_drivers = . ; econsole_drivers = . ;
. = ALIGN(4); . = ALIGN(16);
pci_drivers = . ; pci_drivers = . ;
KEEP(*(.rodata.pci_driver)); KEEP(*(.rodata.pci_driver));
epci_drivers = . ; epci_drivers = . ;
@ -75,7 +75,7 @@ SECTIONS
/* kevinh/Ispiri - Added an align, because the objcopy tool /* kevinh/Ispiri - Added an align, because the objcopy tool
* incorrectly converts sections that are not long word aligned. * incorrectly converts sections that are not long word aligned.
*/ */
. = ALIGN(4); . = ALIGN(16);
_erodata = .; _erodata = .;
} }
@ -100,6 +100,7 @@ SECTIONS
*(.bss) *(.bss)
*(.sbss) *(.sbss)
*(COMMON) *(COMMON)
. = ALIGN(16);
} }
_ebss = .; _ebss = .;
_end = .; _end = .;
@ -112,7 +113,7 @@ SECTIONS
.heap . : { .heap . : {
/* Reserve CONFIG_HEAP_SIZE bytes for the heap */ /* Reserve CONFIG_HEAP_SIZE bytes for the heap */
. = CONFIG_HEAP_SIZE ; . = CONFIG_HEAP_SIZE ;
. = ALIGN(4); . = ALIGN(16);
} }
_eheap = .; _eheap = .;