mirror of
https://github.com/qemu/qemu.git
synced 2024-11-28 14:24:02 +08:00
hw/m68k/q800: fix PROM checksum and MAC address storage
The checksum used by MacOS to validate the PROM content is an exclusive-OR rather than a sum over the corresponding bytes. In addition the MAC address must be stored in bit-reversed format as indicated in comments in Linux's macsonic.c. With the PROM contents fixed MacOS starts to probe the device registers when AppleTalk is enabled in the Control Panel. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Tested-by: Finn Thain <fthain@linux-m68k.org> Message-Id: <20210625065401.30170-8-mark.cave-ayland@ilande.co.uk> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
This commit is contained in:
parent
db1ffc32dd
commit
846feac2ae
@ -334,11 +334,8 @@ static void q800_init(MachineState *machine)
|
||||
prom = memory_region_get_ram_ptr(dp8393x_prom);
|
||||
checksum = 0;
|
||||
for (i = 0; i < 6; i++) {
|
||||
prom[i] = nd_table[0].macaddr.a[i];
|
||||
checksum += prom[i];
|
||||
if (checksum > 0xff) {
|
||||
checksum = (checksum + 1) & 0xff;
|
||||
}
|
||||
prom[i] = bitrev8(nd_table[0].macaddr.a[i]);
|
||||
checksum ^= prom[i];
|
||||
}
|
||||
prom[7] = 0xff - checksum;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user