154 lines
5.9 KiB
Diff
154 lines
5.9 KiB
Diff
--- sim/common/gentmap.c
|
|
+++ sim/common/gentmap.c
|
|
@@ -2,6 +2,7 @@
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
+#include <string.h>
|
|
|
|
struct tdefs {
|
|
char *symbol;
|
|
--- sim/ppc/debug.c
|
|
+++ sim/ppc/debug.c
|
|
@@ -29,6 +29,10 @@
|
|
#include <stdlib.h>
|
|
#endif
|
|
|
|
+#ifdef HAVE_STRING_H
|
|
+#include <string.h>
|
|
+#endif
|
|
+
|
|
int ppc_trace[nr_trace_options];
|
|
|
|
typedef struct _trace_option_descriptor {
|
|
--- sim/ppc/ppc-instructions
|
|
+++ sim/ppc/ppc-instructions
|
|
@@ -3965,12 +3965,14 @@
|
|
fpscr_vxsnan | fpscr_vximz,
|
|
0, /*single?*/
|
|
0) /*negate?*/) {
|
|
+ union { double d; unsigned64 u; } tmp;
|
|
invalid_arithemetic_operation(processor, cia,
|
|
- (unsigned64*)&product, *frA, 0, *frC,
|
|
+ &tmp.u, *frA, 0, *frC,
|
|
0, /*instruction_is_frsp*/
|
|
0, /*instruction_is_convert_to_64bit*/
|
|
0, /*instruction_is_convert_to_32bit*/
|
|
0); /*single-precision*/
|
|
+ product = tmp.d;
|
|
}
|
|
else {
|
|
/*HACK!*/
|
|
@@ -4010,12 +4012,14 @@
|
|
fpscr_vxsnan | fpscr_vximz,
|
|
1, /*single?*/
|
|
0) /*negate?*/) {
|
|
+ union { double d; unsigned64 u; } tmp;
|
|
invalid_arithemetic_operation(processor, cia,
|
|
- (unsigned64*)&product, *frA, 0, *frC,
|
|
+ &tmp.u, *frA, 0, *frC,
|
|
0, /*instruction_is_frsp*/
|
|
0, /*instruction_is_convert_to_64bit*/
|
|
0, /*instruction_is_convert_to_32bit*/
|
|
0); /*single-precision*/
|
|
+ product = tmp.d;
|
|
}
|
|
else {
|
|
/*HACK!*/
|
|
@@ -4055,12 +4059,14 @@
|
|
fpscr_vxsnan | fpscr_vximz,
|
|
0, /*single?*/
|
|
0) /*negate?*/) {
|
|
+ union { double d; unsigned64 u; } tmp;
|
|
invalid_arithemetic_operation(processor, cia,
|
|
- (unsigned64*)&product, *frA, 0, *frC,
|
|
+ &tmp.u, *frA, 0, *frC,
|
|
0, /*instruction_is_frsp*/
|
|
0, /*instruction_is_convert_to_64bit*/
|
|
0, /*instruction_is_convert_to_32bit*/
|
|
0); /*single-precision*/
|
|
+ product = tmp.d;
|
|
}
|
|
else {
|
|
/*HACK!*/
|
|
@@ -4100,12 +4106,14 @@
|
|
fpscr_vxsnan | fpscr_vximz,
|
|
1, /*single?*/
|
|
0) /*negate?*/) {
|
|
+ union { double d; unsigned64 u; } tmp;
|
|
invalid_arithemetic_operation(processor, cia,
|
|
- (unsigned64*)&product, *frA, 0, *frC,
|
|
+ &tmp.u, *frA, 0, *frC,
|
|
0, /*instruction_is_frsp*/
|
|
0, /*instruction_is_convert_to_64bit*/
|
|
0, /*instruction_is_convert_to_32bit*/
|
|
0); /*single-precision*/
|
|
+ product = tmp.d;
|
|
}
|
|
else {
|
|
/*HACK!*/
|
|
@@ -4145,12 +4153,14 @@
|
|
fpscr_vxsnan | fpscr_vximz,
|
|
0, /*single?*/
|
|
0) /*negate?*/) {
|
|
+ union { double d; unsigned64 u; } tmp;
|
|
invalid_arithemetic_operation(processor, cia,
|
|
- (unsigned64*)&product, *frA, 0, *frC,
|
|
+ &tmp.u, *frA, 0, *frC,
|
|
0, /*instruction_is_frsp*/
|
|
0, /*instruction_is_convert_to_64bit*/
|
|
0, /*instruction_is_convert_to_32bit*/
|
|
0); /*single-precision*/
|
|
+ product = tmp.d;
|
|
}
|
|
else {
|
|
/*HACK!*/
|
|
@@ -4190,12 +4200,14 @@
|
|
fpscr_vxsnan | fpscr_vximz,
|
|
1, /*single?*/
|
|
0) /*negate?*/) {
|
|
+ union { double d; unsigned64 u; } tmp;
|
|
invalid_arithemetic_operation(processor, cia,
|
|
- (unsigned64*)&product, *frA, 0, *frC,
|
|
+ &tmp.u, *frA, 0, *frC,
|
|
0, /*instruction_is_frsp*/
|
|
0, /*instruction_is_convert_to_64bit*/
|
|
0, /*instruction_is_convert_to_32bit*/
|
|
0); /*single-precision*/
|
|
+ product = tmp.d;
|
|
}
|
|
else {
|
|
/*HACK!*/
|
|
@@ -4235,12 +4247,14 @@
|
|
fpscr_vxsnan | fpscr_vximz,
|
|
0, /*single?*/
|
|
0) /*negate?*/) {
|
|
+ union { double d; unsigned64 u; } tmp;
|
|
invalid_arithemetic_operation(processor, cia,
|
|
- (unsigned64*)&product, *frA, 0, *frC,
|
|
+ &tmp.u, *frA, 0, *frC,
|
|
0, /*instruction_is_frsp*/
|
|
0, /*instruction_is_convert_to_64bit*/
|
|
0, /*instruction_is_convert_to_32bit*/
|
|
0); /*single-precision*/
|
|
+ product = tmp.d;
|
|
}
|
|
else {
|
|
/*HACK!*/
|
|
@@ -4280,12 +4294,14 @@
|
|
fpscr_vxsnan | fpscr_vximz,
|
|
1, /*single?*/
|
|
0) /*negate?*/) {
|
|
+ union { double d; unsigned64 u; } tmp;
|
|
invalid_arithemetic_operation(processor, cia,
|
|
- (unsigned64*)&product, *frA, 0, *frC,
|
|
+ &tmp.u, *frA, 0, *frC,
|
|
0, /*instruction_is_frsp*/
|
|
0, /*instruction_is_convert_to_64bit*/
|
|
0, /*instruction_is_convert_to_32bit*/
|
|
0); /*single-precision*/
|
|
+ product = tmp.d;
|
|
}
|
|
else {
|
|
/*HACK!*/
|