==========================================================================
   ***** MK Version MK43  (rpd) *****
    
    
New features:
--- --------

I revised the AST interface.  Now there is a machine-independent function,
ast_taken, which handles ASTs.  Also the idle thread will process
network ASTs.

I changed the network code to use ASTs to run packets through the packet
filters and send IPC messages.  The network thread only runs when
more message buffers must be allocated.  The network code now keeps
two queues of packets, for low and high priority packets.  If it runs
out of free buffers, it will recycle packets in the low-priority queue.
The network drivers currently mark broadcast packets as low priority.
These changes greatly reduce the number of dropped high-priority packets
and the amount of memory consumed by packet buffers.

More paths through the kernel use explicit continuations now.
I changed the scheduling state machine so that swapped threads
can live on the run queues.  Now the kernel uses explicit continuations for
	threads blocked in (user) message receive
	threads blocked in exceptions
	threads blocked in (user) page faults
	kernel threads (including the idle thread) blocking for more work
	preemptive scheduling
	thread_switch and friends
These cases account for >99% of all context-switches.

I changed the interface to machine-dependent context-switch functions.
The two main functions now are stack_handoff and switch_context.
These functions are also responsible for changing address spaces.
switch_context returns the previously running thread (instead of
calling thread_continue, like the old interface).  stack_handoff
accounts for >99% of all context-switches.

I changed how the IPC system caches message buffers.
Now it uses a per-processor cache, instead of a per-thread cache.
The per-processor cache uses less memory and has a better hit rate.

[PMAX,I386]	I pulled floating-point state out of the pcbs.
Now space for FP registers is only allocated for threads
which actually use FP.

[PMAX]	  I changed how the mips code handles the FP registers,
to remove FP overhead from the context-switch path.


Bug fixes:
--- -----

I fixed a bug ipc_entry_grow_table, which causes a panic when the default
pager tries to grow its table and there aren't enough free pages.
Now ipc_entry_grow_table uses a new function, kmem_realloc,
to grow large tables.  I also reorganized the kmem_alloc interface,
so that those functions have real return codes now.  kmem_alloc
allocates a new object and kmem_alloc_wired uses the kernel-object.
Both functions do not zero the new memory.

I fixed a page leak.  Copy-on-write faults left the original page
off the paging queues.  Related changes to vm_page_deactivate
and how vm_object_terminate and the pageout daemon interact.

I fixed the ioctl definitions for Ansi C.

I changed the default value of db_maxoff to 4K.

I fixed ddb to catch exceptions that occur in ddb commands.
Typos in arguments to "show foo" are no longer fatal.

I fixed the default pager's initialization of pager structures.

I fixed memory_object_data_provided to only return success
when it consumes its copy object, so erroneous data-provided's
don't crash the kernel.

I fixed vm_fault_page to give vm_pageout_page busy pages.

I fixed kmem_alloc and friends to not hold object locks across pmap_enter.

Fix for vm_map_entry_delete's use of vm_object_page_remove from dlb.

Fix for vm_map_fork/VM_INHERIT_COPY of wired entries from dlb.

Fix for boot_printf from sumitomo.

Fix for read_emulator_symbols (to not panic if there is no emulator) from jsb.

[SUN3]	  I fixed the pmap module to initialize new pmaps correctly.

[SUN3]	  I fixed locore to not leave thread->recover set across system calls.

[PMAX]	  I picked up a couple more spl/interrupt-race fixes from af.

[PMAX]	  I fixed switch_context and call_continuation
so stack traces in ddb terminate correctly.

[I386]	  I fixed several floating-point bugs.
Now multiple threads can use FP without stepping on each other.

[I386]	  Fixed kdb_trap to disable interrupts and skip permanent breakpoints.

[I386]	  I fixed switch_context and call_continuation
so stack traces in ddb terminate correctly.


Organizational changes:
-------------- -------

device/tape_status.h is exported to the release directory now.

