On 07/08/2016 04:36 PM, Eduardo Habkost wrote:
-#elif defined(TARGET_X86_64)
-#define TARGET_PHYS_ADDR_SPACE_BITS 42
-#elif defined(TARGET_I386)
-#define TARGET_PHYS_ADDR_SPACE_BITS 36
[...]
--- a/target-i386/cpu.h
+++ b/target-i386/cpu.h
[...]
+#ifdef TARGET_X86_64
+#define TARGET_PHYS_ADDR_SPACE_BITS 52
+/* ??? This is really 48 bits, sign-extended, but the only thing
+ accessible to userland with bit 48 set is the VSYSCALL, and that
+ is handled via other mechanisms. */
+#define TARGET_VIRT_ADDR_SPACE_BITS 47
+#else
+#define TARGET_PHYS_ADDR_SPACE_BITS 36
+#define TARGET_VIRT_ADDR_SPACE_BITS 32
+#endif
+
But I really don't understand why it was changed to 52 when the
macros were moved. A (fortunate) typo?
It was 6 years ago, but I assume that I looked up 52 as a theoretical maximum.
I'm not going to look it up again to verify though.
r~