/* #define DEBUG_INTERFACE */
### -*-Midas-*-
###
- ### $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/cmpauxmd/mips.m4,v 1.3 1990/08/14 18:22:54 cph Rel $
+ ### $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/cmpauxmd/mips.m4,v 1.4 1991/07/12 23:14:52 cph Exp $
###
- ### Copyright (c) 1989, 1990 Massachusetts Institute of Technology
+ ### Copyright (c) 1989-91 Massachusetts Institute of Technology
###
### This material was developed by the Scheme project at the
### Massachusetts Institute of Technology, Department of
addi $0,$0,0
#endif
+ .globl interface_initialize
+ .ent interface_initialize
+interface_initialize:
+ .frame $sp,0,$31
+ cfc1 $25,$31 # read FPU control register
+ nop
+ ori $25,$25,0xf00 # enable V, Z, O, U traps
+ ctc1 $25,$31 # write FPU control register
+ j $31 # return
+ nop
+ .end interface_initialize
+
.globl generate_closure
.ent generate_closure
generate_closure:
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/cmpint.c,v 1.36 1991/05/05 00:41:58 jinx Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/cmpint.c,v 1.37 1991/07/12 23:15:43 cph Exp $
Copyright (c) 1989-1991 Massachusetts Institute of Technology
/* Delay until after band-load, when compiler_reset will be invoked. */
compiler_utilities = SHARP_F;
return_to_interpreter = SHARP_F;
+#ifdef sonyrisc
+ /* On the Sony NEWS 3250, this procedure initializes the
+ floating-point CPU control register to enable the IEEE traps.
+ This is normally executed by `compiler_reset' from LOAD-BAND,
+ but the Sony operating system saves the control register in
+ `setjmp' and restores it on `longjmp', so we must initialize
+ the register before `setjmp' is called. */
+ interface_initialize ();
+#endif
}
return;
}
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/cmpintmd/mips.h,v 1.8 1991/06/15 00:40:07 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/cmpintmd/mips.h,v 1.9 1991/07/12 23:15:20 cph Exp $
Copyright (c) 1989-91 Massachusetts Institute of Technology
(*opcode_addr) = (ADDI_OPCODE << 2); \
}
+extern void EXFUN (interface_initialize, (void));
+
/* This flushes the Scheme portion of the I-cache.
It is used after a GC or disk-restore.
It's needed because the GC has moved code around, and closures
{ \
ICACHEFLUSH ((address), ((sizeof (long)) * (nwords))); \
} while (0)
+
+
+#ifdef IN_CMPINT_C
+
+#define ASM_RESET_HOOK interface_initialize
+
+#endif /* IN_CMPINT_C */
\f
/* Derived parameters and macros.
/* -*-C-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/cmpint.c,v 1.36 1991/05/05 00:41:58 jinx Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/cmpint.c,v 1.37 1991/07/12 23:15:43 cph Exp $
Copyright (c) 1989-1991 Massachusetts Institute of Technology
/* Delay until after band-load, when compiler_reset will be invoked. */
compiler_utilities = SHARP_F;
return_to_interpreter = SHARP_F;
+#ifdef sonyrisc
+ /* On the Sony NEWS 3250, this procedure initializes the
+ floating-point CPU control register to enable the IEEE traps.
+ This is normally executed by `compiler_reset' from LOAD-BAND,
+ but the Sony operating system saves the control register in
+ `setjmp' and restores it on `longjmp', so we must initialize
+ the register before `setjmp' is called. */
+ interface_initialize ();
+#endif
}
return;
}