I changed the definition of REG_EXP, to make it .* on all platforms.
If you have an old make, you may need to override this definition
with REG_EXP=\* on your make command line.  I also fixed the
Makeconf created in the build directory to define REG_EXP,
so builds initiated in the build directory work.

Special notes:
------- -----

I only tested briefly on the Vax and Sun 3.

==========================================================================
   ***** MK Version MK44  (dbg) *****
    
    
New features:
--- --------

The kernel now runs on at least two multiprocessors: the Sequent (i386),
and R2D2 (Vax 8200).  The machine-independent portions of the kernel
should now be OK for multiprocessor work.

CPU_SUBTYPE_SYMMETRY is now defined.

[I386]	We now support the Sequent Symmetry i386 multiprocessor.  To build
	for the Sequent, specify "CONFIG=STD+SQT+32".  The config program
	now assumes that "MACHINE sqt" is a Symmetry: it uses the conf/*.i386
	files, not the (non-existent) conf/*.sqt files.

[VAX]	The Vax kernel can now be built with GCC: add '+gcc' to the
	configuration name.  However, getting a proper GCC for the VAX
	was difficult, since the GCC in the .gnu-comp collection does not
	talk correctly to CMU Make.
	
	To get the proper GCC compiler, you must set up your environment
	as follows:

 setpath -i0 /afs/cs/project/mach-7/release/vax_mach/latest;
 setenv GCC_EXEC_PREFIX /afs/cs/project/mach-7/release/vax_mach/latest/lib/gcc-
	(because GCC doesn't really look down LPATH for the compiler pieces).

	And the VAX assembler code is still built with the BSD assembler,
	because there are too many bugs in GAS.

	The VAX now uses Rich Draves' stack switching code.  This leaves only
	the SUN3 (soon to be decommissioned?) and the i860 defining
	KEEP_STACKS.

	(vm/vm_object.c tripped over a VAX GCC bug; I had to partially
	 rewrite one routine as a result.  vm_object_enter should be further
	 rewritten anyway to separate the internal and external cases, since
	 they have very little in common.)

Bug fixes:
--- -----

Network packets sent to multiple filters all have the correct packet size
(thanks, DPJ).

The control ports for all CPUs are now created when the system is started,
not when the CPU is started.  The old method gave the outside world no way
to talk to a CPU that hadn't been started yet.  The ports also remain when
the CPU is shut down.  (WARNING - the shutdown code doesn't work yet - it
will crash the system).

Volatile declarations have been added where needed.

Choose_pset_thread and its callers (thread_select) have been rewritten
to avoid confusing a pset with its runq (buggy C code).


[I386]	The floating-point code has been rewritten to always save the FPU
	state in memory on context switch.  It's slower, but there were
	two problems with the old method:
	1:	It's unknown what happens when the i386 switches
		mappings while the i387 has a store instruction
		(e.g. fbstp) in progress.  Where does the data go?
	2:	On a multiprocessor, we'd need interprocessor interrupts
		to fetch a thread's FP state from the CPU it last ran on.

	Exiting an interrupt routine correctly leaves processor interrupts
	disabled until the IRET instruction.
	
	The PMAP bug that would occasionally cause the machine to reboot
	has been fixed.  We now switch to the kernel's page directory
	at PMAP_DEACTIVATE, instead of leaving a dangling reference to
	a task page directory that may be about to vanish.

	The cthreads library now uses locking instructions to unlock locks.
	I'm not sure this is necessary for the Sequent, but it may be on
	other machines, depending on hwo they implement locking.

[VAX]	The ugly 'br' and 'cvec' global register variables have been moved
	to memory to accommodate GCC.
	
	The disassembler now correctly displays instructions using indexing.


Organizational changes:
-------------- -------

kern/lock.h now imports <machine/lock.h> when building for multiprocessors
(NCPUS > 1).  This is the place to put machine-specific definitions of
a simple_lock (e.g. for the HPPA), or GCC inline-assembler definitions of
simple_lock and simple_unlock.  The files exist for the VAX and I386.



[I386]	Files in the i386 directory are common to the various i386 machines:
	the PC-AT compatibles (i386at),
	the Intel Hypercube (i386ipsc),
	and the Sequent (sqt*).
	
	Code that differs from machine to machine has been moved to the
	machine-specific directories as much as possible.  This includes
	the assembly code to get bootup parameters (*/asm_startup.h),
	the C initialization and shutdown code (*/model_dep.c), and
	interrupt and SPL handling (*/interrupt.s, */spl.s).
	
	The i386 directory does contain code that is shared by the i386at
	and i386ipsc implementations.  This is interrupt-handling and timer
	code that runs on the Intel interrupt handler (8259) and timer (8254)
	chips that both of these machines use.  If (when?) I merge in support
	for the Corollary, it will also use these routines.

	Locore.s and friends are now built with normal Make rules.

	The 'makeboot' program is needed to fix the executable file for
	the Sequent, which uses a special magic number for kernel boot
	files.

