mirror of
https://github.com/u-boot/u-boot.git
synced 2024-12-09 12:43:30 +08:00
f62fb99941
A recent gcc added a new unaligned rodata section called '.rodata.str1.1', which needs to be added the the linker script. Instead of just adding this one section, we use a wildcard ".rodata*" to get all rodata linker section gcc has now and might add in the future. However, '*(.rodata*)' by itself will result in sub-optimal section ordering. The sections will be sorted by object file, which causes extra padding between the unaligned rodata.str.1.1 of one object file and the aligned rodata of the next object file. This is easy to fix by using the SORT_BY_ALIGNMENT command. This patch has not be tested one most of the boards modified. Some boards have a linker script that looks something like this: *(.text) . = ALIGN(16); *(.rodata) *(.rodata.str1.4) *(.eh_frame) I change this to: *(.text) . = ALIGN(16); *(.eh_frame) *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) This means the start of rodata will no longer be 16 bytes aligned. However, the boundary between text and rodata/eh_frame is still aligned to 16 bytes, which is what I think the real purpose of the ALIGN call is. Signed-off-by: Trent Piepho <xyzzy@speakeasy.org> |
||
---|---|---|
.. | ||
config.mk | ||
flash.c | ||
lowlevel_init.S | ||
Makefile | ||
pb1x00.c | ||
README | ||
u-boot.lds |
By Thomas.Lange@corelatus.se 2004-Oct-05 ---------------------------------------- DbAu1xx0 are development boards from AMD containing an Alchemy AU1xx0 series cpu with mips32 core. Existing cpu:s are Au1000, Au1100, Au1500 and Au1550 Limitations & comments ---------------------- Support was originally big endian only. I have not tested, but several u-boot users report working configurations in little endian mode. I named the board dbau1x00, to allow support for all three development boards ( dbau1000, dbau1100 and dbau1500 ). Now there is a new board called dbau1550 also, which should be supported RSN. I only have a dbau1000, so my testing is limited to this board. The board has two different flash banks, that can be selected via dip switch. This makes it possible to test new bootloaders without thrashing the YAMON boot loader delivered with board. NOTE! When you switch between the two boot flashes, the base addresses will be swapped. Have this in mind when you compile u-boot. TEXT_BASE has to match the address where u-boot is located when you actually launch. Ethernet only supported for mac0. PCMCIA only supported for slot 0, only 3.3V. PCMCIA IDE tested with Sandisk Compact Flash and IBM microdrive. ################################### ######## NOTE!!!!!! ######### ################################### If you partition a disk on another system (e.g. laptop), all bytes will be swapped on 16bit level when using PCMCIA and running cpu in big endian mode!!!! This is probably due to an error in Au1000 chip. Solution: a) Boot via network and partition disk directly from dbau1x00. The endian will then be correct. b) Partition disk on "laptop" and fill it with all files you need. Then write a simple program that endian swaps whole disk, Example: Original "laptop" byte order: B0 B1 B2 B3 B4 B5 B6 B7 B8 B9... Dbau1000 byte order will then be: B1 B0 B3 B2 B5 B4 B7 B6 B9 B8...