From: Robert Haas Date: Thu, 17 Oct 2013 16:02:05 +0000 (-0400) Subject: Remove spinlock support for SINIX, Sun3, and NS32K. X-Git-Tag: REL9_4_BETA1~1044 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=81051a86bcecdc681592725139fe610b2c1d1428;p=postgresql Remove spinlock support for SINIX, Sun3, and NS32K. All of these platforms are very much obsolete. As far as I can determine, the last version of SINIX, later renamed Reliant, occurred some time between 2002 and 2005. The last release of SunOS that would run on a sun3 was released in November of 1991; the last release of OpenBSD which supported that platform was in 2001. The highest clock speed of any processor in the family was 25MHz. The NS32K (national semiconductor 320xx) architecture was retired in 1990. Support can be re-added if a maintainer emerges for any of these platforms, but it seems unlikely. Reviewed by Andres Freund. --- diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml index 9bee423677..fa9ef17773 100644 --- a/doc/src/sgml/installation.sgml +++ b/doc/src/sgml/installation.sgml @@ -1953,7 +1953,7 @@ kill `cat /usr/local/pgsql/data/postmaster.pid` In general, PostgreSQL can be expected to work on these CPU architectures: x86, x86_64, IA64, PowerPC, PowerPC 64, S/390, S/390x, Sparc, Sparc 64, Alpha, ARM, MIPS, MIPSEL, M68K, - and PA-RISC. Code support exists for M32R, NS32K, and VAX, but these + and PA-RISC. Code support exists for M32R and VAX, but these architectures are not known to have been tested recently. It is often possible to build on an unsupported CPU type by configuring with , but performance will be poor. diff --git a/src/backend/storage/lmgr/s_lock.c b/src/backend/storage/lmgr/s_lock.c index 940b6865d2..138b337945 100644 --- a/src/backend/storage/lmgr/s_lock.c +++ b/src/backend/storage/lmgr/s_lock.c @@ -247,36 +247,6 @@ _success: \n\ ); } #endif /* __m68k__ && !__linux__ */ -#else /* not __GNUC__ */ - -/* - * All non gcc - */ - - -#if defined(sun3) -static void -tas_dummy() /* really means: extern int tas(slock_t - * *lock); */ -{ - asm("LLA0:"); - asm(" .data"); - asm(" .text"); - asm("|#PROC# 04"); - asm(" .globl _tas"); - asm("_tas:"); - asm("|#PROLOGUE# 1"); - asm(" movel sp@(0x4),a0"); - asm(" tas a0@"); - asm(" beq LLA1"); - asm(" moveq #-128,d0"); - asm(" rts"); - asm("LLA1:"); - asm(" moveq #0,d0"); - asm(" rts"); - asm(" .data"); -} -#endif /* sun3 */ #endif /* not __GNUC__ */ #endif /* HAVE_SPINLOCKS */ diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h index 38e09ce8d9..1b493ace4f 100644 --- a/src/include/storage/s_lock.h +++ b/src/include/storage/s_lock.h @@ -551,31 +551,6 @@ tas(volatile slock_t *lock) #endif /* __vax__ */ - -#if defined(__ns32k__) /* National Semiconductor 32K */ -#define HAS_TEST_AND_SET - -typedef unsigned char slock_t; - -#define TAS(lock) tas(lock) - -static __inline__ int -tas(volatile slock_t *lock) -{ - register int _res; - - __asm__ __volatile__( - " sbitb 0, %1 \n" - " sfsd %0 \n" -: "=r"(_res), "+m"(*lock) -: -: "memory"); - return _res; -} - -#endif /* __ns32k__ */ - - #if defined(__alpha) || defined(__alpha__) /* Alpha */ /* * Correct multi-processor locking methods are explained in section 5.5.3 @@ -886,25 +861,6 @@ typedef unsigned long slock_t; #define S_LOCK_FREE(lock) (test_then_add(lock,0) == 0) #endif /* __sgi */ - -#if defined(sinix) /* Sinix */ -/* - * SINIX / Reliant UNIX - * slock_t is defined as a struct abilock_t, which has a single unsigned long - * member. (Basically same as SGI) - */ -#define HAS_TEST_AND_SET - -#include "abi_mutex.h" -typedef abilock_t slock_t; - -#define TAS(lock) (!acquire_lock(lock)) -#define S_UNLOCK(lock) release_lock(lock) -#define S_INIT_LOCK(lock) init_lock(lock) -#define S_LOCK_FREE(lock) (stat_lock(lock) == UNLOCKED) -#endif /* sinix */ - - #if defined(_AIX) /* AIX */ /* * AIX (POWER) @@ -922,14 +878,6 @@ typedef int slock_t; /* These are in s_lock.c */ - -#if defined(sun3) /* Sun3 */ -#define HAS_TEST_AND_SET - -typedef unsigned char slock_t; -#endif - - #if defined(__SUNPRO_C) && (defined(__i386) || defined(__x86_64__) || defined(__sparc__) || defined(__sparc)) #define HAS_TEST_AND_SET