summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKorey Sewell <ksewell@umich.edu>2006-05-04 20:49:24 -0400
committerKorey Sewell <ksewell@umich.edu>2006-05-04 20:49:24 -0400
commit2e7e844768e160bf81be53d6b633f3851bb4ea80 (patch)
tree6e8beceb6aa8156dcf118cf3525c96e17edc902b
parent97429d8eeede120a2a78407f3573aa7a05075a89 (diff)
downloadgem5-2e7e844768e160bf81be53d6b633f3851bb4ea80.tar.xz
recognized 32 & 64 bit unsigned integer types and set the width appropriately
arch/mips/isa_traits.hh: debug statements to be taken out real soon like... --HG-- extra : convert_revision : 4e9abcb99c991db93328d01d7606a2bb942b29ee
-rwxr-xr-xarch/isa_parser.py7
-rw-r--r--arch/mips/isa_traits.hh6
2 files changed, 13 insertions, 0 deletions
diff --git a/arch/isa_parser.py b/arch/isa_parser.py
index 83620a9f1..a92c85c3f 100755
--- a/arch/isa_parser.py
+++ b/arch/isa_parser.py
@@ -1226,6 +1226,10 @@ class FloatRegOperand(Operand):
width = 64;
else:
func = 'readFloatRegBits'
+ if (self.ctype == 'uint32_t'):
+ width = 32;
+ elif (self.ctype == 'uint64_t'):
+ width = 64;
if (self.size != self.dflt_size):
bit_select = 1
if width:
@@ -1251,6 +1255,9 @@ class FloatRegOperand(Operand):
elif (self.ctype == 'double'):
width = 64
func = 'setFloatReg'
+ elif (self.ctype == 'uint32_t'):
+ func = 'setFloatRegBits'
+ width = 32
elif (self.ctype == 'uint64_t'):
func = 'setFloatRegBits'
width = 64
diff --git a/arch/mips/isa_traits.hh b/arch/mips/isa_traits.hh
index 671d36b87..105d4c283 100644
--- a/arch/mips/isa_traits.hh
+++ b/arch/mips/isa_traits.hh
@@ -226,14 +226,20 @@ namespace MipsISA
double readReg(int floatReg, int width)
{
+ using namespace std;
+
switch(width)
{
case SingleWidth:
void *float_ptr = &regs[floatReg];
+ cout << "reading as float, reg." << floatReg << ": " << *(float *) float_ptr << endl;
+ cout << "reading as uint32_t, reg." << floatReg << ": " << *(uint32_t *) float_ptr << endl;
return *(float *) float_ptr;
case DoubleWidth:
void *double_ptr = &regs[floatReg];
+ cout << "reading as double, reg." << floatReg <<": " << *(double *) double_ptr << endl;
+ cout << "reading as uint64_t, reg." << floatReg << hex << ": 0x" << *(uint64_t *) float_ptr << endl;
return *(double *) double_ptr;
default: