[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