summaryrefslogtreecommitdiff
path: root/lib9/lock-Irix-mips.s
diff options
context:
space:
mode:
authorCharles.Forsyth <devnull@localhost>2006-12-22 17:07:39 +0000
committerCharles.Forsyth <devnull@localhost>2006-12-22 17:07:39 +0000
commit37da2899f40661e3e9631e497da8dc59b971cbd0 (patch)
treecbc6d4680e347d906f5fa7fca73214418741df72 /lib9/lock-Irix-mips.s
parent54bc8ff236ac10b3eaa928fd6bcfc0cdb2ba46ae (diff)
20060303a
Diffstat (limited to 'lib9/lock-Irix-mips.s')
-rw-r--r--lib9/lock-Irix-mips.s19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib9/lock-Irix-mips.s b/lib9/lock-Irix-mips.s
new file mode 100644
index 00000000..40606e93
--- /dev/null
+++ b/lib9/lock-Irix-mips.s
@@ -0,0 +1,19 @@
+#include <sys/regdef.h>
+#include <sys/asm.h>
+
+/*
+ * lock from r4000 book
+ */
+LEAF(canlock)
+ .set noreorder
+1:
+ ll t0,0(a0) /* a0 is argument */
+ or t1, t0, 1
+ sc t1,0(a0)
+ beq t1,zero,1b
+ nop
+ j $31 /* lock held */
+ xor v0, t0, 1
+
+ .set reorder
+ END(canlock)