diff options
author | kswaroop <krathmar@in.ibm.com> | 2019-01-31 03:27:56 -0600 |
---|---|---|
committer | RAJA DAS <rajadas2@in.ibm.com> | 2019-02-21 22:39:50 -0600 |
commit | 81c84876585779e9c0d7484cca9e61e5351ed872 (patch) | |
tree | 74a3e07ad7c4aed91a87479b2f30b29b5955dbb3 /src/build/linkerscripts/power_axone | |
parent | 4529a95e14de37b40ece0c1c0b3894a5bdbf6f58 (diff) | |
download | talos-sbe-81c84876585779e9c0d7484cca9e61e5351ed872.tar.gz talos-sbe-81c84876585779e9c0d7484cca9e61e5351ed872.zip |
PIBMEM only image
pibmem only image can be built for axone with the following command.
'make axone img=pibmem'
Change-Id: I2daa352c54aa7ca5483f0c9f43b5a5de2d2bb115
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/71130
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: RAJA DAS <rajadas2@in.ibm.com>
Diffstat (limited to 'src/build/linkerscripts/power_axone')
-rw-r--r-- | src/build/linkerscripts/power_axone/linksbe.cmd | 103 | ||||
-rw-r--r-- | src/build/linkerscripts/power_axone/linkseeprom.cmd | 78 |
2 files changed, 58 insertions, 123 deletions
diff --git a/src/build/linkerscripts/power_axone/linksbe.cmd b/src/build/linkerscripts/power_axone/linksbe.cmd deleted file mode 100644 index 8efb0fee..00000000 --- a/src/build/linkerscripts/power_axone/linksbe.cmd +++ /dev/null @@ -1,103 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/build/linkerscripts/power_axone/linksbe.cmd $ */ -/* */ -/* OpenPOWER sbe Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2019 */ -/* */ -/* */ -/* Licensed under the Apache License, Version 2.0 (the "License"); */ -/* you may not use this file except in compliance with the License. */ -/* You may obtain a copy of the License at */ -/* */ -/* http://www.apache.org/licenses/LICENSE-2.0 */ -/* */ -/* Unless required by applicable law or agreed to in writing, software */ -/* distributed under the License is distributed on an "AS IS" BASIS, */ -/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ -/* implied. See the License for the specific language governing */ -/* permissions and limitations under the License. */ -/* */ -/* IBM_PROLOG_END_TAG */ -// Need to do this so that elf32-powerpc is not modified! -#undef powerpc - -#ifndef INITIAL_STACK_SIZE -#define INITIAL_STACK_SIZE 256 -#endif -#include "sbe_link.H" - -OUTPUT_FORMAT(elf32-powerpc); - -MEMORY -{ - pibmem : ORIGIN = SBE_BASE_ORIGIN, LENGTH = SBE_BASE_LENGTH -} - -SECTIONS -{ - . = SBE_BASE_ORIGIN; - - .vectors : {. = ALIGN(512); *(.vectors)} > pibmem - .fixed . : {. = ALIGN(512); *(.fixed) } > pibmem - .text . : {. = ALIGN(512); *(.text)} > pibmem - - //////////////////////////////// - // Read-only Data - //////////////////////////////// - - . = ALIGN(8); - _RODATA_SECTION_BASE = .; - - // SDA2 constant sections .sdata2 and .sbss2 must be adjacent to each - // other. Our SDATA sections are small so we'll use strictly positive - // offsets. - - _SDA2_BASE_ = .; - .sdata2 . : { *(.sdata2*) } > pibmem - .sbss2 . : { *(.sbss2*) } > pibmem - - // Other read-only data. - - . = ALIGN(8); - .rodata . : { ctor_start_address = .; - *(.ctors) *(.ctors.*) - ctor_end_address = .; - *(rodata*) *(.got2) } > pibmem - - _RODATA_SECTION_SIZE = . - _RODATA_SECTION_BASE; - - //////////////////////////////// - // Read-write Data - //////////////////////////////// - - . = ALIGN(8); - _DATA_SECTION_BASE = .; - - // SDA sections .sdata and .sbss must be adjacent to each - // other. Our SDATA sections are small so we'll use strictly positive - // offsets. - - _SDA_BASE_ = .; - .sdata . : { *(.sdata*) } > pibmem - _sbss_start = .; - .sbss . : { *(.sbss*) } > pibmem - _sbss_end = .; - - // Other read-write data - // It's not clear why boot.S is generating empty .glink,.iplt - - .rela . : { *(.rela*) } > pibmem - .rwdata . : { *(.data*) *(.bss*) } > pibmem - - . = ALIGN(8); - _PK_INITIAL_STACK_LIMIT = .; - . = . + INITIAL_STACK_SIZE; - _PK_INITIAL_STACK = . - 1; - - . = ALIGN(8); - _sbe_end = . - 0; - -} diff --git a/src/build/linkerscripts/power_axone/linkseeprom.cmd b/src/build/linkerscripts/power_axone/linkseeprom.cmd index 73fe74ab..3edc47e1 100644 --- a/src/build/linkerscripts/power_axone/linkseeprom.cmd +++ b/src/build/linkerscripts/power_axone/linkseeprom.cmd @@ -5,7 +5,7 @@ /* */ /* OpenPOWER sbe Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2018 */ +/* Contributors Listed Below - COPYRIGHT 2015,2019 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -34,12 +34,27 @@ OUTPUT_FORMAT(elf32-powerpc); MEMORY { pibmem : ORIGIN = SBE_BASE_ORIGIN, LENGTH = SBE_BASE_LENGTH + #ifndef PIBMEM_ONLY_IMAGE seeprom : ORIGIN = SBE_SEEPROM_BASE_ORIGIN, LENGTH = 0x40000 + #endif } +//MEMORY_REGION is a substitute constant used for pibmem or seeprom. Its value +//would be pibmem for pibmem_only image. Else it would be seeprom. + +#ifdef PIBMEM_ONLY_IMAGE +//Everything should get in to pibmem +#define MEMORY_REGION pibmem +BASE_ORIGIN = SBE_BASE_ORIGIN; + +#else +#define MEMORY_REGION seeprom +BASE_ORIGIN = SBE_SEEPROM_BASE_ORIGIN; +#endif + SECTIONS { - . = SBE_SEEPROM_BASE_ORIGIN; + . = BASE_ORIGIN; _sbe_image_start_addr = . + SIZEOF_HEADERS; // TODO via RTC 149153 @@ -51,16 +66,23 @@ SECTIONS // Get the image offset after elf header _sbe_image_start_offset = _sbe_image_start_addr - .; - _seeprom_origin = . - 0; + _origin = . - 0; _pibmem_origin = SBE_BASE_ORIGIN; //////////////////////////////// // Header //////////////////////////////// .header : { - _header_origin = .; _header_offset = . - _seeprom_origin; KEEP(*(.header)); - } > seeprom + _header_origin = .; _header_offset = . - _origin; KEEP(*(.header)); + } > MEMORY_REGION _header_size = . - _header_origin; + + #ifdef PIBMEM_ONLY_IMAGE + //pkVector should be at top of pibmem memory after XIP header. + .pkVectors ALIGN(0x200) : { + *(.vectors) + } > pibmem + #endif // @TODO via RTC 136215 // We have used allignment 0x200 so that it can be found @@ -71,15 +93,18 @@ SECTIONS // LOADER_TEXT //////////////////////////////// .loader_text ALIGN(0x200): { - _loader_text_origin = .; _loader_text_offset = . - _seeprom_origin; + _loader_text_origin = .; _loader_text_offset = . - _origin; + //Loader text should not be loaded for pibmem only image + #ifndef PIBMEM_ONLY_IMAGE KEEP(*(.loader_text)); - } > seeprom + #endif + } > MEMORY_REGION _loader_text_size = . - _loader_text_origin; // @TODO via RTC 136215 // loader_text section should come after fixed and related // sections as we want fixed section at knowon offset. Currently we - // have shared SEEPROM start address ( IVPR register value ) with + // have shared MEMORY_REGION start address ( IVPR register value ) with // multiple teams. So keeping loader_text as first section. Once // WE have otprom loader support, we will put loader_text at right // position @@ -88,44 +113,47 @@ SECTIONS // FIXED //////////////////////////////// .fixed ALIGN(0x200) : { - _fixed_origin = .; _fixed_offset = . - _seeprom_origin; + _fixed_origin = .; _fixed_offset = . - _origin; KEEP(*(.fixed)) - } > seeprom + } > MEMORY_REGION _fixed_size = . - _fixed_origin; //////////////////////////////// // text //////////////////////////////// .text ALIGN(8): { - _text_origin = .; _text_offset = . - _seeprom_origin; - } > seeprom + _text_origin = .; _text_offset = . - _origin; + } > MEMORY_REGION _text_size = . - _text_origin; //////////////////////////////// // FIXED_TOC //////////////////////////////// .fixed_toc ALIGN(8) : { - _fixed_toc_origin = .; _fixed_toc_offset = . - _seeprom_origin; KEEP(*(.fixed_toc)); - } > seeprom + _fixed_toc_origin = .; _fixed_toc_offset = . - _origin; KEEP(*(.fixed_toc)); + } > MEMORY_REGION _fixed_toc_size = . - _fixed_toc_origin; //////////////////////////////// // TOC //////////////////////////////// .toc ALIGN(4): { - _toc_origin = .; _toc_offset = . - _seeprom_origin; KEEP(*(.toc)); - } > seeprom + _toc_origin = .; _toc_offset = . - _origin; KEEP(*(.toc)); + } > MEMORY_REGION _toc_size = . - _toc_origin; //////////////////////////////// // STRING //////////////////////////////// .strings : { - _strings_origin = .; _strings_offset = . - _seeprom_origin; KEEP(*(.strings)); - } > seeprom + _strings_origin = .; _strings_offset = . - _origin; KEEP(*(.strings)); + } > MEMORY_REGION _strings_size = . - _strings_origin; - _seeprom_size = . - _seeprom_origin; + //No need to calculate seeprom size, if pibmem only image is being built + #ifndef PIBMEM_ONLY_IMAGE + _seeprom_origin = _origin; + _seeprom_size = . - _origin; // TODO via RTC 149153 // It seems when we jump across memory region, elf creates 32 byte offset. @@ -136,12 +164,22 @@ SECTIONS . = _pibmem_origin; + + #else + _seeprom_size = 0; + . = ALIGN(4); + #endif + _base_origin = .; _base_offset = . - _base_origin + _seeprom_size; + //We are at the beginning of the pibmem memory if seeprom image is being + //built. So add .pkVector section here. + #ifndef PIBMEM_ONLY_IMAGE .pkVectors ALIGN(32) : { *(.vectors) } > pibmem + #endif .base . : { *(.text*) *(.eh_frame) *(.dtors*); @@ -176,7 +214,7 @@ SECTIONS .sdata . : { *(.sdata*) } > pibmem . = ALIGN(8); - // We do not want to store bss section in sbe image as laoder will take + // We do not want to store bss section in sbe image as loader will take // care of it while loading image on PIBMEM. It will save us space in // SEEPROM. So define XIP image related variables here so that SBE image // finishes here. |