[VAX]	Locore.s and friends are now built with normal Make rules.
	The initialization code in vax_init.c has been rewritten in assembler
	(vax_init.s).  It runs in physical mode, and tripped over GCC, which
	doesn't agree with PCC about what constructs generate PC-relative
	addresses (which would give physical addresses in this context) and
	which generate absolute addresses (which always give virtual addresses).

	The awk script for vaxfloat.sa has disappeared.  The file is now
	vaxfloat.s, and uses C preprocessor macros.

	When building with GCC, the inline program is no longer used.
	Various VAX header files now use the GCC inline assembler macros
	instead.  There is a global inline-substition file, vax/gcc_asm.h,
	which is included in every kernel file through some GCC tricks.


Special notes:
------- -----

The system should now be built and tested in the following configurations:

PMAX:	STD+ANY	(decstations)

I386:	STD+WS	(PC-compatible i386 boxes)
	STD+SQT+32	the Symmetry
	STD+NORMA+iPSC	the Intel Hypercube (NOT TESTED FOR THIS RELEASE)

VAX:	STD+VAX6bb+gcc	(microvaxen)
	STD+16+fixpri+VAX6bb+BI+de+gcc (R2D2)

SUN3:	STD+SWS

i860:	???
==========================================================================
   ***** MK Version MK45  (af) *****
    
    

Mostly fixes and extensions for PMAX (scsi driver & co).
CMU&CMUCS Cleanup rerun.

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

[PMAX]
SCSI driver much improved: does disconnect/reconnect, handles more device
types (tk50 and Exabyte tapes, CD-ROMS, many more disks including the HP 1Gb),
does automatic bad-block replacement, handles powering on/off devices
gracefully (3max only), watchdog to guard against bus lockups (hitachi),
many configuration options, extremely pipelined copy operations (esp
fast are WRITEs on 3max) and double-buffering which makes it much faster
than .. competitors :-)

Added new copy routine that speeds up aligned copy operations, used
by the SCSI driver and the pmap module.

Made modem control code optional, so that 3max can use serial lines without
contortions.

You can use the mouse with emacs with the console terminal emulator.


Bug fixes:
--- -----

[PMAX]
Fixed multibyte commands to the keyboard, and the mouse lazyness.

Fixed re-enabling of interrupts on exception returns to kernel.

Fixed dispatching of interrupts to only handle one interrupt at a time,
to make sure we do not handle the same interrupt twice or worse yet
reenter an interrupt handling routine.  Old code kept, disabled.

Organizational changes:
-------------- -------

Got rid once and forall of the "CMU" and "CMUCS" conditionals.

Special notes:
------- -----

Built for:

PMAX:	STD+ANY						check

I386:	STD+WS	(PC-compatible i386 boxes)		check
	STD+SQT+32	the Symmetry			check
	STD+NORMA+iPSC	the Intel Hypercube		check

VAX:	STD+VAX6bb					check
	STD+VAX6bb+gcc	(microvaxen)			check
	STD+16+fixpri+VAX6bb+BI+de+gcc (R2D2)		check

