diff --git a/lab2/kernel/mm/page_table.c b/lab2/kernel/mm/page_table.c index bb14fd6..b3376c9 100644 --- a/lab2/kernel/mm/page_table.c +++ b/lab2/kernel/mm/page_table.c @@ -220,7 +220,7 @@ int map_range_in_pgtbl(vaddr_t * pgtbl, vaddr_t va, paddr_t pa, // 创建一页 cur_ptp = (ptp_t *) pgtbl; for (cur_level = 0; cur_level < 4; cur_level++) { - page_type = get_next_ptp(cur_ptp, cur_level, va, &next_ptp, &entry, true); + page_type = get_next_ptp(cur_ptp, cur_level, va_cur, &next_ptp, &entry, true); if (page_type < 0) { // 无法映射 return page_type; diff --git a/lab3/kernel/mm/page_table.c b/lab3/kernel/mm/page_table.c index bb14fd6..b3376c9 100644 --- a/lab3/kernel/mm/page_table.c +++ b/lab3/kernel/mm/page_table.c @@ -220,7 +220,7 @@ int map_range_in_pgtbl(vaddr_t * pgtbl, vaddr_t va, paddr_t pa, // 创建一页 cur_ptp = (ptp_t *) pgtbl; for (cur_level = 0; cur_level < 4; cur_level++) { - page_type = get_next_ptp(cur_ptp, cur_level, va, &next_ptp, &entry, true); + page_type = get_next_ptp(cur_ptp, cur_level, va_cur, &next_ptp, &entry, true); if (page_type < 0) { // 无法映射 return page_type; diff --git a/note.org b/note.org index 6dd31df..12725f6 100644 --- a/note.org +++ b/note.org @@ -112,6 +112,8 @@ LR 没啥特别的。不过目前只实现了用户空间的 2k 页分配。 +好家伙,循环里面忘记用 va_cur 用了 va。但是测试用例竟然过了 →_→ + *** 练习3 boot/mmu.c:L80-106 映射了 KBASE~KBASE+256M