diff options
Diffstat (limited to 'arch/riscv/kernel')
| -rw-r--r-- | arch/riscv/kernel/irq.c | 10 | ||||
| -rw-r--r-- | arch/riscv/kernel/vmem.c | 2 |
2 files changed, 10 insertions, 2 deletions
diff --git a/arch/riscv/kernel/irq.c b/arch/riscv/kernel/irq.c index ed97c00..f844dd1 100644 --- a/arch/riscv/kernel/irq.c +++ b/arch/riscv/kernel/irq.c @@ -1,13 +1,21 @@ #include <apos/irq.h> +#include <apos/attrs.h> +#include <apos/debug.h> #include <csr.h> void init_irq(void *fdt) { UNUSED(fdt); + csr_write(CSR_STVEC, &handle_irq); + + long s = 0; + csr_read(CSR_SIE, s); + info("CSR_SIE: %lx\n", s); } -void handle_irq() +__aligned(4) void handle_irq() { + while(1); } /* very simple for now */ diff --git a/arch/riscv/kernel/vmem.c b/arch/riscv/kernel/vmem.c index c862cea..1f1f44a 100644 --- a/arch/riscv/kernel/vmem.c +++ b/arch/riscv/kernel/vmem.c @@ -177,6 +177,6 @@ int setup_kernel_io(struct vm_branch *b, vm_t paddr) /* assume Sv39 for now */ pm_t gigapage = paddr / MM_GPAGE_SIZE; b->leaf[IO_PAGE] = (struct vm_branch *)to_pte(gigapage, VM_V | VM_R | VM_W); - return 0; + return -SZ_1G + paddr - (gigapage * MM_GPAGE_SIZE); } #endif |
