Paging works.
HOLY SHIT PAGING WORKS. THIS HAS BEEN SO MUCH WORK. ALL IT TOOK WAS A BIT MASKgit add *.c !
This commit is contained in:
parent
51ce7fe132
commit
d3c36a29af
|
@ -60,7 +60,7 @@ void InitPaging() {
|
||||||
.PML4 = (size_t*) ReadControlRegister(3)
|
.PML4 = (size_t*) ReadControlRegister(3)
|
||||||
};
|
};
|
||||||
|
|
||||||
size_t AddressToFind = 0xffffffffffe021ba;
|
size_t AddressToFind = 0xffffffffffffff58;
|
||||||
size_t BootloaderAddress = DecodeVirtualAddressNoDirect(&BootloaderAddressSpace, AddressToFind);
|
size_t BootloaderAddress = DecodeVirtualAddressNoDirect(&BootloaderAddressSpace, AddressToFind);
|
||||||
size_t KernelDisoveredAddress = DecodeVirtualAddressNoDirect(&KernelAddressSpace, AddressToFind);
|
size_t KernelDisoveredAddress = DecodeVirtualAddressNoDirect(&KernelAddressSpace, AddressToFind);
|
||||||
SerialPrintf("[ Mem] Diagnostic: Existing pagetables put 0x%p at 0x%p.\r\n", AddressToFind, BootloaderAddress);
|
SerialPrintf("[ Mem] Diagnostic: Existing pagetables put 0x%p at 0x%p.\r\n", AddressToFind, BootloaderAddress);
|
||||||
|
@ -70,8 +70,8 @@ void InitPaging() {
|
||||||
//if(BootloaderAddress != KernelDisoveredAddress)
|
//if(BootloaderAddress != KernelDisoveredAddress)
|
||||||
//for(;;) {}
|
//for(;;) {}
|
||||||
|
|
||||||
SerialPrintf("[ Mem] Attempting to jump into our new pagetables.\r\n");
|
SerialPrintf("[ Mem] Attempting to jump into our new pagetables: %d\r\n", (size_t) KernelAddressSpace.PML4);
|
||||||
WriteControlRegister(3, (size_t) KernelAddressSpace.PML4);
|
WriteControlRegister(3, (size_t) KernelAddressSpace.PML4 & STACK_TOP);
|
||||||
SerialPrintf("[ Mem] Worked\r\n");
|
SerialPrintf("[ Mem] Worked\r\n");
|
||||||
for(;;) {}
|
for(;;) {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ void StackTrace(size_t cycles) {
|
||||||
__asm__ __volatile__ ("mov %%rbp, %[dest]" : [dest] "=r" (stack) : :);
|
__asm__ __volatile__ ("mov %%rbp, %[dest]" : [dest] "=r" (stack) : :);
|
||||||
SerialPrintf("[Trace] Beginning stack trace. RBP is currently 0x%p\r\n", stack);
|
SerialPrintf("[Trace] Beginning stack trace. RBP is currently 0x%p\r\n", stack);
|
||||||
for(size_t frame = 0; stack != 0 && frame < cycles; ++frame) {
|
for(size_t frame = 0; stack != 0 && frame < cycles; ++frame) {
|
||||||
SerialPrintf("[Trace] 0x%p \r\n", stack->rip);
|
SerialPrintf("[Trace] (%d) 0x%p: 0x%p \r\n", frame, stack->rbp, stack->rip);
|
||||||
stack = stack->rbp;
|
stack = stack->rbp;
|
||||||
}
|
}
|
||||||
SerialPrintf("[Trace] Stack trace over.\r\n");
|
SerialPrintf("[Trace] Stack trace over.\r\n");
|
||||||
|
|
Loading…
Reference in New Issue
Block a user