Import backup from 2004-03-10
This commit is contained in:
1 parent
7f886e44e1
commit
302538b8ff
24 files changed
+799
-694
No files matched your search
+9
-5
@@ -6,6 +6,10 @@
|
||||
|
||||
#include "hos_defines.h"
|
||||
#include "vmm.h"
|
||||
#include "video/video.h"
|
||||
#include "asmfuncs.h"
|
||||
#include "mm/mm.h"
|
||||
#include "video/stdfont.h"
|
||||
|
||||
HeapEntry *firstHeapEntry = (HeapEntry *)0xD0000000; //this is where heap memory starts
|
||||
|
||||
@@ -16,7 +20,7 @@ void vmm_init()
|
||||
unsigned int *pageTables = (unsigned int *)0xC0104000; //this is the location of the page directory
|
||||
pageTables[0x3FF] = 0x104000|0x03; //the last page directory entry points to the page directory itself
|
||||
pageTables[0] = 0;
|
||||
invlpg(0);
|
||||
invlpg_(0);
|
||||
if (video_Mode()) //we are in a graphical mode
|
||||
{
|
||||
unsigned int vidPages = video_getWidth() * video_getHeight() * (video_getBitsPerPixel() >> 3);
|
||||
@@ -35,7 +39,7 @@ void vmm_init()
|
||||
heb->entry[0].attributes = VMM_HE_HEB; //this is a HeapEntryBlock
|
||||
heb->entry[1].base = (unsigned int)firstHeapEntry+4096; //this is the start of the rest of the kernel's heap memory
|
||||
heb->entry[1].size = 0x10000000-4096; //the rest of the kernel's heap memory: 256mb - 4kb
|
||||
heb->entry[1].attributes = VMM_HE_HOLE; //this is a hold - an unmapped section of heap memory
|
||||
heb->entry[1].attributes = VMM_HE_HOLE; //this is a hole - an unmapped section of heap memory
|
||||
}
|
||||
|
||||
|
||||
@@ -64,7 +68,7 @@ void vmm_map1(unsigned int virt, unsigned int physical)
|
||||
{
|
||||
unsigned int *newpagetable = (dword *)mm_palloc();
|
||||
pageTables[pde] = ((unsigned int)newpagetable) | 0x03;
|
||||
invlpg(virt);
|
||||
invlpg_(virt);
|
||||
unsigned int *newpteptr = (unsigned int *)(0xFFC00000 | (pde << 12)); //points to first unsigned int of newly allocated page table
|
||||
int a;
|
||||
for (a = 0; a < 1024; a++)
|
||||
@@ -74,7 +78,7 @@ void vmm_map1(unsigned int virt, unsigned int physical)
|
||||
}
|
||||
unsigned int *pteptr = (unsigned int *)(0xFFC00000 | (pde << 12) | (pte << 2));
|
||||
*pteptr = physical | 0x03;
|
||||
invlpg(virt);
|
||||
invlpg_(virt);
|
||||
}
|
||||
|
||||
|
||||
@@ -95,7 +99,7 @@ void vmm_unmap1(unsigned int virt)
|
||||
{
|
||||
unsigned int *pteptr = (unsigned int *)(0xFFC00000 | ((virt & 0xFFC00000) >> 10) | ((virt & 0x003FF000) >> 10));
|
||||
*pteptr = 0;
|
||||
invlpg(virt);
|
||||
invlpg_(virt);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user