summaryrefslogtreecommitdiffstats
path: root/src/build/linkerscripts/power_axone
diff options
context:
space:
mode:
authorkswaroop <krathmar@in.ibm.com>2019-01-31 03:27:56 -0600
committerRAJA DAS <rajadas2@in.ibm.com>2019-02-21 22:39:50 -0600
commit81c84876585779e9c0d7484cca9e61e5351ed872 (patch)
tree74a3e07ad7c4aed91a87479b2f30b29b5955dbb3 /src/build/linkerscripts/power_axone
parent4529a95e14de37b40ece0c1c0b3894a5bdbf6f58 (diff)
downloadtalos-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.cmd103
-rw-r--r--src/build/linkerscripts/power_axone/linkseeprom.cmd78
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.
OpenPOWER on IntegriCloud