diff options
author | Russ Cox <[email protected]> | 2011-02-19 21:17:55 -0500 |
---|---|---|
committer | Russ Cox <[email protected]> | 2011-02-19 21:17:55 -0500 |
commit | cf4b1ad90bcaeeb0c8458098c87948f61d408f94 (patch) | |
tree | b6385b1d72af5a3e634b94b318fb7e43644493af /data.S | |
parent | 9c4fe7ba105c0430c90179fd1e93c3d439a8cbd5 (diff) | |
download | xv6-labs-cf4b1ad90bcaeeb0c8458098c87948f61d408f94.tar.gz xv6-labs-cf4b1ad90bcaeeb0c8458098c87948f61d408f94.tar.bz2 xv6-labs-cf4b1ad90bcaeeb0c8458098c87948f61d408f94.zip |
xv6: formatting, cleanup, rev5 (take 2)
Diffstat (limited to 'data.S')
-rw-r--r-- | data.S | 23 |
1 files changed, 21 insertions, 2 deletions
@@ -1,5 +1,24 @@ -# Define "data" symbol to mark beginning of data segment. -# Must be linked before any other data on ld command line. +// The kernel layout is: +// +// text +// rodata +// data +// bss +// +// Conventionally, Unix linkers provide pseudo-symbols +// etext, edata, and end, at the end of the text, data, and bss. +// For the kernel mapping, we need the address at the beginning +// of the data section, but that's not one of the conventional +// symbols, because the convention started before there was a +// read-only rodata section between text and data. +// +// To get the address of the data section, we define a symbol +// named data and make sure this is the first object passed to +// the linker, so that it will be the first symbol in the data section. +// +// Alternative approaches would be to parse our own ELF header +// or to write a linker script, but this is simplest. + .data .globl data data: |