ns32k-dis.c (invalid_float): Changed to take char* argument, and test for
authorKen Raeburn <raeburn@cygnus>
Wed, 13 Jul 1994 22:38:03 +0000 (22:38 +0000)
committerKen Raeburn <raeburn@cygnus>
Wed, 13 Jul 1994 22:38:03 +0000 (22:38 +0000)
explicitly specified sizes, instead of using sizeof() on host CPU types.
(INVALID_FLOAT): Cast first argument.

opcodes/ChangeLog
opcodes/ns32k-dis.c

index 0cb8a6d7ac2a417dbac9f69017574ff9e2f9188f..abaa9a2560746fefae384abd60e584ef5e8b853f 100644 (file)
@@ -2,7 +2,10 @@ Wed Jul 13 18:01:58 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)
 
        * ns32k-dis.c: Deleted all code in "#ifdef GDB".
        (invalid_float): Enabled general version, doesn't require running
-       on ns32k host.
+       on ns32k host.  Changed to take char* argument, and test for
+       explicitly specified sizes, instead of using sizeof() on host CPU
+       types.
+       (INVALID_FLOAT): Cast first argument.
 
 Sun Jul 10 00:27:47 1994  Ian Dall  (dall@hfrd.dsto.gov.au)
 
index 1cacee4e364429e960940b78e63f405a03e1f150..808fdd204e3117e1d4352f4f5c5d37ddfd37b000 100644 (file)
@@ -32,7 +32,7 @@ static disassemble_info *dis_info;
  * Hacks to get it to compile <= READ THESE AS FIXES NEEDED
  */
 #define CORE_ADDR unsigned long
-#define INVALID_FLOAT(val, size) invalid_float(val, size)
+#define INVALID_FLOAT(val, size) invalid_float((char *)val, size)
 
 static long read_memory_integer(addr, nr)
      unsigned char *addr;
@@ -801,20 +801,20 @@ get_displacement (buffer, aoffsetp)
 
 #if 1 /* a version that should work on ns32k f's&d's on any machine */
 int invalid_float(p, len)
-     register union { double d; float f; } *p;
+     register char *p;
      register int len;
 {
   register val;
 
-  if ( len == sizeof (float) )
-    val = (bit_extract(&p.f, 23, 8)/*exponent*/ == 0xff
-          || (bit_extract(&p, 23, 8)/*exponent*/ == 0 &&
-              bit_extract(&p, 0, 23)/*mantisa*/ != 0));
-  else if ( len == sizeof (double) )
-    val = (bit_extract(&p.d, 52, 11)/*exponent*/ == 0x7ff
-          || (bit_extract(&p, 52, 11)/*exponent*/ == 0
-              && (bit_extract(&p, 0, 32)/*low mantisa*/ != 0
-                  || bit_extract(&p, 32, 20)/*high mantisa*/ != 0)));
+  if ( len == 4 )
+    val = (bit_extract(p, 23, 8)/*exponent*/ == 0xff
+          || (bit_extract(p, 23, 8)/*exponent*/ == 0 &&
+              bit_extract(p, 0, 23)/*mantisa*/ != 0));
+  else if ( len == 8 )
+    val = (bit_extract(p, 52, 11)/*exponent*/ == 0x7ff
+          || (bit_extract(p, 52, 11)/*exponent*/ == 0
+              && (bit_extract(p, 0, 32)/*low mantisa*/ != 0
+                  || bit_extract(p, 32, 20)/*high mantisa*/ != 0)));
   else
     val = 1;
   return (val);