Subject: Re: Even more info on my memory problem...
To: Niklas Hallqvist <niklas@appli.se>
From: Chris Hopps <chopps@emunix.emich.edu>
List: amiga-dev
Date: 03/11/1994 03:15:57
> These facts together make me think that the error must be in the
> buslogic of GVP's accelerator. It guess they have a two 16bit
> registers which builds 32 bit data together when accessing 16bit
> mem. I also guess they use these as a cache, but that the high-
> word of the cache doesn't get filled by a 24-bit odd-aligned
> access. Unfortunately it seems to still be valid. Why do I think
> this is the case? Well, the bitfield operation succeeds, I have
> never seen it behave incorrectly, BUT the next read, however
> ordinary (longword-aligned plain movel) that instruction is. The
> piece I cannot fit in, is why the pagefault is a trigger. Maybe
> the buslogic cache gets flushed and the next 24-bit access gets
> associated to a randomly filled register, where it normally
> wouldn't change the cache a bit. I don't know... Does anyone
> have any thoughts about my reasoning?
WOW! this is an awesome *cool* guess. Hows this sound.
read data-part of the data falls across a page boundry-BUSERR
"cache" conatains the valid word and and *invalid* highword. We go
pouncing along in trap() then vm_fault() finally reconstructing the
data and puting it in the stack frame to restart the operation. Fine
the operation restarts and succeeds *however* the memory in the "cache"
is *not* updated with the data from the stack frame and so when the next
fetch grabs it its bogus. Thats very vague on perpose I am sure there
is a more technical and better explanation.
Can you test this?
Chris.
------------------------------------------------------------------------------