Restructuring paging into an object that carries its page cache with it and makes for simpler code. Program loading is also changed to not copy the pages loaded from the file into new pages - we can impose a new constraint that anything loaded by boot have a simple, page-aligned layout so that we can just map the existing pages into the right addresses. Also included are some linker script changes to help accommodate this.
44 lines
562 B
Plaintext
44 lines
562 B
Plaintext
PHDRS
|
|
{
|
|
rodata PT_LOAD PHDRS FILEHDR FLAGS (4) /* read-only */;
|
|
text PT_LOAD ;
|
|
rwdata PT_LOAD ;
|
|
bss PT_LOAD ;
|
|
}
|
|
|
|
SECTIONS
|
|
{
|
|
. = 0x20000000 + SIZEOF_HEADERS ;
|
|
|
|
.rodata : {
|
|
*(.rodata*)
|
|
} :rodata
|
|
|
|
.text ALIGN(4K) : {
|
|
*(.text*)
|
|
} :text
|
|
|
|
.data ALIGN(4K) : {
|
|
*(.data*)
|
|
} :rwdata
|
|
|
|
.init_array : {
|
|
*(.init_array*)
|
|
} :rwdata
|
|
|
|
.got : {
|
|
*(.got*)
|
|
} :rwdata
|
|
|
|
.bss ALIGN(4K) : {
|
|
__bss_start = .;
|
|
*(.bss*)
|
|
__bss_end = .;
|
|
} :bss
|
|
|
|
/DISCARD/ : {
|
|
*(.gcc_except_table*)
|
|
*(.eh_frame*)
|
|
}
|
|
}
|