G5/970 emulation not complete enough for OSX ? Description of problem: Leopard image that boots on G4 does not boot on G5 Steps to reproduce: 1. Find preinstalled hdd image on Archive.org: MacOSLeopard.img 2. Try to boot it like above with -cpu 970, or 970FX 3. Observe early hang Additional information: ``` cpus[0] = 0x7f794b3e3040 0x7f794b3e5bc0 cpus[1] = 0x7f794afe3ec0 0x7f794afe6a40 Trying to write invalid spr 276 (0x114) at 00000000000b6634 Trying to read invalid spr 277 (0x115) at 00000000000b6638 Trying to read invalid spr 276 (0x114) at 00000000000b663c Trying to write invalid spr 277 (0x115) at 00000000000b6658 Trying to write invalid spr 276 (0x114) at 00000000000b665c Trying to read invalid spr 276 (0x114) at 00000000000b6660 Trying to write invalid spr 277 (0x115) at 00000000000b670c Trying to write invalid spr 276 (0x114) at 00000000000b6710 Trying to read invalid spr 276 (0x114) at 00000000000b6714 invalid/unsupported opcode: 00 - 00 - 00 - 00 (00000000) 0000000000000000 Trying to write invalid spr 304 (0x130) at 0000000000003e14 Trying to read invalid spr 304 (0x130) at 0000000000003e38 Trying to write invalid spr 304 (0x130) at 0000000000003e14 Trying to read invalid spr 304 (0x130) at 0000000000003e38 Trying to write invalid spr 304 (0x130) at 0000000000003e14 Trying to read invalid spr 304 (0x130) at 0000000000003e38 Trying to write invalid spr 304 (0x130) at 0000000000003e14 Trying to read invalid spr 304 (0x130) at 0000000000003e38 Trying to write invalid spr 304 (0x130) at 0000000000003e14 Trying to read invalid spr 304 (0x130) at 0000000000003e38 Trying to write invalid spr 304 (0x130) at 0000000000003e14 Trying to read invalid spr 304 (0x130) at 0000000000003e38 Trying to write invalid spr 304 (0x130) at 0000000000003e14 Trying to read invalid spr 304 (0x130) at 0000000000003e38 Trying to read invalid spr 304 (0x130) at 0000000000003e38 Trying to read invalid spr 304 (0x130) at 0000000000003e38 invalid/unsupported opcode: 00 - 00 - 00 - 00 (00000000) 0000000000000008 last lin repeats infinitely. ``` from my email to qemu-ppc list: SPR 304 was already in target/ppc/cpu_init.c but sadly after adding those it still dies early :( I looked at IBM PowerPC 970FX RISC Microprocessor 11.6 SCOM Facility but whole thing a bit more complex than pair of regs. ==== 11.6.1 Processor Core SCOM SPR Access Each processor (core) has two special purpose registers (SPRs) used to access the SCOM interface: SCOMC and SCOMD. SCOMC and SCOMD are both 64-bit read/write SPRs and are used for SCOM Control and SCOM Data respectively. The interface is implemented as a direct connection to the parallel-to-serial converter, which handles the arbitration between the core and service processor. 11.6.2 Operating System Protocol to Access SCOM SPRs In the PowerPC 970FX, SCOMC and SCOMD are complete operations. They do not require a software protocol in order to function properly except to disable external (asynchronous) interrupts. Software must check the error bits after performing an SCOMC to ensure that the command successfully completed. Table 11-14 Operating System Code to Access SCOM outlines a general software protocol for using these registers. ==== Low level asm init for OSX XNU kernel seems to live at https://github.com/apple-oss-distributions/xnu/blob/xnu-1228/osfmk/ppc/start.s