From cf7cd8be60c254b44b444c97dcb238d7cf3afd4c Mon Sep 17 00:00:00 2001 From: Brett Weiland Date: Tue, 21 Sep 2021 10:50:33 -0500 Subject: palloc smp safe (testing required, NOT pfree) --- src/include/smp.h | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'src/include/smp.h') diff --git a/src/include/smp.h b/src/include/smp.h index f4e3aa8..e331036 100644 --- a/src/include/smp.h +++ b/src/include/smp.h @@ -1,7 +1,10 @@ #ifndef SMP_INCLUDED #define SMP_INCLUDED #include -void smp_boot(); +#include +#include +#include +void smp_prepare(); extern uint8_t corecount; static inline void lock(uint8_t *lock) { @@ -18,9 +21,25 @@ static inline void unlock(uint8_t *lock) { asm("lock andb [%0], 0"::"r"(lock)); } -static inline void waitup(uint8_t *loto) { +static inline bool get_set_mutex(uint16_t *mutex) { + bool ret; + asm("lock bts %1, 0\n" + "jc .mutex_taken\n" + "mov %0, 0\n" + "jmp .done\n" + ".mutex_taken:\n" + "mov %0, 1\n" + ".done:\n" + :"=r"(ret) + :"m"(*mutex)); + return ret; } + + +//THIS IS ONLY UNTIL WE GET MULTITHREADING SET UP +uint8_t get_coreid(); + #define CREATE_LOTO(name) #endif -- cgit v1.2.3