#
#
# IDENTIFICATION
-# $Header: /cvsroot/pgsql/src/backend/port/i386_solaris/Attic/Makefile.inc,v 1.3 1996/07/25 07:27:08 scrappy Exp $
+# $Header: /cvsroot/pgsql/src/backend/port/i386_solaris/Attic/Makefile.inc,v 1.4 1996/07/25 19:48:24 scrappy Exp $
#
#-------------------------------------------------------------------------
LDADD+= -ll -ldl
-SUBSRCS+= port.c
+SUBSRCS+= port.c tas.s
HEADERS+= machine.h port-protos.h rusagestub.h
--- /dev/null
+/=============================================================================
+/ tas.s -- test and set lock for i386_solaris
+/=============================================================================
+
+ .file "tas.s"
+ .text
+ .align 16
+.L1.text:
+
+ .globl tas
+tas:
+ pushl %ebp /save prev base pointer
+ movl %esp,%ebp /new base pointer
+ pushl %ebx /save prev bx
+ movl 8(%ebp),%ebx /load bx with address of lock
+ pushl %ebx /save prev bx
+ movl 8(%ebp),%ebx /load bx with address of lock
+ movl $255,%eax /put something in ax
+ xchgb %al,(%ebx) /swap lock value with "0"
+ cmpb $0,%al /did we get the lock?
+ jne .Locked
+ subl %eax,%eax /yes, we got it -- return 0
+ jmp .Finish
+ .align 4
+.Locked:
+ movl $1,%eax /no, we didn't get it - return 1
+.Finish:
+ popl %ebx /restore prev bx
+ movl %ebp,%esp /restore stack state
+ popl %ebp
+ ret /return
+ .align 4
+ .type tas,@function
+ .size tas,.-tas
+