From 9553559019370e4c86a54f34ca5eb4c2d24b02e8 Mon Sep 17 00:00:00 2001 From: OBattler Date: Tue, 24 Mar 2020 02:32:55 +0100 Subject: [PATCH] For 486 and later, the emulator now allocates enough page array elements for the entire 4 GB of memory space. --- src/mem.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/mem.c b/src/mem.c index 5e01127c0..114bca468 100644 --- a/src/mem.c +++ b/src/mem.c @@ -1976,11 +1976,17 @@ mem_reset(void) m = 4096; } else { /* 80386+; maximum address space is 4GB. */ - m = (mem_size + 384) >> 2; - if ((m << 2) < (mem_size + 384)) - m++; - if (m < 4096) - m = 4096; + if (is486) { + /* We need this since there might be BIOS execution at the end of RAM, + which could break the recompiler if there's not enough page elements. */ + m = 1048576; + } else { + m = (mem_size + 384) >> 2; + if ((m << 2) < (mem_size + 384)) + m++; + if (m < 4096) + m = 4096; + } } } else { /* 8088/86; maximum address space is 1MB. */