107 |
|
#include "macos_util.h" |
108 |
|
#include "rom_patches.h" |
109 |
|
#include "user_strings.h" |
110 |
+ |
#include "vm_alloc.h" |
111 |
|
|
112 |
|
#define DEBUG 0 |
113 |
|
#include "debug.h" |
421 |
|
} |
422 |
|
|
423 |
|
// Create Low Memory area (0x0000..0x3000) |
424 |
< |
if (mmap((char *)0x0000, 0x3000, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_PRIVATE, zero_fd, 0) == (void *)-1) { |
424 |
> |
if (vm_acquire_fixed((char *)0, 0x3000) < 0) { |
425 |
|
sprintf(str, GetString(STR_LOW_MEM_MMAP_ERR), strerror(errno)); |
426 |
|
ErrorAlert(str); |
427 |
|
goto quit; |
451 |
|
D(bug("Kernel Data at %p, Emulator Data at %p\n", kernel_data, emulator_data)); |
452 |
|
|
453 |
|
// Create area for Mac ROM |
454 |
< |
if (mmap((char *)ROM_BASE, ROM_AREA_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_FIXED | MAP_PRIVATE, zero_fd, 0) == (void *)-1) { |
454 |
> |
if (vm_acquire_fixed((char *)ROM_BASE, ROM_AREA_SIZE) < 0) { |
455 |
|
sprintf(str, GetString(STR_ROM_MMAP_ERR), strerror(errno)); |
456 |
|
ErrorAlert(str); |
457 |
|
goto quit; |
458 |
|
} |
459 |
+ |
#if !EMULATED_PPC |
460 |
+ |
if (vm_protect((char *)ROM_BASE, ROM_AREA_SIZE, VM_PAGE_READ | VM_PAGE_WRITE | VM_PAGE_EXECUTE) < 0) { |
461 |
+ |
sprintf(str, GetString(STR_ROM_MMAP_ERR), strerror(errno)); |
462 |
+ |
ErrorAlert(str); |
463 |
+ |
goto quit; |
464 |
+ |
} |
465 |
+ |
#endif |
466 |
|
rom_area_mapped = true; |
467 |
|
D(bug("ROM area at %08x\n", ROM_BASE)); |
468 |
|
|
473 |
|
RAMSize = 8*1024*1024; |
474 |
|
} |
475 |
|
|
476 |
< |
mmap_RAMBase = mmap((void *)0x20000000, RAMSize, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_FIXED | MAP_PRIVATE, zero_fd, 0); |
477 |
< |
if (mmap_RAMBase == (void *)-1) { |
476 |
> |
mmap_RAMBase = (void *)0x20000000; |
477 |
> |
if (vm_acquire_fixed(mmap_RAMBase, RAMSize) < 0) { |
478 |
|
sprintf(str, GetString(STR_RAM_MMAP_ERR), strerror(errno)); |
479 |
|
ErrorAlert(str); |
480 |
|
goto quit; |
481 |
|
} |
482 |
+ |
#if !EMULATED_PPC |
483 |
+ |
if (vm_protect(mmap_RAMBase, RAMSize, VM_PAGE_READ | VM_PAGE_WRITE | VM_PAGE_EXECUTE) < 0) { |
484 |
+ |
sprintf(str, GetString(STR_RAM_MMAP_ERR), strerror(errno)); |
485 |
+ |
ErrorAlert(str); |
486 |
+ |
goto quit; |
487 |
+ |
} |
488 |
+ |
#endif |
489 |
|
RAMBase = (uint32)mmap_RAMBase; |
490 |
|
ram_area_mapped = true; |
491 |
|
D(bug("RAM area at %08x\n", RAMBase)); |
582 |
|
#if !EMULATED_PPC |
583 |
|
MakeExecutable(0, (void *)ROM_BASE, ROM_AREA_SIZE); |
584 |
|
#endif |
585 |
< |
mprotect((char *)ROM_BASE, ROM_AREA_SIZE, PROT_EXEC | PROT_READ); |
585 |
> |
vm_protect((char *)ROM_BASE, ROM_AREA_SIZE, VM_PAGE_READ | VM_PAGE_EXECUTE); |
586 |
|
|
587 |
|
// Initialize Kernel Data |
588 |
|
memset(kernel_data, 0, sizeof(KernelData)); |
794 |
|
|
795 |
|
// Delete RAM area |
796 |
|
if (ram_area_mapped) |
797 |
< |
munmap(mmap_RAMBase, RAMSize); |
797 |
> |
vm_release(mmap_RAMBase, RAMSize); |
798 |
|
|
799 |
|
// Delete ROM area |
800 |
|
if (rom_area_mapped) |
801 |
< |
munmap((char *)ROM_BASE, ROM_AREA_SIZE); |
801 |
> |
vm_release((char *)ROM_BASE, ROM_AREA_SIZE); |
802 |
|
|
803 |
|
// Delete Kernel Data area |
804 |
|
if (kernel_area >= 0) { |