<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>Dobry vecer.<br /><br />Skusil som opravit to citanie cause registra a zda sa, ze to pomohlo.<br />Naschval som si daval pozor, ci si ukladam dolezite registre nech si ich<br />dalsou vynimkou neprepisem, ale co z toho, ked ich potom zle<br />citam. :-)<br />Dakujem vsetkym za ochotu.. tu binarku teda uz posielat nebudem,<br />kedze to bola celkom trivialna chyba.<br /><br />S pozdravom <br /><br />Jaroslav Pastorek<br /><br /><br />---- Původní zpráva ----<br />Od koho: Andrej Krutak <andree182@gmail.com><br />Komu: Operating Systems Course <osy@dsrg.mff.cuni.cz><br />Datum: 9.1.2008 0:30:00<br />PÅedmÄt: Re: [OSy] Vyvolavanie vynimky TLB invalid<br /><br />Ahoj,<br /><br />nieco podobne som riesil pred par dnami - ak je to este aktualne... Problem <br />bol v tom, ze napr. v kalisto je vo fcii exc() povodne takyto riadok:<br /><br />switch (cp0_cause_exccode (read_cp0_cause ())) {<br />...}<br /><br />Ten riadok sme napr. my nemenili este - ale v prvych 2 zadaniach sa chyba na <br />tom riadku ani nema ako prejavit...<br /><br /><br />Niekde v exception handleri kodu (sys.S) je potom <br /><br />STORE_GENERAL_REGS $sp...<br /><br />No, a problem je v tom, ze ked sa na blbom mieste kodu (=stack je na mieste, <br />ktore este nie je v TLB) vyvola interrupt, zavola sa exception handler a pri <br />ukladani stacku nastane TLB miss... Tym sa ale prepise cp0_cause a aj ked sa <br />ten TLB miss spracuje spravne (vytvori sa spravna TLB polozka), stale bude v <br />cause kod toho TLB miss - pretoze po navrate z handleru sa ten cause neobnovi <br />na povodnu hodnotu... A to sa v exc() (vdaka tomu, ze sa to cita z registra) <br />spracuje ako uplne odveci chyba...<br /><br />Riesenie je jednoduche - miesto toho v switchi by si mal pouzivat nieco akoi<br /><br />switch (cp0_cause_exccode (*(stc+OFFSET_CAUSE/4)))<br /><br /><br />:-)<br /><br />Ak to nebol vas problem, ospravedlnujem sa za dlhyyyy spam...<br /><br />Andrej<br /><br /><br /><br /><br />On Tuesday 08 January 2008 16:20:11 Jaroslav Pastorek wrote:<br />> Dobry den.<br />><br />> Ja by som sa od filozofovania rad vratil k samotnemu kernelu :-)<br />><br />> Z mne neznameho dovodu sa mi pri testovani kernelu vyvolavaju<br />> tlb invalid vynimky, avsak ked si v jej handleri dam vypisat<br />> dump tlb, tak adresa, ktora vyvolala vynimku, je v tlb a je aj<br />> validna. Skusal som hladat v manuali aj zdrojakoch msimu,<br />> ci ta vynimka moze nastat este niekedy inokedy, ale akosi som<br />> tam nic neobjavil. Neviem, ci je to tym, ze pristupujem na user<br />> adresy z obsluhy vynimky alebo preco.<br />> Dufam, ze to zas nie je rtfm otazka, ktora je na strane xyz v manuali.<br />><br />> S pozdravom<br />><br />> Jaroslav Pastorek<br />> www.inpage.cz - www stranky za 3 Kc a za chvilku<br /><br /><br /><br />_______________________________________________<br />OSy mailing list<br />OSy@dsrg.mff.cuni.cz<br />https://dsrg.mff.cuni.cz/mailman/listinfo/osy<br />
<br><a href="http://www.inpage.cz/">www.inpage.cz</a> - www stranky za 3 Kc a za chvilku.
<br></body></html>