mirror of
https://github.com/kanjitalk755/macemu.git
synced 2024-07-26 09:28:56 +00:00
Always allocate RAM and ROM areas at the same time. This avoids having ROM
suddenly allocated below RAM and thus not working. Besides, this may fix a latent deallocation bug in real addressing mode (i.e. release the whole block allocated at once, not separately). Side effect: this makes Basilisk II work in direct addressing mode with JIT on Darwin 8.0.1 for x86.
This commit is contained in:
parent
334f9ce018
commit
957bee00cf
@ -567,12 +567,13 @@ int main(int argc, char **argv)
|
|||||||
// Speculatively enables 33-bit addressing
|
// Speculatively enables 33-bit addressing
|
||||||
ThirtyThreeBitAddressing = true;
|
ThirtyThreeBitAddressing = true;
|
||||||
#endif
|
#endif
|
||||||
RAMBaseHost = (uint8 *)vm_acquire_mac(RAMSize);
|
uint8 *ram_rom_area = (uint8 *)vm_acquire_mac(RAMSize + 0x100000);
|
||||||
ROMBaseHost = (uint8 *)vm_acquire_mac(0x100000);
|
if (ram_rom_area == VM_MAP_FAILED) {
|
||||||
if (RAMBaseHost == VM_MAP_FAILED || ROMBaseHost == VM_MAP_FAILED) {
|
|
||||||
ErrorAlert(STR_NO_MEM_ERR);
|
ErrorAlert(STR_NO_MEM_ERR);
|
||||||
QuitEmulator();
|
QuitEmulator();
|
||||||
}
|
}
|
||||||
|
RAMBaseHost = ram_rom_area;
|
||||||
|
ROMBaseHost = RAMBaseHost + RAMSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if USE_SCRATCHMEM_SUBTERFUGE
|
#if USE_SCRATCHMEM_SUBTERFUGE
|
||||||
@ -850,11 +851,8 @@ void QuitEmulator(void)
|
|||||||
|
|
||||||
// Free ROM/RAM areas
|
// Free ROM/RAM areas
|
||||||
if (RAMBaseHost != VM_MAP_FAILED) {
|
if (RAMBaseHost != VM_MAP_FAILED) {
|
||||||
vm_release(RAMBaseHost, RAMSize);
|
vm_release(RAMBaseHost, RAMSize + 0x100000);
|
||||||
RAMBaseHost = NULL;
|
RAMBaseHost = NULL;
|
||||||
}
|
|
||||||
if (ROMBaseHost != VM_MAP_FAILED) {
|
|
||||||
vm_release(ROMBaseHost, 0x100000);
|
|
||||||
ROMBaseHost = NULL;
|
ROMBaseHost = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user