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