ns32k-dis.c (invalid_float): Changed to take char* argument, and test for

explicitly specified sizes, instead of using sizeof() on host CPU types.
(INVALID_FLOAT): Cast first argument.
This commit is contained in:
Ken Raeburn 1994-07-13 22:38:03 +00:00
parent 69bb683c6d
commit 60a70a7b0e
2 changed files with 15 additions and 12 deletions

View 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". * ns32k-dis.c: Deleted all code in "#ifdef GDB".
(invalid_float): Enabled general version, doesn't require running (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) Sun Jul 10 00:27:47 1994 Ian Dall (dall@hfrd.dsto.gov.au)

View File

@ -32,7 +32,7 @@ static disassemble_info *dis_info;
* Hacks to get it to compile <= READ THESE AS FIXES NEEDED * Hacks to get it to compile <= READ THESE AS FIXES NEEDED
*/ */
#define CORE_ADDR unsigned long #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) static long read_memory_integer(addr, nr)
unsigned char *addr; 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 */ #if 1 /* a version that should work on ns32k f's&d's on any machine */
int invalid_float(p, len) int invalid_float(p, len)
register union { double d; float f; } *p; register char *p;
register int len; register int len;
{ {
register val; register val;
if ( len == sizeof (float) ) if ( len == 4 )
val = (bit_extract(&p.f, 23, 8)/*exponent*/ == 0xff val = (bit_extract(p, 23, 8)/*exponent*/ == 0xff
|| (bit_extract(&p, 23, 8)/*exponent*/ == 0 && || (bit_extract(p, 23, 8)/*exponent*/ == 0 &&
bit_extract(&p, 0, 23)/*mantisa*/ != 0)); bit_extract(p, 0, 23)/*mantisa*/ != 0));
else if ( len == sizeof (double) ) else if ( len == 8 )
val = (bit_extract(&p.d, 52, 11)/*exponent*/ == 0x7ff val = (bit_extract(p, 52, 11)/*exponent*/ == 0x7ff
|| (bit_extract(&p, 52, 11)/*exponent*/ == 0 || (bit_extract(p, 52, 11)/*exponent*/ == 0
&& (bit_extract(&p, 0, 32)/*low mantisa*/ != 0 && (bit_extract(p, 0, 32)/*low mantisa*/ != 0
|| bit_extract(&p, 32, 20)/*high mantisa*/ != 0))); || bit_extract(p, 32, 20)/*high mantisa*/ != 0)));
else else
val = 1; val = 1;
return (val); return (val);