diff options
| author | 2025-02-14 16:54:10 +0000 | |
|---|---|---|
| committer | 2025-02-14 16:54:10 +0000 | |
| commit | ebbdeee0bb91d5008a405e43114f1653ecdf8ce8 (patch) | |
| tree | d9b1c087a34e6f5947d553f7cb04503b3c411e93 /vendor/modernc.org/libc/asm_386.s | |
| parent | [bugfix] Drop status indices AFTER updating visibility (#3795) (diff) | |
| download | gotosocial-ebbdeee0bb91d5008a405e43114f1653ecdf8ce8.tar.xz | |
bump modernc.org/sqlite to v1.35.0-concurrency-workaround (#3797)
Diffstat (limited to 'vendor/modernc.org/libc/asm_386.s')
| -rw-r--r-- | vendor/modernc.org/libc/asm_386.s | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/vendor/modernc.org/libc/asm_386.s b/vendor/modernc.org/libc/asm_386.s new file mode 100644 index 000000000..1a2d17ec8 --- /dev/null +++ b/vendor/modernc.org/libc/asm_386.s @@ -0,0 +1,77 @@ +#include "textflag.h" + +// static inline void a_or_64(volatile uint64_t *p, uint64_t v) +TEXT ·a_or_64(SB),NOSPLIT,$0 + MOVL p+0(FP), BX + MOVL v+4(FP), AX + LOCK + ORL AX, 0(BX) + MOVL v+8(FP), AX + LOCK + ORL AX, 4(BX) + RET + +// static inline void a_and_64(volatile uint64_t *p, uint64_t v) +TEXT ·a_and_64(SB),NOSPLIT,$0 + MOVL p+0(FP), BX + MOVL v+4(FP), AX + LOCK + ANDL AX, 0(BX) + MOVL v+8(FP), AX + LOCK + ANDL AX, 4(BX) + RET + +// static inline int a_cas(volatile int *p, int t, int s) +TEXT ·a_cas(SB),NOSPLIT,$0 + MOVL p+0(FP), BX + MOVL t+4(FP), AX + MOVL s+8(FP), CX + LOCK + CMPXCHGL CX, 0(BX) + MOVL AX, ret+12(FP) + RET + +// static inline void a_barrier() +TEXT ·a_barrier(SB),NOSPLIT,$0 + MFENCE + RET + +// #define a_crash a_crash +// static inline void a_crash() +// { +// __asm__ __volatile__( "hlt" : : : "memory" ); +// } +TEXT ·a_crash(SB),NOSPLIT,$0 + HLT + +// static inline void *a_cas_p(volatile void *p, void *t, void *s) +TEXT ·a_cas_p(SB),NOSPLIT,$0 + MOVL p+0(FP), BX + MOVL t+4(FP), AX + MOVL s+8(FP), CX + LOCK + CMPXCHGL CX, 0(BX) + MOVL AX, ret+12(FP) + RET + +// static inline void a_or(volatile int *p, int v) +TEXT ·a_or(SB),NOSPLIT,$0 + MOVL p+0(FP), BX + MOVL v+4(FP), AX + LOCK + ORL AX, 0(BX) + RET + +// static inline int a_fetch_add(volatile int *p, int v) +TEXT ·a_fetch_add(SB),NOSPLIT,$0 + MOVL p+0(FP), BX + MOVL v+4(FP), AX + LOCK + XADDL AX, 0(BX) + RET + +// static inline void a_spin() +TEXT ·a_spin(SB),NOSPLIT,$0 + PAUSE + RET |
