GINVI rs |
nanoMIPS. Optional, present when |
Globally Invalidate Instruction caches |
Globally Invalidate Instruction caches.
nanoMIPS. Optional, present when
Config5.GI >= 2. Requires CP0 privilege.
|
001000 |
x |
rs |
00 |
01111 |
101 |
111 |
111 |
|
6 |
5 |
5 |
2 |
5 |
3 |
3 |
3 |
if C0.Config5.GI < 2:
raise exception('RI')
if not IsCoprocessor0Enabled():
raise coprocessor_exception(0)
if GPR[rs] == 0:
cores = get_all_cores_in_system()
else:
cores = implementation_dependent_ginvi_cores(GPR[rs])
for core in cores:
# Find encoded line size, sets, and associativity for thetargetcache.
(L, S, A) = get_cache_parameters('I', core)
num_sets = 2 ** (S + 6)
num_ways = A + 1
for way_index in range(num_ways):
for set_index in range(num_sets):
cache_line = get_cache_line('I', way_index,set_index, core)
cache_line.valid = False
When $rs is 0, GINVI fully invalidates allinstruction caches of all cores in the system,including the localinstruction cache. For non-zero $rs values, GINVI invalidates the instruction cache of a specific,
implementation dependent core in the system.
The GINVIinstruction must be followed by a SYNC (stype=0x14) and an instruction hazard barrier (e.g.JRC.HB) to ensure that all instruction caches in the system have been invalidated.
Coprocessor Unusable. Reserved Instruction if Global Invalidate I-cache not implemented.