This commit is contained in:
Bruce Momjian 2001-01-19 21:09:57 +00:00
parent 27aaf9df7e
commit 75815c3100
2 changed files with 71 additions and 68 deletions

View File

@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/Attic/s_lock.c,v 1.30 2001/01/19 20:39:16 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/storage/buffer/Attic/s_lock.c,v 1.31 2001/01/19 21:09:57 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -144,7 +144,8 @@ _tas: \n\
rts \n\ rts \n\
_success: \n\ _success: \n\
moveq #0,d0 \n\ moveq #0,d0 \n\
rts"); rts \n\
");
} }
#endif /* __m68k__ */ #endif /* __m68k__ */
@ -152,15 +153,15 @@ _success: \n\
#if defined(__APPLE__) && defined(__ppc__) #if defined(__APPLE__) && defined(__ppc__)
/* used in darwin. */ /* used in darwin. */
/* We key off __APPLE__ here because this function differs from /* We key off __APPLE__ here because this function differs from
* the LinuxPPC implementation only in compiler syntax. * the LinuxPPC implementation only in compiler syntax.
*/ */
static void static void
tas_dummy() tas_dummy()
{ {
__asm__ __volatile__( __asm__ __volatile__(
"\ "\
.globl tas \n\ .globl tas \n\
.globl _tas \n\ .globl _tas \n\
_tas: \n\ _tas: \n\
tas: \n\ tas: \n\
lwarx r5,0,r3 \n\ lwarx r5,0,r3 \n\
@ -173,8 +174,8 @@ fail: li r3,1 \n\
blr \n\ blr \n\
success: \n\ success: \n\
li r3,0 \n\ li r3,0 \n\
blr \n\ blr \n\
"); ");
} }
#endif /* __APPLE__ && __ppc__ */ #endif /* __APPLE__ && __ppc__ */
@ -198,7 +199,8 @@ fail: li 3,1 \n\
blr \n\ blr \n\
success: \n\ success: \n\
li 3,0 \n\ li 3,0 \n\
blr"); blr \n\
");
} }
#endif /* __powerpc__ */ #endif /* __powerpc__ */
@ -222,7 +224,8 @@ tas: \n\
j $31 \n\ j $31 \n\
fail: \n\ fail: \n\
li $2, 1 \n\ li $2, 1 \n\
j $31"); j $31 \n\
");
} }
#endif /* __mips__ */ #endif /* __mips__ */

View File

