[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