Index: exec.c =================================================================== --- exec.c (revision 5391) +++ exec.c (working copy) @@ -2068,12 +2068,13 @@ target_ulong end; target_ulong addr; + if( start + len < start ) + /* we've wrapped around */ + return -1; + end = TARGET_PAGE_ALIGN(start+len); /* must do before we loose bits in the next step */ start = start & TARGET_PAGE_MASK; - if( end < start ) - /* we've wrapped around */ - return -1; for(addr = start; addr < end; addr += TARGET_PAGE_SIZE) { p = page_find(addr >> TARGET_PAGE_BITS); if( !p )