diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog
index 58ec68574be25172029042bae5b3ddab03000b24..fcb5d49c7fc7d7f4554df09e9c0bc747aac7b1c1 100644
--- a/boehm-gc/ChangeLog
+++ b/boehm-gc/ChangeLog
@@ -1,3 +1,8 @@
+1999-09-29  Steve Chamberlain  <sac@pobox.com>
+
+	* config.h: Added picoJava target.
+	* mach_dep.h (GC_push_regs):  New code for picoJava.
+
 1999-09-28  Tom Tromey  <tromey@cygnus.com>
 
 	* aclocal.m4, configure: Rebuilt.
diff --git a/boehm-gc/config.h b/boehm-gc/config.h
index 7791b6cacb98f232a40746eab6bf55f714574ce3..d3370ba6c1440ae02a01c9acf25edf97e243aa8b 100644
--- a/boehm-gc/config.h
+++ b/boehm-gc/config.h
@@ -235,6 +235,10 @@
 #   endif
 #   define mach_type_known
 # endif
+# if defined(__pj__)
+#   define PJ
+#   define mach_type_known
+# endif
 
 /* Feel free to add more clauses here */
 
@@ -985,4 +989,11 @@
 				/* include assembly code to do it well.	*/
 # endif
 
+# if defined(PJ)
+#   define ALIGNMENT 4
+    extern int _etext;
+#   define DATASTART ((ptr_t)(&_etext))
+#   define HEURISTIC1
+# endif
+
 # endif
diff --git a/boehm-gc/mach_dep.c b/boehm-gc/mach_dep.c
index 09a79883fdf9f3ec4592189e26252d04bcb2c954..e39880b46ac56f8ab144170623b5d611aaa40cc0 100644
--- a/boehm-gc/mach_dep.c
+++ b/boehm-gc/mach_dep.c
@@ -327,12 +327,19 @@ void GC_push_regs()
 	    GC_push_all_stack((ptr_t)regs, lim);
 	}
 #     endif
+#     if defined(PJ)
+	{
+	    register int * sp asm ("optop");
+	    extern int *__libc_stack_end;
 
+	    GC_push_all_stack (sp, __libc_stack_end);
+        }
+#     endif
       /* other machines... */
 #       if !(defined M68K) && !(defined VAX) && !(defined RT) 
 #	if !(defined SPARC) && !(defined I386) && !(defined NS32K)
 #	if !defined(HP_PA) && !defined(M88K) && !defined(POWERPC)
-#	if !defined(UTS4)
+#	if !defined(UTS4) && !defined(PJ)
 	    --> bad news <--
 # 	endif
 #       endif