test cache

This commit is contained in:
TXuian
2024-03-18 11:17:55 +08:00
parent c60f29277a
commit 50dab7b553
13 changed files with 85 additions and 49 deletions
@@ -82,6 +82,11 @@ static void tlb_flush_range(uintptr_t vstart, int len)
}
}
static void tlb_flush_all()
{
CLEARTLB(0);
}
static struct MmuCommonDone mmu_common_done = {
.MmuDevPteAttr = GetDevPteAttr,
.MmuPdeAttr = GetPdeAttr,
@@ -91,6 +96,7 @@ static struct MmuCommonDone mmu_common_done = {
.LoadPgdirCrit = load_pgdir_critical,
.LoadPgdir = load_pgdir,
.TlbFlushAll = tlb_flush_all,
.TlbFlush = tlb_flush_range,
};
@@ -30,20 +30,6 @@ Modification:
#include "mmu.h"
#include "mmu_common.h"
void GetDevPteAttr(uintptr_t* attr)
{
static char init = 0;
static PageTblEntry dev_pte_attr;
if (init == 0) {
init = 1;
dev_pte_attr.entry = 0;
dev_pte_attr.desc_type = PAGE_4K;
dev_pte_attr.AP1_0 = AccessPermission_KernelOnly;
}
*attr = dev_pte_attr.entry;
}
void GetUsrPteAttr(uintptr_t* attr)
{
static char init = 0;
@@ -55,6 +41,7 @@ void GetUsrPteAttr(uintptr_t* attr)
usr_pte_attr.desc_type = PAGE_4K;
usr_pte_attr.B = 1;
usr_pte_attr.C = 1;
usr_pte_attr.S = 1;
usr_pte_attr.AP1_0 = AccessPermission_KernelUser;
}
*attr = usr_pte_attr.entry;
@@ -68,12 +55,28 @@ void GetUsrDevPteAttr(uintptr_t* attr)
init = 1;
usr_pte_attr.entry = 0;
usr_pte_attr.S = 1;
usr_pte_attr.desc_type = PAGE_4K;
usr_pte_attr.AP1_0 = AccessPermission_KernelUser;
}
*attr = usr_pte_attr.entry;
}
void GetDevPteAttr(uintptr_t* attr)
{
static char init = 0;
static PageTblEntry dev_pte_attr;
if (init == 0) {
init = 1;
dev_pte_attr.entry = 0;
dev_pte_attr.S = 1;
dev_pte_attr.desc_type = PAGE_4K;
dev_pte_attr.AP1_0 = AccessPermission_KernelOnly;
}
*attr = dev_pte_attr.entry;
}
void GetKernPteAttr(uintptr_t* attr)
{
static char init = 0;
@@ -85,6 +88,7 @@ void GetKernPteAttr(uintptr_t* attr)
kern_pte_attr.desc_type = PAGE_4K;
kern_pte_attr.B = 1;
kern_pte_attr.C = 1;
kern_pte_attr.S = 1;
kern_pte_attr.AP1_0 = AccessPermission_KernelOnly;
}
*attr = kern_pte_attr.entry;