Import backup from 2004-03-10

This commit is contained in:
josh committed 2017-07-25 22:23:46 -04:00
1 parent 7f886e44e1
commit 302538b8ff
24 files changed
+799 -694

No files matched your search

+9 -5
View File
@@ -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);
}