blob: b3ead4e864332101966983da663efcd16ba6c31c [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef _ASMRISCV_SMP_H_
#define _ASMRISCV_SMP_H_
#include <asm/barrier.h>
#include <asm/processor.h>
#define smp_wait_for_event() cpu_relax()
#define smp_send_event() cpu_relax()
static inline int smp_processor_id(void)
{
return current_thread_info()->cpu;
}
typedef void (*secondary_func_t)(void);
struct secondary_data {
unsigned long satp;
unsigned long stvec;
secondary_func_t func;
} __attribute__((aligned(16)));
void secondary_entry(unsigned long hartid, unsigned long sp_phys);
secondary_func_t secondary_cinit(struct secondary_data *data);
void smp_boot_secondary(int cpu, void (*func)(void));
void smp_boot_secondary_nofail(int cpu, void (*func)(void));
#endif /* _ASMRISCV_SMP_H_ */