MSI-X: Minor changes
[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_HW_TRAPFRAME == sizeof(struct hw_trapframe));
13 }
14
15 void
16 print_cpuinfo(void)
17 {
18         int id = mfpcr(PCR_IMPL);
19         const char* name = "(unknown implementation)";
20         if (id == 1)
21           name = "ISA Simulator";
22         else if (id == 2)
23           name = "Rocket64";
24         cprintf("CPU Info: RISC-V %s\n", name);
25 }
26
27 void show_mapping(uintptr_t start, size_t size)
28 {
29   pde_t* pt = (pde_t*)KADDR(rcr3());
30         pte_t* pte;
31         uintptr_t i;
32         page_t* page;
33
34         cprintf("      Virtual            Physical      SR SW SX UR UW UX D R\n");
35         cprintf("------------------------------------------------------------\n");
36         for(i = 0; i < size; i += PGSIZE, start += PGSIZE)
37         {
38                 page = page_lookup(pt, (void*)start, &pte);
39                 cprintf("%016p  ",start);
40                 if(page)
41                 {
42                         cprintf("%016p  %1d  %1d  %1d  %1d  %1d  %1d %1d %1d\n",
43                                 page2pa(page),
44                                 !!(*pte & PTE_SR), !!(*pte & PTE_SW), !!(*pte & PTE_SX),
45                                 !!(*pte & PTE_UR), !!(*pte & PTE_UW), !!(*pte & PTE_UX),
46                                 !!(*pte & PTE_D), !!(*pte & PTE_R));
47                 }
48                 else
49                         cprintf("%016p\n",0);
50         }
51 }