OpenCores
no use no use 1/1 no use no use
ICBIR?
by VlsiDave on Oct 20, 2011
VlsiDave
Posts: 16
Joined: Jun 28, 2011
Last seen: Dec 20, 2011
Hello again, and thanks for your patience as I learn this architecture and design while bringing it up in the verilog simulator.

I'm trying to invalidate the Instruction Cache as part of the startup code. However I'm not sure I'm doing it the recommended way. I'm using

l.mtspr r0,r6,0x2002 (hex C080_3002)

in a loop to invalidate all lines in the cache. Where is the ICBIR register in the RTL? Is the proper method to write to ICBIR?

However, I don't see any code in the or1200_sprs.v or or1200_ic*.v files that handle this instruction.

Sorry if this is an ignorant question.

Thanks and regards,
Dave
RE: ICBIR?
by julius on Oct 21, 2011
julius
Posts: 363
Joined: Jul 1, 2008
Last seen: May 17, 2021
The write to the cache block invalidate registers gets decoded and put through to the caches, where they trigger a clearing of the valid bit in the tag ram for the line/block corresponding to the address you want to invalidate.
RE: ICBIR?
by VlsiDave on Oct 26, 2011
VlsiDave
Posts: 16
Joined: Jun 28, 2011
Last seen: Dec 20, 2011
The write to the cache block invalidate registers gets decoded and put through to the caches, where they trigger a clearing of the valid bit in the tag ram for the line/block corresponding to the address you want to invalidate.


Thanks, I see that now. What was confusing me also was the collision at the Icache that inadvertently triggers a miss fill. There appears to be no pipeline freeze when the Icache tag is invalidated through the mtspr instruction. Is that true? I hacked the RTL to wedge one in and the behavior looks much better.

BTW, I have caches configured but no MMUs, not that I think that should matter...

Thanks again,
Dave
no use no use 1/1 no use no use
© copyright 1999-2026 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.