mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-11 13:56:30 +00:00
ef123c5253
Refactor linker-generated array code so that symbols which were previously linker-generated are now compiler- generated. This causes relocation records of type R_ARM_ABS32 to become R_ARM_RELATIVE, which makes code which uses LGA able to run before relocation as well as after. Note: this affects more than ARM targets, as linker- lists span possibly all target architectures, notably PowerPC. Conflicts: arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds arch/arm/cpu/armv7/omap-common/u-boot-spl.lds board/ait/cam_enc_4xx/u-boot-spl.lds board/davinci/da8xxevm/u-boot-spl-da850evm.lds board/davinci/da8xxevm/u-boot-spl-hawk.lds board/vpac270/u-boot-spl.lds Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
36 lines
1.3 KiB
Text
36 lines
1.3 KiB
Text
|
|
Commands are added to U-Boot by creating a new command structure.
|
|
This is done by first including command.h, then using the U_BOOT_CMD() macro
|
|
to fill in a cmd_tbl_t struct.
|
|
|
|
U_BOOT_CMD(name,maxargs,repeatable,command,"usage","help")
|
|
|
|
name: is the name of the commad. THIS IS NOT a string.
|
|
maxargs: the maximum number of arguments this function takes
|
|
repeatable: either 0 or 1 to indicate if autorepeat is allowed
|
|
command: Function pointer (*cmd)(struct cmd_tbl_s *, int, int, char *[]);
|
|
usage: Short description. This is a string
|
|
help: Long description. This is a string
|
|
|
|
|
|
**** Behind the scene ******
|
|
|
|
The structure created is named with a special prefix and placed by
|
|
the linker in a special section using the linker lists mechanism
|
|
(see include/linker_lists.h)
|
|
|
|
This makes it possible for the final link to extract all commands
|
|
compiled into any object code and construct a static array so the
|
|
command array can be iterated over using the linker lists macros.
|
|
|
|
The linker lists feature ensures that the linker does not discard
|
|
these symbols when linking full U-Boot even though they are not
|
|
referenced in the source code as such.
|
|
|
|
If a new board is defined do not forget to define the command section
|
|
by writing in u-boot.lds ($(TOPDIR)/board/boardname/u-boot.lds) these
|
|
3 lines:
|
|
|
|
.u_boot_list : {
|
|
KEEP(*(SORT(.u_boot_list*)));
|
|
}
|