code: purgatorio

ref: a5cb451b299b03f44154fac5780b6a57ca130ce0
dir: /lib9/lock-Unixware-386.s/

View raw version
	.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