X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fx86-arch.c;h=e0806155810426f9d580448c1780ccf2606289d5;hb=df679ed627975948b1cee190f4d79c397588c43e;hp=9b51cc096223d3b876f4f962e9b299b36ddbe8a9;hpb=e365f2f7a9c66d307b48fee70778f4eaa84bdcc0;p=sbcl.git diff --git a/src/runtime/x86-arch.c b/src/runtime/x86-arch.c index 9b51cc0..e080615 100644 --- a/src/runtime/x86-arch.c +++ b/src/runtime/x86-arch.c @@ -141,6 +141,18 @@ arch_install_breakpoint(void *pc) return result; } +void +get_spinlock(lispobj *word,int value) +{ + u32 eax=0; + do { + asm ("xor %0,%0;lock cmpxchg %1,%2" + : "=a" (eax) + : "r" (value), "m" (*word) + : "memory", "cc"); + } while(eax!=0); +} + void arch_remove_breakpoint(void *pc, unsigned long orig_inst) {