mirror of
https://gitlab.os-k.eu/os-k-team/os-k.git
synced 2023-08-25 14:03:10 +02:00
Get paging ready for userspace
This commit is contained in:
parent
2a1990e043
commit
5978e70303
@ -226,9 +226,9 @@ void MmInitPaging(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Get a page from an address
|
// Create a page and its parent directories from a virtual (effective) address
|
||||||
//
|
//
|
||||||
ulong *MmGetPageDescriptorFromVirtual(void *virtualAddr)
|
static ulong *MmGetPageDescriptorFromVirtual(void *virtualAddr)
|
||||||
{
|
{
|
||||||
// Select bit from 39 to 47
|
// Select bit from 39 to 47
|
||||||
register ulong pml4Index = ((ulong)virtualAddr & 0xFF8000000000) >> 39;
|
register ulong pml4Index = ((ulong)virtualAddr & 0xFF8000000000) >> 39;
|
||||||
@ -257,7 +257,7 @@ ulong *MmGetPageDescriptorFromVirtual(void *virtualAddr)
|
|||||||
(pml4_t)((ulong)MmPageMapLevel4[pml4Index]
|
(pml4_t)((ulong)MmPageMapLevel4[pml4Index]
|
||||||
| PRESENT
|
| PRESENT
|
||||||
| READWRITE
|
| READWRITE
|
||||||
| USERMODE * (virtualAddr >= USERSPACE) );
|
| USERMODE * (virtualAddr >= (void*)USERSPACE) );
|
||||||
|
|
||||||
pdp = (pdpe_t *)((ulong)MmPageMapLevel4[pml4Index] & 0xFFFFFFFFFF000);
|
pdp = (pdpe_t *)((ulong)MmPageMapLevel4[pml4Index] & 0xFFFFFFFFFF000);
|
||||||
//DebugLog("\tCreate PDP at %p\n", MmPageMapLevel4[pml4Index]);
|
//DebugLog("\tCreate PDP at %p\n", MmPageMapLevel4[pml4Index]);
|
||||||
@ -276,7 +276,7 @@ ulong *MmGetPageDescriptorFromVirtual(void *virtualAddr)
|
|||||||
pdp[pdpIndex] = (pdpe_t)((ulong)pdp[pdpIndex]
|
pdp[pdpIndex] = (pdpe_t)((ulong)pdp[pdpIndex]
|
||||||
| PRESENT
|
| PRESENT
|
||||||
| READWRITE
|
| READWRITE
|
||||||
| USERMODE * (virtualAddr >= USERSPACE) );
|
| USERMODE * (virtualAddr >= (void*)USERSPACE) );
|
||||||
|
|
||||||
pd = (pde_t *)((ulong)pdp[pdpIndex] & 0xFFFFFFFFFF000);
|
pd = (pde_t *)((ulong)pdp[pdpIndex] & 0xFFFFFFFFFF000);
|
||||||
//DebugLog("\tCreate PD at %p\n", (ulong)pdp[pdpIndex]);
|
//DebugLog("\tCreate PD at %p\n", (ulong)pdp[pdpIndex]);
|
||||||
@ -295,7 +295,7 @@ ulong *MmGetPageDescriptorFromVirtual(void *virtualAddr)
|
|||||||
pd[pdIndex] = (pde_t)((ulong)pd[pdIndex]
|
pd[pdIndex] = (pde_t)((ulong)pd[pdIndex]
|
||||||
| PRESENT
|
| PRESENT
|
||||||
| READWRITE
|
| READWRITE
|
||||||
| USERMODE * (virtualAddr >= USERSPACE) );
|
| USERMODE * (virtualAddr >= (void*)USERSPACE) );
|
||||||
|
|
||||||
pt = (pte_t *)((ulong)pd[pdIndex] & 0xFFFFFFFFFF000);
|
pt = (pte_t *)((ulong)pd[pdIndex] & 0xFFFFFFFFFF000);
|
||||||
//DebugLog("\tCreate PT at %p\n", (ulong)pd[pdIndex]);
|
//DebugLog("\tCreate PT at %p\n", (ulong)pd[pdIndex]);
|
||||||
|
Loading…
Reference in New Issue
Block a user