- Added bitmap-based physical memory manager (PMM) that parses the Multiboot2 memory map to discover available RAM regions. - Supports two allocation zones: PMM_ZONE_DMA (below 16MB) and PMM_ZONE_NORMAL (above 16MB), with automatic fallback from NORMAL to DMA when the preferred zone is exhausted. - Marks kernel memory region and multiboot info structure as reserved using _kernel_start/_kernel_end linker symbols. - Page 0 is always marked as used to prevent returning NULL as a valid address. - Added linker script symbols (_kernel_start, _kernel_end) to track kernel memory boundaries for the allocator. - Kernel now initializes PMM after PIC and performs test allocations to verify the subsystem works.
33 lines
307 B
Plaintext
33 lines
307 B
Plaintext
ENTRY(_start)
|
|
|
|
SECTIONS
|
|
{
|
|
. = 1M;
|
|
|
|
_kernel_start = .;
|
|
|
|
.text BLOCK(4K) : ALIGN(4K)
|
|
{
|
|
KEEP(*(.multiboot))
|
|
*(.text)
|
|
}
|
|
|
|
.rodata BLOCK(4K) : ALIGN(4K)
|
|
{
|
|
*(.rodata)
|
|
}
|
|
|
|
.data BLOCK(4K) : ALIGN(4K)
|
|
{
|
|
*(.data)
|
|
}
|
|
|
|
.bss BLOCK(4K) : ALIGN(4K)
|
|
{
|
|
*(COMMON)
|
|
*(.bss)
|
|
}
|
|
|
|
_kernel_end = .;
|
|
}
|