Skip to content

Commit

Permalink
wip: fix typos
Browse files Browse the repository at this point in the history
  • Loading branch information
GZTimeWalker committed Jan 17, 2024
1 parent 8398fda commit 886422b
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 2 deletions.
2 changes: 1 addition & 1 deletion docs/labs/0x02/tasks.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
`pkg/kernel/src/interrupt` 文件夹中,增量代码补充包含了如下的模块:

- `apic`:有关 XAPIC、IOAPIC 和 LAPIC 的定义和实现。
- `consts.rs`:有关于中断向量、IQR 的常量定义。
- `consts.rs`:有关于中断向量、IRQ 的常量定义。
- `exceptions.rs`:包含了 CPU 异常的处理函数,并暴露 `register_idt` 用于注册 IDT。
- `mod.rs`:定义了 `init` 函数,用于初始化中断系统,加载 IDT。

Expand Down
8 changes: 8 additions & 0 deletions docs/wiki/apic.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,14 @@ APIC 的简单初始化过程包括以下几个步骤:

以上过程会在实验任务文档中进行详细描述,具体细节和设置原因涉及对称多处理 SMP 等内容,不做理解要求,如有兴趣可以自行查阅参考资料了解。

## Local APIC 寄存器

在启用分页内存的情况下,需要对 LAPIC 寄存器地址进行映射,并虚拟内存地址进行操作。每个寄存器位宽为 32 位,并期望以 32 位整数的形式进行写入和读取。

<table border="2" cellpadding="4" cellspacing="0" class="wikitable"><tbody><tr><td> Offset</td><td> Register name</td><td> Read/Write permissions</td></tr><tr><td> 000h - 010h</td><td> Reserved</td><td></td></tr><tr><td> 020h</td><td> LAPIC ID Register</td><td> Read/Write</td></tr><tr><td> 030h</td><td> LAPIC Version Register</td><td> Read only</td></tr><tr><td> 040h - 070h</td><td> Reserved</td><td></td></tr><tr><td> 080h</td><td> Task Priority Register (TPR)</td><td> Read/Write</td></tr><tr><td> 090h</td><td> Arbitration Priority Register (APR)</td><td> Read only</td></tr><tr><td> 0A0h</td><td> Processor Priority Register (PPR)</td><td> Read only</td></tr><tr><td> 0B0h</td><td> EOI register</td><td> Write only</td></tr><tr><td> 0C0h</td><td> Remote Read Register (RRD)</td><td> Read only</td></tr><tr><td> 0D0h</td><td> Logical Destination Register</td><td> Read/Write</td></tr><tr><td> 0E0h</td><td> Destination Format Register</td><td> Read/Write</td></tr><tr><td> 0F0h</td><td> Spurious Interrupt Vector Register</td><td> Read/Write</td></tr><tr><td> 100h - 170h</td><td> In-Service Register (ISR)</td><td> Read only</td></tr><tr><td> 180h - 1F0h</td><td> Trigger Mode Register (TMR)</td><td> Read only</td></tr><tr><td> 200h - 270h</td><td> Interrupt Request Register (IRR)</td><td> Read only</td></tr><tr><td> 280h</td><td> Error Status Register</td><td> Read only</td></tr><tr><td> 290h - 2E0h</td><td> Reserved</td><td></td></tr><tr><td> 2F0h</td><td> LVT Corrected Machine Check Interrupt (CMCI) Register</td><td> Read/Write</td></tr><tr><td> 300h - 310h</td><td> Interrupt Command Register (ICR)</td><td> Read/Write</td></tr><tr><td> 320h</td><td> LVT Timer Register</td><td> Read/Write</td></tr><tr><td> 330h</td><td> LVT Thermal Sensor Register</td><td> Read/Write</td></tr><tr><td> 340h</td><td> LVT Performance Monitoring Counters Register</td><td> Read/Write</td></tr><tr><td> 350h</td><td> LVT LINT0 Register</td><td> Read/Write</td></tr><tr><td> 360h</td><td> LVT LINT1 Register</td><td> Read/Write</td></tr><tr><td> 370h</td><td> LVT Error Register</td><td> Read/Write</td></tr><tr><td> 380h</td><td> Initial Count Register (for Timer)</td><td> Read/Write</td></tr><tr><td> 390h</td><td> Current Count Register (for Timer)</td><td> Read only</td></tr><tr><td> 3A0h - 3D0h</td><td> Reserved</td><td></td></tr><tr><td> 3E0h</td><td> Divide Configuration Register (for Timer)</td><td> Read/Write</td></tr><tr><td> 3F0h</td><td> Reserved</td><td></td></tr></tbody></table>

你可以参考文末给出的参考资料以获取这些寄存器的细节信息。

## 参考资料

- [APIC - OSDev](https://wiki.osdev.org/APIC)
Expand Down
2 changes: 1 addition & 1 deletion docs/wiki/structures.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

在 32 位保护模式下,它主要用于存储与任务(任务切换)和中断处理相关的信息。TSS 包含了处理器在任务切换时需要保存和恢复的一些状态信息。每个任务都有一个相应的 TSS,通过任务寄存器(Task Register,TR)来引用。

在 64 位长模式下,TSS 的结构与 32 位不同,它并不直接与任务切换挂钩,但是它仍然被用于存储当特权级栈和中断栈
在 64 位长模式下,TSS 的结构与 32 位不同,它并不直接与任务切换挂钩,但是它仍然被用于存储特权级栈和中断栈

- 特权级栈:最多三个,当权限级别从较低权限级别更改为较高权限级别时使用的栈指针。
- 中断栈:最多七个,当中断发生时,如果定义了对应的中断栈,则使用对应栈指针。它可以用于存储不同**大小和用途**的中断栈,以处理不同的中断。
Expand Down
1 change: 1 addition & 0 deletions src/0x02/pkg/kernel/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ x86 = "0.52"
x86_64 = "0.14"
log = "0.4"
bitflags = "2.3"
bit_field = "0.10"
libm = "0.2"
linked_list_allocator = "0.10"

0 comments on commit 886422b

Please sign in to comment.