rel4team / rel4_kernel

9 stars 4 forks source link

VSpace 具体细分的相关方法移植1 #39

Closed llh730 closed 3 months ago

llh730 commented 3 months ago

主要负责函数如下:

//APFromVMRights
//maskVMRights
map_kernel_frame
//map_kernel_window
map_it_frame_cap
//create_it_frame_cap
map_it_pt_cap
create_it_pt_cap
map_it_pd_cap
create_it_pd_cap
//arch_get_n_paging
//create_it_address_space
create_unmapped_it_frame_cap
//create_mapped_it_frame_cap
//activate_kernel_vspace
//?write_it_asid_pool
findMapForASID
//?findVSpaceForASID
lookupFrame
isVTableRoot
isValidNativeRoot
isValidVTableRoot
ZhiQiu-ovO commented 3 months ago

已实现: map_it_pt_cap create_it_pt_cap

ZhiQiu-ovO commented 3 months ago

今天过后,剩余未实现函数:

map_kernel_frame
//?write_it_asid_pool
findMapForASID
//?findVSpaceForASID
lookupFrame
isVTableRoot
isValidNativeRoot
isValidVTableRoot
ZhiQiu-ovO commented 3 months ago

仔细阅读代码,发现riscv端的asid与aarch64的asid不同,riscv64中的asid可以直接当做页表基地址去用,而aarch64的asid记录了asid是否合法以及根页表地址。

ZhiQiu-ovO commented 3 months ago

仔细阅读代码,发现riscv端的asid与aarch64的asid不同,riscv64中的asid可以直接当做页表基地址去用,而aarch64的asid记录了asid是否合法以及根页表地址。

两种asid的不同导致了某些函数的实现存在不同,现在还是打算将两者放入不同的arch架构文件夹下。

ZhiQiu-ovO commented 3 months ago

现在已经实现上面提到的全部函数,但有很多函数尚未进行正确性的测试