| #
0ddc9c17 |
| 26-Jul-2017 |
Tom Rini <trini@konsulko.com> |
Merge git://git.denx.de/u-boot-mips
|
| #
703ec9dd |
| 19-Jun-2017 |
Paul Burton <paul.burton@imgtec.com> |
MIPS: Stop building position independent code
U-Boot has up until now built with -fpic for the MIPS architecture, producing position independent code which uses indirection through a global offset t
MIPS: Stop building position independent code
U-Boot has up until now built with -fpic for the MIPS architecture, producing position independent code which uses indirection through a global offset table, making relocation fairly straightforward as it simply involves patching up GOT entries.
Using -fpic does however have some downsides. The biggest of these is that generated code is bloated in various ways. For example, function calls are indirected through the GOT & the t9 register:
8f998064 lw t9,-32668(gp) 0320f809 jalr t9
Without -fpic the call is simply:
0f803f01 jal be00fc04 <puts>
This is more compact & faster (due to the lack of the load & the dependency the jump has on its result). It is also easier to read & debug because the disassembly shows what function is being called, rather than just an offset from gp which would then have to be looked up in the ELF to discover the target function.
Another disadvantage of -fpic is that each function begins with a sequence to calculate the value of the gp register, for example:
3c1c0004 lui gp,0x4 279c3384 addiu gp,gp,13188 0399e021 addu gp,gp,t9
Without using -fpic this sequence no longer appears at the start of each function, reducing code size considerably.
This patch switches U-Boot from building with -fpic to building with -fno-pic, in order to gain the benefits described above. The cost of this is an extra step during the build process to extract relocation data from the ELF & write it into a new .rel section in a compact format, plus the added complexity of dealing with multiple types of relocation rather than the single type that applied to the GOT. The benefit is smaller, cleaner, more debuggable code. The relocate_code() function is reimplemented in C to handle the new relocation scheme, which also makes it easier to read & debug.
Taking maltael_defconfig as an example the size of u-boot.bin built using the Codescape MIPS 2016.05-06 toolchain (gcc 4.9.2, binutils 2.24.90) shrinks from 254KiB to 224KiB.
Signed-off-by: Paul Burton <paul.burton@imgtec.com> Cc: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Cc: u-boot@lists.denx.de Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Tested-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
show more ...
|
| #
102d8655 |
| 10-May-2017 |
Tom Rini <trini@konsulko.com> |
Merge branch 'master' of git://git.denx.de/u-boot-mips
|
| #
47cf465c |
| 20-Apr-2017 |
Álvaro Fernández Rojas <noltari@gmail.com> |
MIPS: add support for generating u-boot.elf
Define PLATFORM_ELFFLAGS for MIPS in order to be able to generate u-boot.elf
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
| #
dc557e9a |
| 18-Jun-2016 |
Stefano Babic <sbabic@denx.de> |
Merge branch 'master' of git://git.denx.de/u-boot
Signed-off-by: Stefano Babic <sbabic@denx.de>
|
| #
da6e2fab |
| 31-May-2016 |
Tom Rini <trini@konsulko.com> |
Merge branch 'master' of git://git.denx.de/u-boot-mips
|
| #
07f5b966 |
| 26-May-2016 |
Daniel Schwierzeck <daniel.schwierzeck@gmail.com> |
MIPS: provide a default u-boot-spl.lds
Provide a default linker script for SPL binaries. Start address and size of text section and BSS section are configurable. All sections are arranged in a way t
MIPS: provide a default u-boot-spl.lds
Provide a default linker script for SPL binaries. Start address and size of text section and BSS section are configurable. All sections are arranged in a way that only relevant sections are kept in the code section for maximum size reduction. All other sections are kept but moved outside the code section to help with debugging.
Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Acked-by: Marek Vasut <marex@denx.de>
show more ...
|
| #
b57843e6 |
| 17-Jan-2016 |
Tom Rini <trini@konsulko.com> |
Merge branch 'master' of git://git.denx.de/u-boot-mips
|
| #
0315a289 |
| 26-Dec-2015 |
Daniel Schwierzeck <daniel.schwierzeck@gmail.com> |
MIPS: Kconfig: optimize gcc -march and -mtune setup
Move setup of -march to arch/mips/Makefile and follow the design on ARM. Also add a possibility to chose specific CPU tune options.
Signed-off-by
MIPS: Kconfig: optimize gcc -march and -mtune setup
Move setup of -march to arch/mips/Makefile and follow the design on ARM. Also add a possibility to chose specific CPU tune options.
Signed-off-by: Wills Wang <wills.wang@live.com> Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
show more ...
|
| #
0fc13a90 |
| 19-Dec-2015 |
Daniel Schwierzeck <daniel.schwierzeck@gmail.com> |
MIPS: add initial infrastructure for device-tree files
Prepare sub-folder for device-tree files. Make support for device-tree on MIPS available in Kbuild/Kconfig.
Signed-off-by: Daniel Schwierzeck
MIPS: add initial infrastructure for device-tree files
Prepare sub-folder for device-tree files. Make support for device-tree on MIPS available in Kbuild/Kconfig.
Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Signed-off-by: Purna Chandra Mandal <purna.mandal@microchip.com>
show more ...
|
| #
e92d9124 |
| 19-Dec-2015 |
Daniel Schwierzeck <daniel.schwierzeck@gmail.com> |
MIPS: do not build position-independent executables for SPL
SPL binaries are usually linked to a fixed address in SRAM. Furthermore SPL binaries do not need to relocate itself. Thus do not build the
MIPS: do not build position-independent executables for SPL
SPL binaries are usually linked to a fixed address in SRAM. Furthermore SPL binaries do not need to relocate itself. Thus do not build them as position-independent binaries which helps to largely reduce the size of SPL binaries.
Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
show more ...
|
| #
b491d975 |
| 10-Apr-2015 |
Albert ARIBAUD <albert.u.boot@aribaud.net> |
Merge branch 'u-boot/master'
|
| #
0a12e687 |
| 19-Mar-2015 |
Masahiro Yamada <yamada.masahiro@socionext.com> |
generic-board: move __HAVE_ARCH_GENERIC_BOARD to Kconfig
Move the option to Kconfig renaming it to CONFIG_HAVE_GENERIC_BOARD.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reviewed
generic-board: move __HAVE_ARCH_GENERIC_BOARD to Kconfig
Move the option to Kconfig renaming it to CONFIG_HAVE_GENERIC_BOARD.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Alexey Brodkin <abrodkin@synopsys.com>
show more ...
|
| #
46b7b2e8 |
| 03-Nov-2014 |
Tom Rini <trini@ti.com> |
Merge branch 'master' of git://git.denx.de/u-boot-mips
|
| #
265072ba |
| 29-Oct-2014 |
Daniel Schwierzeck <daniel.schwierzeck@gmail.com> |
MIPS: add .padding section to linker script
Commit 79fd7e649e287228a1445820a72f7dd33baedb96
MIPS: always keep all sections in u-boot ELF binary.
Always keep all sections in u-boot ELF bina
MIPS: add .padding section to linker script
Commit 79fd7e649e287228a1445820a72f7dd33baedb96
MIPS: always keep all sections in u-boot ELF binary.
Always keep all sections in u-boot ELF binary. Move all unneeded sections after _end to avoid allocating space in the final binary. Also remove .deadcode section which is now obsolete.
removed section .deadcode because the original symptoms were not visible anymore. Unfortuneatly the binutils bug still exists.
The size of .rel.dyn section is often bigger than needed for all entries. But objcopy only allocates space as much as required for all reloc entries. Thus there is a gap between the last entry and __rel_dyn_end in u-boot.bin. If u-boot is booted from RAM (e.g. in SPL scenarios) that area could contain garbage data which could lead to CPU exceptions during relocation.
Signed-off-by: Gabor Juhos <juhosg@openwrt.org> Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
show more ...
|
| #
837cad1e |
| 26-Oct-2014 |
Daniel Schwierzeck <daniel.schwierzeck@gmail.com> |
MIPS: refactor setting of compiler options
Refactor and unify all compiler settings in arch/mips/config.mk. Also add tune flags for each supported CPU type.
Signed-off-by: Daniel Schwierzeck <danie
MIPS: refactor setting of compiler options
Refactor and unify all compiler settings in arch/mips/config.mk. Also add tune flags for each supported CPU type.
Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
show more ...
|
| #
e82abaeb |
| 11-Aug-2014 |
Stefano Babic <sbabic@denx.de> |
Merge branch 'master' of git://git.denx.de/u-boot-arm
Conflicts: boards.cfg
Signed-off-by: Stefano Babic <sbabic@denx.de>
|
| #
90f984e3 |
| 30-Jul-2014 |
Masahiro Yamada <yamada.m@jp.panasonic.com> |
kconfig: delete redundant CONFIG_${ARCH} definition
CONFIG_${ARCH} is defined by Kconfig.
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com> Reviewed-by: Simon Glass <sjg@chromium.org>
|
| #
e7f93505 |
| 15-May-2014 |
Stefano Babic <sbabic@denx.de> |
Merge branch 'master' of git://git.denx.de/u-boot-arm
|
| #
d2a3e911 |
| 09-May-2014 |
Albert ARIBAUD <albert.u.boot@aribaud.net> |
Merge branch 'u-boot/master'
Conflicts: drivers/net/Makefile
(trivial merge)
|
| #
adcdeacc |
| 23-Apr-2014 |
Tom Rini <trini@ti.com> |
Merge branch 'master' of git://git.denx.de/u-boot-mips
|
| #
9f0868ff |
| 07-Apr-2014 |
Paul Burton <paul.burton@imgtec.com> |
MIPS: allow use of generic board
This patch allows MIPS boards to make use of generic board, replacing arch/mips/lib/board.c with common/board_{f,r}.c and struct bd_info with the asm-generic version
MIPS: allow use of generic board
This patch allows MIPS boards to make use of generic board, replacing arch/mips/lib/board.c with common/board_{f,r}.c and struct bd_info with the asm-generic version.
Signed-off-by: Paul Burton <paul.burton@imgtec.com>
show more ...
|
| #
79fd7e64 |
| 11-Oct-2013 |
Daniel Schwierzeck <daniel.schwierzeck@gmail.com> |
MIPS: always keep all sections in u-boot ELF binary.
Always keep all sections in u-boot ELF binary. Move all unneeded sections after _end to avoid allocating space in the final binary. Also remove .
MIPS: always keep all sections in u-boot ELF binary.
Always keep all sections in u-boot ELF binary. Move all unneeded sections after _end to avoid allocating space in the final binary. Also remove .deadcode section which is now obsolete.
Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
show more ...
|
| #
1cad23c5 |
| 04-Apr-2014 |
Stefano Babic <sbabic@denx.de> |
Merge branch 'master' of git://git.denx.de/u-boot-arm into master
Conflicts: arch/arm/cpu/arm926ejs/mxs/mxsimage.mx23.cfg arch/arm/cpu/arm926ejs/mxs/mxsimage.mx28.cfg
Signed-off-by: Stefano Babic
Merge branch 'master' of git://git.denx.de/u-boot-arm into master
Conflicts: arch/arm/cpu/arm926ejs/mxs/mxsimage.mx23.cfg arch/arm/cpu/arm926ejs/mxs/mxsimage.mx28.cfg
Signed-off-by: Stefano Babic <sbabic@denx.de>
show more ...
|
| #
1ad6364e |
| 05-Mar-2014 |
Stefano Babic <sbabic@denx.de> |
Merge branch 'master' of git://git.denx.de/u-boot-arm
|