Re: [HACKERS] Compiling 6.4 on NetBSD-current/pc532 - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: [HACKERS] Compiling 6.4 on NetBSD-current/pc532
Date
Msg-id 199809180532.BAA24646@candle.pha.pa.us
Whole thread Raw
In response to Compiling 6.4 on NetBSD-current/pc532  (Jon Buller <jonb@metronet.com>)
Responses Re: [HACKERS] Compiling 6.4 on NetBSD-current/pc532  (dg@informix.com (David Gould))
List pgsql-hackers
Applied.

> OK,
>
> I have a current version of PostgreSQL running on my pc532 now.
> (It's a NS32K based machine.  Somewhat of an antique really...)
>
> I had to apply the following diffs to get it to compile, but it
> then passed the spinlock test, and most of the regression tests,
> including the int8 test.  It did not, however, get the datetime
> test correct.
>
> For some reason which I haven't figured out yet, it thinks the
> following:
>
> template1=> select ('epoch'::datetime) as ZeroSecs;
> zerosecs
> ----------------------------
> Fri Dec 31 18:00:00 1999 CST
> (1 row)
>
> template1=> select ('current'::datetime) as ZeroSecs;
> zerosecs
> ----------------------------
> Fri Dec 31 18:00:00 1999 CST
> (1 row)
>
> template1=> select ('now'::datetime) as ZeroSecs;
> zerosecs
> ----------------------------
> Sun Sep 13 19:05:43 1998 CDT
> (1 row)
>
>
> So it knows how to get the date and time, but not always...  I'd
> think this was machine independent, but then I'd expect a MI problem
> like that to get fixed very quickly.  So I don't know if it's a
> NetBSD/pc532 problem, a NetBSD problem, or a PostgreSQL problem,
> but I suspect the first due to a lack of people screaming.
>
> I did build 6.3.2 with -DDATEDEBUG, but I'm not coherent enough
> (yet?) to properly deduce anything yet.  It appeared to all be
> correct until it printed the results, implying that libc or a
> syscall was returning some funny constant perhaps?
>
> Well, with all those disclaimers, here's the patch.  (Beware, I
> think I have it reversed, so you probably want to type patch -r...)
>
>
> *** /usr/local/pgsql/src/include/storage/s_lock.h    Fri Sep 11 19:00:55 1998
> --- s_lock.h    Sat Sep 12 00:27:51 1998
> ***************
> *** 213,219 ****
>   #endif     /* NEED_I386_TAS_ASM */
>
>
> ! /* NS32K code is in s_lock.c */
>
>   #endif     /* defined(__GNUC__) */
>
> --- 213,234 ----
>   #endif     /* NEED_I386_TAS_ASM */
>
>
> !
> ! #if defined(NEED_NS32K_TAS_ASM)
> !
> ! #define S_LOCK(lock)                \
> ! {                        \
> !     slock_t res = 1;                \
> !     while (res) {                \
> !       __asm__("movqd 0, r0");            \
> !       __asm__("sbitd r0, %0" : "=m"(*lock));    \
> !       __asm__("sprb us, %0" : "=r" (res));    \
> !       res = ((res >> 5) & 1);            \
> !     }                        \
> ! }
> !
> ! #endif     /* NEED_NS32K_TAS_ASM */
> !
>
>   #endif     /* defined(__GNUC__) */
>
> *** /usr/local/pgsql/src/backend/storage/buffer/s_lock.c    Thu Sep 10 23:08:00 1998
> --- s_lock.c    Sat Sep 12 00:23:04 1998
> ***************
> *** 118,134 ****
>   #endif     /* PPC */
>
>
> - #if defined(__ns32k__)
> - int
> - tas(volatile slock_t *lock)
> - {
> -   int res;
> -   __asm__("sbitb 0, %0" : "=m"(*lock));
> -   __asm__("sprb us, %0" : "=r"(res));
> -   res = (res >> 5) & 1;
> -   return res;
> - }
> - #endif
>
>   #else                            /* defined(__GNUC__) */
>   /***************************************************************************
> --- 118,123 ----
>
>
> BTW, does the spinlock code need a TAS function so it can spin for
> a while and then declare itself stuck, or does a second process/thread
> take care of that.  It would be simpler for the NS32K to just make
> the whole lock function be 2 lines of inline assembler, but that
> would contain an infinite loop if the lock was stuck...
>
> Jon Buller  <jonb@metronet.com>
>
>


--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
http://www.op.net/~candle              |  (610) 353-9879(w)
  +  If your life is a hard drive,     |  (610) 853-3000(h)
  +  Christ can be your backup.        |

pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: [HACKERS] pg_user backtrace -- with ElectricFence (looks useful :)
Next
From: dg@informix.com (David Gould)
Date:
Subject: Re: [HACKERS] Compiling 6.4 on NetBSD-current/pc532