@@ -100,7 +100,7 @@ set(KERNEL_MAIN_SOURCES src/fs/fat.cpp
include/types/allocator.hpp
include/types/cplusplus.hpp
include/types/list.hpp
- include/types/lock.h
+ include/types/lock.hpp
include/types/string.hpp
include/types/vector.hpp
include/kernel_main.h
@@ -1,35 +0,0 @@
-#pragma once
-
-#include <types/stdint.h>
-#ifdef __cplusplus
-extern "C" {
-#endif
-static inline void spin_lock(uint32_t volatile* lock_addr)
-{
- asm volatile(
- "_spin:\n\t\
- movl $1, %%eax\n\t\
- xchgl %%eax, (%0)\n\t\
- test $0, %%eax\n\t\
- jne _spin\n\t\
- "
- : "=r" (lock_addr)
- : "0" (lock_addr)
- : "eax", "memory"
- );
-}
-static inline void spin_unlock(uint32_t volatile* lock_addr)
- asm volatile("movl $0, %%eax\nxchgl %%eax, (%0)"
- :
- : "r" (lock_addr)
@@ -0,0 +1,27 @@
+#pragma once
+
+#include <types/stdint.h>
+inline void spin_lock(uint32_t volatile* lock_addr)
+{
+ asm volatile(
+ "0:\n\t\
+ movl $1, %%eax\n\t\
+ xchgl %%eax, (%0)\n\t\
+ test $0, %%eax\n\t\
+ jne 0\n\t\
+ "
+ :
+ : "r"(lock_addr)
+ : "eax", "memory");
+}
+inline void spin_unlock(uint32_t volatile* lock_addr)
+ "movl $0, %%eax\n\
+ xchgl %%eax, (%0)"