interrupts before it calls configure(). On 3100s, this can result in
the ethernet interface interrupting before leprobe() is ever called.
Be a bit more defensive in leintr(), where it was dereferencing a null
pointer. This reputedly fixes the oft-reported problems of 3100s not
ooting unless they're on an idle net or had a hard reset done before boot.
(Reworking the config code completely would be nice too.)
character string. NA1 says that the 99 characters required by the
Standard have representations in the initial state which are one byte
long and do not alter the state.
Thus we can safely break apart the format string with mbtowc() until
we reach a '%' character, and the process format directive characters
one by one.
We really shouldn't be using mbtowc(), rather mbrtowc() (which takes a
mbstate-t argument) but we don't have the NA1 functions implemented
yet. This is safe, because even when we do we're not likely to
support multi-byte character encodings that use shift states.
Also change the stack-traceback code to avoid having multiple returns
(and thus multiple stack pops) because with gcc -O2 that breaks the
heuristic that a "jr ra" preceding the PC precedes code to push the
current stack frame. Which breaks stacktrace() before it even
traces past itself :-(. Use a goto instead.
error checking in the DIAGNOSTIC case. These changes might be backed out,
if it's decided that MINBUCKET should be 5 (rather than 4) on the alpha.
However, doing that has its own set of nasty consequences.
changes by me:
* Make autoconfiguration work correctly for more models of AT1700.
* Make the debugging code more robust and complete.
* Tweak the output routine for better performance, and to eliminate an ugly
kluge.
Various other style cleanup. Needs more work.