aboutsummaryrefslogtreecommitdiff
path: root/arch/riscv/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'arch/riscv/kernel')
-rw-r--r--arch/riscv/kernel/irq.c10
-rw-r--r--arch/riscv/kernel/vmem.c2
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