qemu_put signedness fixes, by Andre Przywara.
[qemu] / target-alpha / op.c
index 529a66d..da93e7c 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "config.h"
 #include "exec.h"
+#include "host-utils.h"
 
 #include "op_helper.h"
 
@@ -140,11 +141,15 @@ void OPPROTO op_tb_flush (void)
 #define MEMSUFFIX _raw
 #include "op_mem.h"
 #if !defined(CONFIG_USER_ONLY)
-#define MEMSUFFIX _user
-#include "op_mem.h"
 #define MEMSUFFIX _kernel
 #include "op_mem.h"
-/* Those are used for supervisor, executive and pal modes */
+#define MEMSUFFIX _executive
+#include "op_mem.h"
+#define MEMSUFFIX _supervisor
+#include "op_mem.h"
+#define MEMSUFFIX _user
+#include "op_mem.h"
+/* This is used for pal modes */
 #define MEMSUFFIX _data
 #include "op_mem.h"
 #endif
@@ -291,7 +296,7 @@ void OPPROTO op_mullv (void)
 
 void OPPROTO op_mulq (void)
 {
-    T0 *= T1;
+    T0 = (int64_t)T0 * (int64_t)T1;
     RETURN();
 }
 
@@ -303,7 +308,10 @@ void OPPROTO op_mulqv (void)
 
 void OPPROTO op_umulh (void)
 {
-    helper_umulh();
+    uint64_t tl, th;
+
+    mulu64(&tl, &th, T0, T1);
+    T0 = th;
     RETURN();
 }