Yet another paging problem
Posted: Sat May 05, 2007 3:28 pm
Hi,
I'm having problems when enabling paging in my virtual memory manager.
Below is the contents of the cr and eip registers. my kernel is loaded at 1mb (phys 0x00100000). Is there any way I can find out which instruction was being executed when it tried to access the page at 0x001070a0 that caused the page fault?
Also the following from a tutorial also confuses me:
01130591098i[CPU ] | EIP=001002a0 (001002a0)
01130591098i[CPU ] | CR0=0x80000011 CR1=0 CR2=0x001070a0
01130591098i[CPU ] | CR3=0x0010a000 CR4=0x00000000
01130591098i[CPU ] (instruction unavailable) page not present
01130591098e[CPU ] exception(): 3rd (14) exception with no resolution, shutdown status is 00h, resetting
01130591098i[SYS ] bx_pc_system_c::Reset(SOFTWARE) called
01130591098e[CPU ] CPU_LOOP bx_guard.interrupt_requested=1
01130591098i[CTRL ] asking for next debug command
Any suggestions guys ?
I'm having problems when enabling paging in my virtual memory manager.
Below is the contents of the cr and eip registers. my kernel is loaded at 1mb (phys 0x00100000). Is there any way I can find out which instruction was being executed when it tried to access the page at 0x001070a0 that caused the page fault?
Also the following from a tutorial also confuses me:
The current page table needs to identity map the current EIP: when we set the paging bit in CR0, the CPU will still be executing from the same address, so it had better have some valid instructions at wherever it’s executing. This is why it’s good to locate the kernel at whatever address it’s going to end up once paging is enabled.
01130591098i[CPU ] | EIP=001002a0 (001002a0)
01130591098i[CPU ] | CR0=0x80000011 CR1=0 CR2=0x001070a0
01130591098i[CPU ] | CR3=0x0010a000 CR4=0x00000000
01130591098i[CPU ] (instruction unavailable) page not present
01130591098e[CPU ] exception(): 3rd (14) exception with no resolution, shutdown status is 00h, resetting
01130591098i[SYS ] bx_pc_system_c::Reset(SOFTWARE) called
01130591098e[CPU ] CPU_LOOP bx_guard.interrupt_requested=1
01130591098i[CTRL ] asking for next debug command
Any suggestions guys ?