[OSy] switch_cpu_context
Jiří Tlach
jiri.tlach at centrum.cz
Wed Nov 1 20:54:13 CET 2006
Cau,
tak jak je to v kalistu napsane, tak mas pravdu, ze hodnota v registru
a0 neprezije preplanovani. Myslim si, ze zrovna
hodnota v registru a0 by preplanovani prezit mela, protoze v tomto
registru se vzdy predava prvni argument pri volani
nejake funkce. Takze bych rekl, ze se jedna o umyslnou chybu v kalistu,
kterou mame napravit. Ja jsem misto
registru a0 pouzil pro obnoveni hodnoty Status registru registr k0,
ktery je urcen vyhradne pro potreby kernelu
operacniho systemu a vlakna by ho nemela pouzivat
(viz
http://nenya.ms.mff.cuni.cz/~ceres/sch/osy/download/MIPSpro_Assembler_2.pdf
<http://nenya.ms.mff.cuni.cz/%7Eceres/sch/osy/download/MIPSpro_Assembler_2.pdf>
- str. 14).
Takze kod, kterys zminoval, vypada v me uprave nasledovne:
/*
* Load the new content of general registers.
*/
RESTORE_GENERAL_REGS $sp
/*
* Restore the status register.
*/
lw $k0, OFFSET_STATUS($sp)
mtc0 $k0, $status
a zatim mi vsechna vlakna bezi :-)
Jiri Tlach
More information about the NSWI004
mailing list