cyliax@dynamo.ecn.purdue.edu (Ingo Cyliax) (09/29/90)
Archive-name: minix-68552/28-Sep-90 Original-posting-by: cyliax@dynamo.ecn.purdue.edu (Ingo Cyliax) Original-subject: Minix on 68020/68852 (68030) Archive-site: dynamo.ecn.purdue.edu [128.46.129.1] Archive-directory: /pub/goo Reposted-by: emv@math.lsa.umich.edu (Edward Vielmetti) 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 */