Port-m68k archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: New pmap module for m68k




> On Nov 9, 2025, at 10:34 AM, Romain Dolbeau <romain%dolbeau.org@localhost> wrote:
> 
> Le dim. 9 nov. 2025 à 19:18, Jason Thorpe <thorpej%me.com@localhost> a écrit :
>> (...) natively works with the 3-level table configuration of the 68040 while also natively working with he mandatory 2-level configuration imposed by the HP MMU found in the HP 9000/320 and 9000/350.
> 
> Out of curiosity: what does that mean for other MMUs ? Like the '030,
> or the Sun-style MMUs ? They stick with the current model ?

In the new module, the 68851-class (which includes the 68030) currently uses the same 2-level configuration as in the Hibler pmap.  This is mainly intended to provide test coverage for the 2-level code, because HP 9000/320 and 9000/350 machines are few and far between.  Eventually I intend to switch 68851-class MMUs to use a 68040-compable 3-level configuration (it’s slightly more memory efficient), leaving the HP MMU the only one using the 2-level (although this would be a trivial compile-time configuration option).

Sun-style MMUs not affected.  Sun2/Sun3 use their own pmap module.  Also not impacted is Sun3x, which is a 68030, but also has its own pmap module for historical reasons (and I’m not going to mess with it .. I’ll hassle Jeremy separately :-)

>> One of the reasons I wanted to do this is so that larger memory configs can be supported on 68040
> 
> Good news! and ...
> 
>> successfully booted NetBSD/virt68k multi-user with a 2G RAM configuration
> 
> ... excellent result. Congratulations! No reason for a virtual machine
> to not have as much memory as a 32-bits CPU can support.
> 
> Is the 2 GiB a hard limit of this new design (rather than the QEmu
> machine model), or would it be possible to go beyond that by using
> "tricks" on the physical side, such as using the UPA bit as additional
> address bits ? (The pins are driven by the bits in the MMU IIRC, so I
> think in theory they could be used to generate a 2^34 bytes physical
> address space, should that be potentially useful.)

No hard limit I know if, it’s just what I tried.  The Qemu virt68k machine does have some sort of limit, because the I/O devices are at the top of the physical address space.  Obviously can’t put RAM there.  The m68k port has a 32-bit physical address type, so the only way to get more space would be to use different m68k function codes (like the Sun3’s “control space”) and fiddle the %sfc and %dfc registers and use the instructions that access the spaces explicitly (which … yah, just no).

-- thorpej



Home | Main Index | Thread Index | Old Index