From: Guillermo J. Rozas Date: Tue, 14 Apr 1992 18:40:13 +0000 (+0000) Subject: Add floating-point conditionalization so that the microcode will run X-Git-Tag: 20090517-FFI~9486 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=684426b43f67d9398942a4b8be409a2317b68181;p=mit-scheme.git Add floating-point conditionalization so that the microcode will run on machines with and without floating-point instructions. --- diff --git a/v7/src/microcode/cmpintmd/i386.h b/v7/src/microcode/cmpintmd/i386.h index afac2aae5..24f8af060 100644 --- a/v7/src/microcode/cmpintmd/i386.h +++ b/v7/src/microcode/cmpintmd/i386.h @@ -1,6 +1,6 @@ /* -*-C-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/cmpintmd/i386.h,v 1.15 1992/03/30 21:11:54 jinx Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/cmpintmd/i386.h,v 1.16 1992/04/14 18:40:13 jinx Exp $ Copyright (c) 1992 Massachusetts Institute of Technology @@ -411,10 +411,10 @@ long i386_pc_displacement_relocation = 0; void DEFUN_VOID (i386_reset_hook) { - extern unsigned short interface_initialize (); + extern int interface_initialize (); int offset = (COMPILER_REGBLOCK_N_FIXED * (sizeof (SCHEME_OBJECT))); unsigned char * esi_value = ((unsigned char *) (&Registers[0])); - unsigned short code_segment = (interface_initialize ()); + int fp_support_present = (i386_interface_initialize ()); /* These must match machines/i386/lapgen.scm */ @@ -428,12 +428,12 @@ DEFUN_VOID (i386_reset_hook) Microcode_Termination (TERM_EXIT); } SETUP_REGISTER (asm_trampoline_to_interface); /* 2 */ - + SETUP_REGISTER (asm_interrupt_procedure); /* 3 */ SETUP_REGISTER (asm_interrupt_continuation); /* 4 */ SETUP_REGISTER (asm_interrupt_closure); /* 5 */ SETUP_REGISTER (asm_interrupt_dlink); /* 6 */ - + SETUP_REGISTER (asm_primitive_apply); /* 7 */ SETUP_REGISTER (asm_primitive_lexpr_apply); /* 8 */ SETUP_REGISTER (asm_assignment_trap); /* 9 */ @@ -453,21 +453,42 @@ DEFUN_VOID (i386_reset_hook) offset = -128; - SETUP_REGISTER (asm_generic_add); /* -32 */ - SETUP_REGISTER (asm_generic_subtract); /* -31 */ - SETUP_REGISTER (asm_generic_multiply); /* -30 */ - SETUP_REGISTER (asm_generic_divide); /* -29 */ - SETUP_REGISTER (asm_generic_equal); /* -28 */ - SETUP_REGISTER (asm_generic_less); /* -27 */ - SETUP_REGISTER (asm_generic_greater); /* -26 */ - SETUP_REGISTER (asm_generic_increment); /* -25 */ - SETUP_REGISTER (asm_generic_decrement); /* -24 */ - SETUP_REGISTER (asm_generic_zero); /* -23 */ - SETUP_REGISTER (asm_generic_positive); /* -22 */ - SETUP_REGISTER (asm_generic_negative); /* -21 */ - SETUP_REGISTER (asm_generic_quotient); /* -20 */ - SETUP_REGISTER (asm_generic_remainder); /* -19 */ - SETUP_REGISTER (asm_generic_modulo); /* -18 */ + if (fp_support_present != 0) + { + SETUP_REGISTER (asm_generic_add); /* -32 */ + SETUP_REGISTER (asm_generic_subtract); /* -31 */ + SETUP_REGISTER (asm_generic_multiply); /* -30 */ + SETUP_REGISTER (asm_generic_divide); /* -29 */ + SETUP_REGISTER (asm_generic_equal); /* -28 */ + SETUP_REGISTER (asm_generic_less); /* -27 */ + SETUP_REGISTER (asm_generic_greater); /* -26 */ + SETUP_REGISTER (asm_generic_increment); /* -25 */ + SETUP_REGISTER (asm_generic_decrement); /* -24 */ + SETUP_REGISTER (asm_generic_zero); /* -23 */ + SETUP_REGISTER (asm_generic_positive); /* -22 */ + SETUP_REGISTER (asm_generic_negative); /* -21 */ + SETUP_REGISTER (asm_generic_quotient); /* -20 */ + SETUP_REGISTER (asm_generic_remainder); /* -19 */ + SETUP_REGISTER (asm_generic_modulo); /* -18 */ + } + else + { + SETUP_REGISTER (asm_nofp_add); /* -32 */ + SETUP_REGISTER (asm_nofp_subtract); /* -31 */ + SETUP_REGISTER (asm_nofp_multiply); /* -30 */ + SETUP_REGISTER (asm_nofp_divide); /* -29 */ + SETUP_REGISTER (asm_nofp_equal); /* -28 */ + SETUP_REGISTER (asm_nofp_less); /* -27 */ + SETUP_REGISTER (asm_nofp_greater); /* -26 */ + SETUP_REGISTER (asm_nofp_increment); /* -25 */ + SETUP_REGISTER (asm_nofp_decrement); /* -24 */ + SETUP_REGISTER (asm_nofp_zero); /* -23 */ + SETUP_REGISTER (asm_nofp_positive); /* -22 */ + SETUP_REGISTER (asm_nofp_negative); /* -21 */ + SETUP_REGISTER (asm_nofp_quotient); /* -20 */ + SETUP_REGISTER (asm_nofp_remainder); /* -19 */ + SETUP_REGISTER (asm_nofp_modulo); /* -18 */ + } SETUP_REGISTER (asm_sc_apply); /* -17 */ SETUP_REGISTER (asm_sc_apply_size_1); /* -16 */