From: Alexander v. G. <kal...@un...> - 2012-07-18 12:20:34
|
Does anyone have any documentation on the memory layout of the old world Macintosh? (Performa 6400 era) I've been looking to rework how SheepShear manages memory and it's not completely clear to me how it does it's memory translation. Most of the bugs I've seen on x86_64 are due to the exact memory mapping on emulated powerpc systems (eg, hard coded memory addresses we *have* to map for things to function) and something getting mangled on x86_64. https://github.com/kallisti5/sheepshear/issues/15#issuecomment-7045089 I see memory maps for the really early Mac's, but am failing to find anything for the later old world machines online or in the old Macintosh service manuals. Here is what I know for a fact looking at the code: Low memory area, - 0x0 - 0x3000 (static 1:1 host:guest location) RAM, 0x0 - (memory size selected less then 1GB) ROM, 0x40800000 - 0x40C00000 (4MB mac rom) (static 1:1 host:guest location) Real addressing == "normal" allocation where memory locations are dynamic, and we translate addresses to match Direct addressing == memory is directly addressed, mostly used on native PowerPC? Nat_mem offset == ???, guessing it's for native PowerPC It looks given the code below that the Macintosh has to be patched to use the host memory addresses vs the emulator doing the memory translation (SheepShear acting as a mmu to the guest) https://github.com/kallisti5/sheepshear/blob/master/src/kpx_cpu/src/cpu/vm.hpp#L185 The reason I ask here is because these changes could be pulled upstream to SheepShaver. -- Thanks! Alex |