From 7ba6a512ae439c98c0c1f0f4348c079d90f9dd9d Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sun, 24 Apr 2016 15:55:29 -0700 Subject: [PATCH] translate-all: Adjust 256mb testing for mips64 Make sure we preserve the high 32-bits when masking for mips64. Signed-off-by: Richard Henderson --- translate-all.c | 4 ++-- 1 file 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;