A few words about the machine dependent/independent split....


Machine Independent Files 	(Except when noted, these routines are called
			   	 from share, protocols, and other mi routines.
				 The variables are globals that are shared
				 with the machine specific routines.)

init.c
	initXKernel()		(Called from below.)
	execUser()

process.[ch]
	InitProcesses()
	CreateProcess()
	CreateKernelProcess()
	DestroyProcess()
	InitSemaphore()
	P()
	V()
	VAll()
	kSwitch()
	Delay()
	Idle()
	Kabort()
	splx()
	spl7()

	Process	*Active
	Process  *ProcessDescriptors
	Process  *EndPds
	unsigned long MaxProcesses

memory.[ch]
	InitMemory()
	CreateAspace()
	DeallocateAspace()
	FreePage()
	GetAddressableAspace()
	SetAddressableAspace()
	GetAspaceSize()
	SetAspaceSize()
	AllocateKernelPage()
	AllocateUserPage()
	MapPage()

	Aspace *AddressableAspace
	Aspace *AspaceDescriptors
	unsigned long MaxAspaces

profile.c
	initProfile()

trap.[ch]
	(For every system call `foo', there is a routine called `UserFoo'
	 in this file; this routine is called by the machine specific
	 trap handler code for each system call trap. Also, for each
	 upcall `bar' from the kernel to a user, there is a routine called
	 `callUserBar'; this routine is called from share.)

printf.c
	putchar()
	printf()

clock.c
	ClockInterrupt()		(Called from below; in turn does
					 an upcall to clock_ih() in share.)

----------------------------------------------------------------------

Machine Specific Files			(Routines called from mi.)

ms_memory.[chS]				(Called from mi/memory.c)
	Ms_InitMemory()
	Ms_CreateAspace()
	Ms_InitAs()
	Ms_FreePage()
	Ms_FreeMemory()
	Ms_GetAspaceSize()
	Ms_SetAspaceSize()
	Ms_GetAddressableAspace()
	Ms_SetAddressableAspace()
	Ms_MapPage()
	Ms_AllocateKernelPage()
	Ms_AllocateUserPage()

	typedef struct Ms_AspaceState

ms_process.[chS]			(Called from mi/process.c)
	Ms_AllocatePds()
	Ms_DestroyProcess()
	Ms_CreateProcess()
	Ms_InitPd()
	Ms_CheckOutRQ()
	Ms_P()
	Ms_Switch()
	Ms_Delay()
	Ms_ActivateReadyqHead()
	Ms_Addready()
	Ms_RemoveReady()
	Ms_Idle()
	Ms_Kabort()
	Ms_Splx()
	Ms_Spl7()

	typedef struct Ms_ProcessorState

ms_romvec.[ch]				(Called from mi/init.c)
	Ms_FetchBootArgs()

ms_trap.[chS]				(Called from mi/trap.c)
	Ms_CallUserRoutine()

ms_exception.[chS]			(Called from mi/init.c)
	Ms_InitExceptions()

ms_screen.c				(Called from mi/printf.c)
	Ms_putchar()

----------------------------------------------------------------------

Other Machine Specific Files (called only from other ms routines)

ms_misc.[chS]
ms_interrupt.h
ms_consts.[ch]
Locore.S
