[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