From 846feac2ae1d1dab08c0048807ce802a256179fd Mon Sep 17 00:00:00 2001 From: Mark Cave-Ayland Date: Fri, 25 Jun 2021 07:53:58 +0100 Subject: hw/m68k/q800: fix PROM checksum and MAC address storage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Tested-by: Finn Thain Message-Id: <20210625065401.30170-8-mark.cave-ayland@ilande.co.uk> Signed-off-by: Philippe Mathieu-Daudé --- hw/m68k/q800.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'hw/m68k') diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index 491f283a17..6817c8b5d1 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -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; -- cgit v1.2.3