Message ID | 1270884363-5186-1-git-send-email-weil@mail.berlios.de |
---|---|
State | New |
Headers | show |
On Sat, Apr 10, 2010 at 09:26:03AM +0200, Stefan Weil wrote: > A 32 bit cross compilation of x86_64-linux-user raises this error: > > CC x86_64-linux-user/exec.o > cc1: warnings being treated as errors > exec.c: In function ‘page_init’: > exec.c:350: error: large integer implicitly truncated to unsigned type > > L1_MAP_ADDR_SPACE_BITS == 47, HOST_LONG_BITS == 32, > so the shift operation indeed is problematic. > I am not sure it is the real fix. I don't think there is a point of having L1_MAP_ADDR_SPACE_BITS > HOST_LONG_BITS, most probably it should be reduced to HOST_LONG_BITS if the latter is smaller, as done in system mode.
On 04/10/2010 12:26 AM, Stefan Weil wrote: > A 32 bit cross compilation of x86_64-linux-user raises this error: > } else { > #if TARGET_ABI_BITS<= L1_MAP_ADDR_SPACE_BITS > endaddr = ~0ul; > +#elif HOST_LONG_BITS<= L1_MAP_ADDR_SPACE_BITS > + endaddr = ULONG_MAX; > #else > endaddr = ((abi_ulong)1<< L1_MAP_ADDR_SPACE_BITS) - 1; > #endif You ought to merge those two ifs. I.e. #if TARGET_ABI_BITS <= L1_MAP_ADDR_SPACE_BITS \ || HOST_LONG_BITS<= L1_MAP_ADDR_SPACE_BITS r~
diff --git a/exec.c b/exec.c index a6d3bad..c80b7f7 100644 --- a/exec.c +++ b/exec.c @@ -343,6 +343,8 @@ static void page_init(void) } else { #if TARGET_ABI_BITS <= L1_MAP_ADDR_SPACE_BITS endaddr = ~0ul; +#elif HOST_LONG_BITS <= L1_MAP_ADDR_SPACE_BITS + endaddr = ULONG_MAX; #else endaddr = ((abi_ulong)1 << L1_MAP_ADDR_SPACE_BITS) - 1; #endif
A 32 bit cross compilation of x86_64-linux-user raises this error: CC x86_64-linux-user/exec.o cc1: warnings being treated as errors exec.c: In function ‘page_init’: exec.c:350: error: large integer implicitly truncated to unsigned type L1_MAP_ADDR_SPACE_BITS == 47, HOST_LONG_BITS == 32, so the shift operation indeed is problematic. Limit endaddr to ULONG_MAX in this case. Cc: Richard Henderson <rth@twiddle.net> Cc: Aurelien Jarno <aurelien@aurel32.net> Cc: Juergen Lock <nox@jelal.kn-bremen.de> Signed-off-by: Stefan Weil <weil@mail.berlios.de> --- exec.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)