summaryrefslogtreecommitdiff
path: root/src/include/smp.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/smp.h')
-rw-r--r--src/include/smp.h23
1 files changed, 21 insertions, 2 deletions
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 <stdint.h>
-void smp_boot();
+#include <stdbool.h>
+#include <cpuid.h>
+#include <printf.h>
+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