summaryrefslogtreecommitdiff
path: root/core/syslinux.ld
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2010-02-15 17:47:09 -0800
committerH. Peter Anvin <hpa@zytor.com>2010-02-15 17:47:09 -0800
commitead47b56aac1d327fa4788b12e53d04c3eafb198 (patch)
treef931ed220b090f5bb36e9a7634f44d924eecbec5 /core/syslinux.ld
parent48cb36465251f4b44797ef3bdfe446ef58e728cb (diff)
downloadsyslinux-ead47b56aac1d327fa4788b12e53d04c3eafb198.tar.gz
core: separate bcopyxx code and data; use linker-generated symbols
Separate out bcopyxx code and data, and use linker-generated barrier symbols instead of inline label hacks. This makes it possible to link code into the bcopyxx area if need be. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'core/syslinux.ld')
-rw-r--r--core/syslinux.ld22
1 files changed, 18 insertions, 4 deletions
diff --git a/core/syslinux.ld b/core/syslinux.ld
index 0c709a07..df7242e3 100644
--- a/core/syslinux.ld
+++ b/core/syslinux.ld
@@ -125,12 +125,26 @@ SECTIONS
__textnr_dwords = (__textnr_len + 3) >> 2;
. = ALIGN(16);
- .bcopyxx : {
+ __bcopyxx_start = .;
+
+ .bcopyxx.text : {
FILL(0x90909090)
- __bcopyxx_start = .;
- *(.bcopyxx)
- __bcopyxx_end = .;
+ __bcopyxx_text_start = .;
+ *(.bcopyxx.text)
+ __bcopyxx_text_end = .;
+ }
+ __bcopyxx_text_len = __bcopyxx_text_end - __bcopyxx_text_start;
+ __bcopyxx_text_dwords = (__bcopyxx_text_len + 3) >> 2;
+
+ .bcopyxx.data : {
+ __bcopyxx_data_start = .;
+ *(.bcopyxx.text)
+ __bcopyxx_data_end = .;
}
+ __bcopyxx_data_len = __bcopyxx_data_end - __bcopyxx_data_start;
+ __bcopyxx_data_dwords = (__bcopyxx_data_len + 3) >> 2;
+
+ __bcopyxx_end = .;
__bcopyxx_len = __bcopyxx_end - __bcopyxx_start;
__bcopyxx_dwords = (__bcopyxx_len + 3) >> 2;