27 lines
807 B
ArmAsm
27 lines
807 B
ArmAsm
// 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
|
|
.align 4096
|
|
.globl data
|
|
data:
|
|
.word 1
|