SPIN Kernel Machine Interface
31 May 1996
The machine dependent interfaces in the SPIN kernel are isolated in the
machine subdirectory. Under the machine subdirectory are implementation
subdirectories for each development platform. Currently SPIN is implemented
on the DEC Alpha platform.
The SPIN machine-dependent interfaces are as follows:
- MachineAtomicOps.i3: interfaces to
atomic operations. These include simple increment and decrement operations
as well as more complex operations like compare and swap and list manipulation.
Kernel RAS Regions are also initialized here.
- MachineCPU.i3: CPU manipulation
which is exported to all clients. This includes manipulation of user
registers (not kernel registers), cache flushing, and query of the
interrupt level.
- MachineCPUPrivate.i3: CPU
manipulation for trusted clients. This includes privileged operations,
such as setting the interrupt level or triggering breakpoints.
- MachineLinker.i3: Modula-3 to C
passthroughs for manipulating runtime Module structures. This interface
is exported to trusted clients.
- MachineStitcher.i3: interface to
machine-dependent dispatcher
operations. This focuses on building and optimizing stubs.
- MachineThread.i3: interface to
machine-dependent routines for
threads. These include starting a thread and calling a continuation.
- MachineTrap.i3: interface to kernel
trap events. These include memory faults, instruction faults, and system
calls. This interface is exported to all clients.
- MachineTrapPrivate.i3: interface
to kernel trap events for trusted clients.
- SAL.i3: public interface to procedures exported
by SAL, such as timing and
version information. These are available to all clients.
- SALDECUnix.i3: trusted interface which is unportable
because it relies on details of the DEC Unix implementation of SAL.
- SALPrivate.i3: interface which exports
privileged procedures implemented in SAL. These range from Halt()
to CopyMemory().
ddion@cs.washington.edu