| /------------------------------------------------------------------------- |
| / |
| / sunstudio_x86.s |
| / compare and swap for Sun Studio on x86 |
| / |
| / Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group |
| / Portions Copyright (c) 1994, Regents of the University of California |
| / |
| / IDENTIFICATION |
| / $PostgreSQL: pgsql/src/backend/port/tas/sunstudio_x86.s,v 1.2 2009/01/01 17:23:46 momjian Exp $ |
| / |
| /------------------------------------------------------------------------- |
| |
| / Fortunately the Sun compiler can process cpp conditionals with -P |
| |
| / '/' is the comment for x86, while '!' is the comment for Sparc |
| |
| .file "tas.s" |
| |
| #if defined(__amd64) |
| .code64 |
| #endif |
| |
| .globl pg_atomic_cas |
| .type pg_atomic_cas, @function |
| |
| .section .text, "ax" |
| .align 16 |
| |
| pg_atomic_cas: |
| #if defined(__amd64) |
| movl %edx,%eax |
| lock |
| cmpxchgl %esi,(%rdi) |
| #else |
| movl 4(%esp), %edx |
| movl 8(%esp), %ecx |
| movl 12(%esp), %eax |
| lock |
| cmpxchgl %ecx, (%edx) |
| #endif |
| ret |
| .size pg_atomic_cas, . - pg_atomic_cas |