os/arch/riscv/
constant.rs

1//! RISC-V 架构相关的常量定义
2#![allow(unused)]
3
4/// 架构名称字符串
5pub const ARCH: &str = "riscv64";
6
7/// riscv sstatus 寄存器中 SIE 位的掩码
8pub const SSTATUS_SIE: usize = 1 << 1;
9/// riscv sstatus 寄存器中 SPIE 位的掩码
10pub const SSTATUS_SPIE: usize = 1 << 5;
11/// riscv sstatus 寄存器中 SPP 位的掩码
12pub const SSTATUS_SPP: usize = 1 << 8;
13
14/// riscv sv39 地址空间布局常量
15/// 包括用户空间和内核空间的地址范围
16/// 用户空间地址范围: 0x0000_0000_0000_0000 - 0x0000_003f_ffff_ffff
17/// 内核空间地址范围: 0xffff_ffc0_0000_0000 - 0xffff_ffff_ffff_ffff
18pub const SV39_TOP_HALF_TOP: usize = 0xffff_ffff_ffff_ffff;
19pub const SV39_TOP_HALF_BASE: usize = 0xffff_ffc0_0000_0000;
20pub const SV39_BOT_HALF_TOP: usize = 0x0000_003f_ffff_ffff;
21pub const SV39_BOT_HALF_BASE: usize = 0x0000_0000_0000_0000;
22
23/// 16 字节对齐所需的掩码 (RV64)
24pub const STACK_ALIGN_MASK: usize = 0xF;
25
26/// 用户空间地址范围常量
27pub const USER_BASE: usize = 0x0000_0000_0000_0000;
28pub const USER_TOP: usize = 0x0000_003f_ffff_ffff;
29
30pub const IRQ_MIN: usize = usize::MAX / 2;
31pub const IRQ_MAX: usize = usize::MAX;
32
33pub const TIMER: usize = usize::MAX / 2 + 1 + 5;
34pub const SUPERVISOR_EXTERNAL: usize = usize::MAX / 2 + 1 + 8;