Assorted fixes, the Compaq Presario 7100 486 no longer crashes on CTRL+ALT+DEL.
This commit is contained in:
@@ -2994,10 +2994,12 @@ mem_init(void)
|
||||
}
|
||||
|
||||
static void
|
||||
umc_page_recalc(uint32_t c, int set)
|
||||
umc_page_recalc(uint32_t c, uint32_t phys, int set)
|
||||
{
|
||||
uint32_t target = set ? phys : c;
|
||||
|
||||
if (set) {
|
||||
pages[c].mem = &ram[(c & 0xff) << 12];
|
||||
pages[c].mem = &ram[(target & 0xff) << 12];
|
||||
pages[c].write_b = mem_write_ramb_page;
|
||||
pages[c].write_w = mem_write_ramw_page;
|
||||
pages[c].write_l = mem_write_raml_page;
|
||||
@@ -3010,8 +3012,8 @@ umc_page_recalc(uint32_t c, int set)
|
||||
|
||||
#ifdef USE_NEW_DYNAREC
|
||||
pages[c].evict_prev = EVICT_NOT_IN_LIST;
|
||||
pages[c].byte_dirty_mask = &byte_dirty_mask[(c & 0xff) * 64];
|
||||
pages[c].byte_code_present_mask = &byte_code_present_mask[(c & 0xff) * 64];
|
||||
pages[c].byte_dirty_mask = &byte_dirty_mask[(target & 0xff) * 64];
|
||||
pages[c].byte_code_present_mask = &byte_code_present_mask[(target & 0xff) * 64];
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -3019,7 +3021,7 @@ void
|
||||
umc_smram_recalc(uint32_t start, int set)
|
||||
{
|
||||
for (uint32_t c = start; c < (start + 0x0020); c++)
|
||||
umc_page_recalc(c, set);
|
||||
umc_page_recalc(c, c - start + 0x000a0000, set);
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@@ -59,9 +59,12 @@ smram_read(uint32_t addr, void *priv)
|
||||
const smram_t *dev = (smram_t *) priv;
|
||||
uint32_t new_addr = addr - dev->host_base + dev->ram_base;
|
||||
|
||||
#if (!(defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64))
|
||||
if (new_addr >= (1 << 30))
|
||||
return mem_read_ram_2gb(new_addr, priv);
|
||||
else if (!use_separate_smram || (new_addr >= 0xa0000))
|
||||
else
|
||||
#endif
|
||||
if (!use_separate_smram || (new_addr >= 0xa0000))
|
||||
return mem_read_ram(new_addr, priv);
|
||||
else
|
||||
return dev->mapping.exec[addr - dev->host_base];
|
||||
@@ -73,9 +76,12 @@ smram_readw(uint32_t addr, void *priv)
|
||||
smram_t *dev = (smram_t *) priv;
|
||||
uint32_t new_addr = addr - dev->host_base + dev->ram_base;
|
||||
|
||||
#if (!(defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64))
|
||||
if (new_addr >= (1 << 30))
|
||||
return mem_read_ram_2gbw(new_addr, priv);
|
||||
else if (!use_separate_smram || (new_addr >= 0xa0000))
|
||||
else
|
||||
#endif
|
||||
if (!use_separate_smram || (new_addr >= 0xa0000))
|
||||
return mem_read_ramw(new_addr, priv);
|
||||
else
|
||||
return *(uint16_t *) &(dev->mapping.exec[addr - dev->host_base]);
|
||||
@@ -87,9 +93,12 @@ smram_readl(uint32_t addr, void *priv)
|
||||
smram_t *dev = (smram_t *) priv;
|
||||
uint32_t new_addr = addr - dev->host_base + dev->ram_base;
|
||||
|
||||
#if (!(defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64))
|
||||
if (new_addr >= (1 << 30))
|
||||
return mem_read_ram_2gbl(new_addr, priv);
|
||||
else if (!use_separate_smram || (new_addr >= 0xa0000))
|
||||
else
|
||||
#endif
|
||||
if (!use_separate_smram || (new_addr >= 0xa0000))
|
||||
return mem_read_raml(new_addr, priv);
|
||||
else
|
||||
return *(uint32_t *) &(dev->mapping.exec[addr - dev->host_base]);
|
||||
|
||||
Reference in New Issue
Block a user