From 15d9b5ce4b2c11d8460cd0690f77584a69781bd0 Mon Sep 17 00:00:00 2001
From: "Guillermo J. Rozas" <edu/mit/csail/zurich/gjr>
Date: Thu, 26 Aug 1993 05:38:29 +0000
Subject: [PATCH] Add hook for interrupt-continuation-2.

---
 v7/src/microcode/cmpauxmd/i386.m4 |  3 ++-
 v7/src/microcode/cmpint.c         | 17 +++++++++++++++--
 v7/src/microcode/cmpintmd/i386.h  |  7 ++++++-
 v8/src/microcode/cmpint.c         | 17 +++++++++++++++--
 4 files changed, 38 insertions(+), 6 deletions(-)

diff --git a/v7/src/microcode/cmpauxmd/i386.m4 b/v7/src/microcode/cmpauxmd/i386.m4
index 15cc251af..768d126ac 100644
--- a/v7/src/microcode/cmpauxmd/i386.m4
+++ b/v7/src/microcode/cmpauxmd/i386.m4
@@ -1,6 +1,6 @@
 ### -*-Midas-*-
 ###
-###	$Id: i386.m4,v 1.31 1993/08/23 04:46:44 gjr Exp $
+###	$Id: i386.m4,v 1.32 1993/08/26 05:38:06 gjr Exp $
 ###
 ###	Copyright (c) 1992-1993 Massachusetts Institute of Technology
 ###
@@ -590,6 +590,7 @@ define(define_call_indirection,
 define_call_indirection(interrupt_procedure,1a)
 define_call_indirection(interrupt_continuation,1b)
 define_jump_indirection(interrupt_closure,18)
+define_jump_indirection(interrupt_continuation_2,3b)
 
 define_c_label(asm_interrupt_dlink)
 	OP(mov,l)	TW(LOF(REGBLOCK_DLINK(),regs),REG(edx))
diff --git a/v7/src/microcode/cmpint.c b/v7/src/microcode/cmpint.c
index b62dd1787..08f81268e 100644
--- a/v7/src/microcode/cmpint.c
+++ b/v7/src/microcode/cmpint.c
@@ -1,6 +1,6 @@
 /* -*-C-*-
 
-$Id: cmpint.c,v 1.63 1993/08/22 20:25:25 gjr Exp $
+$Id: cmpint.c,v 1.64 1993/08/26 05:38:29 gjr Exp $
 
 Copyright (c) 1989-1993 Massachusetts Institute of Technology
 
@@ -1586,6 +1586,16 @@ DEFUN (comutil_interrupt_ic_procedure,
   return (compiler_interrupt_common (entry_point_raw, (Fetch_Env ())));
 }
 
+SCHEME_UTILITY utility_result
+DEFUN (comutil_interrupt_continuation_2, (ignore_1, ignore_2, ignore_3, ignore_4),
+       long ignore_1 AND
+       long ignore_2 AND
+       long ignore_3 AND
+       long ignore_4)
+{
+  return (compiler_interrupt_common (0, Val));
+}
+
 C_TO_SCHEME long
 DEFUN_VOID (comp_interrupt_restart)
 {
@@ -2775,7 +2785,8 @@ utility_table_entry utility_table[] =
   UTE(comutil_quotient),			/* 0x37 */
   UTE(comutil_remainder),			/* 0x38 */
   UTE(comutil_modulo),				/* 0x39 */
-  UTE(comutil_apply_in_interpreter)		/* 0x3a */
+  UTE(comutil_apply_in_interpreter),		/* 0x3a */
+  UTE(comutil_interrupt_continuation_2)		/* 0x3b */
   };
 
 /* Support for trap handling. */
@@ -2845,6 +2856,7 @@ struct util_descriptor_s utility_descriptor_table[] =
   UTLD(comutil_interrupt_procedure),
   UTLD(comutil_interrupt_continuation),
   UTLD(comutil_interrupt_ic_procedure),
+  UTLD(comutil_interrupt_continuation_2),
   UTLD(comp_interrupt_restart),
 
   UTLD(comutil_assignment_trap),
@@ -2900,6 +2912,7 @@ struct util_descriptor_s utility_descriptor_table[] =
   UTLD(compiled_entry_closure_p),
   UTLD(compiled_closure_to_entry),
   UTLD(compiled_entry_type),
