Skip to content
Snippets Groups Projects
Commit d852d31e authored by Bruce Momjian's avatar Bruce Momjian
Browse files

This patch should enable 6.5 to build on Motorola 68000 architecture.
It comes from Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>.
parent 70dfc8c1
Branches
Tags
No related merge requests found
......@@ -6,7 +6,7 @@
*
* Copyright (c) 1995, Regents of the University of California
*
* $Id: postgres.h,v 1.22 1999/05/03 19:10:14 momjian Exp $
* $Id: postgres.h,v 1.23 1999/06/10 22:59:22 momjian Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -63,7 +63,21 @@ typedef Oid regproc;
typedef Oid RegProcedure;
/* ptr to func returning (char *) */
#if defined(__mc68000__) && defined(__ELF__)
/* The m68k SVR4 ABI defines that pointers are returned in %a0 instead of
* %d0. So if a function pointer is declared to return a pointer, the
* compiler may look only into %a0, but if the called function was declared
* to return return an integer type, it puts its value only into %d0. So the
* caller doesn't pink up the correct return value. The solution is to
* declare the function pointer to return int, so the compiler picks up the
* return value from %d0. (Functions returning pointers put their value
* *additionally* into %d0 for compability.) The price is that there are
* some warnings about int->pointer conversions...
*/
typedef int32 ((*func_ptr) ());
#else
typedef char *((*func_ptr) ());
#endif
#define RegProcedureIsValid(p) OidIsValid(p)
......
......@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.59 1999/04/13 17:42:26 momjian Exp $
* $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.60 1999/06/10 22:59:22 momjian Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -157,6 +157,24 @@ tas(volatile slock_t *lock)
#endif /* sparc */
#if defined(__mc68000__)
#define TAS(lock) tas(lock)
static __inline__ int
tas(volatile slock_t *lock)
{
register int rv;
__asm__ __volatile__ (
"tas %1; sne %0"
: "=d" (rv), "=m"(*lock)
: "1" (*lock)
: "cc" );
return rv;
}
#endif /* defined(__mc68000__) */
#if defined(NEED_VAX_TAS_ASM)
/*
......@@ -372,3 +390,4 @@ int tas(volatile slock_t *lock); /* port/.../tas.s, or
#endif /* HAS_TEST_AND_SET */
#endif /* S_LOCK_H */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment