[OSy] Vyvolavanie vynimky TLB invalid
Rastislav Wartiak
rastik at tereus.eu
Tue Jan 8 18:44:03 CET 2008
R4000_Users_Manual_2Ed.pdf, číslování stránek dle Readeru (ne těch v
dokumentu)
s. 159: TLB Refill Exception
It is possible that the virtual address used to obtain the physical address
and access control information is on a page that is not resident in the TLB.
This condition is processed by allowing a TLB refill exception in the TLB
refill handler. This second exception goes to the common exception vector
because the EXL bit of the Status register is set.
s. 151: General Exception Process, Figure 5-17
if SR1 = 0 then /* if not EXL */
if TLBrefill then vector <- 0x000
elseif XTLBrefill then vector <- 0x080
else /* not a miss */ vector <- 0x180
else
vector <- 0x180
endif
SR <- SR31:2 || 1 || SR0 /* EXL */
Postup:
- nastane TLB miss, nastaví se EXL, zavolá se obsluha z adresy 0 (tlb_refill)
- během obsluhy nastane TLB miss, zavolá se obsluha z adresy 0x180
(dle Cause to bude tlb_invalid)
Pro zjednodušení jsem nepsal plnění Cause registru, ten bude v obou
případech obsahovat TLBL nebo TLBS.
Rastislav Wartiak
> Rastislav Wartiak wrote:
>> Myslím, že je to obráceně - v TLB refill může missnout a pokud se tak
>> stane, tak se volá TLB invalid.
>
> Refill pouziva kernel temp stack, nema proc by missnul.
> Excepsna pouziva thread stack.
More information about the NSWI004
mailing list