Initial commit of RISC-V architecture port
[akaros.git] / kern / arch / riscv / cpuinfo.c
1 #include <arch/arch.h>
2 #include <arch/mmu.h>
3 #include <stdio.h>
4 #include <assert.h>
5 #include <smp.h>
6 #include <umem.h>
7 #include <pmap.h>
8
9 static void
10 static_asserts_can_go_here()
11 {
12         static_assert(SIZEOF_TRAPFRAME_T == sizeof(trapframe_t));
13 }
14
15 void
16 print_cpuinfo(void)
17 {
18         cprintf("CPU Info: Not Just Any Other RISC-V Core (TM)\n");
19 }
20
21 void show_mapping(uintptr_t start, size_t size)
22 {
23   pde_t* pt = (pde_t*)KADDR(rcr3());
24         pte_t* pte;
25         uintptr_t i;
26         page_t* page;
27
28         cprintf("      Virtual            Physical      SR SW SX UR UW UX D R\n");
29         cprintf("------------------------------------------------------------\n");
30         for(i = 0; i < size; i += PGSIZE, start += PGSIZE)
31         {
32                 page = page_lookup(pt, (void*)start, &pte);
33                 cprintf("%016p  ",start);
34                 if(page)
35                 {
36                         cprintf("%016p  %1d  %1d  %1d  %1d  %1d  %1d %1d %1d\n",
37                                 page2pa(page),
38                                 !!(*pte & PTE_SR), !!(*pte & PTE_SW), !!(*pte & PTE_SX),
39                                 !!(*pte & PTE_UR), !!(*pte & PTE_UW), !!(*pte & PTE_UX),
40                                 !!(*pte & PTE_D), !!(*pte & PTE_R));
41                 }
42                 else
43                         cprintf("%016p\n",0);
44         }
45 }
46
47 void
48 backtrace(void)
49 {
50   panic("No backtrace yet!");
51 }