Minor changes for FP ... MIPS now works for floating-point programs...
Now we are to the point where more benchmarks and instruction-coverage is necessary to totally verify/validate correct operation across all MIPS instructions arch/mips/isa_traits.hh: fix for reading double values ... must rearrange bits before using void* to read double. configs/test/hello_mips: real hello world MIPS binary --HG-- extra : convert_revision : 153de1f8a830882c6972bd0bdb56da818f614def
This commit is contained in:
parent
a7565418d2
commit
0930024b88
2 changed files with 4 additions and 2 deletions
|
@ -190,6 +190,7 @@ namespace MipsISA
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef float FloatReg;
|
typedef float FloatReg;
|
||||||
|
typedef double FPVal;
|
||||||
|
|
||||||
typedef uint32_t FloatReg32;
|
typedef uint32_t FloatReg32;
|
||||||
typedef uint64_t FloatReg64;
|
typedef uint64_t FloatReg64;
|
||||||
|
@ -230,7 +231,8 @@ namespace MipsISA
|
||||||
return *(float *) float_ptr;
|
return *(float *) float_ptr;
|
||||||
|
|
||||||
case DoubleWidth:
|
case DoubleWidth:
|
||||||
void *double_ptr = ®s[floatReg];
|
uint64_t double_val = (FloatReg64)regs[floatReg + 1] << 32 | regs[floatReg];
|
||||||
|
void *double_ptr = &double_val;
|
||||||
return *(double *) double_ptr;
|
return *(double *) double_ptr;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -255,7 +257,7 @@ namespace MipsISA
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Fault setReg(int floatReg, const FloatReg &val, int width)
|
Fault setReg(int floatReg, const FPVal &val, int width)
|
||||||
{
|
{
|
||||||
|
|
||||||
switch(width)
|
switch(width)
|
||||||
|
|
Binary file not shown.
Loading…
Reference in a new issue