--- scrt/heap.c.orig	Tue Feb 23 01:11:33 1993
+++ scrt/heap.c	Wed Feb  2 22:22:22 2000
@@ -66,6 +66,9 @@
 #ifdef VAX
 extern  sc_r2tor11( );
 #endif
+#ifdef FREEBSD
+extern  sc_geti386regs( S2CINT* a );
+#endif
 
 /* Forward declarations */
 
@@ -368,6 +371,31 @@
 	S2CINT  r2tor11[10], *pp;
 
 	sc_r2tor11( r2tor11 );
+	STACKPTR( pp );
+	while  (pp != sc_stackbase)  move_continuation_ptr( ((SCP)*pp++) );
+}
+#endif
+
+#ifdef FREEBSD
+/* The following code is used to read the stack pointer.  The register
+   number is passed in to force an argument to be on the stack, which in
+   turn can be used to find the address of the top of stack.
+*/
+
+S2CINT  *sc_processor_register( S2CINT reg )
+{
+	return( &reg );
+}
+
+/* All processor registers which might contain pointers are traced by the
+   following procedure.
+*/
+
+static  trace_stack_and_registers()
+{
+	S2CINT  i386regs[6], *pp;
+
+	sc_geti386regs( i386regs );
 	STACKPTR( pp );
 	while  (pp != sc_stackbase)  move_continuation_ptr( ((SCP)*pp++) );
 }
