diff options
author | Richard Henderson <rth@twiddle.net> | 2012-05-31 16:09:39 -0700 |
---|---|---|
committer | Richard Henderson <rth@twiddle.net> | 2012-08-04 09:37:48 -0700 |
commit | 76393642ae65a613bc8232379b4cd347fe69e08a (patch) | |
tree | e6b3572a9be8e4cc660f4d38ce2f18c741f8bc4c | |
parent | d0f204952a02a69bc853a1c274b2a5ee4acfd39f (diff) |
alpha-linux-user: Work around hosted mmap allocation problems
Signed-off-by: Richard Henderson <rth@twiddle.net>
-rw-r--r-- | target-alpha/cpu.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/target-alpha/cpu.h b/target-alpha/cpu.h index 99f9ee168d..5689760cef 100644 --- a/target-alpha/cpu.h +++ b/target-alpha/cpu.h @@ -40,9 +40,20 @@ #define TARGET_PAGE_BITS 13 +#ifdef CONFIG_USER_ONLY +/* ??? The kernel likes to give addresses in high memory. If the host has + more virtual address space than the guest, this can lead to impossible + allocations. Honor the long-standing assumption that only kernel addrs + are negative, but otherwise allow allocations anywhere. This could lead + to tricky emulation problems for programs doing tagged addressing, but + that's far fewer than encounter the impossible allocation problem. */ +#define TARGET_PHYS_ADDR_SPACE_BITS 63 +#define TARGET_VIRT_ADDR_SPACE_BITS 63 +#else /* ??? EV4 has 34 phys addr bits, EV5 has 40, EV6 has 44. */ -#define TARGET_PHYS_ADDR_SPACE_BITS 44 -#define TARGET_VIRT_ADDR_SPACE_BITS (30 + TARGET_PAGE_BITS) +#define TARGET_PHYS_ADDR_SPACE_BITS 44 +#define TARGET_VIRT_ADDR_SPACE_BITS (30 + TARGET_PAGE_BITS) +#endif /* Alpha major type */ enum { |