Commit 76bf3da2 authored by a猫咪、没&炸弹's avatar a猫咪、没&炸弹
Browse files

添加文档图片 部分注释

No related merge requests found
Showing with 6 additions and 26 deletions
+6 -26
DOC/TLB/TLBrefill 示例.png

78 KB

DOC/TLB/tlbfill 填写tlb.png

261 KB

DOC/TLB/硬件管理TLB.png

57.9 KB

DOC/TLB/软件管理TLB.png

57.8 KB

DOC/虚拟地址管理相关/2k1000地址空间.png

35.6 KB

DOC/虚拟地址管理相关/虚拟地址格式配置寄存器PCWL  32位.png

225 KB

DOC/驱动 硬件资源/ACPI.png

112 KB

......@@ -12,7 +12,6 @@ int kmain() {
proc_init();
disk_init();
fs_init();
// clean_dwm();
user_init();
Log("kernel: finish\n");
......
......@@ -4,7 +4,6 @@
#include "memlayout.h"
extern char kernel_end[];
// void * kernel_end = 0x10000000 + 0x9000000000000000;
void * kernel_paddr(void * kva){
if (kva > (void *)kernel_end || kva < KERNBASE){
......@@ -62,19 +61,7 @@ lo0 0x0000000000000000
lo1 0x0000000097fdb193
hi 0x00000000000fe00c
*/
// void tlb_handler() {
// uint64_t vaddr = r_csr_tlbrbadv();
// vaddr &= ~((1<<13)-1);
// printf("tlb fill at: %p\n", vaddr);
// uint64_t tlbrelo0, tlbrelo1, tlbrehi;
// tlbrelo0 = (0 << 12) | 0x1;
// tlbrelo1 = (0 << 12) | 0x1;
// tlbrehi = vaddr | stlbps;
// w_csr_tlbrelo0(tlbrelo0);
// w_csr_tlbrelo1(tlbrelo1);
// w_csr_tlbrehi(tlbrehi);
// tlbfill();
// }
void dwm_init() {
w_csr_dwm0(get_dmw_data(0x9000, 1, DMW_PLV0));
w_csr_dwm1(get_dmw_data(0x0000, 1, DMW_PLV0));
......@@ -82,7 +69,9 @@ void dwm_init() {
}
void tlb_init() {
// 防止STLB和MTLB出现同时命中的情况
w_csr_stlbps(0xE);
// 刷新TLB
asm volatile("invtlb 0x0,$zero,$zero");
w_csr_asid(0x0U);//todo
}
......
......@@ -230,15 +230,6 @@ int exec(char *path, char *argv[]) {
p->context = (void*)sp;
memset(p->context, '\0', sizeof(struct context));
/* UnixBench:
...
ptr_argv1
ptr_argv0
->sp ptr_argc
ra (without syscall exit)
-> main() stack
*/
sp -= sizeof(uint64_t) * (ARGS_MAX+2);
int argc;
uint64_t *ustack = (void*)sp;
......
......@@ -22,6 +22,7 @@ void trap_handler() {
} else if (estat & ecfg & TI_VEC) {
// timer interrupt
clock_handler();
// 清除时钟中断
w_csr_ticlr(r_csr_ticlr() | CSR_TICLR_CLR);
} else {
era += 4;
......
......@@ -21,6 +21,6 @@ void user_init() {
for (int i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) {
exec_file(tests[i]);
}
// exec_file("clone");
shutdown();
}
......@@ -32,7 +32,7 @@ void vm_init(void)//todo
// kvmmap(kpgtbl, KERNBASE, kernel_end, KERNBASE, PTE_DEFAULT);
w_csr_pgdl((uint64_t)kpgtbl);
// 根据设计的虚拟地址划分格式配置相应寄存器
w_csr_pwcl((PTEWIDTH << 30)|(DIR2WIDTH << 25)|(DIR2BASE << 20)|(DIR1WIDTH << 15)|(DIR1BASE << 10)|(PTWIDTH << 5)|(PTBASE << 0));
w_csr_pwch((DIR4WIDTH << 18)|(DIR3WIDTH << 6)|(DIR3BASE << 0));
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment