[TUHS] Mach 2.5 / MK35 booting on i386 (was CMU Mach sources?)

Jason Stevens jsteve at superglobalmegacorp.com
Tue Jul 2 03:40:23 AEST 2019


As promised here is the diff & misc info on the build.  I installed the Mt Xinu disks to create a build environment and uucp’d the sources from CD#4 of Kirks’ CSRG set (/local/MACH/386/sys).

Grepping the source reveals it to be MK35.  Which makes sense from the release notes as this was an i386 only release:

------8<------8<------8<------8<
   ***** MK Version MK35  (rvb) *****


This is an I386 architecture release only.  It has been tested
on an AT as well as the hypercube.

No New features:
--- --------

Except possibly that the if_pc586.c is not timing dependent
any more.

The big deal about this release is that all the files in the
i386at directory and the files in Mach2.5 I386q are identical --
that is all improvements in the mainline have been merged to
the 3.0 code and vice versa.  NOTE:  the 3.0 com driver has
not been tested cause I did not have any hardware.  Also I
have lpr and if_par drivers that I did not even install for
the same reason.  (I needed to install com.c for the mouse
support code.)

ALSO, this release has the Prime copyrights changed to something
less threatening, courtesy of Prime Computer Inc.

Bug fix:
The panic that rfr reported with the ram_to_ptr is no longer
possible.
------8<------8<------8<------8<



For people who like DMESG’s here it is:
------8<------8<------8<------8<

boot:
442336+46792+115216[+38940+39072]


Insert file system