SUN3:	STD+SWS 					check


Tested on PMAX only, there where no major MI changes.
==========================================================================
   ***** MK Version MK46  (mrt) *****
    
    
New features:
--- --------
none

Bug fixes:
--- -----

Corrected all the Mach free copyright messages to have "AS IS" and
Carnegie Mellon instead of just Carnegie.

[VAX]	 Put the restrictive copyrights back on the few files that
	erroneously gotton the free copyright.

Special notes:
------- -----

In the future, be very careful that you get the correct style of copyright
on to any files you add to the mk tree. For license-free c files you can use 
conf/copyright, or use /afs/cs/mach/src/copyright/{c,shell,roff}. If you pick
one up from there add a Mach Operating System line to the beginning.

If a file contains a restrictive BSD copyright or any restrictive manafacturer's
copyright, use the old Mach licensed one.

Built for all 8 configurations. Compared the .o files to be sure  nothing
had changed. 

==========================================================================
   ***** MK Version MK47  (rpd) *****
    
    
Bug fixes:
--- -----

I fixed a pageout deadlock which crept in with default_pager_object_create.
It turns out to be quite difficult to have the default pager handle
"external" objects in addition to "internal" objects.
Now the default pager is multi-threaded and separate threads handle
"internal" and "external" objects.  boot_ufs/ code picked up some locking.

I changed pagein to use fictitious pages for busy/absent pages.
Real pages get allocated when the pager calls data-provided or
data-unavailable.  To prevent the default pager from using all the pages,
pagein of "internal" objects still allocates real pages.
The association between physical pages and page structures changes
dynamically, so this won't hamper page "stealing" on the data-provided path.

I changed the pageout daemon pretty significantly, to remove some
deadlocks and to make it behave better under heavy paging loads.
Now vm_page_inactive_target is calculated dynamically and pages
trickle from the active list to the inactive list, instead of getting
dumped in big bursts.  The code also dynamically adjusts
vm_pageout_burst_wait, the amount of time it pauses per dirty page,
so it isn't as important that this number be tuned right.

I changed the pmap interface.  pmap_bootstrap, pmap_valid_page,
pmap_map, and pmap_update are out.  pmap_init changed.  pmap_startup,
pmap_steal_memory, and pmap_free_pages (or possibly pmap_virtual_space
and pmap_next_page instead of pmap_startup and pmap_steal_memory) are
in.  The pmap_startup/pmap_steal_memory system has two main advantages
over the old system.  First, machine-independent code doesn't assume
quasi-contiguous physical memory.  Second, machine-dependent code can
implement pmap_steal_memory to allocate memory more efficiently than
vanilla kernel VM (for example, using no/fewer TLB entries, not backed
by page structures).  The zone package gets 420K from
pmap_steal_memory.

I fixed a deadlock problem in kmem_alloc.  It can't hold a kernel map
locked while allocating memory.

I fixed vm_page_deactivate as suggested by rfr,
to clear the reference bit on inactive/referenced pages.

I changed the stack-privilege algorithm, which reserves kernel stacks
for important kernel threads like the idle threads, pageout deamon, etc.
The old method had a bug that could result in stack_alloc_try panics.

I fixed kernel stack allocation so that non-page-sized stacks work.
All current architectures use page-sized stacks by default.

I beefed-up the simple-lock debugging code.  Now it keeps track
of which locks are held and who took the locks.  check_simple_locks()
should be used in code which may block, to check that no simple locks
are held.

I changed the timeout/timer code to use a fixed-size array of timers
instead of a zone, because it allocates timers from interrupt handlers.
Only device drivers use this code.  I changed all machine-independent
uses of timers to use "private" timers.  In particular, priority depression
timeouts use another timer in the thread structure.  If possible, this
timer should be merged with the previous per-thread timer.
I didn't fix the long-standing races in the timeout code.

I fixed host_set_time to update the mapped time value.
I changed the mapped time value to include a check field,
so readers can get a consistent value without locking.

