Thread: PATCH: Linux/MIPS support

PATCH: Linux/MIPS support

From
Ralf Baechle
Date:
Below a patch relative to Postgress 6.5.3 to fix the Linux/MIPS support.
It does:

 - update the Linux/MIPS entries in src/template/.similar
 - changes the compilation flags in src/template/linux_mips:
   - Don't use -mips2, this code model isn't supported on all processors, so
     it's a bad choice for a default.  Aside the performance gain is very
     small.
   - No special compilation flags necessary for MIPS ELF systems, so
     delete -fpic.
 - removal of -mips2 affects the tas function in s_lock.c.  I solved the
   problem by conditionally putting the assembler into MIPS 2 mode only for
   Linux.  For MIPS I machines the kernel emulation for these instruction
   then does the job.  This needs to be a conditional since we cannot rely
   on the assembler properly supporting .set mipsX; Linux's assembler however
   does properly.

A further problem when compiling with glibc 2.1.94 is that the file
src/backend/port/inet_aton.h redeclares the system function inet_aton().
Sorry, I don't have a patch for this problem.

Please apply,

  Ralf

diff -urN postgresql-6.5.3.orig/src/backend/storage/buffer/s_lock.c
postgresql-6.5.3/src/backend/storage/buffer/s_lock.c
--- postgresql-6.5.3.orig/src/backend/storage/buffer/s_lock.c    Sun Jun  6 22:19:35 1999
+++ postgresql-6.5.3/src/backend/storage/buffer/s_lock.c    Sat Oct 21 20:35:08 2000
@@ -147,8 +147,11 @@
 static void
 tas_dummy()
 {
-    __asm__("        \n\
-.global    tas            \n\
+    __asm__(
+#ifdef __linux__
+"    .set    mips2        \n"
+#endif
+".global    tas        \n\
 tas:                \n\
     .frame    $sp, 0, $31    \n\
     ll    $14, 0($4)    \n\
@@ -161,8 +164,11 @@
     j       $31        \n\
 fail:                \n\
     li    $2, 1        \n\
-    j       $31        \n\
-    ");
+    j       $31        \n"
+#ifdef __linux__
+"    .set    mips2        \n"
+#endif
+    );
 }

 #endif     /* __mips */
diff -urN postgresql-6.5.3.orig/src/template/.similar postgresql-6.5.3/src/template/.similar
--- postgresql-6.5.3.orig/src/template/.similar    Sat Oct 21 19:22:22 2000
+++ postgresql-6.5.3/src/template/.similar    Sat Oct 21 20:04:26 2000
@@ -33,6 +33,6 @@
 sparc-sun-sunos4=sunos4_gcc
 sparc-sun-sunos5=solaris_sparc_gcc
 sparc-unknown-linux-gnu=linux_sparc
-mips-pc-linux-gnu=linux_mips
+mips-unknown-linux-gnu=linux_mips
 mipsel-unknown-linux-gnu=linux_mips
 arm-unknown-linux-gnu=linux_arm
diff -urN postgresql-6.5.3.orig/src/template/linux_mips postgresql-6.5.3/src/template/linux_mips
--- postgresql-6.5.3.orig/src/template/linux_mips    Fri Dec 18 18:25:41 1998
+++ postgresql-6.5.3/src/template/linux_mips    Sat Oct 21 20:04:26 2000
@@ -1,6 +1,6 @@
 AROPT:crs
-CFLAGS:-O2 -mips2
-SHARED_LIB:-fpic
+CFLAGS:-O2
+SHARED_LIB:
 ALL:
 SRCH_INC:
 SRCH_LIB:

Re: PATCH: Linux/MIPS support

From
Bruce Momjian
Date:
Wow, this is way old.  I recommend downloading our current snapshot from
ftp.postgresql.org and seeing how that goes.  If you have any problems,
please e-mail a patch.

Thanks.


> Below a patch relative to Postgress 6.5.3 to fix the Linux/MIPS support.
> It does:
>
>  - update the Linux/MIPS entries in src/template/.similar
>  - changes the compilation flags in src/template/linux_mips:
>    - Don't use -mips2, this code model isn't supported on all processors, so
>      it's a bad choice for a default.  Aside the performance gain is very
>      small.
>    - No special compilation flags necessary for MIPS ELF systems, so
>      delete -fpic.
>  - removal of -mips2 affects the tas function in s_lock.c.  I solved the
>    problem by conditionally putting the assembler into MIPS 2 mode only for
>    Linux.  For MIPS I machines the kernel emulation for these instruction
>    then does the job.  This needs to be a conditional since we cannot rely
>    on the assembler properly supporting .set mipsX; Linux's assembler however
>    does properly.
>
> A further problem when compiling with glibc 2.1.94 is that the file
> src/backend/port/inet_aton.h redeclares the system function inet_aton().
> Sorry, I don't have a patch for this problem.
>
> Please apply,
>
>   Ralf
>
> diff -urN postgresql-6.5.3.orig/src/backend/storage/buffer/s_lock.c
postgresql-6.5.3/src/backend/storage/buffer/s_lock.c
> --- postgresql-6.5.3.orig/src/backend/storage/buffer/s_lock.c    Sun Jun  6 22:19:35 1999
> +++ postgresql-6.5.3/src/backend/storage/buffer/s_lock.c    Sat Oct 21 20:35:08 2000
> @@ -147,8 +147,11 @@
>  static void
>  tas_dummy()
>  {
> -    __asm__("        \n\
> -.global    tas            \n\
> +    __asm__(
> +#ifdef __linux__
> +"    .set    mips2        \n"
> +#endif
> +".global    tas        \n\
>  tas:                \n\
>      .frame    $sp, 0, $31    \n\
>      ll    $14, 0($4)    \n\
> @@ -161,8 +164,11 @@
>      j       $31        \n\
>  fail:                \n\
>      li    $2, 1        \n\
> -    j       $31        \n\
> -    ");
> +    j       $31        \n"
> +#ifdef __linux__
> +"    .set    mips2        \n"
> +#endif
> +    );
>  }
>
>  #endif     /* __mips */
> diff -urN postgresql-6.5.3.orig/src/template/.similar postgresql-6.5.3/src/template/.similar
> --- postgresql-6.5.3.orig/src/template/.similar    Sat Oct 21 19:22:22 2000
> +++ postgresql-6.5.3/src/template/.similar    Sat Oct 21 20:04:26 2000
> @@ -33,6 +33,6 @@
>  sparc-sun-sunos4=sunos4_gcc
>  sparc-sun-sunos5=solaris_sparc_gcc
>  sparc-unknown-linux-gnu=linux_sparc
> -mips-pc-linux-gnu=linux_mips
> +mips-unknown-linux-gnu=linux_mips
>  mipsel-unknown-linux-gnu=linux_mips
>  arm-unknown-linux-gnu=linux_arm
> diff -urN postgresql-6.5.3.orig/src/template/linux_mips postgresql-6.5.3/src/template/linux_mips
> --- postgresql-6.5.3.orig/src/template/linux_mips    Fri Dec 18 18:25:41 1998
> +++ postgresql-6.5.3/src/template/linux_mips    Sat Oct 21 20:04:26 2000
> @@ -1,6 +1,6 @@
>  AROPT:crs
> -CFLAGS:-O2 -mips2
> -SHARED_LIB:-fpic
> +CFLAGS:-O2
> +SHARED_LIB:
>  ALL:
>  SRCH_INC:
>  SRCH_LIB:
>


--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026