[MIPS] Fix cpu_mips_translate_address return value
The cleanups in a2c14f947951612b45024095afd2210aa7368773 fixed a bug
in the error handling path of do_translate_address(). In turn this
exposed a bug in cpu_mips_translate_address() which was always
returning an error that do_translate_address() had ignored.
The cleanup change to do_translate_address() was reverted in
28a24c94e7350a80d5e7e186289cde6a1300bdfb, but fixing
cpu_mips_translate_address() is the correct thing to do.
Change-Id: I442d71130b758fdbe8e864dcba0ba3141b0fe225
diff --git a/target-mips/helper.c b/target-mips/helper.c
index 94cd742..d4e3083 100644
--- a/target-mips/helper.c
+++ b/target-mips/helper.c
@@ -497,7 +497,7 @@
access_type = ACCESS_INT;
ret = get_physical_address(env, &physical, &prot,
address, rw, access_type);
- if (ret != TLBRET_MATCH || ret != TLBRET_DIRTY) {
+ if (ret != TLBRET_MATCH && ret != TLBRET_DIRTY) {
raise_mmu_exception(env, address, rw, ret);
return -1LL;
} else {
diff --git a/target-mips/op_helper.c b/target-mips/op_helper.c
index cadc2e8..780ad7b 100644
--- a/target-mips/op_helper.c
+++ b/target-mips/op_helper.c
@@ -283,7 +283,7 @@
lladdr = cpu_mips_translate_address(env, address, rw);
- if (lladdr == -1LL) {
+ if (lladdr == (hwaddr)-1LL) {
cpu_loop_exit(env);
} else {
return lladdr;