Finishes removal of x86_32 (XCC)
[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(pde_t *pt, uintptr_t start, size_t size)
28 {
29         pte_t* pte;
30         uintptr_t i;
31         page_t* page;
32
33         cprintf("      Virtual            Physical      SR SW SX UR UW UX D R\n");
34         cprintf("------------------------------------------------------------\n");
35         for(i = 0; i < size; i += PGSIZE, start += PGSIZE)
36         {
37                 page = page_lookup(pt, (void*)start, &pte);
38                 cprintf("%016p  ",start);
39                 if(page)
40                 {
41                         cprintf("%016p  %1d  %1d  %1d  %1d  %1d  %1d %1d %1d\n",
42                                 page2pa(page),
43                                 !!(*pte & PTE_SR), !!(*pte & PTE_SW), !!(*pte & PTE_SX),
44                                 !!(*pte & PTE_UR), !!(*pte & PTE_UW), !!(*pte & PTE_UX),
45                                 !!(*pte & PTE_D), !!(*pte & PTE_R));
46                 }
47                 else
48                         cprintf("%016p\n",0);
49         }
50 }