diff options
| author | H. Peter Anvin <hpa@zytor.com> | 2010-02-15 17:47:09 -0800 |
|---|---|---|
| committer | H. Peter Anvin <hpa@zytor.com> | 2010-02-15 17:47:09 -0800 |
| commit | ead47b56aac1d327fa4788b12e53d04c3eafb198 (patch) | |
| tree | f931ed220b090f5bb36e9a7634f44d924eecbec5 /core/syslinux.ld | |
| parent | 48cb36465251f4b44797ef3bdfe446ef58e728cb (diff) | |
| download | syslinux-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.ld | 22 |
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; |
