TempleOSCDV4.06.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:47:19 +02:00
1 parent 6fe38d2d9d
commit b632ab9a4f
261 files changed
+6282 -5801

No files matched your search

+12 -17
View File
@@ -55,24 +55,11 @@ U0 Mem32DevInit()
}
}
Bool MemLowPagesProtect(Bool val=TRUE)
{//Mark low memory not present. Catch NULL deref.
//Returns: FALSE if any were not protected.
U8 *a=0;
Bool result=TRUE;
while (a<=MEM_PROTECTED_LOW_LIMIT) {
result&=!MemPagePresentMark(a,!val);
a+=MemPageSize(a);
}
return result;
}
U0 MemPagesNotPresentMark()
{
U8 *a,*max_physical=NULL;
U16 *m01=SYS_MEM_E801;
CMemE820 *m20=SYS_MEM_E820;
MemLowPagesProtect;
while (m20->type) {
a=m20->base+m20->len;
if (a>max_physical)
@@ -83,7 +70,7 @@ U0 MemPagesNotPresentMark()
a=(max_physical+0x1FFFFF)&~0x1FFFFF;
while (a<MEM_MAPPED_SPACE) {
MemPagePresentMark(a,FALSE);
a+=MemPageSize(a);
a+=0x200000;
}
}
}
@@ -140,7 +127,7 @@ U0 Mem32DevFree(U8 *base)
U8 *Mem64DevAlloc(I64 *_pages2Meg)
{//Alloc 64-bit addr space for device.
U8 *result;
U8 *res;
I64 i=*_pages2Meg,*pte;
while (LBts(&sys_semas[SYS_SEMA_DEV_MEM],0))
Yield;
@@ -150,9 +137,9 @@ U8 *Mem64DevAlloc(I64 *_pages2Meg)
*pte=*pte&~0x18 |0x11; //Uncached and present
InvlPg(dev.mem64_ptr);
}
result=dev.mem64_ptr;
res=dev.mem64_ptr;
LBtr(&sys_semas[SYS_SEMA_DEV_MEM],0);
return result;
return res;
}
U0 Mem64DevFree(U8 *base,I64 pages2Meg)
@@ -166,6 +153,14 @@ U0 Mem64DevFree(U8 *base,I64 pages2Meg)
LBtr(&sys_semas[SYS_SEMA_DEV_MEM],0);
}
U8 *MemVGAAlloc()
{
I64 i=1,*a=Mem64DevAlloc(&i),*pte=MemPageTable(a);
*pte=0x18F;
InvlPg(a);
return a;
}
I64 BIOSTotalMem()
{
I64 r01,r20;