Revision 2ee73ac3 target-i386/helper.c
b/target-i386/helper.c | ||
---|---|---|
24 | 24 |
#if 0 |
25 | 25 |
#define raise_exception_err(a, b)\ |
26 | 26 |
do {\ |
27 |
printf("raise_exception line=%d\n", __LINE__);\
|
|
27 |
fprintf(logfile, "raise_exception line=%d\n", __LINE__);\
|
|
28 | 28 |
(raise_exception_err)(a, b);\ |
29 | 29 |
} while (0) |
30 | 30 |
#endif |
... | ... | |
859 | 859 |
if (loglevel & (CPU_LOG_PCALL | CPU_LOG_INT)) { |
860 | 860 |
if ((env->cr[0] & CR0_PE_MASK)) { |
861 | 861 |
static int count; |
862 |
fprintf(logfile, "%6d: v=%02x e=%04x i=%d cpl=%d IP=%04x:%08x SP=%04x:%08x", |
|
862 |
fprintf(logfile, "%6d: v=%02x e=%04x i=%d cpl=%d IP=%04x:%08x pc=%08x SP=%04x:%08x",
|
|
863 | 863 |
count, intno, error_code, is_int, |
864 | 864 |
env->hflags & HF_CPL_MASK, |
865 | 865 |
env->segs[R_CS].selector, EIP, |
866 |
(int)env->segs[R_CS].base + EIP, |
|
866 | 867 |
env->segs[R_SS].selector, ESP); |
867 | 868 |
if (intno == 0x0e) { |
868 | 869 |
fprintf(logfile, " CR2=%08x", env->cr[2]); |
... | ... | |
1990 | 1991 |
helper_fstt(ST0, (uint8_t *)A0); |
1991 | 1992 |
} |
1992 | 1993 |
|
1994 |
void fpu_set_exception(int mask) |
|
1995 |
{ |
|
1996 |
env->fpus |= mask; |
|
1997 |
if (env->fpus & (~env->fpuc & FPUC_EM)) |
|
1998 |
env->fpus |= FPUS_SE | FPUS_B; |
|
1999 |
} |
|
2000 |
|
|
2001 |
CPU86_LDouble helper_fdiv(CPU86_LDouble a, CPU86_LDouble b) |
|
2002 |
{ |
|
2003 |
if (b == 0.0) |
|
2004 |
fpu_set_exception(FPUS_ZE); |
|
2005 |
return a / b; |
|
2006 |
} |
|
2007 |
|
|
2008 |
void fpu_raise_exception(void) |
|
2009 |
{ |
|
2010 |
if (env->cr[0] & CR0_NE_MASK) { |
|
2011 |
raise_exception(EXCP10_COPR); |
|
2012 |
} |
|
2013 |
#if !defined(CONFIG_USER_ONLY) |
|
2014 |
else { |
|
2015 |
cpu_set_ferr(env); |
|
2016 |
} |
|
2017 |
#endif |
|
2018 |
} |
|
2019 |
|
|
1993 | 2020 |
/* BCD ops */ |
1994 | 2021 |
|
1995 | 2022 |
void helper_fbld_ST0_A0(void) |
Also available in: Unified diff