mark unavailable
This commit is contained in:
@@ -4,9 +4,20 @@
|
|||||||
#include "../debug/output.h"
|
#include "../debug/output.h"
|
||||||
|
|
||||||
#include "../memory/config.h"
|
#include "../memory/config.h"
|
||||||
|
#include "../arch/lapic.h"
|
||||||
|
#include "../arch/apic.h"
|
||||||
|
|
||||||
uint8_t PageFrameAllocator::bitmap[4294967296 / 4096 / 8];
|
uint8_t PageFrameAllocator::bitmap[4294967296 / 4096 / 8];
|
||||||
|
|
||||||
|
void mark_unavailable(uintptr_t start, uintptr_t end){
|
||||||
|
DBG << "start: " << hex << start << " end: " << end << endl;
|
||||||
|
|
||||||
|
for(uint64_t i = start; i < end; i += 4096){
|
||||||
|
uint64_t pg = i/4096;
|
||||||
|
PageFrameAllocator::bitmap[pg/8] &= ~(1 << pg%8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void PageFrameAllocator::init(){
|
void PageFrameAllocator::init(){
|
||||||
Multiboot::Memory* memory_map_entry = Multiboot::getMemoryMap();
|
Multiboot::Memory* memory_map_entry = Multiboot::getMemoryMap();
|
||||||
|
|
||||||
@@ -29,17 +40,17 @@ void PageFrameAllocator::init(){
|
|||||||
memory_map_entry = memory_map_entry->getNext();
|
memory_map_entry = memory_map_entry->getNext();
|
||||||
}
|
}
|
||||||
|
|
||||||
// kernel image
|
DBG << "kernel image ";
|
||||||
for(uint64_t i = (uint64_t)&___KERNEL_START___; i < (uint64_t)&___KERNEL_END___; i += 4096){
|
mark_unavailable((uintptr_t)&___KERNEL_START___, (uintptr_t)&___KERNEL_END___);
|
||||||
uint64_t pg = i/4096;
|
|
||||||
bitmap[pg/8] &= ~(1 << pg%8);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ISA adresses
|
DBG << "ISA adresses ";
|
||||||
for(uint64_t i = (uint64_t)0x00F00000; i < (uint64_t)0x00FFFFFF; i += 4096){
|
mark_unavailable(0x00F00000, 0x00FFFFFF);
|
||||||
uint64_t pg = i/4096;
|
|
||||||
bitmap[pg/8] &= ~(1 << pg%8);
|
DBG << "LAPIC ";
|
||||||
}
|
mark_unavailable(0xfee00000, 0xfee003f0);
|
||||||
|
|
||||||
|
DBG << "IO APIC ";
|
||||||
|
mark_unavailable(APIC::getIOAPICAddress(), APIC::getIOAPICAddress()+0x10);
|
||||||
|
|
||||||
stats();
|
stats();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user