
modified: README.md modified: src/.gdb_history modified: src/bootloader/enter_kernel.asm modified: src/bootloader/gdt.asm modified: src/debug/gdbinit.gdb modified: src/include/int.h modified: src/include/paging.h modified: src/include/smp.h modified: src/include/smp_sync.h modified: src/indigo_os modified: src/kernel/int.c modified: src/kernel/kernel.c modified: src/kernel/klog.c modified: src/kernel/madt.c modified: src/kernel/page.c modified: src/kernel/panic.c modified: src/kernel/printf.c modified: src/kernel/smp.c modified: src/kernel/smp_trampoline.asm modified: .gitignore deleted: src/.gdb_history
27 lines
472 B
C
27 lines
472 B
C
#ifndef SMP_INCLUDED
|
|
#define SMP_INCLUDED
|
|
#include <stdint.h>
|
|
void smp_boot();
|
|
extern uint8_t corecount;
|
|
|
|
static inline void lock(uint8_t *lock) {
|
|
asm("mov al, 1\n"
|
|
"spinlock:\n"
|
|
"lock xchgb [%0], al\n"
|
|
"test al, al\n"
|
|
"pause\n"
|
|
"jnz spinlock\n"
|
|
::"r"(lock):"al");
|
|
}
|
|
|
|
static inline void unlock(uint8_t *lock) {
|
|
asm("lock andb [%0], 0"::"r"(lock));
|
|
}
|
|
|
|
static inline void waitup(uint8_t *loto) {
|
|
}
|
|
|
|
#define CREATE_LOTO(name)
|
|
|
|
#endif
|