[OSy] chyba v kalistu -- sys.S, 509, 510 ?

Petr Šťastný petr.stastny at centrum.cz
Tue Oct 23 16:52:42 CEST 2007


Na předávání toho void* parametru hlavní funkci threadu přes jeho zápis
do registru zapomeň. Dělá se to úplně jiným fíglem, žádný assembler, je
to prosté. Ty totiž nejenže potřebuješ tu funkci spustit, ale po jejím
doběhnutí musíš dělat další úkony (úklid, čekání pro join atp.). Víc asi
prozradit nesmím :-)

P.


Zdeněk Doležal napsal(a):
> Zdravim,
>
> stravil jsem ted nejakou tu hodinu u ladeni zasobniku. Ac jsem v
> assembleru nikdy nic nedelal, troufam si tvrdit, ze chyba je primo v
> kalistu.
>
> V souboru sys.S ve funkci switch_cpu_context se uklada status registr
> nejak takto:
>  mfc0    $t0, $status
>  sw      $t0, OFFSET_STATUS($sp)
>
> Nasledne se loaduje ale do registru a0, ktery jsem chtel pouzit na
> predavani parametru pri vytvareni threadu:
>  lw      $a0, OFFSET_STATUS($sp)
>  mtc0    $a0, $status
>
> To asi nebude spravne, ze? Udivuje me, ze na si toho jeste nikdo
> nevsimnul. Copak pouziti registru a0 - a4 neni spravna cesta?
>
>   






More information about the NSWI004 mailing list