diff options
author | Brett Weiland <brett_weiland@bpcspace.com> | 2021-08-29 02:52:48 -0500 |
---|---|---|
committer | Brett Weiland <brett_weiland@bpcspace.com> | 2021-08-29 02:52:48 -0500 |
commit | 1f71b9576db536af84155363e14fc49e92de2eef (patch) | |
tree | 23f65a31cc89785befb70517b203625e2296326f /src/include/smp_sync.h | |
parent | dc0e84d5779db68e081c667faadc19a20de861ea (diff) |
backup 8.29.21
Diffstat (limited to 'src/include/smp_sync.h')
-rw-r--r-- | src/include/smp_sync.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/include/smp_sync.h b/src/include/smp_sync.h new file mode 100644 index 0000000..92784b8 --- /dev/null +++ b/src/include/smp_sync.h @@ -0,0 +1,17 @@ +#ifndef SMP_SYNC_INCLUDED +#define SMP_SYNC_INCLUDED + +static inline void lock(uint8_t *lock) { + asm("mov al, 1\n" + "spinlock:\n" + "lock xchgb [%0], al\n" + "test al, al\n" + "jnz spinlock\n" + ::"r"(lock):"al"); +} + +static inline void unlock(uint8_t *lock) { + asm("lock andb [%0], 0"::"r"(lock)); +} + +#endif |