diff --git a/lisp/gc.c b/lisp/gc.c
index a3c7f3a2d7e17d10f80e2d2b5aac793478d95161..1e6b540a76122ec9791b4313f33ca1a3c242f9e4 100644
--- a/lisp/gc.c
+++ b/lisp/gc.c
@@ -1,7 +1,7 @@
 /*
  * Stop and Copy GC based on Cheney's algorithm.
  *
- * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/gc.c,v 1.8 1994/07/05 16:07:20 hallgren Exp $
+ * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/gc.c,v 1.9 1994/10/24 20:02:41 ram Exp $
  * 
  * Written by Christopher Hoover.
  */
@@ -184,8 +184,14 @@ void collect_garbage(void)
 	lispobj *current_static_space_free_pointer;
 	unsigned long static_space_size;
 	unsigned long control_stack_size, binding_stack_size;
+#ifdef POSIX_SIGS
+	sigset_t tmp, old;
+#else
 	int oldmask;
+#endif
 	
+	SAVE_CONTEXT();
+
 #ifdef PRINTNOISE
 	printf("[Collecting garbage ... \n");
 
@@ -193,7 +199,13 @@ void collect_garbage(void)
 	gettimeofday(&start_tv, (struct timezone *) 0);
 #endif
 
+#ifdef POSIX_SIGS
+	sigemptyset(&tmp);
+	FILLBLOCKSET(&tmp);
+	sigprocmask(SIG_BLOCK, &tmp, &old);
+#else
 	oldmask = sigblock(BLOCKABLE);
+#endif
 
 	current_static_space_free_pointer =
 		(lispobj *) SymbolValue(STATIC_SPACE_FREE_POINTER);
@@ -307,7 +319,11 @@ void collect_garbage(void)
 #endif
 	zero_stack();
 
+#ifdef POSIX_SIGS
+	sigprocmask(SIG_SETMASK, &old, 0);
+#else
 	(void) sigsetmask(oldmask);
+#endif
 
 
 #ifdef PRINTNOISE
@@ -1843,7 +1859,7 @@ void set_auto_gc_trigger(os_vm_size_t dynamic_usage)
     addr=os_round_up_to_page(addr);
     length=os_trunc_size_to_page(length);
 
-#ifdef SUNOS
+#if defined(SUNOS) || defined(SOLARIS)
     os_invalidate(addr,length);
 #else
     os_protect(addr, length, 0);
@@ -1855,7 +1871,7 @@ void set_auto_gc_trigger(os_vm_size_t dynamic_usage)
 void clear_auto_gc_trigger(void)
 {
     if(current_auto_gc_trigger!=NULL){
-#ifdef SUNOS /* don't want to force whole space into swapping mode... */
+#if defined(SUNOS) || defined(SOLARIS)/* don't want to force whole space into swapping mode... */
 	os_vm_address_t addr=(os_vm_address_t)current_auto_gc_trigger;
 	os_vm_size_t length=
 	    DYNAMIC_SPACE_SIZE + (os_vm_address_t)current_dynamic_space - addr;