From 12af9cdff485fd2c76630ba85e8437e5ee51558c Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Fri, 30 Dec 2005 21:43:41 +0000 Subject: Add support for Solaris x86_64 using Sun's compiler. Pierre Girard --- src/backend/port/tas/solaris_x86_64.s | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/backend/port/tas/solaris_x86_64.s (limited to 'src/backend') diff --git a/src/backend/port/tas/solaris_x86_64.s b/src/backend/port/tas/solaris_x86_64.s new file mode 100644 index 00000000000..4fad43e5a2a --- /dev/null +++ b/src/backend/port/tas/solaris_x86_64.s @@ -0,0 +1,35 @@ +/============================================================================= +/ tas.s -- test and set lock for solaris_i386 +/ based on i386 ASM with modifications outlined in +/ http://www.x86-64.org/documentation/assembly +/============================================================================= + + .file "tas.s" + .text + .align 16 +.L1.text: + + .globl tas +tas: + pushq %rbp /save prev base pointer + movq %rsp,%rbp /new base pointer + pushq %rbx /save prev bx + movq 8(%rbp),%rbx /load bx with address of lock + movq $255,%rax /put something in ax + xchgb %al,(%rbx) /swap lock value with "0" + cmpb $0,%al /did we get the lock? + jne .Locked + subq %rax,%rax /yes, we got it -- return 0 + jmp .Finish + .align 8 +.Locked: + movq $1,%rax /no, we didn't get it - return 1 +.Finish: + popq %rbx /restore prev bx + movq %rbp,%rsp /restore stack state + popq %rbp + ret /return + .align 8 + .type tas,@function + .size tas,.-tas + -- cgit v1.2.3