summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2016-04-24 15:55:29 -0700
committerRichard Henderson <rth@twiddle.net>2016-05-12 14:06:41 -1000
commit7ba6a512ae439c98c0c1f0f4348c079d90f9dd9d (patch)
tree606b210888452446eb3d87cf56b48133f9bae4a7
parent8bdf4997823126a39bd4c99e4b2283b02cc7865f (diff)
downloadfocaccia-qemu-7ba6a512ae439c98c0c1f0f4348c079d90f9dd9d.tar.gz
focaccia-qemu-7ba6a512ae439c98c0c1f0f4348c079d90f9dd9d.zip
translate-all: Adjust 256mb testing for mips64
Make sure we preserve the high 32-bits when masking for mips64.

Signed-off-by: Richard Henderson <rth@twiddle.net>
Diffstat (limited to '')
-rw-r--r--translate-all.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/translate-all.c b/translate-all.c
index 93b91ba5e7..79a515dde7 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -515,7 +515,7 @@ static inline size_t size_code_gen_buffer(size_t tb_size)
    that the buffer not cross a 256MB boundary.  */
 static inline bool cross_256mb(void *addr, size_t size)
 {
-    return ((uintptr_t)addr ^ ((uintptr_t)addr + size)) & 0xf0000000;
+    return ((uintptr_t)addr ^ ((uintptr_t)addr + size)) & ~0x0ffffffful;
 }
 
 /* We weren't able to allocate a buffer without crossing that boundary,
@@ -523,7 +523,7 @@ static inline bool cross_256mb(void *addr, size_t size)
    Returns the new base of the buffer, and adjusts code_gen_buffer_size.  */
 static inline void *split_cross_256mb(void *buf1, size_t size1)
 {
-    void *buf2 = (void *)(((uintptr_t)buf1 + size1) & 0xf0000000);
+    void *buf2 = (void *)(((uintptr_t)buf1 + size1) & ~0x0ffffffful);
     size_t size2 = buf1 + size1 - buf2;
 
     size1 = buf2 - buf1;