[OSy] Pochybnost o implementaci DDISK

Petr Tůma petr.tuma at d3s.mff.cuni.cz
Thu Jan 23 08:24:34 CET 2014


Dobry den,

mate pravdu, manual v tomto pripade bohuzel neodpovida skutecnemu 
chovani (ktere asi sam vidite ze zdrojaku - zapis se STATUS_INT sice 
ukonci zadost o preruseni, ale to se neodrazi pri cteni stavoveho 
registru, plus je mozne zapisovat do STATUS_ERROR, coz dokumentace 
nedefinuje).

Zkusime s kolegy domyslet nejake inteligentnejsi chovani (pro vase 
potreby asi momentalne staci vedet, ze zapis se STATUS_INT v 1 opravdu 
interne zrusi zadost o preruseni, i kdyz to ve stavovem registru neni 
videt, pripadne se da dalsim zapisem se STATUS_INT v 0 dany bit shodit).

Petr Tuma


On 22/01/14 20:52, PanacekCZ at seznam.cz wrote:
> Vážení,
>
> jsem přesvědčen, že v MSIMu je chybně implementován status/command registr zařízení DDISK.
>
> Konkrétně ve funkci ddisk_write:
> else if (addr == dd->addr + REGISTER_STATUS) { /* Set status/command */
> 		/* Remove unused bits */
> 		dd->disk_status = val & STATUS_MASK;
>
> A ve funkci ddisk_read:
> else if (addr == dd->addr + REGISTER_STATUS)
> 		*val = dd->disk_status;
>
> Toto má za následek, že při zápisu hodnoty 4 (STATUS_INT) do tohoto registru nedojde k vynulování tohoto bitu a naopak dojde k vynulování bitu STATUS_ERROR.
> Po přečtení tabulky manuálu bych čekal, že zápis nuly do STATUS_INT nebude mít žádný vliv, zápisem jedničky dojde k vynulování tohoto bitu, na bit STATUS_ERROR nebude mít zápis nuly žádný vliv a zápis jedničky je nedefinované chování.
>
> S pozdravem
> 						Vlastimil Dort
>
> _______________________________________________
> OSy mailing list
> OSy at d3s.mff.cuni.cz
> https://d3s.mff.cuni.cz/mailman/listinfo/osy
>




More information about the NSWI004 mailing list