diff options
Diffstat (limited to 'Patches/mipsel')
-rw-r--r-- | Patches/mipsel | 184 |
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 */ |