
On Saturday 04 February 2012 22:02:45 Troy Kisky wrote:
arch/blackfin/cpu/u-boot.lds is warranted.
yes, this change will break Blackfin boards for sure
--- a/arch/blackfin/cpu/u-boot.lds +++ b/arch/blackfin/cpu/u-boot.lds
MEMORY { #if CONFIG_MEM_SIZE
- ram : ORIGIN = CONFIG_SYS_MONITOR_BASE, LENGTH = CONFIG_SYS_MONITOR_LEN
# define ram_code ram # define ram_data ram
- ram (rwx) : ORIGIN = CONFIG_SYS_MONITOR_BASE, LENGTH = CONFIG_SYS_MONITOR_LEN
- l1_code : ORIGIN = L1_CODE_ORIGIN, LENGTH = L1_INST_SRAM_SIZE
- l1_data : ORIGIN = L1_DATA_B_SRAM, LENGTH = L1_DATA_B_SRAM_SIZE
#else # define ram_code l1_code # define ram_data l1_data
- l1_code (rx) : ORIGIN = L1_CODE_ORIGIN, LENGTH = L1_INST_SRAM_SIZE
- l1_data (!rx) : ORIGIN = L1_DATA_B_SRAM, LENGTH = L1_DATA_B_SRAM_SIZE
#endif
- l1_code : ORIGIN = L1_CODE_ORIGIN, LENGTH = L1_INST_SRAM_SIZE
- l1_data : ORIGIN = L1_DATA_B_SRAM, LENGTH = L1_DATA_B_SRAM_SIZE
}
i don't understand ... why is this change necessary ?
i'm not sure the attr's are correct ... the manual says "r" is "read-only" while "w" is "read/write". so i'd expect: ram (wx) l1_code (x) l1_data (w)
- INCLUDE u-boot-common.lds
since we preprocess our linker scripts now, i'd suggest using #include rather than INCLUDE
--- /dev/null +++ b/u-boot-common.lds
- . = ALIGN(4);
- __u_boot_cmd_start = .;
- .u_boot_cmd : {
KEEP(*(.u_boot_cmd))
- }
- __u_boot_cmd_end = .;
rather than storing this in the top level dir, i'd suggest going the linux route and add a include/asm-generic/u-boot.lds.h header. then we can migrate people over time and piece by piece without having to worry about breaking everyone at once ...
that also allows us to cater to arches (like Blackfin) that have a symbol prefix (underscore in the Blackfin case). add the VMLINUX_SYMBOL() macro, and then this code will look like: VMLINUX_SYMBOL(__u_boot_cmd_end) = .; (i picked VMLINUX_SYMBOL() only because that's what Linux already has defined) -mike