Port-vax archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Race in MSCP (ra/rx) driver
> I now think that I probably added [the Qbus mapping code] before I
> realized the race below, the one that was the _real_ problem, was
> there, and never took it out. I'll go remove it and test to make
> sure it really does work as well as the docs say it should (other
> things make me fully expect that it will).
Surprise.
That Qbus mapping code is necessary - or else something else has to
change, to move the rings. It appears EK-KA630-UG-001 lies, or else
some other code is clearing most of the mapping registers.
I replaced my mapping code with code to read and compare. Turns out,
they _are_ set up to map low memory, but only the first 64K of memory!
(The first 128 mapping registers are set up appropriately; above that,
they're all zero.) And the bootblock's rings are a few tens of K above
the 1M mark (specifically, at 0x00105754), so of course they fail.
This is in sharp contrast to the text on page 3-11, which says it sets
it up "so that all unoccupied pages of the Q22-Bus are mapped to the
corresponding pages in the first 4Mbytes of local memory". I suppose
everything past the first 64K could be "occupied", because it does not
define what it means for a page to be occupied, but at the very least
it's misleading.
I suppose it's conceivable that I have a bug in my emulator that
confuses the ROM code into loading only part of the Qbus map. But I
can't imagine what could have that effect, and the rest of the ROM code
appears to run fine. As does the NetBSD code I've run.
/~\ The ASCII Mouse
\ / Ribbon Campaign
X Against HTML mouse%rodents-montreal.org@localhost
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B
Home |
Main Index |
Thread Index |
Old Index