Linux-2.6.12-rc2
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
This commit is contained in:
174
arch/i386/math-emu/fpu_arith.c
Normal file
174
arch/i386/math-emu/fpu_arith.c
Normal file
@@ -0,0 +1,174 @@
|
||||
/*---------------------------------------------------------------------------+
|
||||
| fpu_arith.c |
|
||||
| |
|
||||
| Code to implement the FPU register/register arithmetic instructions |
|
||||
| |
|
||||
| Copyright (C) 1992,1993,1997 |
|
||||
| W. Metzenthen, 22 Parker St, Ormond, Vic 3163, Australia |
|
||||
| E-mail billm@suburbia.net |
|
||||
| |
|
||||
| |
|
||||
+---------------------------------------------------------------------------*/
|
||||
|
||||
#include "fpu_system.h"
|
||||
#include "fpu_emu.h"
|
||||
#include "control_w.h"
|
||||
#include "status_w.h"
|
||||
|
||||
|
||||
void fadd__(void)
|
||||
{
|
||||
/* fadd st,st(i) */
|
||||
int i = FPU_rm;
|
||||
clear_C1();
|
||||
FPU_add(&st(i), FPU_gettagi(i), 0, control_word);
|
||||
}
|
||||
|
||||
|
||||
void fmul__(void)
|
||||
{
|
||||
/* fmul st,st(i) */
|
||||
int i = FPU_rm;
|
||||
clear_C1();
|
||||
FPU_mul(&st(i), FPU_gettagi(i), 0, control_word);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void fsub__(void)
|
||||
{
|
||||
/* fsub st,st(i) */
|
||||
clear_C1();
|
||||
FPU_sub(0, FPU_rm, control_word);
|
||||
}
|
||||
|
||||
|
||||
void fsubr_(void)
|
||||
{
|
||||
/* fsubr st,st(i) */
|
||||
clear_C1();
|
||||
FPU_sub(REV, FPU_rm, control_word);
|
||||
}
|
||||
|
||||
|
||||
void fdiv__(void)
|
||||
{
|
||||
/* fdiv st,st(i) */
|
||||
clear_C1();
|
||||
FPU_div(0, FPU_rm, control_word);
|
||||
}
|
||||
|
||||
|
||||
void fdivr_(void)
|
||||
{
|
||||
/* fdivr st,st(i) */
|
||||
clear_C1();
|
||||
FPU_div(REV, FPU_rm, control_word);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void fadd_i(void)
|
||||
{
|
||||
/* fadd st(i),st */
|
||||
int i = FPU_rm;
|
||||
clear_C1();
|
||||
FPU_add(&st(i), FPU_gettagi(i), i, control_word);
|
||||
}
|
||||
|
||||
|
||||
void fmul_i(void)
|
||||
{
|
||||
/* fmul st(i),st */
|
||||
clear_C1();
|
||||
FPU_mul(&st(0), FPU_gettag0(), FPU_rm, control_word);
|
||||
}
|
||||
|
||||
|
||||
void fsubri(void)
|
||||
{
|
||||
/* fsubr st(i),st */
|
||||
clear_C1();
|
||||
FPU_sub(DEST_RM, FPU_rm, control_word);
|
||||
}
|
||||
|
||||
|
||||
void fsub_i(void)
|
||||
{
|
||||
/* fsub st(i),st */
|
||||
clear_C1();
|
||||
FPU_sub(REV|DEST_RM, FPU_rm, control_word);
|
||||
}
|
||||
|
||||
|
||||
void fdivri(void)
|
||||
{
|
||||
/* fdivr st(i),st */
|
||||
clear_C1();
|
||||
FPU_div(DEST_RM, FPU_rm, control_word);
|
||||
}
|
||||
|
||||
|
||||
void fdiv_i(void)
|
||||
{
|
||||
/* fdiv st(i),st */
|
||||
clear_C1();
|
||||
FPU_div(REV|DEST_RM, FPU_rm, control_word);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void faddp_(void)
|
||||
{
|
||||
/* faddp st(i),st */
|
||||
int i = FPU_rm;
|
||||
clear_C1();
|
||||
if ( FPU_add(&st(i), FPU_gettagi(i), i, control_word) >= 0 )
|
||||
FPU_pop();
|
||||
}
|
||||
|
||||
|
||||
void fmulp_(void)
|
||||
{
|
||||
/* fmulp st(i),st */
|
||||
clear_C1();
|
||||
if ( FPU_mul(&st(0), FPU_gettag0(), FPU_rm, control_word) >= 0 )
|
||||
FPU_pop();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void fsubrp(void)
|
||||
{
|
||||
/* fsubrp st(i),st */
|
||||
clear_C1();
|
||||
if ( FPU_sub(DEST_RM, FPU_rm, control_word) >= 0 )
|
||||
FPU_pop();
|
||||
}
|
||||
|
||||
|
||||
void fsubp_(void)
|
||||
{
|
||||
/* fsubp st(i),st */
|
||||
clear_C1();
|
||||
if ( FPU_sub(REV|DEST_RM, FPU_rm, control_word) >= 0 )
|
||||
FPU_pop();
|
||||
}
|
||||
|
||||
|
||||
void fdivrp(void)
|
||||
{
|
||||
/* fdivrp st(i),st */
|
||||
clear_C1();
|
||||
if ( FPU_div(DEST_RM, FPU_rm, control_word) >= 0 )
|
||||
FPU_pop();
|
||||
}
|
||||
|
||||
|
||||
void fdivp_(void)
|
||||
{
|
||||
/* fdivp st(i),st */
|
||||
clear_C1();
|
||||
if ( FPU_div(REV|DEST_RM, FPU_rm, control_word) >= 0 )
|
||||
FPU_pop();
|
||||
}
|
Reference in New Issue
Block a user