Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9e173f8

Browse files
committed
移动 asm 和 ld 文件
1 parent 5919b39 commit 9e173f8

File tree

17 files changed

+20
-20
lines changed

17 files changed

+20
-20
lines changed

docs/lab-0/guide/part-6.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ Program Header:
3333
3434
### 编写链接脚本
3535

36-
我们使用**链接脚本(Linker Script)**来指定程序的内存布局。创建文件 `os/src/linker/linker.ld`
36+
我们使用**链接脚本(Linker Script)**来指定程序的内存布局。创建文件 `os/src/linker.ld`
3737

38-
{% label %}os/src/linker/linker.ld{% endlabel %}
38+
{% label %}os/src/linker.ld{% endlabel %}
3939
```cpp
4040
/* 有关 Linker Script 可以参考:https://sourceware.org/binutils/docs/ld/Scripts.html */
4141

@@ -122,7 +122,7 @@ SECTIONS
122122
# 使用我们的 linker script 来进行链接
123123
[target.riscv64imac-unknown-none-elf]
124124
rustflags = [
125-
"-C", "link-arg=-Tsrc/linker/linker.ld",
125+
"-C", "link-arg=-Tsrc/linker.ld",
126126
]
127127
```
128128

docs/lab-0/guide/part-7.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ OpenSBI 所做的一件事情就是把 CPU 从 M Mode 切换到 S Mode,接着
3535
3636
接着我们要在 `_start` 中设置内核的运行环境了,我们直接来看代码:
3737

38-
{% label %}os/src/asm/entry.asm{% endlabel %}
38+
{% label %}os/src/entry.asm{% endlabel %}
3939
```assembly
4040
# 操作系统启动时所需的指令以及字段
4141
#
@@ -88,7 +88,7 @@ boot_stack_top:
8888
#![feature(global_asm)]
8989

9090
// 汇编编写的程序入口,具体见该文件
91-
global_asm!(include_str!("asm/entry.asm"));
91+
global_asm!(include_str!("entry.asm"));
9292

9393
use core::panic::PanicInfo;
9494

docs/lab-0/guide/part-8.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ PMP1: 0x0000000000000000-0xffffffffffffffff (A,R,W,X)
5959
#![feature(global_asm)]
6060

6161
// 汇编编写的程序入口,具体见该文件
62-
global_asm!(include_str!("asm/entry.asm"));
62+
global_asm!(include_str!("entry.asm"));
6363

6464
use core::panic::PanicInfo;
6565

docs/lab-0/guide/part-9.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ mod panic;
257257
mod sbi;
258258

259259
// 汇编编写的程序入口,具体见该文件
260-
global_asm!(include_str!("asm/entry.asm"));
260+
global_asm!(include_str!("entry.asm"));
261261

262262
/// Rust 的入口函数
263263
///

docs/lab-1/guide/part-4.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88

99
### 编写汇编
1010

11-
因为汇编代码较长,这里我们新建一个 `os/src/asm/interrupt.asm` 文件来编写这段操作:
11+
因为汇编代码较长,这里我们新建一个 `os/src/interrupt.asm` 文件来编写这段操作:
1212

13-
{% label %}os/src/asm/interrupt.asm{% endlabel %}
13+
{% label %}os/src/interrupt.asm{% endlabel %}
1414
```asm
1515
# 宏:将寄存器存到栈上
1616
.macro SAVE reg, offset

docs/lab-1/guide/part-5.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
use super::context::Context;
1212
use riscv::register::stvec;
1313

14-
global_asm!(include_str!("../asm/interrupt.asm"));
14+
global_asm!(include_str!("./interrupt.asm"));
1515

1616
/// 初始化中断处理
1717
///

docs/lab-3/guide/part-2.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
随后,我们把原来的 linker script 和之前在物理内存管理上的一些参数修改一下。
88

9-
{% label %}os/src/linker/linker.ld{% endlabel %}
9+
{% label %}os/src/linker.ld{% endlabel %}
1010
```clike
1111
/* Linker Script 语法可以参见:http://www.scoberlin.de/content/media/http/informatik/gcc_docs/ld_3.html */
1212
@@ -97,7 +97,7 @@ pub const KERNEL_MAP_OFFSET: usize = 0xffff_ffff_0000_0000;
9797

9898
最后一步,我们需要告诉 RISC-V CPU 我们做了这些修改,也就是需要在启动时、在进入 `rust_main` 之前我们要完成一个从物理地址访存模式到虚拟访存模式的转换,同时这也意味着,我们要写一个简单的页表,完成这个线性映射:
9999

100-
{% label %}os/src/asm/entry.asm{% endlabel %}
100+
{% label %}os/src/entry.asm{% endlabel %}
101101
```assembly
102102
# 操作系统启动时所需的指令以及字段
103103
#

docs/lab-4/guide/part-2.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
首先我们稍作修改,添加一行 `mv sp, a0`。原本这里是读取之前存好的 `Context`,现在我们让其从 `a0` 中读取我们设计好的 `Context`。这样,我们可以直接在 Rust 代码中调用 `__restore(context)`
2828

29-
{% label %}os/src/asm/interrupt.asm{% endlabel %}
29+
{% label %}os/src/interrupt.asm{% endlabel %}
3030
```asm
3131
__restore:
3232
mv sp, a0 # 加入这一行

docs/lab-4/guide/part-4.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ impl KernelStack {
5959

6060
在这个汇编代码中,我们需要加入对 `sscratch` 的判断和使用。
6161

62-
{% label %}os/src/asm/interrupt.asm{% endlabel %}
62+
{% label %}os/src/interrupt.asm{% endlabel %}
6363
```asm
6464
__interrupt:
6565
# 涉及到用户线程时,保存 Context 就必须使用内核栈
@@ -91,7 +91,7 @@ _from_user:
9191

9292
以及事后的恢复:
9393

94-
{% label %}os/src/asm/interrupt.asm{% endlabel %}
94+
{% label %}os/src/interrupt.asm{% endlabel %}
9595
```asm
9696
__restore:
9797
# 从 a0 中读取 sp

docs/lab-5/guide/part-2.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ pub fn virtio_probe(node: &Node) {
6565

6666
从设备树节点的 reg 信息中可以读出设备进一步信息的放置位置,输出一下,这些地址在 0x10000000 - 0x10010000 左右,这段虽然算是内存区间,但是还记得的吗?我们的物理内存只分布在 0x80000000 到 0x88000000 的空间中,那这段空间哪里来的呢?这就是所谓的**内存映射读写 MMIO(Memory Mapped I/O)**,也就是总线把对设备操作信息传递也映射成了内存的一部分,CPU 操作设备和访问内存没有任何的区别,大家可以联系一下计算机组成原理中对串口的访问,这里是一个道理。
6767

68-
所以,为了访问这段地址,我们也需要把它加到页表里面,分别对应在 `os/src/asm/entry.asm` 中的 `boot_page_table` 以及 `os/src/memory/mapping/memory_set.rs` 的新建内核线程中加入了这段地址,使得我们的内核线程可以访问他们。
68+
所以,为了访问这段地址,我们也需要把它加到页表里面,分别对应在 `os/src/entry.asm` 中的 `boot_page_table` 以及 `os/src/memory/mapping/memory_set.rs` 的新建内核线程中加入了这段地址,使得我们的内核线程可以访问他们。
6969

7070
### virtio_drivers 库
7171

0 commit comments

Comments
 (0)