#include <arch/arch.h>
#include <arch/mmu.h>
#include <stdio.h>
#include <assert.h>
#include <smp.h>
#include <umem.h>
#include <pmap.h>

static void
static_asserts_can_go_here()
{
	static_assert(SIZEOF_HW_TRAPFRAME == sizeof(struct hw_trapframe));
}

void
print_cpuinfo(void)
{
	int id = mfpcr(PCR_IMPL);
	const char* name = "(unknown implementation)";
	if (id == 1)
	  name = "ISA Simulator";
	else if (id == 2)
	  name = "Rocket64";
	cprintf("CPU Info: RISC-V %s\n", name);
}

#warning "convert pgdir* to pgdir_t"
void show_mapping(pgdir_t *pt, uintptr_t start, size_t size)
{
	pte_t* pte;
	uintptr_t i;
	page_t* page;

	cprintf("      Virtual            Physical      SR SW SX UR UW UX D R\n");
	cprintf("------------------------------------------------------------\n");
	for(i = 0; i < size; i += PGSIZE, start += PGSIZE)
	{
		page = page_lookup(pt, (void*)start, &pte);
		cprintf("%016p  ",start);
		if(page)
		{
			cprintf("%016p  %1d  %1d  %1d  %1d  %1d  %1d %1d %1d\n",
			        page2pa(page),
			        !!(*pte & PTE_SR), !!(*pte & PTE_SW), !!(*pte & PTE_SX),
			        !!(*pte & PTE_UR), !!(*pte & PTE_UW), !!(*pte & PTE_UX),
			        !!(*pte & PTE_D), !!(*pte & PTE_R));
		}
		else
			cprintf("%016p\n",0);
	}
}
