Everhart, Glenn From: moroney@world.std.spaamtrap.com Sent: Monday, February 15, 1999 10:02 PM To: Info-VAX@Mvb.Saic.Com Subject: Re: How does a (micro)VAX HALT? In article , "GWDVMS::MOELLER" wrote: > The VAX is dead - long live VAX archaeology ... Not quite dead yet.. > When a microVAX executes a HALT instruction (as per VAX architecture), > the CPU doesn't stop operating, but does _something_ unspecified > (eventually displaying the "chevron prompt" or re-booting the machine). > > Similar for quite a number of architecturally specified exceptions, > like "invalid stack", "invalid SCB vector", etc. > > I'd just guess that this "something" doesn't vary too much among the > single-chip VAXen, so - is there anyone left who knows some details? > (The code at and around 20040000 [obviously the power-up start address] > is rather hard to fully understand without. Same with the rather cryptic > paragraphs on p.44 of the March 1986 DTJ :-) I wrote the console code for a CVAX based system, (actually adapting existing code from the 1st generation 3100s for the most part) and I can tell you this: On these systems there is ROM that lives at PA 20040000, and several things will cause the processor to save certain state information (such as the current PC/PSL and halt reason) in certain processor-specific registers, disable memory management, setting IPL 31 and start execution of the ROM address 20040000. This code saves more context (in cache initially, can't touch memory yet!) and looks at the restart code to see why it got here. This is a code in a special register that indicates whether this is a power-on, from a halt instruction/halt line activation or a severe error such as invalid interrupt stack pointer. Also for a non-power up some memory reserved for the console code is located and a halt action location tells the system what to do; for a power up/reset, selftests are run and the memory is mapped and some allocated for the console code. The halt action either attempts to call back the operating system (presumably to do a bugcheck/dump), attempt to boot an operating system or execute a command line interpreter (the 'dead sargeant' prompt) There are also boot modules for disks, a network etc. Also callbacks for the operating system to use the console and to use the boot drivers to do the early stages of loading as well as dumping. Since my system didn't run VMS, I didn't get into the details of VMB which is the standard boot interface. Much of the code is standard VAX code (I tested the command interpreter by disabling certain things and running it as a user mode program in a window on a VAXstation II). The very early big vaxes were different; they used a PDP or a microvax as a processor that started the "main" machine. I don't know what the more recent big systems do. -Mike