such code for Mach 3's Alpha port. Initially reworked for NetBSD/alpha
by Chris Demetriou, and then heavily hacked on by me. Works, but is still
a little rough around the edges. Known problems:
- Error recovery could be improved a bit.
- Back traces don't work.
- Single-stepping can be flaky, at times. (Alpha doesn't have hardware
support for single-stepping, and I'm not entirely convinced the
MI DDB software-emulated single-stepping logic is 100% correct.)
- Logic for when to drop into DDB needs some improvement.
(II-B) 2-33 of the Alpha AXP Architecture Reference Manual, Second Edition:
* rdps - Read Processor Status, needed by spl* functions.
* cflush - Cache Flush
* rdval - Read System Value
* wripir - Write Interprocessor Interrupt Request
* wrval - Write System Value
cflush, rdval, wripir, and wrval are used in multi-processor environments.
don't expect/provide pci_decompose_tag to be a MI, public function. It
wasn't intended to be to begin with, and uses of it (e.g. the one in the
'de' driver) are quite likely to be incorrect.
passing them a proc *, which encapsulates all of the information necessary
to activate an address space.
- Garbage-collect pmap->pm_stchanged; it's not really used for anything.
passing them a proc *, which encapsulates all of the information necessary
to activate an address space.
- Garbage-collect pmap->pm_stchanged; it's not really used for anything.
- Marco-ize the 3 instructions that actually switch to the new process
context.
- Unify (except for the pmap_deactivate() call) the NEW_PMAP and not-NEW_PMAP
versions of cpu_switch(), and clean up some comments.
- Tidy up the not-NEW_PMAP bits of switch_exit().
Also, put the cpu_decl()s in cpuconf.h, so that platform support files
can pull in the prototypes from there, and pull in options for those
systems for which there is code in the source tree.