WebApr 7, 2024 · # switch to the user page table. csrw satp, a1 sfence.vma zero, zero # put the saved user a0 in sscratch, so we # can swap it with our a0 (TRAPFRAME) in the last … WebApr 13, 2024 · - csrw sscratch, x0 + csrw CSR_SSCRATCH, x0 /* Load the global pointer */.option push @@ -248,7 +248,7 @@ resume_userspace: * Save TP into sscratch, so …
Taking control of RISC-V: RISCV OS in Rust - Stephen Marz
Web一个叫 satp (Supervisor Address Translation and Protection,监管者地址转换和保护) 的 S 模式控制状态寄存器控制了分页系统。 如图 10.12 所示,satp 有三个域。 MODE 域可 以开启分页并选择页表级数,图 10.13 展示了它的编码。 ASID (Address Space Identifier, 地址空间标识符)域是可选的,它可以用来降低上下文切换的开销。 最后,PPN 字段保存 了 … WebNov 27, 2024 · REG_S sp, (SBI_TRAP_REGS_OFFSET(sp) - SBI_TRAP_REGS_SIZE) (t0) add sp, t0, - (SBI_TRAP_REGS_SIZE) REG_S zero, SBI_TRAP_REGS_OFFSET(zero) (sp) REG_S ra, SBI_TRAP_REGS_OFFSET(ra) (sp) REG_S gp, SBI_TRAP_REGS_OFFSET(gp) (sp) REG_S tp, SBI_TRAP_REGS_OFFSET(tp) (sp) … shanghai no 1 seafood village jonathan gold
Exception on `csrw`; I
Webla t0, BOOTSTRAP_CORE_TRAP_CONTEXT csrw sscratch, t0 /* Set trap stack in the trap context */ la t1, _trap_stack_top sd t1, (32*8)(t0) /* Load trap vector into mtvec */ la t0, _trap csrw stvec, t0 /* SPIE is whether interrupts were enabled prior to the last trap in S mode. /* SIE is machine interrupts enabled */ Webcsrw satp, zero # init .bss: la t0, .bss # pointer: la t1, _end # end: bss_init_loop: sb zero, 0 (t0) addi t0, t0, 1: bne t0, t1, bss_init_loop # set mtimecmp to mtime+time_sep: la t0, … Web最后我们创建内核地址空间并让 CPU 开启分页模式, MMU 在地址转换的时候使用内核的多级页表,这一切均在一行之内做到: - 首先,我们引用 ``KERNEL_SPACE`` ,这是它第一次被使用,就在此时它会被初始化,调用 ``MemorySet::new_kernel`` 创建一个内核地址空间并 … shanghai noodle factory song