I picked up a processor_doaction fix from dlb.

I made some minor changes to the xpr code so that recorded xpr activity
can survive across a reboot and be examined.

I cleaned up the semantics of the syscall forms of kernel RPCs,
so that they better mimic the RPC forms.  If the syscall can't
handle request, it returns MACH_SEND_INTERRUPTED.  This is a
backwards compatible change, because current user stubs check
for any non-success return.  They should be changed to check
for send-interrupted specifically.  This will not be compatible
with older kernels, but it will fix a bug.  (For example,
the current ipc_test binaries in the release area report a problem
because they are linked with syscall forms that don't have quite
the right semantics.  The corresponding change in libmach for
the user stubs fixes ipc_test.)

[PMAX]	  I simplified the handling to tlb misses.
This made the user tlb-miss handler faster.  It fixed a bug;
now VM exceptions always have the correct address.

[PMAX]	  I removed spls in the pmap module.

[PMAX]	  I put a nop after splhigh so that it can be stepped through.

[SUN3]	  I converted the remaining uses of vm_map_find to vm_map_enter.

[SUN3]	  I removed a debugging panic in the user breakpoint path.

[SUN3]	  I fixed the fpa conditionals in genassym.


Special notes:
------- -----

Tested on rpd, waldo, rocky, nova, r2d2, boris.


==========================================================================
   ***** MK Version MK48  (jsb) *****
    
    
New features:
--- --------

This merge mostly contains NORMA work, including
	Whizzy fast internode IPC,
	Rough cut at VM support for fast internode IPC, and
	Beginnings of internode task creation.

Added task_get_emulation_vector; previously, it was impossible to obtain
this information, making task migration impossible.
For symmetry, added task_set_emulation_vector.
Task_set_emulation is now a call to task_set_emulation_vector.

Added a gets function in kern/printf.c (derived from boot_gets).

Bug fixes:
--- -----

[i386]	  Defined SPLVM, SPLX as null (vs. splvm, splx) in uniprocessor case.

Organizational changes:
-------------- -------

Added MACH_CLTASK conditional.

Added a kernel/norma/ directory for norma-specific files. I'll be moving
more things into this directory in subsequent releases.

Added mach/mach_norma.defs, for NORMA specific kernel functions.

Added mach/norma_task.defs, for task creation upcalls.

[i386]	  Moved i386/read_fault.c to intel/read_fault.c so that i860
	  can use it as well.

[i386]	  Added spldcm to i386/spl.s.

==========================================================================
   ***** MK Version MK49  (jsb) *****
    
    
New features:
--- --------

First cut at NORMA vm support. Uses mythical xmm technology.

[I860]	  Merged in i860 code from March, when I MK43ified what Intel
	  had at the time. The next merge will have the most recent Intel
	  code, plus friendlier licensing language.

[I860]	  Wrote an (unoptimized) internode ipc driver for the i860,
	  based on Intel code for old internode ipc protocol.

Bug fixes:
--- -----

Updated ddb man page. Added documentation for continue/c, match, search,
and watchpoints. I've not actually explained what a watchpoint is;
maybe Rich can do that (since he added them in the first place).

[I860]	  Better trap handling code, adopted from Intel's NX OS.

[I860]	  Use new (delta-compatible) booting technology.

[I386]	  Use new (delta-compatible) booting technology.

Organizational changes:
-------------- -------

Renamed NORMA conditionals; for example, MACH_CLPORT becomes NORMA_IPC.
Better support for partial enabling of NORMA support; for example, one should
now be able to build with just NORMA_IPC.

Moved NORMA ipc support from ipc directory to norma directory.

[I860]	  Rearranged dev_forward_name.c table for non-integrated I/O nodes.

Special notes:
------- -----

Everything in this merge is either i860 dependent or hidden under NORMA
conditionals. I built and tested on i860 (dimitri), i386 (dimitri and ubik),
andmips (jsb).

The i860ipsc console driver is flaky. This will be fixed in the next merge,
when I pick up the newest Intel code.

