diff options
author | Bruce Momjian | 1998-09-03 02:14:39 +0000 |
---|---|---|
committer | Bruce Momjian | 1998-09-03 02:14:39 +0000 |
commit | 63e39ab9a99a4854dc11d0dd5310173f2ed35f08 (patch) | |
tree | 86d1f4000784e0cdfcda109864926b8fa187893d | |
parent | 811106676e01ada3d638c317e7b67756597394c5 (diff) |
O2. Seems tas() for PPC (storage/buffer/s_lock.c) never works if
compiled with -O0. Included are patches that should fix the problem
(of course I have confirmed -O2 works with this patch).
BTW, here is a platforms/regression test failure(serious one--backend
death) matrix.
Tatsuo Ishii
-rw-r--r-- | src/backend/storage/buffer/s_lock.c | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/backend/storage/buffer/s_lock.c b/src/backend/storage/buffer/s_lock.c index 84b9868bc0f..114cb9ec20f 100644 --- a/src/backend/storage/buffer/s_lock.c +++ b/src/backend/storage/buffer/s_lock.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/storage/buffer/Attic/s_lock.c,v 1.9 1998/09/01 04:31:44 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/storage/buffer/Attic/s_lock.c,v 1.10 1998/09/03 02:14:39 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -95,20 +95,23 @@ s_lock(volatile slock_t *lock, const char *file, const int line) #if defined(PPC) /* Note: need a nice gcc constrained asm version so it can be inlined */ -int -tas(volatile slock_t *lock) +static void +tas_dummy() { - __asm__("lwarx 5,0,3 \n\ - cmpwi 5,0 \n\ - bne fail \n\ - addi 5,5,1 \n\ + __asm__(" \n\ +.global tas \n\ +tas: \n\ + lwarx 5,0,3 \n\ + cmpwi 5,0 \n\ + bne fail \n\ + addi 5,5,1 \n\ stwcx. 5,0,3 \n\ - beq success \n\ -fail: li 3,1 \n\ - blr \n\ -success: \n\ - li 3,0 \n\ - blr \n\ + beq success \n\ +fail: li 3,1 \n\ + blr \n\ +success: \n\ + li 3,0 \n\ + blr \n\ "); } |