solaris_sparc.s
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:1k
- !!
- !! $Header: /usr/local/cvsroot/pgsql/src/backend/port/tas/solaris_sparc.s,v 1.1 1998/06/18 16:32:49 momjian Exp $
- !!
- !! this would be a piece of inlined assembler but it appears
- !! to be easier to just write the assembler than to try to
- !! figure out how to make sure that in/out registers are kept
- !! straight in the asm's.
- !!
- .file "tas.c"
- .section ".text"
- .align 4
- .global tas
- .type tas,#function
- .proc 04
- tas:
- !!
- !! this is a leaf procedure - no need to save windows and
- !! diddle the CWP.
- !!
- !#PROLOGUE# 0
- !#PROLOGUE# 1
-
- !!
- !! write 0xFF into the lock address, saving the old value in %o0.
- !! this is an atomic action, even on multiprocessors.
- !!
- ldstub [%o0],%o0
-
- !!
- !! if it was already set when we set it, somebody else already
- !! owned the lock -- return 1.
- !!
- cmp %o0,0
- bne .LL2
- mov 1,%o0
-
- !!
- !! otherwise, it was clear and we now own the lock -- return 0.
- !!
- mov 0,%o0
- .LL2:
- !!
- !! this is a leaf procedure - no need to restore windows and
- !! diddle the CWP.
- !!
- retl
- nop
- .LLfe1:
- .size tas,.LLfe1-tas
- .ident "GCC: (GNU) 2.5.8"