The primary issue is that of overflow, where "end" for the last page of the 32-bit address space overflows to 0. The fix is to use "last" instead, which can always be represented.
Changes for v2: * Leave -R 0 unchanged; whether it's currently broken, or unusable by design is unchanged by this patch set. * Drop reserved_va -> max_reserved_va name change; it doesn't really make sense. Require review: 01-linux-user-Diagnose-misaligned-R-size.patch 03-include-exec-Replace-reserved_va-with-max_reserve.patch 08-accel-tcg-Pass-last-not-end-to-tb_invalidate_phys.patch r~ Richard Henderson (9): linux-user: Diagnose misaligned -R size linux-user: Rename max_reserved_va in main include/exec: Replace reserved_va with max_reserved_va accel/tcg: Pass last not end to page_set_flags accel/tcg: Pass last not end to page_reset_target_data accel/tcg: Pass last not end to PAGE_FOR_EACH_TB accel/tcg: Pass last not end to page_collection_lock accel/tcg: Pass last not end to tb_invalidate_phys_page_range__locked accel/tcg: Pass last not end to tb_invalidate_phys_range include/exec/cpu-all.h | 15 ++++-- include/exec/exec-all.h | 2 +- linux-user/arm/target_cpu.h | 2 +- accel/tcg/tb-maint.c | 95 +++++++++++++++++++------------------ accel/tcg/translate-all.c | 2 +- accel/tcg/user-exec.c | 25 +++++----- bsd-user/main.c | 10 ++-- bsd-user/mmap.c | 10 ++-- linux-user/elfload.c | 32 +++++++------ linux-user/main.c | 37 ++++++++------- linux-user/mmap.c | 22 ++++----- linux-user/syscall.c | 4 +- softmmu/physmem.c | 2 +- 13 files changed, 135 insertions(+), 123 deletions(-) -- 2.34.1