[OSy] switch_cpu_context

Lubomír Bulej bulej at nenya.ms.mff.cuni.cz
Wed Dec 7 20:27:32 CET 2005


Dobry den,

> 
> Narazili jsme na problem v souboru "sys.s" ve funkci "switch_cpu_context".
> Myslime si, ze tato funkce by mimo jine mela ulozit obsah registru na zasobnik aktualniho vlakna a ze zasobniku vlakna, na ktere se prepina kontext, by naopak mela nacist hodnoty do registru. To by mela provadet i s registrem EntryHi.
> 
> Pri vytvoreni vlakna jsme na zasobnik na misto OFFSET_HI ulozili ASID (obdobne jako OFFSET_STATUS, ktery byl jiz v puvodnim Kalistu) a cekali jsme, ze bude pri zmene kontextu nacten do registru. To se vsak nestalo. Naopak, kdyz ASID ulozime do registru EntryHi jeste pred zmenou kontextu, tak se jeho hodnota po prepnuti  kontextu vubec nezmeni.
> 
> V cem by mohl byt problem??
> 

Pri prepinani kontextu mezi dvema vlakny je nutne zajistit, aby doslo i k 
prepnuti kontextu pameti (ten je dan aktualni hodnotou ASID v EntryHi). Tj. 
neni to tak uplne problem, je to neco co musite dodelat pro spravnou funkci 
virtualni pameti.


Lubomir Bulej




More information about the NSWI004 mailing list