+  UTLD(declare_compiled_code),
   UTLD(store_variable_cache),
   UTLD(extract_variable_cache),
   UTLD(extract_uuo_link),
diff --git a/v7/src/microcode/cmpintmd/i386.h b/v7/src/microcode/cmpintmd/i386.h
index 7f22384b4..aa4a33978 100644
--- a/v7/src/microcode/cmpintmd/i386.h
+++ b/v7/src/microcode/cmpintmd/i386.h
@@ -1,6 +1,6 @@
 /* -*-C-*-
 
-$Id: i386.h,v 1.23 1993/08/23 02:19:52 gjr Exp $
+$Id: i386.h,v 1.24 1993/08/26 05:38:15 gjr Exp $
 
 Copyright (c) 1992-1993 Massachusetts Institute of Technology
 
@@ -542,6 +542,10 @@ DEFUN_VOID (i386_reset_hook)
   SETUP_REGISTER (asm_primitive_error);			/* 14 */
   SETUP_REGISTER (asm_short_primitive_apply);		/* 15 */
 
+  /* No more room for positive offsets without going to 32-bit
+     offsets!
+   */
+
   /* This is a hack to make all the hooks be addressable
      with byte offsets (instead of longword offsets).
      The register block extends to negative offsets as well,
@@ -597,6 +601,7 @@ DEFUN_VOID (i386_reset_hook)
   SETUP_REGISTER (asm_sc_apply_size_6);			/* -11 */
   SETUP_REGISTER (asm_sc_apply_size_7);			/* -10 */
   SETUP_REGISTER (asm_sc_apply_size_8);			/* -9 */
+  SETUP_REGISTER (asm_interrupt_continuation_2);	/* -8 */
 
 #ifdef _MACH_UNIX
   {
diff --git a/v8/src/microcode/cmpint.c b/v8/src/microcode/cmpint.c
index b62dd1787..08f81268e 100644
--- a/v8/src/microcode/cmpint.c
+++ b/v8/src/microcode/cmpint.c
@@ -1,6 +1,6 @@
 /* -*-C-*-
 
-$Id: cmpint.c,v 1.63 1993/08/22 20:25:25 gjr Exp $
+$Id: cmpint.c,v 1.64 1993/08/26 05:38:29 gjr Exp $
 
 Copyright (c) 1989-1993 Massachusetts Institute of Technology
 
@@ -1586,6 +1586,16 @@ DEFUN (comutil_interrupt_ic_procedure,
   return (compiler_interrupt_common (entry_point_raw, (Fetch_Env ())));
 }
 
+SCHEME_UTILITY utility_result
+DEFUN (comutil_interrupt_continuation_2, (ignore_1, ignore_2, ignore_3, ignore_4),
+       long ignore_1 AND
+       long ignore_2 AND
+       long ignore_3 AND
+       long ignore_4)
+{
+  return (compiler_interrupt_common (0, Val));
+}
+
 C_TO_SCHEME long
 DEFUN_VOID (comp_interrupt_restart)
 {
@@ -2775,7 +2785,8 @@ utility_table_entry utility_table[] =
   UTE(comutil_quotient),			/* 0x37 */
   UTE(comutil_remainder),			/* 0x38 */
   UTE(comutil_modulo),				/* 0x39 */
-  UTE(comutil_apply_in_interpreter)		/* 0x3a */
+  UTE(comutil_apply_in_interpreter),		/* 0x3a */
+  UTE(comutil_interrupt_continuation_2)		/* 0x3b */
   };
 
 /* Support for trap handling. */
@@ -2845,6 +2856,7 @@ struct util_descriptor_s utility_descriptor_table[] =
   UTLD(comutil_interrupt_procedure),
   UTLD(comutil_interrupt_continuation),
   UTLD(comutil_interrupt_ic_procedure),
+  UTLD(comutil_interrupt_continuation_2),
   UTLD(comp_interrupt_restart),
 
   UTLD(comutil_assignment_trap),
@@ -2900,6 +2912,7 @@ struct util_descriptor_s utility_descriptor_table[] =
   UTLD(compiled_entry_closure_p),
   UTLD(compiled_closure_to_entry),
   UTLD(compiled_entry_type),
+  UTLD(declare_compiled_code),
   UTLD(store_variable_cache),
   UTLD(extract_variable_cache),
   UTLD(extract_uuo_link),
-- 
2.25.1