The page table code had been copied mostly verbatim from the kernel, and was a dense mess. I abstraced the `page_table_indices` class and the old loop behavior of `map_in` into a new `page_entry_iterator` class, making both `map_pages` and the initial offset mapping code much cleaner. Tags: vmem paging
48 lines
658 B
Plaintext
Executable File
48 lines
658 B
Plaintext
Executable File
ENTRY(_start)
|
|
SECTIONS
|
|
{
|
|
OFFSET = 0xFFFF800000000000;
|
|
. = OFFSET + 0x100000;
|
|
|
|
.header : {
|
|
__header_start = .;
|
|
KEEP(*(.header))
|
|
__header_end = .;
|
|
}
|
|
|
|
.text ALIGN(4096) : {
|
|
*(.text)
|
|
*(.isrs)
|
|
}
|
|
|
|
.data ALIGN(4096) : {
|
|
*(.data)
|
|
*(.rodata)
|
|
}
|
|
|
|
.bss ALIGN(4096) : {
|
|
__bss_start = .;
|
|
*(.bss)
|
|
__bss_end = .;
|
|
}
|
|
|
|
.note : {
|
|
*(.note.*)
|
|
}
|
|
|
|
.eh_frame : {
|
|
__eh_frame_start = .;
|
|
KEEP(*(.eh_frame))
|
|
__eh_frame_end = .;
|
|
}
|
|
|
|
.eh_frame_hdr : {
|
|
KEEP(*(.eh_frame_hdr))
|
|
}
|
|
|
|
__eh_frame_hdr_start = SIZEOF(.eh_frame_hdr) > 0 ? ADDR(.eh_frame_hdr) : 0;
|
|
__eh_frame_hdr_end = SIZEOF(.eh_frame_hdr) > 0 ? . : 0;
|
|
|
|
kernel_end = ALIGN(4096);
|
|
}
|