Port-m68k archive

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

Re: New pmap module for m68k



thorpej@ wrote:

> In the evenings over the last couple of weeks I've been working on a new pmap module
> for the m68k ports.  The intention is to address the fundamental limitations of the
> classical Hibler pmap (pmap_motorola.c) with regard to the 68040.  The new module
> has a completely different page table management strategy and 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.

Great news in 2025! (as a person who cleaned up each MD pmap_bootstrap.c to support
both 8KB/4KB settings per PGSHIFT settings..)

> Some work will be required to integrate this with other m68k ports, pmap_bootstrap1()
> specifically needs to gain some additional capabilities to make it per-platform
> adaptable (I do *not* want to end up with a separate copy per port).
> The Amiga and Atari ports are going to be a heavier lift because they're odd-ball
> in their early bootstrap compared to the others.

One question: do you have any idea how to enable MMU on ports VA!=PA, like
hp300 (as you know) and next68k (currently using TT0 mapping to handle it)?

It looks virt68k/locore.s still has the following comments:
```
/*
 * Enable the MMU.
 * Since the kernel is mapped logical == physical, we just turn it on.
 */
```
I guess a special page which is PA==VA (I have not checked details of pmap_68k.c yet).

I also wonder how "static I/O spaces (like INTIO on hp300)" should be mapped
(i.e. how MD stuff in current pmap_bootstrap.c should be handled),
but I guess this should be discussed in a separate thread..

> Definitely looking for help in this aspect, so drop me an email if you're interested
> in helping with the effort and have hardware (or a decently functioning emulator)
> that can be used for testing.

I can try (and hopefully help) the following machines here:

news68k: NWS-1750 (68030, PA==VA, using TT mappings, L2 PA cache)
hp300:   319C, 330 (68020/68851)
         320 (68020 HP MMU)
         (320 and 319C/330 requires "RAS instead of CAS" patch, maybe due to 16 bit bus RAMs)
          https://github.com/NetBSD/src/compare/trunk...tsutsui:netbsd-src:hp300-ras-instead-of-cas
         340, 360, 362, 370 (68030)
         380, 382, 425t (68040)
         (PA!=VA on all machines)
mac68k:  LC630 (MC68LC040, PA==VA?)
atari:   TT030 (68030, PA==VA and PA!=VA in case of "kernel relocation" during bootstrap)
         Milan (68040, PA==VA)
x68k:    X68030 (68030, PA==VA) (pkgsrc/emulators/nono will also help)
luna68k: LUNA (68030, PA==VA, using TT mappings) (also works on nono)
         LUNA-II (68040, PA==VA, using TT mappings)
next68k: NeXT stations (68040, PA!=VA IIRC)

---
Izumi Tsutsui


Home | Main Index | Thread Index | Old Index