ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/SheepShaver/src/Unix/main_unix.cpp
(Generate patch)

Comparing SheepShaver/src/Unix/main_unix.cpp (file contents):
Revision 1.74 by gbeauche, 2006-05-01T22:33:34Z vs.
Revision 1.75 by gbeauche, 2006-05-06T10:42:51Z

# Line 369 | Line 369 | int main(int argc, char **argv)
369          uint32 rom_size, actual;
370          uint8 *rom_tmp;
371          time_t now, expire;
372 +        bool memory_mapped_from_zero;
373  
374          // Initialize variables
375          RAMBase = 0;
# Line 743 | Line 744 | int main(int argc, char **argv)
744                  goto quit;
745          }
746  
746 #ifndef PAGEZERO_HACK
747        // Create Low Memory area (0x0000..0x3000)
748        if (vm_mac_acquire(0, 0x3000) < 0) {
749                sprintf(str, GetString(STR_LOW_MEM_MMAP_ERR), strerror(errno));
750                ErrorAlert(str);
751                goto quit;
752        }
753        lm_area_mapped = true;
754 #endif
755
747          // Create areas for Kernel Data
748          if (!kernel_data_init())
749                  goto quit;
# Line 815 | Line 806 | int main(int argc, char **argv)
806                  WarningAlert(GetString(STR_SMALL_RAM_WARN));
807                  RAMSize = 8*1024*1024;
808          }
809 <
810 <        if (vm_mac_acquire(RAM_BASE, RAMSize) < 0) {
811 <                sprintf(str, GetString(STR_RAM_MMAP_ERR), strerror(errno));
812 <                ErrorAlert(str);
813 <                goto quit;
809 >        memory_mapped_from_zero = false;
810 > #if REAL_ADDRESSING && HAVE_LINKER_SCRIPT
811 >        if (vm_mac_acquire(0, RAMSize) == 0) {
812 >                D(bug("Could allocate RAM from 0x0000\n"));
813 >                RAMBase = 0;
814 >                memory_mapped_from_zero = true;
815 >        }
816 > #endif
817 >        if (!memory_mapped_from_zero) {
818 > #ifndef PAGEZERO_HACK
819 >                // Create Low Memory area (0x0000..0x3000)
820 >                if (vm_mac_acquire(0, 0x3000) < 0) {
821 >                        sprintf(str, GetString(STR_LOW_MEM_MMAP_ERR), strerror(errno));
822 >                        ErrorAlert(str);
823 >                        goto quit;
824 >                }
825 >                lm_area_mapped = true;
826 > #endif
827 >                if (vm_mac_acquire(RAM_BASE, RAMSize) < 0) {
828 >                        sprintf(str, GetString(STR_RAM_MMAP_ERR), strerror(errno));
829 >                        ErrorAlert(str);
830 >                        goto quit;
831 >                }
832 >                RAMBase = RAM_BASE;
833          }
834 <        RAMBaseHost = Mac2HostAddr(RAM_BASE);
834 >        RAMBaseHost = Mac2HostAddr(RAMBase);
835   #if !EMULATED_PPC
836          if (vm_protect(RAMBaseHost, RAMSize, VM_PAGE_READ | VM_PAGE_WRITE | VM_PAGE_EXECUTE) < 0) {
837                  sprintf(str, GetString(STR_RAM_MMAP_ERR), strerror(errno));
# Line 829 | Line 839 | int main(int argc, char **argv)
839                  goto quit;
840          }
841   #endif
832        RAMBase = RAM_BASE;
842          ram_area_mapped = true;
843          D(bug("RAM area at %p (%08x)\n", RAMBaseHost, RAMBase));
844  
# Line 985 | Line 994 | static void Quit(void)
994  
995          // Delete RAM area
996          if (ram_area_mapped)
997 <                vm_mac_release(RAM_BASE, RAMSize);
997 >                vm_mac_release(RAMBase, RAMSize);
998  
999          // Delete ROM area
1000          if (rom_area_mapped)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines