diff options
Diffstat (limited to '')
| -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	*/ | 
