[OSy] Pochybnost o implementaci DDISK
PanacekCZ at seznam.cz
PanacekCZ at seznam.cz
Wed Jan 22 20:52:20 CET 2014
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
More information about the NSWI004
mailing list