Обсуждение: PATCH: Linux/MIPS support
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:
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