==========================================================================
   ***** MK Version MK50  (jsb) *****
    
    
New copyright from Intel: i860, i860ipsc, i386ipsc, and ipsc directories
now contain freely distributable files. Unfortunately, the i386ipsc ethernet
driver is still encumbered, so I've stuffed it into its own directory,
i386ipsc/cnp.

Also picked up recent i860 fixes from Intel.

Bug fixes:
--- -----

[I860]	  Many.

Organizational changes:
-------------- -------

[I386]	  Moved i386ipsc/if_cnp.[ch] to i386ipsc/cnp/if_cnp.[ch].

Tested On:
------ --

[I386]	  dimitri (i386ipsc), ubik.

[I860]	  dimitri.

[PMAX]	  jsb.

==========================================================================
   ***** MK Version MK51  (rvb) *****
    
    
New features:
--- --------

[VAX]	We now support the VAXSTATION 3100.  This is a Vax processor
	with PMAX peripherals


Bug fixes:
--- -----

[SUN3]	  
[VAX]	  Now build again.  And I build a STD+BI+16 and discovered that
	  it could never have been built; it now can.



Organizational changes:
-------------- -------

Two big ones:

  1. Since the pmax and vaxstation 3100 now share the same devices and since
	we believe that in the future that machines will be made of off the
	shelf chips, we pulled out almost all of the files in mips/PMAX
	and moved them to either the scsi/ toplevel directory or the chips/
	toplevel directory.  Note also that scsi/ has an "adapters" 
	subdirectory.

  2. In setting up the chips/ directory, we puked over having to include
	"cputypes.h" so that we could differentiate some lines of code
	that were necessary for DECSTATIONS vs VAXSTATION.  So we globally
	changes cputypes.h to platforms.h.


Special notes:
------- -----
==========================================================================
   ***** MK Version MK52  (rvb) *****
    
    
THESE CHANGES ARE MIPS AND VAX ONLY.

Mainly we forgot to export the include files into the release/chips and release/scsi
directories that had been in release/mips/PMAX.  This means trouble for the
unix server and other users of release.

Also a few tweaks from sandro for mips.

NOTE: only the 3100 platforms were compiled for.

ALSO NOTE: on the previous release MK51, we build for
	sun3, i386, sqt, mips, vax6bb and r2d2.  We
	tested on mips and vax6bb.


==========================================================================
   ***** MK Version MK53  (rvb) *****
    
    
Bug fixes:
--- -----
Organizational changes:
-------------- -------
[VAX]
[PMAX]
	Well, the last release defuncted busses.[ch] from the mips/PMAX/ 
directory and as luck would have it there was still one reference in the tree
to it.

==========================================================================
   ***** MK Version MK54  (rpd) *****
    
    
New features:
--- --------

Mig now understands a new option, "-sheader <file>", which causes
it to output a header file containing declarations/prototypes
of server-side functions.  I restored the prototypes in the standard
header file ("-header <file>"), which contains declarations
for the user-side stubs.

I removed some old code which caused Mig to produce
an "init_<module>" function in the user file.  It hasn't done
anything in a long time and nobody should be calling it.

I hacked Mig to use the type "ipc_port_t" instead of "mach_port_t"
in appropriate places when generating files for the kernel.
This way prototypes use the right type and I could remove
a bunch of casts from the kernel, especially in the vm system.


Bug fixes:
--- -----

I fixed a bug in the message-buffer caching code from MK43.

I picked up a fix from dlb for no-op assignments of threads
to processor sets.

In MK47, I changed the kernel so that syscall forms of kernel RPCs
return MACH_SEND_INTERRUPTED to indicate that libmach should retry.
In this merge, I made the companion fix to libmach to check
for MACH_SEND_INTERRUPTED instead of any non-success return code.
A Unix server built with this release won't work on pre-MK47 kernels.

I picked up some minor changes from jsb so that the norma/
directory is only used when building NORMA configurations.

