aboutsummaryrefslogtreecommitdiffstats
path: root/Patches/mipsel
diff options
context:
space:
mode:
Diffstat (limited to 'Patches/mipsel')
-rw-r--r--Patches/mipsel184
1 files changed, 184 insertions, 0 deletions
diff --git a/Patches/mipsel b/Patches/mipsel
new file mode 100644
index 0000000..c3c6be1
--- /dev/null
+++ b/Patches/mipsel
@@ -0,0 +1,184 @@
+diff -ur gc/gcconfig.h w3m/gc/gcconfig.h
+--- gc/gcconfig.h Tue Jan 4 14:46:50 2000
++++ gc/gcconfig.h Fri May 26 00:30:56 2000
+@@ -67,11 +67,13 @@
+ # if defined(ultrix) || defined(__ultrix) || defined(__NetBSD__)
+ # define ULTRIX
+ # else
+-# if defined(_SYSTYPE_SVR4) || defined(SYSTYPE_SVR4) || defined(__SYSTYPE_SVR4__)
+-# define IRIX5 /* or IRIX 6.X */
+-# else
+-# define RISCOS /* or IRIX 4.X */
+-# endif
++# if !defined(LINUX)
++# if defined(_SYSTYPE_SVR4) || defined(SYSTYPE_SVR4) || defined(__SYSTYPE_SVR4__)
++# define IRIX5 /* or IRIX 6.X */
++# else
++# define RISCOS /* or IRIX 4.X */
++# endif
++# endif
+ # endif
+ # define mach_type_known
+ # endif
+@@ -836,49 +838,58 @@
+
+ # ifdef MIPS
+ # define MACH_TYPE "MIPS"
+-# ifndef IRIX5
+-# define DATASTART (ptr_t)0x10000000
++# ifdef LINUX
++# define OS_TYPE "LINUX"
++ extern int __data_start;
++# define DATASTART ((ptr_t)(&__data_start))
++# define ALIGNMENT 4
++# define USE_GENERIC_PUSH_REGS 1
++# define STACKBOTTOM 0x80000000
++# else /* LINUX */
++# ifndef IRIX5
++# define DATASTART (ptr_t)0x10000000
+ /* Could probably be slightly higher since */
+ /* startup code allocates lots of stuff. */
+-# else
+- extern int _fdata;
+-# define DATASTART ((ptr_t)(&_fdata))
+-# ifdef USE_MMAP
+-# define HEAP_START (ptr_t)0x30000000
+ # else
+-# define HEAP_START DATASTART
+-# endif
++ extern int _fdata;
++# define DATASTART ((ptr_t)(&_fdata))
++# ifdef USE_MMAP
++# define HEAP_START (ptr_t)0x30000000
++# else
++# define HEAP_START DATASTART
++# endif
+ /* Lowest plausible heap address. */
+ /* In the MMAP case, we map there. */
+ /* In either case it is used to identify */
+ /* heap sections so they're not */
+ /* considered as roots. */
+-# endif /* IRIX5 */
+-# define HEURISTIC2
++# endif /* IRIX5 */
++# define HEURISTIC2
+ /* # define STACKBOTTOM ((ptr_t)0x7fff8000) sometimes also works. */
+-# ifdef ULTRIX
+-# define OS_TYPE "ULTRIX"
+-# define ALIGNMENT 4
+-# endif
+-# ifdef RISCOS
+-# define OS_TYPE "RISCOS"
+-# define ALIGNMENT 4 /* Required by hardware */
+-# endif
+-# ifdef IRIX5
+-# define OS_TYPE "IRIX5"
+-# define MPROTECT_VDB
+-# ifdef _MIPS_SZPTR
+-# define CPP_WORDSZ _MIPS_SZPTR
+-# define ALIGNMENT (_MIPS_SZPTR/8)
+-# if CPP_WORDSZ != 64
++# ifdef ULTRIX
++# define OS_TYPE "ULTRIX"
++# define ALIGNMENT 4
++# endif
++# ifdef RISCOS
++# define OS_TYPE "RISCOS"
++# define ALIGNMENT 4 /* Required by hardware */
++# endif
++# ifdef IRIX5
++# define OS_TYPE "IRIX5"
++# define MPROTECT_VDB
++# ifdef _MIPS_SZPTR
++# define CPP_WORDSZ _MIPS_SZPTR
++# define ALIGNMENT (_MIPS_SZPTR/8)
++# if CPP_WORDSZ != 64
++# define ALIGN_DOUBLE
++# endif
++# else
++# define ALIGNMENT 4
+ # define ALIGN_DOUBLE
+ # endif
+-# else
+-# define ALIGNMENT 4
+-# define ALIGN_DOUBLE
+-# endif
+-# define DYNAMIC_LOADING
+-# endif
++# define DYNAMIC_LOADING
++# endif
++# endif
+ # endif
+
+ # ifdef RS6000
+diff -ur gc/mach_dep.c w3m/gc/mach_dep.c
+--- gc/mach_dep.c Tue Jan 4 14:46:50 2000
++++ gc/mach_dep.c Fri May 26 00:34:11 2000
+@@ -74,6 +74,21 @@
+ # ifdef RT
+ register long TMP_SP; /* must be bound to r11 */
+ # endif
++# if defined(MIPS) && defined(LINUX)
++# define call_push(x) asm("move $4," x ";"); asm("jal GC_push_one")
++ call_push("$2");
++ call_push("$3");
++ call_push("$16");
++ call_push("$17");
++ call_push("$18");
++ call_push("$19");
++ call_push("$20");
++ call_push("$21");
++ call_push("$22");
++ call_push("$23");
++ call_push("$30");
++# undef call_push
++# endif /* MIPS && LINUX */
+ # ifdef VAX
+ /* VAX - generic code below does not work under 4.2 */
+ /* r1 through r5 are caller save, and therefore */
+@@ -338,7 +353,9 @@
+ # if !(defined M68K) && !(defined VAX) && !(defined RT)
+ # if !(defined SPARC) && !(defined I386) && !(defined NS32K)
+ # if !defined(POWERPC) && !defined(UTS4)
++# if (!defined(MIPS) && !defined(LINUX))
+ --> bad news <--
++# endif
+ # endif
+ # endif
+ # endif
+diff -ur gc/misc.c w3m/gc/misc.c
+--- gc/misc.c Tue Jan 4 14:46:50 2000
++++ gc/misc.c Fri May 26 00:52:59 2000
+@@ -433,7 +433,8 @@
+ # ifdef MSWIN32
+ GC_init_win32();
+ # endif
+-# if defined(LINUX) && (defined(POWERPC) || defined(ALPHA) || defined(SPARC))
++# if defined(LINUX) && (defined(POWERPC) || defined(ALPHA) || \
++ defined(SPARC) || defined(MIPS))
+ GC_init_linux_data_start();
+ # endif
+ # ifdef SOLARIS_THREADS
+diff -ur gc/os_dep.c w3m/gc/os_dep.c
+--- gc/os_dep.c Tue Jan 4 14:46:50 2000
++++ gc/os_dep.c Fri May 26 00:37:07 2000
+@@ -72,7 +72,8 @@
+ # define NEED_FIND_LIMIT
+ # endif
+
+-# if defined(LINUX) && (defined(POWERPC) || defined(SPARC) || defined(ALPHA))
++# if defined(LINUX) && (defined(POWERPC) || defined(SPARC) || \
++ defined(ALPHA) || defined(MIPS))
+ # define NEED_FIND_LIMIT
+ # endif
+
+@@ -139,7 +140,8 @@
+ # define OPT_PROT_EXEC 0
+ #endif
+
+-#if defined(LINUX) && (defined(POWERPC) || defined(SPARC) || defined(ALPHA))
++#if defined(LINUX) && (defined(POWERPC) || defined(SPARC) || \
++ defined(ALPHA) || defined(MIPS))
+ /* The I386 case can be handled without a search. The Alpha case */
+ /* used to be handled differently as well, but the rules changed */
+ /* for recent Linux versions. This seems to be the easiest way to */