diff options
author | Dean Sanner <dsanner@us.ibm.com> | 2019-06-17 07:14:35 -0500 |
---|---|---|
committer | William G Hoffa <wghoffa@us.ibm.com> | 2019-10-03 10:55:14 -0500 |
commit | c4e7bcba07ccefc7f8094172def49a7e2a2cedcc (patch) | |
tree | be05692eff8ea2b49258e22e2b3ab22c0ca1c007 /src/build | |
parent | ae388288d7cf86e7cc3c0370b6d0ca3aa1d9e9a3 (diff) | |
download | talos-hostboot-c4e7bcba07ccefc7f8094172def49a7e2a2cedcc.tar.gz talos-hostboot-c4e7bcba07ccefc7f8094172def49a7e2a2cedcc.zip |
Compile Hostboot with -Os
Hostboot currently spends a significant percentage of
time loading data from PNOR across a relatively slow LPC
bus. This commit enables compilation of Hostboot with
-Os, optimized for space to reduce the amount of data required
to be transferred across the LPC bus
Rough measurements show a ~30% size reduction of the hostboot
image and a ~10% reduction (improvement) in boot time
Change-Id: Ib73863019595a24cc7d10e924bc5c92cd64af1ed
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/84436
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: William G Hoffa <wghoffa@us.ibm.com>
Diffstat (limited to 'src/build')
-rw-r--r-- | src/build/linker/linker.C | 16 | ||||
-rw-r--r-- | src/build/mkrules/cflags.env.mk | 2 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/build/linker/linker.C b/src/build/linker/linker.C index e5e53ad8a..ba498d8a9 100644 --- a/src/build/linker/linker.C +++ b/src/build/linker/linker.C @@ -123,6 +123,7 @@ struct Object string name; //!< full path name of file bfd* image; //!< bfd image of object Section text; //!< text section of binary + Section sfpr; //!< sfpr section of binary Section rodata; //!< rodata section of binary Section data; //!< data section of binary map<string, Symbol> symbols; //!< symbol map @@ -594,6 +595,11 @@ bool Object::read_object(const char* i_file) { s = &this->text; } + else if (string(".sfpr") == + bfd_get_section_name(image, image_section)) + { + s = &this->sfpr; + } else if (string(".rodata") == bfd_get_section_name(image, image_section)) { @@ -648,6 +654,16 @@ bool Object::write_object() cout << strerror(error) << endl; } + // Output sfpr section. + fseek(iv_output, offset + sfpr.vma_offset, SEEK_SET); + if ((0 != sfpr.size) && + (sfpr.size != fwrite(sfpr.data, 1, sfpr.size, iv_output))) + { + int error = errno; + cout << "Error writing to output for sfpr." << endl; + cout << strerror(error) << endl; + } + // Output RODATA section. fseek(iv_output, offset + rodata.vma_offset, SEEK_SET); if ((0 != rodata.size) && diff --git a/src/build/mkrules/cflags.env.mk b/src/build/mkrules/cflags.env.mk index 04ff6fedd..e1d36c190 100644 --- a/src/build/mkrules/cflags.env.mk +++ b/src/build/mkrules/cflags.env.mk @@ -28,7 +28,7 @@ # Description: # Configuration of the compiler, linker, etc. flags. -OPT_LEVEL ?= -O3 +OPT_LEVEL ?= -Os ifdef MODULE COMMONFLAGS += -fPIC -Bsymbolic -Bsymbolic-functions |