mirror of
https://github.com/postgres/postgres.git
synced 2025-08-31 17:02:12 +03:00
Use mutex hint bit in PPC LWARX instructions, where possible.
The hint bit makes for a small but measurable performance improvement in access to contended spinlocks. On the other hand, some PPC chips give an illegal-instruction failure. There doesn't seem to be a completely bulletproof way to tell whether the hint bit will cause an illegal-instruction failure other than by trying it; but most if not all 64-bit PPC machines should accept it, so follow the Linux kernel's lead and assume it's okay to use it in 64-bit builds. Of course we must also check whether the assembler accepts the command, since even with a recent CPU the toolchain could be old. Patch by Manabu Ori, significantly modified by me.
This commit is contained in:
@@ -372,7 +372,11 @@ tas(volatile slock_t *lock)
|
||||
int _res;
|
||||
|
||||
__asm__ __volatile__(
|
||||
#ifdef USE_PPC_LWARX_MUTEX_HINT
|
||||
" lwarx %0,0,%3,1 \n"
|
||||
#else
|
||||
" lwarx %0,0,%3 \n"
|
||||
#endif
|
||||
" cmpwi %0,0 \n"
|
||||
" bne 1f \n"
|
||||
" addi %0,%0,1 \n"
|
||||
|
Reference in New Issue
Block a user