mirror of
https://github.com/RGBCube/serenity
synced 2025-05-18 14:35:07 +00:00

There's no real value in separating physical pages to supervisor and user types, so let's remove the concept and just let everyone to use "user" physical pages which can be allocated from any PhysicalRegion we want to use. Later on, we will remove the "user" prefix as this prefix is not needed anymore.
106 lines
2.2 KiB
Text
106 lines
2.2 KiB
Text
#include <AK/Platform.h>
|
|
|
|
ENTRY(init)
|
|
|
|
#define PF_X 0x1
|
|
#define PF_W 0x2
|
|
#define PF_R 0x4
|
|
|
|
PHDRS
|
|
{
|
|
elf_headers PT_LOAD FILEHDR PHDRS FLAGS(PF_R) ;
|
|
text PT_LOAD FLAGS(PF_R | PF_X) ;
|
|
data PT_LOAD FLAGS(PF_R | PF_W) ;
|
|
bss PT_LOAD FLAGS(PF_R | PF_W) ;
|
|
dynamic_segment PT_LOAD FLAGS(PF_R | PF_W) ;
|
|
dynamic PT_DYNAMIC FLAGS(PF_R | PF_W) ;
|
|
ksyms PT_LOAD FLAGS(PF_R) ;
|
|
}
|
|
|
|
SECTIONS
|
|
{
|
|
start_of_kernel_image = .;
|
|
|
|
.elf_headers (SIZEOF_HEADERS) : AT (ADDR(.elf_headers) + SIZEOF_HEADERS)
|
|
{
|
|
start_of_elf_headers = .;
|
|
} :elf_headers
|
|
|
|
.text ALIGN(4K) : AT (ADDR(.text))
|
|
{
|
|
start_of_kernel_text = .;
|
|
|
|
start_of_safemem_text = .;
|
|
KEEP(*(.text.safemem))
|
|
end_of_safemem_text = .;
|
|
start_of_safemem_atomic_text = .;
|
|
KEEP(*(.text.safemem.atomic))
|
|
end_of_safemem_atomic_text = .;
|
|
|
|
*(.text*)
|
|
} :text
|
|
|
|
.unmap_after_init ALIGN(4K) : AT (ADDR(.unmap_after_init))
|
|
{
|
|
start_of_unmap_after_init = .;
|
|
*(.unmap_after_init*);
|
|
end_of_unmap_after_init = .;
|
|
|
|
end_of_kernel_text = .;
|
|
} :text
|
|
|
|
.rodata ALIGN(4K) : AT (ADDR(.rodata))
|
|
{
|
|
start_heap_ctors = .;
|
|
*libkernel_heap.a:*(.ctors)
|
|
*libkernel_heap.a:*(.init_array)
|
|
end_heap_ctors = .;
|
|
|
|
start_ctors = .;
|
|
*(.ctors)
|
|
*(.init_array)
|
|
end_ctors = .;
|
|
|
|
*(.rodata*)
|
|
} :data
|
|
|
|
.data ALIGN(4K) : AT (ADDR(.data))
|
|
{
|
|
start_of_kernel_data = .;
|
|
*(.data*)
|
|
end_of_kernel_data = .;
|
|
} :data
|
|
|
|
.ro_after_init ALIGN(4K) (NOLOAD) : AT(ADDR(.ro_after_init))
|
|
{
|
|
start_of_ro_after_init = .;
|
|
*(.ro_after_init);
|
|
end_of_ro_after_init = .;
|
|
} :data
|
|
|
|
.bss ALIGN(4K) (NOLOAD) : AT (ADDR(.bss))
|
|
{
|
|
start_of_kernel_bss = .;
|
|
*(page_tables)
|
|
*(COMMON)
|
|
*(.bss*)
|
|
end_of_kernel_bss = .;
|
|
|
|
. = ALIGN(4K);
|
|
*(.heap)
|
|
} :bss
|
|
|
|
.dynamic ALIGN(4K) : AT (ADDR(.dynamic))
|
|
{
|
|
*(.dynamic)
|
|
} :dynamic_segment :dynamic
|
|
|
|
.ksyms ALIGN(4K) : AT (ADDR(.ksyms))
|
|
{
|
|
start_of_kernel_ksyms = .;
|
|
*(.kernel_symbols)
|
|
end_of_kernel_ksyms = .;
|
|
} :ksyms
|
|
|
|
end_of_kernel_image = .;
|
|
}
|