2021-02-21 20:58:04 +00:00
|
|
|
#include "multicore.h"
|
|
|
|
|
|
|
|
void store32(unsigned long address, unsigned long value)
|
|
|
|
{
|
|
|
|
*(unsigned long *) address = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
unsigned long load32(unsigned long address)
|
|
|
|
{
|
|
|
|
return *(unsigned long *) address;
|
|
|
|
}
|
|
|
|
|
|
|
|
void start_core1(void (*func)(void))
|
|
|
|
{
|
|
|
|
store32((unsigned long)&spin_cpu1, (unsigned long)func);
|
|
|
|
asm volatile ("sev");
|
|
|
|
}
|
|
|
|
|
|
|
|
void start_core2(void (*func)(void))
|
|
|
|
{
|
|
|
|
store32((unsigned long)&spin_cpu2, (unsigned long)func);
|
|
|
|
asm volatile ("sev");
|
|
|
|
}
|
|
|
|
|
|
|
|
void start_core3(void (*func)(void))
|
|
|
|
{
|
|
|
|
store32((unsigned long)&spin_cpu3, (unsigned long)func);
|
|
|
|
asm volatile ("sev");
|
|
|
|
}
|
2021-02-22 10:24:12 +00:00
|
|
|
|
|
|
|
void clear_core1(void)
|
|
|
|
{
|
|
|
|
store32((unsigned long)&spin_cpu1, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
void clear_core2(void)
|
|
|
|
{
|
|
|
|
store32((unsigned long)&spin_cpu2, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
void clear_core3(void)
|
|
|
|
{
|
|
|
|
store32((unsigned long)&spin_cpu3, 0);
|
|
|
|
}
|