[VAX]	  I fixed files in the chips/ and scsi/ directories
so that they compile with gcc.  I fixed a problem with the recent
vaxstation support that screwed up r2d2.

[I386]	  A minor fix so that STD+WS+TEST works.
I added kernel/src/makeboot to the appropriate Directories/ files.

[PMAX]    I fixed the mips/PMAX/boot/ directory so that people
without dot in their paths can build it.


Special notes:
------- -----

I tested the following configurations:

vax	STD+VAX6bb+gcc			nova, sf
	STD+16+fixpri+VAX6bb+BI+de+gcc	r2d2
i386	STD+WS				waldo
	STD+SQT+32			boris
	STD+iPSC+NORMA			dimitri
sun3	STD+SWS				rocky
pmax	STD+ANY				rpd
    
    
    
==========================================================================
   ***** MK Version MK55  (jsb) *****
    
    
Bug fixes:
--- -----

NORMA_VM:	Eliminated leaks; cleaned up implementation.

NORMA_IPC:	Improved buffer management code.

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

From David Black: memory_object_data_supply, and generalization
of NORMA_IPC page list technology. Code currently turned off
by default. More details when I pick up the rest of David's work.

Special notes:
------- -----

Built for and tested on
	ubik		i386		STD+WS
	jsb		pmax		STD+ANY
	dimitri		i386ipsc	STD+iPSC+NORMA

Build, not tested:
			vax		STD+16+fixpri+VAX6bb+BI+de
			sun3		STD+SWS


I could not build

	STD+16+fixpri+VAX6bb+BI+de+gcc

because the build died on gcc -ES ... locore.s. It looks like gcc doesn't
know what a '-ES' means. (Perhaps ius3 has an old gcc?)

==========================================================================
   ***** MK Version MK56  (danner) *****
    
    
New features:
--- --------

The purpose of this release is essentially to get the luna88k code
under source control. Other minor upgrades occured in the process. The
code is incomplete and currently broken. 

The luna build environment is still less than ideal. If your are
interested in building such kernels, please contact me or bob.

The software single step code is now smart enough to avoid putting
breakpoints directly after unconditional flow transfer instructions.
This causes problems on both the pmax and luna. 

DDB can now take a table of machine specific commands to be installed
in addition to the normal commands under the command prefix "machine".
This necessitated some changes to the ddb header files. See
luna88k/db_interface.c for a use of the functionality.

The SSSCSI (Sandro Spiffy SCSI) code now understands dec, omron and
bsd labels, which form a maze of disk labels, all alike.

Copyrights on the omron code are somewhat suspect, and I expect I
caused retrograde motion on several MI file copyrights. Apologies in
advance.

Built on amalia.mach (luna), and booted single, dual, and quad cpu.
Works as well as ever. (gets through SCSI autoconfig, finds paging
file, dies).

Built and booted on rvb4.mach.cs.cmu.edu (Decstation 5000). DDB
changes tested. Comes up multiuser.

Built STD+VAX6bb on sf.mach.cs.cmu.edu. 

Bug fixes:
--- -----

Organizational changes:
-------------- -------

A bunch of luna specific directories were created.

Special notes:
------- -----

I created an new version of the utils/mktree.sh script that is used to
create kernel trees. Gratitously replicated directory creation code
has been collapsed to loops. Until Mary or someone can figure out how
to install this in its proper place
(/afs/cs/project/mach-7/mk/bin/mktree), please manually pull the script
out of /afs/cs/project/mach-7/mk/src/latest/utils/mktree.sh. 
    
==========================================================================
   ***** MK Version MK57  (danner) *****
    
    
Bug fixes:
--- -----

Fixed Copyrights for mrt.

Built nowhere. Tested nowhere.
    
==========================================================================
   ***** MK Version MK58  (rvb) *****
    
    
UX25 and MK58 have been built and tested together on
all 4 major(?) architectures,  i386, pmax, vax, sun3.
They can be built and they are consistent.

(Also we added a few minor changes.)
