国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

? ?? ? ???? ??? ?? ? ?? ?? ???? ?? | RISC-V Linux ?? ?? 2M ?? ??? ???

???? ?? | RISC-V Linux ?? ?? 2M ?? ??? ???

Aug 01, 2023 pm 03:37 PM
??? ??

?? ????? RISC-V Linux ??? ?? ??? ??? ??? ??????. RISC-V Linux ?? ??? 2M ????? ??? ???????. ??? 2M ?? ??? ???? ??? ?? ????????. ???? ??? ??????.

??: ? ??? linux5.10.111 ??? ???? ???.

??? ??? ??

? ?? ???? ??? ? ?? ???? ? ??? ??? ??? ?????. bootrom? 0x0, ? ?? ????. ??? ?? ????? ?? 0x0?? ?????.

RISC-V Linux? ???? ?? ?? opensbi? ???? ??? opensbi? 0x0處,這樣芯片上電后,就會(huì)從0x0地址處執(zhí)行opensbi。在opensbi運(yùn)行完后,會(huì)跳轉(zhuǎn)到opensbi運(yùn)行地址偏移2M的位置去執(zhí)行下一級(jí)boot(這里下一級(jí)boot是kernel),即跳轉(zhuǎn)到0x200000地址處運(yùn)行kernel,因此應(yīng)該把kernel放到內(nèi)存的0x200000 ??? ????? ???.

??? ?? ?????? ??? ????.

???? ?? | RISC-V Linux ?? ?? 2M ?? ??? ???

??? ?? ?? ? ?? ???? ??? ?????(?: 0x200000) ??? ??? ??? ???? ?????. ??? ???? ?? ??? ??? ??? ????? ??? ?? ???? ???? ? ????. ??? ?? ?? 2M ???? ?????(?: 0x0 - 0x200000)? ??? ?? ???? ? 2M ???? ?? ??? ???? ???? ????. ?, ??? ? 2M ???? ???? ? ????. 0x200000)開(kāi)始建立頁(yè)表映射,只有對(duì)物理內(nèi)存建立了頁(yè)表映射,后面才能訪問(wèn)這些內(nèi)存。而kernel加載地址前面的2M內(nèi)存(即0x0 - 0x200000)將被kernel忽略,不會(huì)對(duì)這2M內(nèi)存建立頁(yè)表,即kernel無(wú)法訪問(wèn)這2M內(nèi)存。

在QEMU上RISC-V Linux的啟動(dòng)信息:

???? ?? | RISC-V Linux ?? ?? 2M ?? ??? ???

但opensbi實(shí)際不需要使用2M這么大的范圍,默認(rèn)是512KB,opensbi的pmp會(huì)保護(hù)這512KB內(nèi)存,不讓其他程序訪問(wèn)。

???? ?? | RISC-V Linux ?? ?? 2M ?? ??? ???

因此在Kernel和opensbi之間會(huì)存在1.5M

QEMU?? RISC-V Linux ?? ??:

???? ?? | RISC-V Linux ?? ?? 2M ?? ??? ??? ??? opensbi? ??? 2M?? ? ??? ??? ??? ????. ???? 512KB, opensbi? pmp? ??? ?????512KB ???, ?? ?????? ???? ? ????. ???? ?? | RISC-V Linux ?? ?? 2M ?? ??? ???

??? 1.5M ??? ?? ? ??? ??? ? ??? ?????? ???? ???? ??? ??? ?????. ??? ??? ???? ?? ??? ????? ?? ??? ??????

??? ??

? 2M ???? ????? ?? ? ?? ??? ????: ???????? 1??: opensbi? ??? ?? ?? ?? ?? ??? ??? 2M ??? ?????. ???????? 2??: Opensbi? ??? ??? ?? ??? ?????. ?? ?? ??? ???? 2M ?? ??? ???? ?? ??? ??? ??? ? ????. ??

Option 1

opensbi? ??? ?? ??? ?? ?? ??? ??? 2M ??? ?????.

?, ??? ??? ??? ????, opensbi? ??? ?????.

???? ?? | RISC-V Linux ?? ?? 2M ?? ??? ???

