[comp.os.minix] Minix on 68020/68852

cyliax@dynamo.ecn.purdue.edu (Ingo Cyliax) (09/29/90)

Since there was so much demand for the 68020/68851 MMU patches for Minix,
I have installed them for ftp on "dynamo.ecn.purdue.edu" (128.46.129.1)
in the directory "pub/goo". Please limit access to non-business hours
(18:00-07:00 EST, EST == GMT-500). Maybe someone can make them available
in Europe as well.

There are two files of interest:
	pmmu.shar.Z		- just the '020,'851 patches, and *mpx.s
	upst2vme.shar.Z		- above patches and drivers to run Minix-ST
				  on a '020 VMEbus system.

Currently these are all relative to Minix-ST 1.1 (sorry), I'm working on
upgrading everything to 1.5 and will announce those patches when I have
them ready.

If you haven't figured it out by now, the 68852 is the memory management
unit for the 68020 and these patches/modules allow Minix to run on a
68020/68852 in protected as well as virtual memory (virtual addresses != 
physical addresses) mode. It doesn't, however, implement paging or real
virtual memory (virtual address limit > physical limit). The 68030 has
a MMU that is a subset of the 68852 on the processor chip itself. In 
addition, the 68010,68020 and the 68030 use an extended exception frame
format on the stack during exception processing, which will confuse the
the standard Minix-ST kernel. This version also has support for the
floating point coprocessor 68881/68882, although it hasn't been extensively
tested yet (it doesn't crash the kernel when installed). 

All the code that touches the MMU is in kernel/pmmu[s].[sch] and all the FPC
code is in kernel/fpp[s].[sch] in the archive. kernel/vmempx.s contains all
the interrupt/exception handlers as well as the calls to the routines to
handle context switches for the FPC and MMU. kernel/vmemain.c initializes
all the drivers and sets up all the segments for the task(s), all the kernel
processes (mm,fs,init) run in virtual/protected mode, whereas the system
task and the drivers tasks all run virtual == physical mode. This was
done so that the devices drivers and the system task have access to all
of physical memory and device registers. Also none of the kernel tasks
ever fork, so there is no reason to worry about shadowing. The reason 
the module names start with "vme", is _not_ because of "Virtual Memory",
but because it's a port to a VMEbus system.

The rest of the diffs just install the calls to routines in the modules
as well as turning off some of the shadow code that isn't needed.
It's probably not too hard to just install theses patches in Minix 1.5 
by hand if you can't wait.  All the MMU mods. are bracketed by "#ifdef PMMU"'s
and the FPC code by "#ifdef FPP"'s.  Some of the diffs are just to get the
stuff to compile under gcc.  Oh, you will need an assembler that can
handle 68852 or '030 MMU instructions to compile the *.s files.

BTW, for those of you that can't FTP, I will send out the pmmu.shar
patches (~60Kb) by E-Mail.

Enjoy, -ingo

--
/*                Ingo Cyliax    ECN, Electrical Engineering Bldg.         *
 *      cyliax@ecn.purdue.edu    Purdue University, W. Lafayette,IN 47907  *
 *          ing@cc.purdue.edu    Work: (317) 494-9523                      *
 *         cyliax@pur-ee.UUCP    Home: (317) 474-0031                      */