[OSy] nejasnost v kodu
Jiří Tlach
jiri.tlach at centrum.cz
Wed Jan 10 19:22:37 CET 2007
Zdravim,
jsem clenem tymu, ktery vyvijel Sirius kernel a uz jsem Ti vcera posilal
patch na e-mail odstranujici problemy, ktere v Siriovi vznikaji pri pouzivani
vice virtualnich adresovych prostoru a uzivatelskych vlaken. Takze pokud
tento patch aplikujes, chyba o ktere ses zminoval uz by se nemela
vyskytnout. Pokud budes mit s patchem nejake problemy, napis mi
e-mail a muzeme je spolu vyresit.
S pozdravem
Jiri Tlach
>Zdravim
>
>Tusim ze je chyba v teto rutine. Nachazi se v arch/sys.S
>Vsimnete si ze kdyz se ukladaji cp0 registry do bezpecneho mista,
>posledni hodnota kterou nabyva $k0 je epc registr
>
>Potom se na zaklade epc vytvori nova hodnota pro status registr misto
>aby se vytvarela na zaklade puvodni hodnoty statusu
>
>handle_general_exception:
> /*
> * Save registers that hold information about the exception to
>a safe place.
> * We will need them later.
> */
> lui $k1, (SAFE_PLACE) >> 16
> or $k1, (SAFE_PLACE) & 0xffff
>
> mfc0 $k0, $context
> sw $k0, OFFSET_SAFE_CONTEXT($k1)
> mfc0 $k0, $badvaddr
> sw $k0, OFFSET_SAFE_BADVADDR($k1)
> mfc0 $k0, $entryhi
> sw $k0, OFFSET_SAFE_ENTRYHI($k1)
> mfc0 $k0, $status
> sw $k0, OFFSET_SAFE_STATUS($k1)
> mfc0 $k0, $cause
> sw $k0, OFFSET_SAFE_CAUSE($k1)
> mfc0 $k0, $epc
> sw $k0, OFFSET_SAFE_EPC($k1)
>
> /*
> * Leave exception level and disable interrupts. This is because
we
> * need to store general registers on the stack frame which could
> * cause a TLB exception. A recursive exception call would
overwrite
> * the return address and the kernel registers (k0, k1).
> */
> xor $k1, $k1
> lui $k1, 0xffff
> ori $k1, $k1, 0xffc0 /* disable interrupts & leave
>exception level */
> and $k0, $k1
> mtc0 $k0, $status
>_______________________________________________
>OSy mailing list
>OSy at dsrg.mff.cuni.cz
>http://dsrg.mff.cuni.cz/mailman/listinfo/osy
>
More information about the NSWI004
mailing list