?? ?? ??? ???? 0x0地址處,opensbi放到內(nèi)存的0x10000000地址處。這樣kernel前面就不會(huì)有預(yù)留內(nèi)存,只不過(guò)這樣需要修改bootrom的地址,將地址從0x0修改為0x0x10000000。這種方案只適合芯片還沒(méi)出廠前,因?yàn)橛脩?hù)無(wú)法修改bootrom的地址,芯片出廠后,bootrom地址是固定的,假設(shè)bootrom地址為0x0,那么芯片上電后,就會(huì)從0x0開(kāi)始運(yùn)行程序,所以opensbi必須放到0x0 ??? ????? ??? 2M?? ??????.

?? 2

?? RISC-V Linux? ?? ?? ??? ???? 2M ?? ??? ??? ?? ????. setup_vm () ??? ???? ?? ? ?? ?? ??? ???? ? ?? ?? ??? ???? ???? ?? ?? ??? 4K?? ???? ??? ??? ???? ?? ???? ?????. setup_vm()函數(shù)中,將原來(lái)的二級(jí)頁(yè)表改為三級(jí)頁(yè)表,這樣kernel入口地址只需要4K對(duì)齊,因此就能將kernel往前挪,從而利用前面的內(nèi)存。

修改代碼

路徑:arch/riscv/mm/init.c

?? ??

???? ?? | RISC-V Linux ?? ?? 2M ?? ??? ?????: ?? / riscv/mm/init.c

?? 2M ?? ??? ??? ?????.

???? ?? | RISC-V Linux ?? ?? 2M ?? ??? ???

? ?? ?? ??? ????? ? ?? ?? ??? ???? ??? ? ?? 2M ??? ??? ??? ?????.

//新增一個(gè)PTE
pte_t trampoline_pte[PTRS_PER_PTE] __page_aligned_bss;

create_pgd_mapping(trampoline_pg_dir,PAGE_OFFSET,
                   (uintptr_t)trampoline_pmd,PGDIR_SIZE,PAGE_TABLE);
create_pmd_mapping(trampoline_pmd,PAGE_OFFSET,
                   (uintptr_t)trampoline_pte,PMD_SIZE,PAGE_TABLE);

end_va = PAGE_OFFSET + PMD_SIZE;
for (va = PAGE_OFFSET; va < end_va; va += PAGE_SIZE)
{
    create_pte_mapping(trampoline_pte,PAGE_OFFSET,
                   load_pa + (va - PAGE_OFFSET),
                       PAGE_SIZE,PAGE_KERNEL_EXEC);
}

?? ??? ??? ??? ??? 2?? ??? ????? 3?? ??? ???? ?????.
???? ?? | RISC-V Linux ?? ?? 2M ?? ??? ???
?? ??? 4M+
???? ?? | RISC-V Linux ?? ?? 2M ?? ??? ???
//定義三個(gè)PTE
pte_t load_sz_pte[PTRS_PER_PTE] __page_aligned_bss;
pte_t load_sz_pte1[PTRS_PER_PTE] __page_aligned_bss;
pte_t load_sz_pte2[PTRS_PER_PTE] __page_aligned_bss;

//=======0-2M======
create_pgd_mapping(early_pg_dir,PAGE_OFFSET,
                   (uintptr_t)early_pmd,PGDIR_SIZE,PAGE_TABLE);
create_pmd_mapping(early_pmd,PAGE_OFFSET,
                   (uintptr_t)load_sz_pte,PMD_SIZE,PAGE_TABLE);

end_va = PAGE_OFFSET + PMD_SIZE;
for (va = PAGE_OFFSET; va < end_va; va += PAGE_SIZE)
{
    create_pte_mapping(load_sz_pte,PAGE_OFFSET,
                   load_pa + (va - PAGE_OFFSET),
                       PAGE_SIZE,PAGE_KERNEL_EXEC);
}

//=======2-4M==========
create_pgd_mapping(early_pg_dir,PAGE_OFFSET + PMD_SIZE,
                   (uintptr_t)early_pmd,PGDIR_SIZE,PAGE_TABLE);
create_pmd_mapping(early_pmd,PAGE_OFFSET,
                   (uintptr_t)load_sz_pte1,PMD_SIZE,PAGE_TABLE);

end_va = PAGE_OFFSET + (PMD_SIZE * 2);
for (va = PAGE_OFFSET + PMD_SIZE; va < end_va; va += PAGE_SIZE)
{
    create_pte_mapping(load_sz_pte1,va,
                   load_pa + (va - PAGE_OFFSET),
                       PAGE_SIZE,PAGE_KERNEL_EXEC);
}

//=======4-6M==========
create_pgd_mapping(early_pg_dir,PAGE_OFFSET + (PMD_SIZE*2),
                   (uintptr_t)early_pmd,PGDIR_SIZE,PAGE_TABLE);
create_pmd_mapping(early_pmd,PAGE_OFFSET,
                   (uintptr_t)load_sz_pte2,PMD_SIZE,PAGE_TABLE);

end_va = PAGE_OFFSET + (PMD_SIZE * 3);
for (va = PAGE_OFFSET + (PMD_SIZE*2); va < end_va; va += PAGE_SIZE)
{
    create_pte_mapping(load_sz_pte2,va,
                   load_pa + (va - PAGE_OFFSET),
                       PAGE_SIZE,PAGE_KERNEL_EXEC);
}

????????? ?????. ??? ??? ???? ?? ??? 1.5M ??? ???? opensbi??? 512KB? ??? ? ????. ?? ??? RISC-V Linux? ??? ? ?? ??? ??? ???? ?????. ??
???? ?? | RISC-V Linux ?? ?? 2M ?? ??? ???

Summary

RISC-V Linux ?? ?? 2M ?? ??? ?? ???? ???? opensbi? ?? 2M? ???? ??? ??? ?? ??? ???? ????? ?? ??? 2M? ????? ???. ???? ???? ? ??? ?? ??? ???? ??? ??? ????. ? ??? ??? ???? ?? ????? ??? ?? ?? ???? ??? ? ? ??? ????.

? ??? ???? ?? | RISC-V Linux ?? ?? 2M ?? ??? ???? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? ????? ??
? ?? ??? ????? ???? ??? ??????, ???? ?????? ????. ? ???? ?? ???? ?? ??? ?? ????. ???? ??? ???? ???? ??? ?? admin@php.cn?? ?????.

? AI ??

Undresser.AI Undress

Undresser.AI Undress

???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover

AI Clothes Remover

???? ?? ???? ??? AI ?????.

Video Face Swap

Video Face Swap

??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

???

??? ??

???++7.3.1

???++7.3.1

???? ?? ?? ?? ???

SublimeText3 ??? ??

SublimeText3 ??? ??

??? ??, ???? ?? ????.

???? 13.0.1 ???

???? 13.0.1 ???

??? PHP ?? ?? ??

???? CS6

???? CS6

??? ? ?? ??

SublimeText3 Mac ??

SublimeText3 Mac ??

? ??? ?? ?? ?????(SublimeText3)

???

??? ??

??? ????
1601
29
PHP ????
1502
276
???
Linux ??? ?? ??: ?? ?? ?? ??? ?? ??? ?? Linux ??? ?? ??: ?? ?? ?? ??? ?? ??? ?? Mar 21, 2024 am 09:57 AM

?? ??? ?? ??? Linux ??? ???? ?? ?? ? ??? ?? ??? ?? ??? ??? ?????. ? ????? ???? ??, ?? ???, ???? ??, ?? ???? ? ??? ??? ???? Linux ??? ?? ?? ?? ??? ???? ??? ??? ?? ??? ?????. 1. ???? ?? ???? ?? Linux ???? ???? ??? fork() ??? ??? ?? ?????. ??? ??? ?? ?????: #include

Linux ?? ?? ?? ??? ?? ?? ?? Linux ?? ?? ?? ??? ?? ?? ?? Mar 15, 2024 am 10:21 AM

??? Linux ?? ?? ?? ??? ????? ???? 1500 ?? ??? ?????. ??? ???? ?? Linux ?? ?? ??? ?? ??? ??? ?? ??? ??? ?? ?? ? ?? ???? ?? ??? ?????. Linux ??? ?? ??? GitHub?? ????? ?? ?? ?? ?? ?????. ?? Linux ?? ?? ?? ???? ?? ???? ?? ?? ??? ? ??? ??? ??? ?? ??? ?????. Linux ?? ?? ??? ? ?? ?????

Linux ??? uClinux ???? ? MMU ??? ?????? Linux ??? uClinux ???? ? MMU ??? ?????? Jan 26, 2024 pm 05:18 PM

