--- src/backend/storage/lmgr/s_lock.c +++ src/backend/storage/lmgr/s_lock.c @@ -140,7 +140,7 @@ } #endif /* __APPLE__ && __ppc__ */ -#if defined(__powerpc__) +#if defined(__powerpc__) && !defined(__powerpc64__) /* Note: need a nice gcc constrained asm version so it can be inlined */ static void tas_dummy() @@ -164,6 +164,30 @@ } #endif /* __powerpc__ */ +#if defined(__powerpc64__) +/* Note: need a nice gcc constrained asm version so it can be inlined */ +static void +tas_dummy() +{ + __asm__ __volatile__( + "\ +.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\ +"); +} +#endif /* __powerpc64__ */ + #if defined(__mips__) && !defined(__sgi) static void tas_dummy()