diff options
author | Bruce Momjian <bruce@momjian.us> | 1997-07-29 14:09:11 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 1997-07-29 14:09:11 +0000 |
commit | 8d25436d70a0e5f286a48cf60f4ad3899251eff9 (patch) | |
tree | 92cc30865d10fa5553e07f7cbc321f3ff3109d13 /src/backend | |
parent | 7c5afb87c3d7c7608a3fbf894579428bc41484a9 (diff) | |
download | postgresql-8d25436d70a0e5f286a48cf60f4ad3899251eff9.tar.gz postgresql-8d25436d70a0e5f286a48cf60f4ad3899251eff9.zip |
mkLinux patches from Tatsuo Ishii.
Diffstat (limited to 'src/backend')
-rw-r--r-- | src/backend/storage/ipc/s_lock.c | 42 | ||||
-rw-r--r-- | src/backend/utils/adt/dt.c | 29 |
2 files changed, 69 insertions, 2 deletions
diff --git a/src/backend/storage/ipc/s_lock.c b/src/backend/storage/ipc/s_lock.c index 449b34d12c7..de9b8689f09 100644 --- a/src/backend/storage/ipc/s_lock.c +++ b/src/backend/storage/ipc/s_lock.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/storage/ipc/Attic/s_lock.c,v 1.14 1997/06/06 01:37:14 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/storage/ipc/Attic/s_lock.c,v 1.15 1997/07/29 14:07:48 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -521,5 +521,45 @@ S_INIT_LOCK(slock_t *lock) #endif /* NEED_NS32K_TAS_ASM */ +#if defined(linux) && defined(PPC) + +static int tas_dummy() +{ + __asm__(" +tas: /* r3 points to the location of p */ + lwarx 5,0,3 /* r5 = *p */ + cmpwi 5,0 /* r5 == 0 ? */ + bne fail /* if not 0, jump to fail */ + addi 5,5,1 /* set 1 to r5 */ + stwcx. 5,0,3 /* try update p atomically */ + beq success /* jump if scceed */ +fail: li 3,1 /* set 1 to r3 */ + blr +success: + li 3,0 /* set 0 to r3 */ + blr + "); +} + +void +S_LOCK(slock_t *lock) +{ + while (tas(lock)) + ; +} + +void +S_UNLOCK(slock_t *lock) +{ + *lock = 0; +} + +void +S_INIT_LOCK(slock_t *lock) +{ + S_UNLOCK(lock); +} + +#endif /* defined(linux) && defined(PPC) */ #endif /* HAS_TEST_AND_SET */ diff --git a/src/backend/utils/adt/dt.c b/src/backend/utils/adt/dt.c index 4c45d85753c..bf4bb3feb83 100644 --- a/src/backend/utils/adt/dt.c +++ b/src/backend/utils/adt/dt.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.29 1997/07/24 20:15:53 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.30 1997/07/29 14:07:54 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -3758,3 +3758,30 @@ printf( "EncodeTimeSpan- result is %s\n", str); return 0; } /* EncodeTimeSpan() */ + + +#if defined(linux) && defined(PPC) +int datetime_is_epoch(double j) +{ + static union { + double epoch; + unsigned char c[8]; + } u; + + u.c[0] = 0x80; /* sign bit */ + u.c[1] = 0x10; /* DBL_MIN */ + + return(j == u.epoch); +} +int datetime_is_current(double j) +{ + static union { + double current; + unsigned char c[8]; + } u; + + u.c[1] = 0x10; /* DBL_MIN */ + + return(j == u.current); +} +#endif |