From: Marc G. Fournier Date: Thu, 25 Jul 1996 19:48:24 +0000 (+0000) Subject: modified i386_solaris port X-Git-Tag: Release_1_0_2~52 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=14cd0ca3bd20db3ee131b720965b7bd26b168fe4;p=thirdparty%2Fpostgresql.git modified i386_solaris port submitted by: dr. george --- diff --git a/src/backend/port/i386_solaris/Makefile.inc b/src/backend/port/i386_solaris/Makefile.inc index c88f9a0b4f9..c9df83ee8b8 100644 --- a/src/backend/port/i386_solaris/Makefile.inc +++ b/src/backend/port/i386_solaris/Makefile.inc @@ -7,7 +7,7 @@ # # # 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 $ # #------------------------------------------------------------------------- @@ -15,6 +15,6 @@ CFLAGS+= -DUSE_POSIX_TIME -DNEED_ISINF -DNEED_RUSAGE -DNO_EMPTY_STMTS LDADD+= -ll -ldl -SUBSRCS+= port.c +SUBSRCS+= port.c tas.s HEADERS+= machine.h port-protos.h rusagestub.h diff --git a/src/backend/port/i386_solaris/tas.s b/src/backend/port/i386_solaris/tas.s new file mode 100644 index 00000000000..bbc91fc82a7 --- /dev/null +++ b/src/backend/port/i386_solaris/tas.s @@ -0,0 +1,35 @@ +/============================================================================= +/ 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 +