mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-29 08:01:08 +00:00
x86: Factor out common values in the link script
Define the reset base in config.mk so that it does not need to be calculated twice in the link script. Also tidy up the START_16 and RESET_VEC_LOC values to fit with this new approach. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
091c494353
commit
a6a957849a
2 changed files with 12 additions and 7 deletions
|
@ -12,5 +12,6 @@ PLATFORM_CPPFLAGS += -D__I386__ -Werror
|
||||||
# DO NOT MODIFY THE FOLLOWING UNLESS YOU REALLY KNOW WHAT YOU ARE DOING!
|
# DO NOT MODIFY THE FOLLOWING UNLESS YOU REALLY KNOW WHAT YOU ARE DOING!
|
||||||
LDPPFLAGS += -DRESET_SEG_START=0xffff0000
|
LDPPFLAGS += -DRESET_SEG_START=0xffff0000
|
||||||
LDPPFLAGS += -DRESET_SEG_SIZE=0x10000
|
LDPPFLAGS += -DRESET_SEG_SIZE=0x10000
|
||||||
LDPPFLAGS += -DRESET_VEC_LOC=0xfff0
|
LDPPFLAGS += -DRESET_VEC_LOC=0xfffffff0
|
||||||
LDPPFLAGS += -DSTART_16=0xf800
|
LDPPFLAGS += -DSTART_16=$(CONFIG_SYS_X86_START16)
|
||||||
|
LDPPFLAGS += -DRESET_BASE="CONFIG_SYS_TEXT_BASE + (CONFIG_SYS_MONITOR_LEN - RESET_SEG_SIZE)"
|
||||||
|
|
|
@ -66,15 +66,19 @@ SECTIONS
|
||||||
/DISCARD/ : { *(.gnu*) }
|
/DISCARD/ : { *(.gnu*) }
|
||||||
|
|
||||||
#ifdef CONFIG_X86_RESET_VECTOR
|
#ifdef CONFIG_X86_RESET_VECTOR
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following expressions place the 16-bit Real-Mode code and
|
* The following expressions place the 16-bit Real-Mode code and
|
||||||
* Reset Vector at the end of the Flash ROM
|
* Reset Vector at the end of the Flash ROM
|
||||||
*/
|
*/
|
||||||
. = START_16;
|
. = START_16 - RESET_SEG_START;
|
||||||
.start16 : AT (CONFIG_SYS_TEXT_BASE + (CONFIG_SYS_MONITOR_LEN - RESET_SEG_SIZE + START_16)) { KEEP(*(.start16)); }
|
.start16 : AT (START_16) {
|
||||||
|
KEEP(*(.start16));
|
||||||
|
}
|
||||||
|
|
||||||
. = RESET_VEC_LOC;
|
. = RESET_VEC_LOC - RESET_SEG_START;
|
||||||
.resetvec : AT (CONFIG_SYS_TEXT_BASE + (CONFIG_SYS_MONITOR_LEN - RESET_SEG_SIZE + RESET_VEC_LOC)) { KEEP(*(.resetvec)); }
|
.resetvec : AT (RESET_VEC_LOC) {
|
||||||
|
KEEP(*(.resetvec));
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue