From 64a58f9c90fdc9e7cd0efb9ca9e728d797759eb4 Mon Sep 17 00:00:00 2001 From: hzc1998 <2323168280@qq.com> Date: Mon, 11 Apr 2022 05:10:52 +0800 Subject: [PATCH] fix(riscv): fix code err --- book.json | 3 --- programing-manual/port/riscv/riscv.md | 12 ++++++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/book.json b/book.json index 07b3917..8cc5e52 100644 --- a/book.json +++ b/book.json @@ -9,9 +9,6 @@ "bookos": "http://book-os.org" } }, - "plugins": [ - "tbfed-pagefooter" - ], "pluginsConfig": { "tbfed-pagefooter": { "copyright":"Copyright © BookOS-developers 2022", diff --git a/programing-manual/port/riscv/riscv.md b/programing-manual/port/riscv/riscv.md index 54979fb..a065fbc 100644 --- a/programing-manual/port/riscv/riscv.md +++ b/programing-manual/port/riscv/riscv.md @@ -116,6 +116,7 @@ RISC-V的MMU支持多种模式,有Sv32/Sv39/Sv48/Sv57/Sv64等。不同的模 入口地址在链接脚本中写的是 `_Start` 这个符号,因此会进入 `sbi_entry.S` 的 `_Start` 执行。 * 文件:src/arch/riscv64/kernel/sbi_entry.S + ```c /** * Copyright (c) 2018-2022, NXOS Development Team @@ -205,6 +206,7 @@ CPU_StackTop3: 因此 `NX_HalDirectUartStage2` 就注册了串口中断,可以接受输入。 * 文件:src/platform/qemu_riscv64/hal/init.c + ```c /** * Copyright (c) 2018-2022, NXOS Development Team @@ -268,6 +270,7 @@ NX_INTERFACE NX_Error NX_HalPlatformStage2(void) 实现 `NX_HalConsoleOutChar` 函数后,就可以使用 `NX_Printf` 和 `NX_LOG_*` 函数来打印消息。 * 文件:src/platform/qemu_riscv64/drivers/direct_uart.c + ```c /** * Copyright (c) 2018-2022, NXOS Development Team @@ -403,6 +406,7 @@ void NX_HalDirectUartStage2(void) 这里只需要调用 `gcc` 内置的原子操作即可。 * 文件:src/arch/riscv64/port/atomic.c + ```c /** * Copyright (c) 2018-2022, NXOS Development Team @@ -489,6 +493,7 @@ NX_INTERFACE struct NX_AtomicOps NX_AtomicOpsInterface = 内存读/写屏障使用 `fence` 指令去实现。内存指令屏障使用 `fence.i` 指令实现。 * 文件:src/arch/riscv64/port/barrier.c + ```c /** * Copyright (c) 2018-2022, NXOS Development Team @@ -546,6 +551,7 @@ NX_INTERFACE struct NX_MemBarrierOps NX_MemBarrierOpsInterface = 当超时后,就会产生一个中断,于是就设置下一个中断产生时的超时值。 * 文件:src/arch/riscv64/port/clock.c + ```c /** * Copyright (c) 2018-2022, NXOS Development Team @@ -618,6 +624,7 @@ NX_INTERFACE NX_Error NX_HalInitClock(void) 需要能够访问用户态的内存,需要在返回后开启中断以及设置为 `Supervisor` 模式(因为线程的切换是在内核中完成的)。 * 文件:src/arch/riscv64/port/context.c + ```c /** * Copyright (c) 2018-2022, NXOS Development Team @@ -689,6 +696,7 @@ NX_INTERFACE struct NX_ContextOps NX_ContextOpsInterface = 至于在 `NX_HalContextSwitchPrevNext` 中,多了对当前线程的上下文的保存的工作,然后切换到下一个线程。 * 文件:src/arch/riscv64/kernel/context.S + ```c /** * Copyright (c) 2018-2022, NXOS Development Team @@ -766,6 +774,7 @@ NX_HalContextSwitchPrevNext: 这3个接口都是对 `PLIC` 的封装。 * 文件:src/arch/riscv64/port/interrupt.c + ```c /** * Copyright (c) 2018-2022, NXOS Development Team @@ -868,6 +877,7 @@ NX_INTERFACE NX_IRQ_Controller NX_IRQ_ControllerInterface = `NX_HalEnable` 是使能 `MMU` ,所有地址都变成虚拟地址了。 * 文件:src/arch/riscv64/port/mmu.c + ```c NX_PRIVATE void *NX_HalMapPage(NX_Mmu *mmu, NX_Addr virAddr, NX_Size size, NX_UArch attr) { @@ -990,6 +1000,7 @@ NX_INTERFACE struct NX_MmuOps NX_MmuOpsInterface = `NX_HalProcessGetKernelPageTable` 用于获取内核的页表。 * 文件:src/arch/riscv64/port/process.c + ```c /** * Copyright (c) 2018-2022, NXOS Development Team @@ -1101,6 +1112,7 @@ NX_INTERFACE struct NX_ProcessOps NX_ProcessOpsInterface = 都会被映射成索引,相当于是处理器 `id` 的 `hash` 值,其返回值范围为 **0~NX_MULTI_CORES_NR - 1**。 * 文件:src/arch/riscv64/port/smp.c + ```c /** * Copyright (c) 2018-2022, NXOS Development Team -- Gitee