Sÿ boot: memory from 0x1000 to 0x7d0000
Kernel virtual space from 0xc0000000 to 0xc25d0000.
Available physical space from 0xa000 to 0x7d0000
i386_init: virtual_avail = c07d0000, virtual_end = c25d0000
end c01938d8, sym c01938dc(981c) str = c019d0f8(98a4)
[ preserving 78016 bytes of symbol table ]
Mach/4.3 #5.1(I386x): Wed Jan 20 00:45:55 WET 1988; obj/STD+WS-afs-nfs (localhost)
physical memory = 7.81 megabytes.  vm_page_free_count = 689
using 200 buffers containing 0.78 megabytes of memory
available memory = 5.55 megabytes. vm_page_free_count = 58e
fdc0: port = 3f2, spl = 5, pic = 6.
fd0:  port = 3f2, spl = 5, pic = 6. (controller 0, slave 0)
fd1:  port = 3f2, spl = 5, pic = 6. (controller 0, slave 1)
com0: port = 3f8, spl = 6, pic = 4. (DOS COM1)
lpr0: port = 378, spl = 6, pic = 7.
par0: port = 378, spl = 6, pic = 7.
root on `­b
------8<------8<------8<------8<

The diff from the CD is as follows:

------8<------8<------8<------8<
jsteve at 2006macpro:/mnt/c/temp/csrg$ diff -ruN sys mach25-i386
diff -ruN sys/Makeconf mach25-i386/Makeconf
--- sys/Makeconf        1970-01-01 08:00:00.000000000 +0800
+++ mach25-i386/Makeconf        2019-06-24 15:24:49.000000000 +0800
@@ -0,0 +1,102 @@
+#
+# Mach Operating System
+# Copyright (c) 1989 Carnegie-Mellon University
+# All rights reserved.  The CMU software License Agreement specifies
+# the terms and conditions for use and redistribution.
+#
+#
+# HISTORY
+# $Log:        Makeconf,v $
+# Revision 2.16  91/09/25  18:51:17  mja
+#      Fix VAX_CONFIG so that processor number component is last (for
+#      SUP wild-carding to work);  make MMAX_CONFIG consistent with
+#      other platforms as STD+ANY+EXP+64.
+#      [91/09/25  18:41:59  mja]
+#
+# Revision 2.15  91/09/24  20:07:07  mja
+#      Require new ${KERNEL_SERIES} macro in place of old ${RELEASE}
+#      even to specify the "latest" series;  add temporary
+#      ${ENVIRON_BASE};  add silent include of Makeconf-local.
+#      [91/09/22  03:16:36  mja]
+#
+#      Add SITE;  set SOURCEDIR to MASTERSOURCEDIR if present (for build).
+#      [91/09/21  18:06:08  mja]
+#
+# Revision 2.14  91/08/30  09:37:19  berman
+#      Set up default config for MMAX which is STD+MP (multiprocessor)
+#      [91/07/30  12:19:40  ern]
+#
+# Revision 2.13  91/04/02  16:04:53  mbj
+#      Added {I,AT}386_CONFIG=STD+WS+EXP lines.
+#      Changed ${MACHINE} references to ${TARGET_MACHINE}.
+#
+# Revision 2.12  90/08/30  12:24:52  bohman
+#      Changes for mac2.
+#      [90/08/28            bohman]
+#
+# Revision 2.11  89/09/25  22:43:32  mja
+#      Correct mis-merged OBJECTDIR.
+#
+# Revision 2.10  89/09/25  22:20:03  mja
+#      Use SOURCEDIR instead of VPATH for shadowing.  This means we
+#      can do away with the SRCSUFFIX stuff which "make" does by
+#      itself, and that Makefiles can use VPATH themselves.  I also
+#      "simplified" the definition of CONFIG and "release_...".
+#      [89/07/06            bww]
+#
+# Revision 2.9  89/08/08  21:44:58  jsb
+#      Defined PMAX_CONFIG.
+#      [89/08/03            rvb]
+#
+# Revision 2.8  89/07/12  23:02:52  jjc
+#      Defined SUN4_CONFIG.
+#      [89/07/12  23:01:03  jjc]
+#
+# Revision 2.7  89/04/10  00:34:59  rpd
+#      Changed OBJECTDIR name to correspond to new organization.
+#      [89/04/06            mrt]
+#
+# Revision 2.6  89/02/25  14:12:18  gm0w
+#      Changes for cleanup.
+#
+# Revision 2.5  89/02/25  14:08:30  gm0w
+#      Changes for cleanup.
+#
+# Revision 2.4  88/11/14  15:04:01  gm0w
+#      Changed the standard configurations to correspond
+#      to the new names.
+#      [88/11/02  15:45:44  mrt]
+#
+# Revision 2.3  88/09/07  15:44:43  rpd
+#      Moved CONFIG macros here from Makefile, so that the user
+#      can easily customize them by modifying Makeconf.
+#      [88/09/07  01:52:32  rpd]
+#
+# Revision 2.2  88/07/15  15:11:46  mja
+# Created.
+#
+
+VAX_CONFIG     = STD+ANY+EXP+16
+mac2_CONFIG    = MACMACH-macos_emul
+I386_CONFIG    = STD+WS+EXP
+AT386_CONFIG   = STD+WS+EXP
+MMAX_CONFIG    = STD+ANY+EXP+64
+
+#CONFIG        = ${${TARGET_MACHINE}_CONFIG?${${TARGET_MACHINE}_CONFIG}:STD+ANY+EXP}
+#CONFIG        = STD+WS+EXP-afs-nfs
+CONFIG = STD+WS-afs-nfs
+
+SITE   = CMUCS
+
+SOURCEDIR      = ${MASTERSOURCEDIR?${MASTERSOURCEDIR}:${SRCBASE}}
+
+#OBJECTDIR     = ../../../obj/@sys/kernel/${KERNEL_SERIES}
+OBJECTDIR      = ./obj
+
+#  XXX until build is fixed to set these  XXX
+ENVIRON_BASE   = ${RELEASE_BASE}
+
+.EXPORT: ENVIRON_BASE
+
+#  Provide for private customizations in a shadow directory
+-include Makeconf-local
diff -ruN sys/Makefile mach25-i386/Makefile
--- sys/Makefile        2016-08-08 14:37:11.000000000 +0800
+++ mach25-i386/Makefile        2019-06-24 15:24:49.000000000 +0800
@@ -206,6 +206,12 @@
 at386_cpu=i386
 sun4_cpu=sun4
 cpu=$(${machine}_cpu)
+#echo "CPU IS $cpu"
+AT386_cpu=i386
+I386_cpu=i386
+cpu=${${TARGET_MACHINE}_cpu?${${TARGET_MACHINE}_cpu}:${target_machine}}
+#echo "CPU IS $cpu"
+

 VAX_OUTPUT=Makefile
 SUN_OUTPUT=Makefile
diff -ruN sys/conf/newvers.sh mach25-i386/conf/newvers.sh
--- sys/conf/newvers.sh 2016-08-08 14:37:11.000000000 +0800
+++ mach25-i386/conf/newvers.sh 2019-06-24 15:25:15.000000000 +0800
@@ -56,8 +56,17 @@
 v="${major}.${minor}(${variant}${edit}${patch})" d=`pwd` h=`hostname` t=`date`
 CONFIG=`cat vers.config`
 if [ -z "$d" -o -z "$h" -o -z "$t" -o -z "${CONFIG}" ]; then
-    exit 1
+#    exit 1
+edit="386"
+major=5
+minor=1
+variant="I"
+patch="x"
+copyright="/copyright.txt"
+v="${major}.${minor}(${variant}${edit}${patch})" d=`pwd` h=`hostname` t=`date`
 fi
+#
+
 d=`expr "$d" : '.*/\([^/]*\)/[^/]*$'`/${CONFIG}
 (
   /bin/echo "int  version_major      = ${major};" ;
diff -ruN sys/i386/start.s mach25-i386/i386/start.s
--- sys/i386/start.s    2016-08-08 14:37:11.000000000 +0800
+++ mach25-i386/i386/start.s    2019-07-01 23:47:25.208021800 +0800
@@ -210,13 +210,14 @@

        lgdt    (%eax)

+       / flip cr3 before you flip cr0
+       mov     %edx, %cr3
+
        / turn PG on
        mov     %cr0, %eax
        or      $PAGEBIT, %eax
        mov     %eax, %cr0

-       mov     %edx, %cr3
-
        ljmp    $KTSSSEL, $0x0

 / *********************************************************************
diff -ruN sys/standi386at/boot/disk.c mach25-i386/standi386at/boot/disk.c
--- sys/standi386at/boot/disk.c 2016-08-08 14:37:11.000000000 +0800
+++ mach25-i386/standi386at/boot/disk.c 2019-07-01 23:51:11.261850100 +0800
@@ -340,11 +340,11 @@

 #ifndef        FIND_PART
        *rel_off = vp->part[part].p_start;
-       if (vp->part[part].p_tag != V_ROOT)
+       if (vp->part[part].p_flag != V_ROOT)
                printf("warning... partition %d not root\n", part);
 #else
        for (i = 0; i < vp->nparts; i++)
-               if (vp->part[i].p_tag == V_ROOT)
+               if (vp->part[i].p_flag == V_ROOT)
                        break;

        if (i == vp->nparts) {
------8<------8<------8<------8<
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://minnie.tuhs.org/pipermail/tuhs/attachments/20190702/131c105b/attachment.html>


More information about the TUHS mailing list