[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