Lecture: RISC-V privileged ISA

administrivia

today’s plan

base ISA review

int bar(int x)
{
	return x + 1;
}

int foo(int x)
{
	return bar(x) + 1;
}
bar:
	addiw	a0,a0,1
	ret
	.size	bar, .-bar
	.align	1
	.globl	foo
	.type	foo, @function
foo:
	addi	sp,sp,-16
	sd	ra,8(sp)
	call	bar
	ld	ra,8(sp)
	addiw	a0,a0,1
	addi	sp,sp,16
	jr	ra

privileged ISA

trap handling

int main(void)
{
  *(volatile int *)0x4000000000 = 0;
  return 0;
}
$ call
usertrap(): unexpected scause 0x000000000000000d pid=3
            sepc=0x0000000000000028 stval=0x0000004000000000

virtual memory

page table 0x0000000087fff000
 ..0: pte 0x0000000021fff801 pa 0x0000000087ffe000
 .. ..128: pte 0x0000000021fff401 pa 0x0000000087ffd000
 .. .. ..0: pte 0x0000000004000007 pa 0x0000000010000000