Files
Toooba/Tests/isa/PageTableTest.S
2026-01-14 15:29:03 +00:00

99 lines
1.9 KiB
ArmAsm

.option norvc
.option norelax
.section .text
.globl _start
.globl vm_boot
# --------------------------------------------------
# Entry point
# --------------------------------------------------
_start:
vm_boot:
# Only hart 0
csrr a0, mhartid
bnez a0, hang.
# --------------------------------------------------
# Build page table entries
# --------------------------------------------------
# root_pt[0] -> l1_pt
la t0, l1_pt
srli t0, t0, 12
slli t0, t0, 10
ori t0, t0, 0x1 # V
la t1, root_pt
sd t0, 0(t1)
# l1_pt[0] -> l0_pt
la t0, l0_pt
srli t0, t0, 12
slli t0, t0, 10
ori t0, t0, 0x1 # V
la t1, l1_pt
sd t0, 0(t1)
# l0_pt[0] -> identity RWX mapping
li t0, (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<6)
la t1, l0_pt
sd t0, 0(t1)
# --------------------------------------------------
# Enable Sv39 paging
# --------------------------------------------------
la t0, root_pt
srli t0, t0, 12 # PPN
li t1, (8 << 60) # MODE = Sv39
or t0, t0, t1
csrw satp, t0
sfence.vma zero, zero
# Signal success
la t0, tohost
li t1, 1
sd t1, 0(t0)
hang:
wfi
j hang
# --------------------------------------------------
# Required ISA test symbols
# --------------------------------------------------
.globl exit
exit:
j exit
# --------------------------------------------------
# Data section (NO .bss)
# --------------------------------------------------
.section .data
.align 3
.globl tohost
.globl fromhost
tohost:
.dword 0
fromhost:
.dword 0
# --------------------------------------------------
# Page tables (must be in .data)
# --------------------------------------------------
.align 12
root_pt:
.zero 4096
.align 12
l1_pt:
.zero 4096
.align 12
l0_pt:
.zero 4096