??? ?? ???? ??? ?? ??? ???? ????? ?? ?? ??? ????. ??: Linux ?? ???? ??? ???? ????? ?????? ????? ?? ????? ??? ? ????. ??? ???? Linux ?? ?? ???? ??? ???? ???? ?? ??, ????, ???, ?? ???? ? ?? ?? ??? ?????. ??? ?? ???? ???? ???????? ??? ????? ??? ? ????. ??? ?? ??? ???? ?????? Linux ??? "??" ?? "??"?? ???. Linux ??? ?? ??(?? ?? ??)? ???? ??, CPU ? ???? ??, ?? ???, ?? ?? ? ????, ???? ?? Linux ??, ??? ?? ???? ????.

???? ?? | RISC-V Linux ?? ?? 2M ?? ??? ??? ???? ?? | RISC-V Linux ?? ?? 2M ?? ??? ??? Aug 01, 2023 pm 03:37 PM

?? ????? RISC-V Linux ??? ?? ??? ??? ??? ??????. RISC-V Linux ?? ??? 2M ????? ??? ???????. ??? 2M ?? ??? ???? ???? ??? ????? ??? ?? ???????. ??.

Linux ??: ??? ?? ??? ??? ?? ?? Linux ??: ??? ?? ??? ??? ?? ?? Mar 24, 2024 am 09:10 AM

Linux ??? ??? ?? ???? ??? ??? ??? ??? ?????. Linux ?? ?? ? ?? ?? ????? ?? ???? ??? ?? ? ???? Linux ??? ??? ??? ???? ?????. 1. ???? ??? ?? ?? ??? ?? ??? ???? Linux ??? ??? ?? ? ???? ????? ??? ? ????. ?? ??? ????? ???? Linux ??? ??? ???? ?? ??? ?? ?? ??? ???? ????? ?? ? ???????. ??????? ?? ?? ??? ?? ???? ??? ? ???? ?? ??? ??? ?????. 2. ??? ???? ?? ??? ??? ?? ??? ??? ???? ?? ????? ?? ????? ???? ??? ? ??? ???. ???? ???

Linux ?? TCP ???? ?? ???? ?? ?? ? ?? Linux ?? TCP ???? ?? ???? ?? ?? ? ?? Jan 28, 2024 am 09:39 AM

?????, ?? ???! ??? ?? Linux ?? TCP ???? ??? ?? ? ??? ???? ???? ??? ???? ?? ???? ?????? ??? ??? ??? ??? ???? ???? ? ?? ???? ?????. ? ?? ?? ??? ?? ??? ??? ? ???, ? ??? ? ??? ??? ??? ?? ??? ?? ?? ????? ????? ??? ?? ??? ??? ? ??? ????. 1. TCP ?? ?? TCP ?? ??? TCP ???? ??? ?? ??????? ?? ?? ??? ???? ?? ?? ?? ????. ???? ???? ????? ???? ? SYN ??? ?? ??(??? ???? ??) ? ???? ?? ??(?, TCPFastOp ??)? ???? ? ?? ????? ???? ??? ?? ??? ??????.

Android ???? Linux ?? ?? ?? ?? Android ???? Linux ?? ?? ?? ?? Mar 14, 2024 pm 12:48 PM

Android ???? Linux ??? ???? ??? ? ????, ? ??? ??? ???? ?????. Android ????? Linux ??? Android ???? ?? ?? ???? ???? ? ??? ?? ??? ???? ??? ??? ???. ? ????? Android ???? Linux ?? ?? ??, ?? ?? ? ?? ??? ???? ? ?? ???? ?? ??? ?????. ?????(Android)? ??? ??? ???? ??? ??? ????? ????, ??? ? ??? ??? ?? ????. ?

Linux ?? ??? ????? ??? ??? ?? ????? ? ??? ?? ?? ??? ? ????! Linux ?? ??? ????? ??? ??? ?? ????? ? ??? ?? ?? ??? ? ????! Aug 03, 2023 pm 04:50 PM

Linux ??? ?? ??? ???? CPU, I/O ??, ??? ??? ? ?? ???? ?? ??? ???? ?? ???? ?????. ?? ??? ???? ???? ?? ??? ?? ? ??? ??? ???? ???. ??? ????? ??? ??? ?? ??? ??? ?????.

See all articles