--- np2/i386c/ia32/interface.c 2005/02/08 09:57:26 1.22 +++ np2/i386c/ia32/interface.c 2008/01/25 18:02:18 1.25 @@ -1,4 +1,4 @@ -/* $Id: interface.c,v 1.22 2005/02/08 09:57:26 yui Exp $ */ +/* $Id: interface.c,v 1.25 2008/01/25 18:02:18 monaka Exp $ */ /* * Copyright (c) 2002-2003 NONAKA Kimihiro @@ -12,8 +12,6 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES @@ -30,6 +28,9 @@ #include "compiler.h" #include "cpu.h" #include "ia32.mcr" +#if defined(USE_FPU) +#include "instructions/fpu/fp.h" +#endif #include "pccore.h" #include "iocore.h" @@ -50,9 +51,11 @@ ia32_initreg(void) CPU_EDX = (CPU_FAMILY << 8) | (CPU_MODEL << 4) | CPU_STEPPING; CPU_EFLAG = 2; CPU_CR0 = CPU_CR0_CD | CPU_CR0_NW | CPU_CR0_ET; -#ifndef USE_FPU +#if defined(USE_FPU) CPU_CR0 |= CPU_CR0_EM | CPU_CR0_NE; CPU_CR0 &= ~CPU_CR0_MP; +#else + CPU_CR0 |= CPU_CR0_ET; #endif CPU_MXCSR = 0x1f80; CPU_GDTR_LIMIT = 0xffff; @@ -76,6 +79,9 @@ ia32_initreg(void) CPU_ADRSMASK = 0x000fffff; tlb_init(); +#if defined(USE_FPU) + fpu_init(); +#endif } void @@ -281,9 +287,6 @@ ia32_bioscall(void) adrs = (CPU_EIP - 1) + CPU_STAT_CS_BASE; #endif if ((adrs >= 0xf8000) && (adrs < 0x100000)) { - if (biosfunc(adrs)) { - CPU_PREFETCH_CLEAR(); - } if (!CPU_STAT_PM || CPU_STAT_VM86) { CPU_SET_SEGREG(CPU_ES_INDEX, CPU_ES); CPU_SET_SEGREG(CPU_CS_INDEX, CPU_CS);