From 37da2899f40661e3e9631e497da8dc59b971cbd0 Mon Sep 17 00:00:00 2001 From: "Charles.Forsyth" Date: Fri, 22 Dec 2006 17:07:39 +0000 Subject: 20060303a --- lib9/lock-Unixware-386.s | 56 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 lib9/lock-Unixware-386.s (limited to 'lib9/lock-Unixware-386.s') diff --git a/lib9/lock-Unixware-386.s b/lib9/lock-Unixware-386.s new file mode 100644 index 00000000..efa33d02 --- /dev/null +++ b/lib9/lock-Unixware-386.s @@ -0,0 +1,56 @@ + .section .bss + .align 4 +.L4_.bss: + .align 4 +Unixware_Asm_IntP: / Offset 0 + .type Unixware_Asm_IntP,@object + .size Unixware_Asm_IntP,4 + .set .,.+4 +Unixware_Asm_VoidP: / Offset 4 + .type Unixware_Asm_VoidP,@object + .size Unixware_Asm_VoidP,4 + .set .,.+4 + .section .data + .align 4 +.L2_.data: + .align 4 +.L01: .string "canlock corrupted 0x%lux\n\000" + .set .,.+0x2 + .section .text + .align 4 +.L1_.text: + + .align 4 + .align 4 + .globl canlock +canlock: + pushl %ebp + movl %esp,%ebp + pushl %esi + movl 8(%ebp),%eax + movl %eax,Unixware_Asm_IntP + movl $1, %ecx + xchg (%eax), %ecx + andl %ecx,%ecx + jne .L1 + movl $1,%esi + jmp .L2 + .align 4 +.L3: + subl %esi,%esi + jmp .L2 + .align 4 +.L1: + cmpl $1,%ecx + je .L3 + pushl %ecx + pushl $.L01 + call print + addl $8,%esp +.L2: + movl %esi,%eax + popl %esi + leave + ret + .type canlock,@function + .size canlock,.-canlock -- cgit v1.2.3