From e16f5f81dfb2e97a554ec19b941ec05a7942fd2d Mon Sep 17 00:00:00 2001 From: Kimplul Date: Fri, 4 Aug 2023 20:50:41 +0300 Subject: add initial smp bringup --- include/arch/smp.h | 22 ++++++++++++++++++++++ include/arch/tcb.h | 10 ++++++++++ 2 files changed, 32 insertions(+) create mode 100644 include/arch/smp.h (limited to 'include/arch') diff --git a/include/arch/smp.h b/include/arch/smp.h new file mode 100644 index 0000000..16c29d5 --- /dev/null +++ b/include/arch/smp.h @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: copyleft-next-0.3.1 */ +/* Copyright 2023, Kim Kuparinen < kimi.h.kuparinen@gmail.com > */ + +/** + * @file smp.h + * Arch specific multicore bringup stuff. + */ + +#ifndef KMI_ARCH_SMP_H +#define KMI_ARCH_SMP_H + +#include + +/** + * Bring up other cores in system. + * + * @param b Direct + kernel mappin virtual memory to use. + * @param fdt Flattened device tree. + */ +void smp_bringup(struct vmem *b, void *fdt); + +#endif /* KMI_ARCH_SMP_H */ diff --git a/include/arch/tcb.h b/include/arch/tcb.h index 0687954..f4c80c6 100644 --- a/include/arch/tcb.h +++ b/include/arch/tcb.h @@ -15,4 +15,14 @@ #include "../../arch/riscv32/include/tcb.h" #endif +/** + * Force store tcb \p t in arch-specific way. + * cpu_assign() is allowed to assume there's always a valid tcb + * set, so during init we have to force set a tcb before cpu_assign() can be + * used. + * + * @param t tcb to set. + */ +void tcb_assign(struct tcb *t); + #endif /* KMI_ARCH_TCB_H */ -- cgit v1.3