Brett Weiland 2062e70707 SMP fixed for CPUs with defective cores
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
2021-09-12 12:55:07 -05:00

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