Patch to rename coreboot_ram stage to ramstage. This is done in order to provide consistency with other stage names(bootblock, romstage) and to allow any Makefile rule generalization. (Required for patches to be submitted later) CQ-DEPEND=CL:195101 BUG=None BRANCH=None TEST=Compiled successfully for all boards under mainboard/google/. Image booted successfully on link board Change-Id: I3e2495fc6a5cc91695ae04ffb438dd4ac265be64 Reviewed-on: https://chromium-review.googlesource.com/195059 Tested-by: Furquan Shaikh <furquan@chromium.org> Reviewed-by: Stefan Reinauer <reinauer@chromium.org> Commit-Queue: Furquan Shaikh <furquan@chromium.org>
101 lines
2.3 KiB
Text
101 lines
2.3 KiB
Text
/*
|
|
* This linker script is used to link rmodules (relocatable modules). It
|
|
* links at zero so that relocation fixups are easy when placing the binaries
|
|
* anywhere in the address space.
|
|
*
|
|
* NOTE: The program's loadable sections (text, module_params, and data) are
|
|
* packed into the flat blob. The rmodule loader assumes the entire program
|
|
* resides in one contiguous address space. Therefore, alignment for a given
|
|
* section (if required) needs to be done at the end of the preceeding section.
|
|
* e.g. if the data section should be aligned to an 8 byte address the text
|
|
* section should have ALIGN(8) at the end of its section. Otherwise there
|
|
* won't be a consistent mapping between the flat blob and the loaded program.
|
|
*/
|
|
|
|
BASE_ADDRESS = 0x00000;
|
|
|
|
SECTIONS
|
|
{
|
|
. = BASE_ADDRESS;
|
|
|
|
.payload : {
|
|
/* C code of the module. */
|
|
_ram_seg = .;
|
|
*(.textfirst);
|
|
*(.text);
|
|
*(.text.*);
|
|
/* C read-only data. */
|
|
. = ALIGN(16);
|
|
|
|
__CTOR_LIST__ = .;
|
|
*(.ctors);
|
|
LONG(0);
|
|
__CTOR_END__ = .;
|
|
|
|
/* The driver sections are to allow linking coreboot's
|
|
* ramstage with the rmodule linker. Any changes made in
|
|
* ramstage.ld should be made here as well. */
|
|
console_drivers = .;
|
|
*(.rodata.console_drivers)
|
|
econsole_drivers = . ;
|
|
. = ALIGN(4);
|
|
pci_drivers = . ;
|
|
*(.rodata.pci_driver)
|
|
epci_drivers = . ;
|
|
cpu_drivers = . ;
|
|
*(.rodata.cpu_driver)
|
|
ecpu_drivers = . ;
|
|
_bs_init_begin = .;
|
|
*(.bs_init)
|
|
_bs_init_end = .;
|
|
|
|
. = ALIGN(4);
|
|
|
|
*(.rodata);
|
|
*(.rodata.*);
|
|
. = ALIGN(4);
|
|
|
|
/* The parameters section can be used to pass parameters
|
|
* to a module, however there has to be an prior agreement
|
|
* on how to interpret the parameters. */
|
|
_module_params_begin = .;
|
|
*(.module_parameters);
|
|
_module_params_end = .;
|
|
. = ALIGN(8);
|
|
|
|
/* Data section. */
|
|
_sdata = .;
|
|
*(.data);
|
|
*(.data.*);
|
|
. = ALIGN(4);
|
|
_edata = .;
|
|
|
|
. = ALIGN(8);
|
|
}
|
|
|
|
.bss (NOLOAD) : {
|
|
/* C uninitialized data of the module. */
|
|
_bss = .;
|
|
*(.bss);
|
|
*(.bss.*)
|
|
*(.sbss)
|
|
*(.sbss.*)
|
|
*(COMMON);
|
|
. = ALIGN(8);
|
|
_ebss = .;
|
|
|
|
/*
|
|
* Place the heap after BSS. The heap size is passed in by
|
|
* by way of ld --defsym=__heap_size=<>
|
|
*/
|
|
_heap = .;
|
|
. = . + __heap_size;
|
|
_eheap = .;
|
|
_eram_seg = .;
|
|
}
|
|
|
|
/DISCARD/ : {
|
|
/* Drop unnecessary sections. */
|
|
*(.eh_frame);
|
|
}
|
|
}
|