@ -9,7 +9,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.83 2001/01/19 20:39:16 momjian Exp $ * $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.84 2001/01/19 21:09:57 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -103,12 +103,12 @@ extern void s_lock_sleep(unsigned spins, int microsec,
* Standard _asm format: * Standard _asm format:
* *
* __asm__ __volatile__( * __asm__ __volatile__(
* "command \n" "command \n"
* "command \n" "command \n"
* "command \n" "command \n"
* : "=r"(_res) return value, in register : "=r"(_res) return value, in register
* : "r"(lock) argument, 'lock pointer', in register : "r"(lock) argument, 'lock pointer', in register
* : "r0"); inline code uses this register : "r0"); inline code uses this register
*/ */
@ -121,10 +121,10 @@ tas(volatile slock_t *lock)
register slock_t _res = 1; register slock_t _res = 1;
__asm__ __volatile__( __asm__ __volatile__(
"lock \n" "lock \n"
"xchgb %0,%1 \n" "xchgb %0,%1 \n"
: "=q"(_res), "=m"(*lock) : "=q"(_res), "=m"(*lock)
: "0"(_res)); : "0"(_res));
return (int) _res; return (int) _res;
} }
@ -140,10 +140,10 @@ tas(volatile slock_t *lock)
long int ret; long int ret;
__asm__ __volatile__( __asm__ __volatile__(
"xchg4 %0=%1,%2 \n" "xchg4 %0=%1,%2 \n"
: "=r"(ret), "=m"(*lock) : "=r"(ret), "=m"(*lock)
: "r"(1), "1"(*lock) : "r"(1), "1"(*lock)
: "memory"); : "memory");
return (int) ret; return (int) ret;
} }
@ -160,9 +160,9 @@ tas(volatile slock_t *lock)
register slock_t _res = 1; register slock_t _res = 1;
__asm__ __volatile__( __asm__ __volatile__(
"swpb %0, %0, [%3] \n" "swpb %0, %0, [%3] \n"
: "=r"(_res), "=m"(*lock) : "=r"(_res), "=m"(*lock)
: "0"(_res), "r"(lock)); : "0"(_res), "r"(lock));
return (int) _res; return (int) _res;
} }
@ -180,14 +180,14 @@ tas(volatile slock_t *lock)
int _res; int _res;
__asm__ __volatile__( __asm__ __volatile__(
"la 1,1 \n" "la 1,1 \n"
"l 2,%2 \n" "l 2,%2 \n"
"slr 0,0 \n" "slr 0,0 \n"
"cs 0,1,0(2) \n" "cs 0,1,0(2)\n"
"lr %1,0 \n" "lr %1,0 \n"
: "=m"(lock), "=d"(_res) : "=m"(lock), "=d"(_res)
: "m"(lock) : "m"(lock)
: "0", "1", "2"); : "0", "1", "2");
return (_res); return (_res);
} }
@ -204,9 +204,9 @@ tas(volatile slock_t *lock)
register slock_t _res = 1; register slock_t _res = 1;
__asm__ __volatile__( __asm__ __volatile__(
"ldstub [%2], %0 \n" "ldstub [%2], %0 \n"
: "=r"(_res), "=m"(*lock) : "=r"(_res), "=m"(*lock)
: "r"(lock)); : "r"(lock));
return (int) _res; return (int) _res;
} }
@ -222,11 +222,11 @@ tas(volatile slock_t *lock)
register int rv; register int rv;
__asm__ __volatile__( __asm__ __volatile__(
"tas %1 \n" "tas %1 \n"
"sne %0 \n" "sne %0 \n"
: "=d"(rv), "=m"(*lock) : "=d"(rv), "=m"(*lock)
: "1"(*lock) : "1"(*lock)
: "cc"); : "cc");
return rv; return rv;
} }
@ -249,13 +249,13 @@ tas(volatile slock_t *lock)
register _res; register _res;
__asm__ __volatile__( __asm__ __volatile__(
"movl $1, r0 \n" "movl $1, r0 \n"
"bbssi $0, (%1), 1f \n" "bbssi $0, (%1), 1f \n"
"clrl r0 \n" "clrl r0 \n"
"1: movl r0, %0 \n" "1: movl r0, %0 \n"
: "=r"(_res) : "=r"(_res)
: "r"(lock) : "r"(lock)
: "r0"); : "r0");
return (int) _res; return (int) _res;
} }
@ -271,9 +271,9 @@ tas(volatile slock_t *lock)
register _res; register _res;
__asm__ __volatile__( __asm__ __volatile__(
"sbitb 0, %0 \n" "sbitb 0, %0 \n"
"sfsd %1 \n" "sfsd %1 \n"
: "=m"(*lock), "=r"(_res)); : "=m"(*lock), "=r"(_res));
return (int) _res; return (int) _res;
} }
@ -339,20 +339,20 @@ tas(volatile slock_t *lock)
register slock_t _res; register slock_t _res;
__asm__ __volatile__( __asm__ __volatile__(
"ldq $0, %0 \n" "ldq $0, %0 \n"
"bne $0, 2f \n" "bne $0, 2f \n"
"ldq_l %1, %0 \n" "ldq_l %1, %0 \n"
"bne %1, 2f \n" "bne %1, 2f \n"
"mov 1, $0 \n" "mov 1, $0 \n"
"stq_c $0, %0 \n" "stq_c $0, %0 \n"
"beq $0, 2f \n" "beq $0, 2f \n"
"mb \n" "mb \n"
"br 3f \n" "br 3f \n"
"2: mov 1, %1 \n" "2: mov 1, %1 \n"
"3:" "3: \n"
: "=m"(*lock), "=r"(_res) : "=m"(*lock), "=r"(_res)
: :
: "0"); : "0");
return (int) _res; return (int) _res;
} }