diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-07-06 23:37:11 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-07-06 23:37:11 +0300 |
| commit | 3fedbb6e1f849c5e0a4033d68201d60c2fc48121 (patch) | |
| tree | bd219cef69a19938ecf453c3c3bb76fc13bd31a9 /arch/riscv64/kernel | |
| parent | 3528f88fc36df6964c0efed784ae223cfe93544e (diff) | |
| download | kmi-3fedbb6e1f849c5e0a4033d68201d60c2fc48121.tar.gz kmi-3fedbb6e1f849c5e0a4033d68201d60c2fc48121.zip | |
core bringup + various warnings
+ dbg_fdt() is apparently broken, possibly due to UB or something, but
it causes some issues with optimizations enabled. Remove it
temporarily
Diffstat (limited to 'arch/riscv64/kernel')
| -rw-r--r-- | arch/riscv64/kernel/core_bringup.S | 4 | ||||
| -rw-r--r-- | arch/riscv64/kernel/smp.c | 5 | ||||
| -rw-r--r-- | arch/riscv64/kernel/vmem.c | 2 |
3 files changed, 6 insertions, 5 deletions
diff --git a/arch/riscv64/kernel/core_bringup.S b/arch/riscv64/kernel/core_bringup.S index aff9b0b..83b017c 100644 --- a/arch/riscv64/kernel/core_bringup.S +++ b/arch/riscv64/kernel/core_bringup.S @@ -12,12 +12,12 @@ riscv_bringup: sfence.vma /* fetch the stack allocated to us at our hart index in smp_init_stacks */ - la t0, smp_init_stacks + lla t0, smp_init_stacks slli t1, a0, RW_SHIFT add t0, t0, t1 lr sp, 0(t0) mv tp, sp /* jump to C to handle rest of bringup */ - la t0, core_bringup + lla t0, core_bringup jr t0 diff --git a/arch/riscv64/kernel/smp.c b/arch/riscv64/kernel/smp.c index 8d04491..74cc930 100644 --- a/arch/riscv64/kernel/smp.c +++ b/arch/riscv64/kernel/smp.c @@ -93,8 +93,9 @@ void smp_bringup(struct vmem *b, void *fdt) /** @todo try to remember to free these as well */ smp_init_stacks[hartid] = (void *)alloc_page(BASE_PAGE) + BASE_PAGE_SIZE; - r = sbi_hart_start(hartid, - (unsigned long)__pa(riscv_bringup), satp); + + pm_t bringup = (pm_t)__pa(riscv_bringup); + r = sbi_hart_start(hartid, bringup, satp); if (r.error) { warn("failed bringing up hart %ld: %ld\n", diff --git a/arch/riscv64/kernel/vmem.c b/arch/riscv64/kernel/vmem.c index 00752c1..97b9cce 100644 --- a/arch/riscv64/kernel/vmem.c +++ b/arch/riscv64/kernel/vmem.c @@ -536,7 +536,7 @@ void setup_rpc_stack(struct tcb *t) * which means that it must also be the leaf */ t->arch.rpc_leaf = (struct vmem *)__find_vmem(t->rpc.vmem, RPC_STACK_BASE, - BASE_PAGE); + NULL); /* we count downward in base pages */ t->arch.rpc_idx = rpc_pages; } |
