diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog
index c5a0bf265c4181f2221fa0a5d5984cb3d6a5532b..9f96bdd2af40f38956670b7e250c54bd4598004d 100644
--- a/boehm-gc/ChangeLog
+++ b/boehm-gc/ChangeLog
@@ -1,3 +1,12 @@
+1999-12-15  Anthony Green  <green@cygnus.com>
+
+	* gcconfig.h (DATASTART): Define as (&data_start) for PowerPC
+	Linux.
+	(DYNAMIC_LOADING): Define for PowerPC Linux.
+	* os_dep.c: Remove some special cases for PowerPC Linux.
+	* misc.c (GC_init_inner): Don't call GC_init_linux_data_start
+	for PowerPC Linux.
+
 1999-11-04  Tom Tromey  <tromey@cygnus.com>
 
 	* Makefile.in: Rebuilt.
diff --git a/boehm-gc/gcconfig.h b/boehm-gc/gcconfig.h
index 899b8d3da3d715f9b1d9685d6366e6ed840c11e6..22156918c360d57a401bed64a4678fa0aa687ead 100644
--- a/boehm-gc/gcconfig.h
+++ b/boehm-gc/gcconfig.h
@@ -532,14 +532,10 @@
 #     undef STACK_GRAN
 #     define STACK_GRAN 0x10000000
 	/* Stack usually starts at 0x80000000 */
-#     define DATASTART GC_data_start
-	/* Others have reported better success with */
-        /*  	extern int __data_start;	    */
-	/*#     define DATASTART (&__data_start)    */
-	/* and disabling the GC_data_start	    */
-	/* initialization code.			    */
+#     define DATASTART (&data_start)
       extern int _end;
 #     define DATAEND (&_end)
+#     define DYNAMIC_LOADING
 #   endif
 #   ifdef MACOSX
 #     define ALIGNMENT 4
diff --git a/boehm-gc/misc.c b/boehm-gc/misc.c
index 32288a95b7bbd5044a29faca5b041ef658bd5404..9f209100a591a0b52eef4a768a0d44cb3cf06383 100644
--- a/boehm-gc/misc.c
+++ b/boehm-gc/misc.c
@@ -444,7 +444,7 @@ void GC_init_inner()
  	GC_init_win32();
 #   endif
 #   if defined(LINUX) && \
-	(defined(POWERPC) || defined(ALPHA) || defined(SPARC) || defined(IA64))
+	(defined(ALPHA) || defined(SPARC) || defined(IA64))
 	GC_init_linux_data_start();
 #   endif
 #   ifdef SOLARIS_THREADS
diff --git a/boehm-gc/os_dep.c b/boehm-gc/os_dep.c
index 4f697b492aa259ce85b2b6355161cce49075d7a3..362bd933822a73ec9f4a68b07b72137f50a97f41 100644
--- a/boehm-gc/os_dep.c
+++ b/boehm-gc/os_dep.c
@@ -75,7 +75,7 @@
 # endif
 
 # if defined(LINUX) && \
-     (defined(POWERPC) || defined(SPARC) || defined(ALPHA) || defined(IA64))
+     (defined(SPARC) || defined(ALPHA) || defined(IA64))
 #   define NEED_FIND_LIMIT
 # endif
 
@@ -142,8 +142,7 @@
 # define OPT_PROT_EXEC 0
 #endif
 
-#if defined(LINUX) && (defined(POWERPC) || defined(SPARC) || defined(ALPHA) \
-    		       || defined(IA64))
+#if defined(LINUX) && (defined(SPARC) || defined(ALPHA) || defined(IA64))
   /* 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	*/