qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: OpenMPIC controller emulation in qemu ?


From: Andrew Randrianasulu
Subject: Re: OpenMPIC controller emulation in qemu ?
Date: Sun, 19 May 2024 19:11:17 +0300



On Sun, May 19, 2024 at 6:58 PM Andrew Randrianasulu <randrianasulu@gmail.com> wrote:


On Sun, May 19, 2024 at 6:38 PM Andrew Randrianasulu <randrianasulu@gmail.com> wrote:


On Sun, May 19, 2024 at 4:41 PM Andrew Randrianasulu <randrianasulu@gmail.com> wrote:


вс, 19 мая 2024 г., 15:19 BALATON Zoltan <balaton@eik.bme.hu>:
On Sun, 19 May 2024, Andrew Randrianasulu wrote:
> On Sun, May 19, 2024 at 1:46 PM BALATON Zoltan <balaton@eik.bme.hu> wrote:
>> On Sun, 19 May 2024, BALATON Zoltan wrote:
>>> On Sun, 19 May 2024, BALATON Zoltan wrote:
>>>> On Sun, 19 May 2024, Andrew Randrianasulu wrote:
>>>>> сб, 18 мая 2024 г., 23:33 BALATON Zoltan <balaton@eik.bme.hu>:
>>>>>
>>>>>> On Sat, 18 May 2024, Andrew Randrianasulu wrote:
>>>>>>> On Sat, May 18, 2024 at 11:14 PM BALATON Zoltan <balaton@eik.bme.hu>
>>>>>> wrote:
>>>>>>>
>>>>>>>> On Sat, 18 May 2024, Andrew Randrianasulu wrote:
>>>>>>>>> On Sat, May 18, 2024 at 10:24 PM BALATON Zoltan <
>> balaton@eik.bme.hu>
>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> On Sat, 18 May 2024, Andrew Randrianasulu wrote:
>>>>>>>>>>> Using attached patch I get this  new dmesg:
>>>>>>>>>>>
>>>>>>>>>>> Quiescing Open Firmware ...
>>>>>>>>>>>>> of_client_interface: quiesce
>>>>>>>>>>>>> of_client_interface return:
>>>>>>>>>>> Booting Linux via __start() @ 0x01000000 ...
>>>>>>>>>>> Hello World !
>>>>>>>>>>> [    0.000000] Total memory = 512MB; using 1024kB for hash table
>>>>>>>>>>> [    0.000000] Activating Kernel Userspace Execution Prevention
>>>>>>>>>>> [    0.000000] Activating Kernel Userspace Access Protection
>>>>>>>>>>> [    0.000000] Linux version 5.13.12_1 (voidlinux@voidlinux)
>> (gcc
>>>>>>>> (GCC)
>>>>>>>>>> 10.2.1 20201203, GNU ld (GNU Binutils) 2.35.1) #1 SMP Thu Aug 19
>>>>>>>> 14:12:26
>>>>>>>>>> UTC 2021
>>>>>>>>>>> [    0.000000] ioremap() called early from
>>>>>>>> pmac_feature_init+0xd4/0xad4.
>>>>>>>>>> Use early_ioremap() instead
>>>>>>>>>>> [    0.000000] Found UniNorth memory controller & host bridge @
>>>>>>>>>> 0xf8000000 revision: 0x07
>>>>>>>>>>> [    0.000000] Mapped at 0xf73c0000
>>>>>>>>>>> [    0.000000] ioremap() called early from
>>>>>> probe_one_macio+0x17c/0x2b4.
>>>>>>>>>> Use early_ioremap() instead
>>>>>>>>>>> [    0.000000] Found a Keylargo mac-io controller, rev: 0,
>> mapped at
>>>>>>>>>> 0x(ptrval)
>>>
>>> So the MACIO_OUT8 macro pokes macio->base and it's not listed here
>> unlike in
>>> the log from real machine so not sure it's writing the right address.
>> You can
>>> check witn info mtree in QEMU monitor where things appear but may need
>>> another kernel which logs thinks similar to the log you got from real
>>> machine. Does the finnix kernel work better with -append
>> debuglevel=<some
>>> number here but I don't know what's a good number". Maybe can also
>> enable
>>> openpic and macio traces to see if their regs are accessed. Something
>> like
>>> QEMU option -trace enable="macio*" maybe?
>>
>> The finnix kernel prints an address here which seems to match where mac-io
>> is mapped at. I believe the writes from smp_core99_kick_cpu() should end
>> up in QEMU's macio/gpio emulation in qemu/hw/misc/macio/gpio.c. You could
>> verify that with -trace eneable="macio*".
>
>
> It prints something like
>
> macio_nvram_read read addr=0x099e val=0x00
> macio_nvram_read read addr=0x099f val=0x00
> macio_nvram_read read addr=0x099f val=0x00
> macio_nvram_read read addr=0x09a0 val=0x00
> macio_nvram_read read addr=0x09a0 val=0x00
> macio_nvram_read read addr=0x09a1 val=0x00
> macio_nvram_read read addr=0x09a1 val=0x00
> macio_nvram_read read addr=0x09a2 val=0x00
> macio_nvram_read read addr=0x09a2 val=0x00
> macio_nvram_read read addr=0x09a3 val=0x00
> macio_nvram_read read addr=0x09a3 val=0x00
> macio_nvram_read read addr=0x09a4 val=0x00
> macio_nvram_read read addr=0x09a4 val=0x00
> macio_nvram_read read addr=0x09a5 val=0x00[    0.000000] nvram: OF
> partition at 0xffffffff
> [    0.000000] nvram: XP partition at 0xffffffff
> [    0.000000] nvram: NR partition at 0xffffffff
>
> but I can't see it poking around smp init?
>
> [    0.144619] PowerMac SMP probe found 2 cpus
> [    0.147225] Processor timebase sync using GPIO 0x73
> [    0.147847] mpic: requesting IPIs...
> [    0.153859] CPU0: L2CR is 0
> [    0.169098] rcu: Hierarchical SRCU implementation.
> [    0.188753] smp: Bringing up secondary CPUs ...
> smp_core99_kick_cpu
> smp_core99_kick_cpu done
> [    5.230919] Processor 1 is stuck.
> [    5.238874] smp: Brought up 1 node, 1 CPU
>
> probably more tracing need to be added to macio.c ?
>
> Any ideas where to look for examples?

You can just add fprintf(stderr, ...) for debugging wherever you want but
in the same file there are already traces


well, I see timer traces, but for example if I want to look at writings to register not yet defined there - should I look at adding new static const MemoryRegionOps { } with my (trace only) implementation ?




so it should log if the gpio
region is accessed but maybe it does not have the right macio base for
some reason. If this is still the void Linux kernel, try with the Finnix
one, at least that seemed to find the macio base correctly.

well, this version of finnix was apparently  compiled for non-smp? But I also have debian 8 ppc  ....


Also add -d
unimp,guest_errors then if it accesses wrong address you may see logs
about that. (Yes, this may be a lot of logs, redirect to file so you can
analyse it afterwards.) If you need more traces look in trace-events in
the dir where the source is for a list of available trace events. See
also: https://www.qemu.org/docs/master/devel/tracing.html

> I also noticed that L2CR reg is 0 - shouldn't it represent some enabled L2
> cache on specifically PowerMacs ?

As QEMU does not emulate caches it probably does not matter (unless Linux
wants this non-0, but if it does not care this should not be a problem).

I noticed code for dealing with caches in Linux's smp.c ... 

I also tried to remove "powered-off" we just added  property while leaving secondary cpu reset and this hanged at very beginning before openfirmware start. This leaves me with question may be Linux do not know how to power-on secondary cpus on Powermacs. But yeah, hopefully it just missing gpio lines ... right now in gpio.c it only says about handling gpio 1/9 (9 being NMI)

Also it has this comment:

* Note that we probably need to get access to the MPIC config to
     * decode polarity since qemu always use "raise" regardless.
     *
     * For now, we hard wire known GPIOs
     */

but I hope for testing just adding more cases like already there will be enough.


What's missing now is the Keylargo macio gpio lines to reset CPUs (after
that it probably will be interrupt routings that may need to be figured
out and fixed).


yeah, right now while finnix-110 cd starts up without openfirmware crashing it can't find itself and keyboard not working so I can't type cat /proc/interrupts :)

Just for experience I tried netbsd-10 macppc ISO

/dev/shm/qemu-9.0.0/build/qemu-system-ppc -m 1024 -M mac99,via=pmu -smp 1  -cdrom ~/ISO/NetBSD-10.0-macppc.iso -bios /dev/shm/openbios-qemu.elf -boot d -prom-env 'boot-device=cd:,ofwboot.xcf /netbsd.macppc' -nographic        

====

>> 0x00770361  02 00 60 10 00 00 00 00 80 00 00 00 00 00 00 00  ..`.............
>> 0x00770371  00 08 00 00 __ __ __ __ __ __ __ __ __ __ __ __  ....
[   1.0000000] Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
[   1.0000000]     2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
[   1.0000000]     2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
[   1.0000000]     2024
[   1.0000000]     The NetBSD Foundation, Inc.  All rights reserved.
[   1.0000000] Copyright (c) 1982, 1986, 1989, 1991, 1993
[   1.0000000]     The Regents of the University of California.  All rights reserved.

[   1.0000000] NetBSD 10.0 (INSTALL) #0: Thu Mar 28 08:33:33 UTC 2024
[   1.0000000]  mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/macppc/compile/INSTALL
[   1.0000000] total memory = 1024 MB
[   1.0000000] oea_startup: failed to allocate DEAD ZONE: error=12
[   1.0000000] avail memory = 978 MB
>> finddevice("/openprom") = [   1.0000000] trap: kernel read DSI trap @ 0x3fc5a7a0 by 0xfff0bf24 (DSISR 0x40000000, err=14), lr 0xfff0bf20
[   1.0000000] panic: trap
[   1.0000000] trap: pid 0.0 (system): kernel ALI trap @ 0x32 by 0x117680 (DSISR 0x40000140)
[   1.0000000] Skipping crash dump on recursive panic
[   1.0000000] panic: trap
[   1.0000000] rebooting

[   1.0000000] trap: kernel read DSI trap @ 0x3fee2000 by 0x39ef80 (DSISR 0x40000000, err=14), lr 0x104fb4
[   1.0000000] Skipping crash dump on recursive panic
[   1.0000000] panic: trap
[   1.0000000] rebooting

{repeats a lot}

There is some guide about booting OpenBSD, so I'll try this too



and openBSD dies like this (even on mainline qemu/openfirmware!):

bash-5.1$ qemu-system-ppc -m 1024 -M mac99,via=pmu -smp 1  -cdrom ~/ISO/install75.iso -boot d -nographic
s>> et_property: NULL phandle

>> =============================================================
>> OpenBIOS 1.1 [Mar 7 2023 22:21]
>> Configuration device id QEMU version 1 machine id 1
>> CPUs: 1
>> Memory: 1024M
>> UUID: 00000000-0000-0000-0000-000000000000
>> CPU type PowerPC,G4
milliseconds isn't unique.
Welcome to OpenBIOS v1.1 built on Mar 7 2023 22:21
Trying cd:,\\:tbxi...
>> switching to new context:
>> OpenBSD/macppc BOOT 1.11
boot>
cannot open /pci@f2000000/mac-io@c/ata-3@21000/cdrom@0:/etc/random.seed: No such file or directory
booting /pci@f2000000/mac-io@c/ata-3@21000/cdrom@0:/7.5/macppc/bsd.rd: 8291868+392748 [85+177088+166754]=0x0
string [/cdrom@0:/7.5/macppc/bsd.rd] not found
Warning: boot device unrecognized: /pci@f2000000/mac-io@c/ata-3@21000/cdrom@0:/7.5/macppc/bsd.rd
Copyright (c) 1982, 1986, 1989, 1991, 1993
     The Regents of the University of California.  All rights reserved.
Copyright (c) 1995-2024 OpenBSD. All rights reserved.  https://www.OpenBSD.org

OpenBSD 7.5-current (RAMDISK) #227: Sat May 18 03:29:09 MDT 2024
    deraadt@macppc.openbsd.org:/usr/src/sys/arch/macppc/compile/RAMDISK
real mem = 1073741824 (1024MB)
avail mem = 1015853056 (968MB)
random: boothowto does not indicate good seed
mainbus0 at root: model PowerMac3,1
cpu0 at mainbus0: 7400 (Revision 0x209): 900 MHz: L2 cache not enabled
mem at mainbus0 not configured
mpcpcibr0 at mainbus0 pci: uni-north
pci0 at mpcpcibr0 bus 0
macobio0 at pci0 dev 12 function 0 "Apple Keylargo" rev 0x00
macgpio0 at macobio0 offset 0x50
macgpio1 at macgpio0 offset 0x9: irq 47
"programmer-switch" at macgpio0 not configured
adb0 at macobio0 offset 0x16000
zs0 at macobio0 offset 0x13000: irq 37,36
zstty0 at zs0 channel 0: console
zstty1 at zs0 channel 1
"escc-legacy" at macobio0 offset 0x12000 not configured
wdc0 at macobio0 offset 0x20000 irq 13: DMA
wdc1 at macobio0 offset 0x21000 irq 14: DMA
atapiscsi0 at wdc1 channel 0 drive 0
scsibus0 at atapiscsi0: 2 targets
cd0 at scsibus0 targ 0 lun 0: <QEMU, QEMU DVD-ROM, 2.5+> removable
cd0(wdc1:0:0): using BIOS timings, DMA mode 2
openpic0 at macobio0 offset 0x40000: version 0x0 feature 3f0002 LE
ohci0 at pci0 dev 13 function 0 "Apple Intrepid USB" rev 0x00: irq 28, version 1.0, legacy support
: SMM does not respond, will reset
qemu-system-ppc: openpic_iack: bad raised IRQ 37 ctpr 12 ivpr 0x40470025
qemu-system-ppc: openpic_iack: bad raised IRQ 47 ctpr 12 ivpr 0x4047002f

and with our hacked qemu/of it surprizingly goes back into OF prompt o>O

/dev/shm/qemu-9.0.0/build/qemu-system-ppc -m 1024 -M mac99,via=pmu -smp 2  -cdrom ~/ISO/install75.iso -bios /dev/shm/openbios-qemu.elf -boot d -nographic

>> finddevice("/aliases") = 0xfff56e44
>> getprop(0xfff56e44, "/pci@f2000000/mac-io@c/ata-3@21000/cdrom@0", 0x00038b5c, 256) = -1
>> finddevice("/pci@f2000000/mac-io@c/ata-3@21000/cdrom@0") = 0xfff65514
>> getprop(0xfff65514, "name", 0x3fde7694, 512) = 6
>> 0x3fde7694  63 64 72 6f 6d 00 __ __ __ __ __ __ __ __ __ __  cdrom.
>> getprop(0xfff65514, "device_type", 0x3fde7694, 512) = 6
>> 0x3fde7694  62 6c 6f 63 6b 00 __ __ __ __ __ __ __ __ __ __  block.
>> open("/pci@f2000000/mac-io@c/ata-3@21000/cdrom@0:0") = 0x3fc5b8ac
>> of_client_interface: call-method 00033c1a 3fc5b8ac 00010000
>> call-method dma-alloc ([3] -- [2])
>> handle_calls return: 00000000 3fd10000
>> of_client_interface: call-method 00033aee 3fc5b8ac 00010000 3fd10000
>> call-method dma-free ([4] -- [1])
>> handle_calls return: 00000000
>> close(0x3fc5b8ac)
cannot open /pci@f2000000/mac-io@c/ata-3@21000/cdrom@0:/etc/random.seed: No such file or directory
booting /pci@f2000000/mac-io@c/ata-3@21000/cdrom@0:/7.5/macppc/bsd.rd: >> finddevice("/aliases") = 0xfff56e44
>> getprop(0xfff56e44, "/pci@f2000000/mac-io@c/ata-3@21000/cdrom@0", 0x00038b5c, 256) = -1
>> finddevice("/pci@f2000000/mac-io@c/ata-3@21000/cdrom@0") = 0xfff65514
>> getprop(0xfff65514, "name", 0x3fde7ae4, 512) = 6
>> 0x3fde7ae4  63 64 72 6f 6d 00 __ __ __ __ __ __ __ __ __ __  cdrom.
>> getprop(0xfff65514, "device_type", 0x3fde7ae4, 512) = 6
>> 0x3fde7ae4  62 6c 6f 63 6b 00 __ __ __ __ __ __ __ __ __ __  block.
>> open("/pci@f2000000/mac-io@c/ata-3@21000/cdrom@0:0") = 0x3fc5babc
>> of_client_interface: call-method 00033c1a 3fc5babc 00010000
>> call-method dma-alloc ([3] -- [2])
>> handle_calls return: 00000000 3fd20000
>> claim(0x00000000, 8192, 4096) = 0x3fef9000
>> claim(0x00000000, 8192, 4096) = 0x3fef7000
>> claim(0x00000000, 36864, 4096) = 0x3feee000
>> claim(0x00000000, 4096, 4096) = 0x3feed000
8291868+392748>> claim(0x00000000, 4096, 4096) = 0x3feec000
 [85+177088+166754]=0x0
>> of_client_interface: call-method 00033aee 3fc5babc 00010000 3fd20000
>> call-method dma-free ([4] -- [1])
>> handle_calls return: 00000000
>> close(0x3fc5babc)
>> release(0x0099e000, 5644288)
>> finddevice("/chosen") = 0xfff57108
>> getprop(0xfff57108, "stdin", 0x00948448, 4) = 4
>> 0x00948448  3f c5 ab 70 __ __ __ __ __ __ __ __ __ __ __ __  ?Е«p
>> getprop(0xfff57108, "stdout", 0x00948448, 4) = 4
>> 0x00948448  3f c5 aa 64 __ __ __ __ __ __ __ __ __ __ __ __  ?ЕЄd
>> finddevice("/memory") = 0xfff5fc8c
>> parent(0xfff5fc8c) = 0xfff56d28
>> getprop(0xfff56d28, "#address-cells", 0x00948448, 4) = 4
>> 0x00948448  00 00 00 01 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff56d28, "#size-cells", 0x00948448, 4) = 4
>> 0x00948448  00 00 00 01 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff5fc8c, "reg", 0x00948448, 256) = 8
>> 0x00948448  00 00 00 00 40 00 00 00 __ __ __ __ __ __ __ __  ....@...
>> getprop(0xfff5fc8c, "available", 0x00948448, 256) = 40
>> 0x00948448  00 00 40 00 00 01 c0 00 00 03 9f e0 00 0c 60 20  ..@...А....а..`
>> 0x00948458  01 00 00 00 03 00 00 00 04 80 00 00 3b 45 80 00  ............;E..
>> 0x00948468  3f e1 00 00 00 0d c0 00 __ __ __ __ __ __ __ __  ?б....А.
>> getprop(0xfff57108, "mmu", 0x00948448, 4) = 4
>> 0x00948448  3f c5 a7 50 __ __ __ __ __ __ __ __ __ __ __ __  ?Е§P
>> instance-to-package(0x3fc5a750) = 0xfff6be5c
>> getproplen(0xfff6be5c, "translations") = 0x000000e0
>> getprop(0xfff6be5c, "translations", 0x00948448, 512) = 224
>> 0x00948448  00 02 00 00 00 01 a0 00 00 02 00 00 00 00 00 02  ...... .........
>> 0x00948458  00 10 00 00 00 89 e0 00 00 10 00 00 00 00 00 02  ......а.........
>> 0x00948468  00 f0 00 00 00 10 00 00 00 f0 00 00 00 00 00 02  .р.......р......
>> 0x00948478  04 00 00 00 00 80 00 00 04 00 00 00 00 00 00 00  ................
>> 0x00948488  3f c5 80 00 00 1b 80 00 3f c5 80 00 00 00 00 00  ?Е......?Е......
>> 0x00948498  3f ee c0 00 00 00 10 00 3f ee c0 00 00 00 00 02  ?оА.....?оА.....
>> 0x009484a8  3f ee d0 00 00 00 10 00 3f ee d0 00 00 00 00 02  ?оР.....?оР.....
>> 0x009484b8  3f ee e0 00 00 00 90 00 3f ee e0 00 00 00 00 02  ?оа.....?оа.....
>> 0x009484c8  3f ef 70 00 00 00 20 00 3f ef 70 00 00 00 00 02  ?пp... .?пp.....
>> 0x009484d8  3f ef 90 00 00 00 20 00 3f ef 90 00 00 00 00 02  ?п.... .?п......
>> 0x009484e8  3f ef b0 00 00 00 30 00 3f ef b0 00 00 00 00 02  ?п°...0.?п°.....
>> 0x009484f8  3f ef e0 00 00 00 10 00 3f ef e0 00 00 00 00 02  ?па.....?па.....
>> 0x00948508  3f ef f0 00 00 00 10 00 3f ef f0 00 00 00 00 02  ?пр.....?пр.....
>> 0x00948518  ff f0 00 00 00 10 00 00 3f f0 00 00 00 00 00 00  яр......?р......
string [/cdrom@0:/7.5/macppc/bsd.rd] not found
Warning: boot device unrecognized: /pci@f2000000/mac-io@c/ata-3@21000/cdrom@0:/7.5/macppc/bsd.rd
>> instance-to-package(0x3fc5aa64) = 0xfff64288
>> getprop(0xfff64288, "device_type", 0x00948448, 32) = 7
>> 0x00948448  73 65 72 69 61 6c 00 __ __ __ __ __ __ __ __ __  serial.
>> finddevice("/chosen") = 0xfff57108
>> getprop(0xfff57108, "stdin", 0x00948448, 4) = 4
>> 0x00948448  3f c5 ab 70 __ __ __ __ __ __ __ __ __ __ __ __  ?Е«p
>> getprop(0xfff57108, "stdout", 0x00948448, 4) = 4
>> 0x00948448  3f c5 aa 64 __ __ __ __ __ __ __ __ __ __ __ __  ?ЕЄd
>> instance-to-package(0x3fc5ab70) = 0xfff64288
>> getprop(0xfff64288, "device_type", 0x00948448, 16) = 7
>> 0x00948448  73 65 72 69 61 6c 00 __ __ __ __ __ __ __ __ __  serial.
>> getprop(0xfff64288, "name", 0x00948448, 16) = 5
>> 0x00948448  63 68 2d 61 00 __ __ __ __ __ __ __ __ __ __ __  ch-a.
>> instance-to-package(0x3fc5ab70) = 0xfff64288
>> getprop(0xfff64288, "name", 0x00948448, 16) = 5
>> 0x00948448  63 68 2d 61 00 __ __ __ __ __ __ __ __ __ __ __  ch-a.
>> getprop(0xfff64288, "reg", 0x00948448, 20) = 40
>> 0x00948448  00 01 30 20 00 00 00 01 00 01 30 30 00 00 00 01  ..0 ......00....
>> 0x00948458  00 01 30 50 __ __ __ __ __ __ __ __ __ __ __ __  ..0P
>> parent(0xfff64288) = 0xfff64168
>> parent(0xfff64168) = 0xfff633a8
>> getprop(0xfff633a8, "assigned-addresses", 0x00948448, 20) = 20
>> 0x00948448  02 00 60 10 00 00 00 00 80 00 00 00 00 00 00 00  ..`.............
>> 0x00948458  00 08 00 00 __ __ __ __ __ __ __ __ __ __ __ __  ....
Copyright (c) 1982, 1986, 1989, 1991, 1993
     The Regents of the University of California.  All rights reserved.
Copyright (c) 1995-2024 OpenBSD. All rights reserved.  https://www.OpenBSD.org

OpenBSD 7.5-current (RAMDISK) #227: Sat May 18 03:29:09 MDT 2024
    deraadt@macppc.openbsd.org:/usr/src/sys/arch/macppc/compile/RAMDISK
real mem = 1073741824 (1024MB)
avail mem = 1015853056 (968MB)
random: boothowto does not indicate good seed
mainbus0 at root>> peer(0x00000000) = 0xfff56d28
>> getprop(0xfff56d28, "model", 0x00948448, 64) = 12
>> 0x00948448  50 6f 77 65 72 4d 61 63 33 2c 31 00 __ __ __ __  PowerMac3,1.
>> getprop(0xfff56d28, "compatible", 0x00948448, 64) = 45
>> 0x00948448  50 6f 77 65 72 4d 61 63 33 2c 31 00 4d 61 63 52  PowerMac3,1.MacR
>> 0x00948458  49 53 43 00 4d 61 63 52 49 53 43 32 00 50 6f 77  ISC.MacRISC2.Pow
>> 0x00948468  65 72 20 4d 61 63 69 6e 74 6f 73 68 00 __ __ __  er Macintosh.
: model PowerMac3,1
>> finddevice("/cpus") = 0xfff5fb8c
>> child(0xfff5fb8c) = 0xfff6be5c
>> getprop(0xfff6be5c, "reg", 0x00948448, 4) = 4
>> 0x00948448  00 00 00 00 __ __ __ __ __ __ __ __ __ __ __ __  ....
cpu0 at mainbus0: 7400 (Revision 0x209)>> peer(0x00000000) = 0xfff56d28
>> getprop(0xfff56d28, "device_type", 0x00948448, 32) = 8
>> 0x00948448  62 6f 6f 74 72 6f 6d 00 __ __ __ __ __ __ __ __  bootrom.
>> child(0xfff56d28) = 0xfff56e44
>> getprop(0xfff56e44, "device_type", 0x00948448, 32) = -1
>> child(0xfff56e44) = 0x00000000
>> peer(0xfff56e44) = 0xfff56ee8
>> getprop(0xfff56ee8, "device_type", 0x00948448, 32) = 8
>> 0x00948448  42 6f 6f 74 52 4f 4d 00 __ __ __ __ __ __ __ __  BootROM.
>> child(0xfff56ee8) = 0xfff5d110
>> getprop(0xfff5d110, "device_type", 0x00948448, 32) = -1
>> child(0xfff5d110) = 0x00000000
>> peer(0xfff5d110) = 0x00000000
>> parent(0xfff5d110) = 0xfff56ee8
>> peer(0xfff56ee8) = 0xfff57090
>> getprop(0xfff57090, "device_type", 0x00948448, 32) = -1
>> child(0xfff57090) = 0x00000000
>> peer(0xfff57090) = 0xfff57108
>> getprop(0xfff57108, "device_type", 0x00948448, 32) = -1
>> child(0xfff57108) = 0x00000000
>> peer(0xfff57108) = 0xfff571b8
>> getprop(0xfff571b8, "device_type", 0x00948448, 32) = -1
>> child(0xfff571b8) = 0xfff5725c
>> getprop(0xfff5725c, "device_type", 0x00948448, 32) = -1
>> child(0xfff5725c) = 0x00000000
>> peer(0xfff5725c) = 0x00000000
>> parent(0xfff5725c) = 0xfff571b8
>> peer(0xfff571b8) = 0xfff5ce1c
>> getprop(0xfff5ce1c, "device_type", 0x00948448, 32) = -1
>> child(0xfff5ce1c) = 0xfff5e000
>> getprop(0xfff5e000, "device_type", 0x00948448, 32) = -1
>> child(0xfff5e000) = 0x00000000
>> peer(0xfff5e000) = 0xfff5e140
>> getprop(0xfff5e140, "device_type", 0x00948448, 32) = -1
>> child(0xfff5e140) = 0x00000000
>> peer(0xfff5e140) = 0xfff5fe64
>> getprop(0xfff5fe64, "device_type", 0x00948448, 32) = -1
>> child(0xfff5fe64) = 0x00000000
>> peer(0xfff5fe64) = 0xfff60ed0
>> getprop(0xfff60ed0, "device_type", 0x00948448, 32) = -1
>> child(0xfff60ed0) = 0x00000000
>> peer(0xfff60ed0) = 0xfff61224
>> getprop(0xfff61224, "device_type", 0x00948448, 32) = -1
>> child(0xfff61224) = 0x00000000
>> peer(0xfff61224) = 0xfff615b0
>> getprop(0xfff615b0, "device_type", 0x00948448, 32) = -1
>> child(0xfff615b0) = 0x00000000
>> peer(0xfff615b0) = 0xfff61938
>> getprop(0xfff61938, "device_type", 0x00948448, 32) = -1
>> child(0xfff61938) = 0x00000000
>> peer(0xfff61938) = 0xfff61c5c
>> getprop(0xfff61c5c, "device_type", 0x00948448, 32) = -1
>> child(0xfff61c5c) = 0x00000000
>> peer(0xfff61c5c) = 0xfff61f80
>> getprop(0xfff61f80, "device_type", 0x00948448, 32) = -1
>> child(0xfff61f80) = 0x00000000
>> peer(0xfff61f80) = 0xfff622a4
>> getprop(0xfff622a4, "device_type", 0x00948448, 32) = -1
>> child(0xfff622a4) = 0x00000000
>> peer(0xfff622a4) = 0xfff62608
>> getprop(0xfff62608, "device_type", 0x00948448, 32) = -1
>> child(0xfff62608) = 0x00000000
>> peer(0xfff62608) = 0xfff62928
>> getprop(0xfff62928, "device_type", 0x00948448, 32) = -1
>> child(0xfff62928) = 0x00000000
>> peer(0xfff62928) = 0xfff629f4
>> getprop(0xfff629f4, "device_type", 0x00948448, 32) = -1
>> child(0xfff629f4) = 0x00000000
>> peer(0xfff629f4) = 0xfff62abc
>> getprop(0xfff62abc, "device_type", 0x00948448, 32) = -1
>> child(0xfff62abc) = 0x00000000
>> peer(0xfff62abc) = 0x00000000
>> parent(0xfff62abc) = 0xfff5ce1c
>> peer(0xfff5ce1c) = 0xfff5fb8c
>> getprop(0xfff5fb8c, "device_type", 0x00948448, 32) = -1
>> child(0xfff5fb8c) = 0xfff6be5c
>> getprop(0xfff6be5c, "device_type", 0x00948448, 32) = 4
>> 0x00948448  63 70 75 00 __ __ __ __ __ __ __ __ __ __ __ __  cpu.
>> getprop(0xfff6be5c, "clock-frequency", 0x00948448, 4) = 4
>> 0x00948448  35 a4 e9 00 __ __ __ __ __ __ __ __ __ __ __ __  5¤й.
>> getprop(0xfff6be5c, "timebase-frequency", 0x00948448, 4) = 4
>> 0x00948448  01 7d 78 40 __ __ __ __ __ __ __ __ __ __ __ __  .}x@
: 900 MHz: L2 cache not enabled
>> peer(0xfff6be5c) = 0xfff6c110
>> getprop(0xfff6c110, "reg", 0x00948448, 4) = 4
>> 0x00948448  00 00 00 01 __ __ __ __ __ __ __ __ __ __ __ __  ....
cpu at mainbus0 not configured
>> peer(0xfff6c110) = 0x00000000
>> finddevice("/hammerhead") = 0xffffffff
>> peer(0x00000000) = 0xfff56d28
>> child(0xfff56d28) = 0xfff56e44
>> getprop(0xfff56e44, "device_type", 0x00948448, 64) = -1
>> getprop(0xfff56e44, "name", 0x00948448, 64) = 8
>> 0x00948448  61 6c 69 61 73 65 73 00 __ __ __ __ __ __ __ __  aliases.
>> peer(0xfff56e44) = 0xfff56ee8
>> getprop(0xfff56ee8, "device_type", 0x00948448, 64) = 8
>> 0x00948448  42 6f 6f 74 52 4f 4d 00 __ __ __ __ __ __ __ __  BootROM.
>> peer(0xfff56ee8) = 0xfff57090
>> getprop(0xfff57090, "device_type", 0x00948448, 64) = -1
>> getprop(0xfff57090, "name", 0x00948448, 64) = 8
>> 0x00948448  6f 70 74 69 6f 6e 73 00 __ __ __ __ __ __ __ __  options.
>> peer(0xfff57090) = 0xfff57108
>> getprop(0xfff57108, "device_type", 0x00948448, 64) = -1
>> getprop(0xfff57108, "name", 0x00948448, 64) = 7
>> 0x00948448  63 68 6f 73 65 6e 00 __ __ __ __ __ __ __ __ __  chosen.
>> peer(0xfff57108) = 0xfff571b8
>> getprop(0xfff571b8, "device_type", 0x00948448, 64) = -1
>> getprop(0xfff571b8, "name", 0x00948448, 64) = 8
>> 0x00948448  62 75 69 6c 74 69 6e 00 __ __ __ __ __ __ __ __  builtin.
>> peer(0xfff571b8) = 0xfff5ce1c
>> getprop(0xfff5ce1c, "device_type", 0x00948448, 64) = -1
>> getprop(0xfff5ce1c, "name", 0x00948448, 64) = 9
>> 0x00948448  70 61 63 6b 61 67 65 73 00 __ __ __ __ __ __ __  packages.
>> peer(0xfff5ce1c) = 0xfff5fb8c
>> getprop(0xfff5fb8c, "device_type", 0x00948448, 64) = -1
>> getprop(0xfff5fb8c, "name", 0x00948448, 64) = 5
>> 0x00948448  63 70 75 73 00 __ __ __ __ __ __ __ __ __ __ __  cpus.
>> peer(0xfff5fb8c) = 0xfff5fc8c
>> getprop(0xfff5fc8c, "device_type", 0x00948448, 64) = 7
>> 0x00948448  6d 65 6d 6f 72 79 00 __ __ __ __ __ __ __ __ __  memory.
mem at mainbus0 not configured
>> peer(0xfff5fc8c) = 0xfff5fd54
>> getprop(0xfff5fd54, "device_type", 0x00948448, 64) = -1
>> getprop(0xfff5fd54, "name", 0x00948448, 64) = 4
>> 0x00948448  72 6f 6d 00 __ __ __ __ __ __ __ __ __ __ __ __  rom.
>> peer(0xfff5fd54) = 0xfff62be8
>> getprop(0xfff62be8, "device_type", 0x00948448, 64) = 6
>> 0x00948448  6e 76 72 61 6d 00 __ __ __ __ __ __ __ __ __ __  nvram.
>> peer(0xfff62be8) = 0xfff62e80
>> getprop(0xfff62e80, "device_type", 0x00948448, 64) = 4
>> 0x00948448  70 63 69 00 __ __ __ __ __ __ __ __ __ __ __ __  pci.
mpcpcibr0 at mainbus0>> getprop(0xfff62e80, "name", 0x00948448, 32) = 4
>> 0x00948448  70 63 69 00 __ __ __ __ __ __ __ __ __ __ __ __  pci.
 pci>> getprop(0xfff62e80, "compatible", 0x00948448, 32) = 10
>> 0x00948448  75 6e 69 2d 6e 6f 72 74 68 00 __ __ __ __ __ __  uni-north.
>> getprop(0xfff62e80, "ranges", 0x00948448, 128) = 48
>> 0x00948448  01 00 00 00 00 00 00 00 00 00 00 00 f2 00 00 00  ............т...
>> 0x00948458  00 00 00 00 00 80 00 00 02 00 00 00 00 00 00 00  ................
>> 0x00948468  80 00 00 00 80 00 00 00 00 00 00 00 10 00 00 00  ................
: uni-north
>> getprop(0xfff62e80, "bus-range", 0x00948448, 8) = 8
>> 0x00948448  00 00 00 00 00 00 00 00 __ __ __ __ __ __ __ __  ........
pci0 at mpcpcibr0 bus 0
>> getprop(0xfff62e80, "compatible", 0x00948448, 32) = 10
>> 0x00948448  75 6e 69 2d 6e 6f 72 74 68 00 __ __ __ __ __ __  uni-north.
>> child(0xfff62e80) = 0xfff633a8
>> getprop(0xfff633a8, "reg", 0x00948448, 20) = 40
>> 0x00948448  00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00  ..`.............
>> 0x00948458  00 00 00 00 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff633a8, "shasta-interrupt-sequencer", 0x00948448, 4) = -1
>> peer(0xfff633a8) = 0xfff65c00
>> getprop(0xfff65c00, "reg", 0x00948448, 20) = 40
>> 0x00948448  00 00 68 00 00 00 00 00 00 00 00 00 00 00 00 00  ..h.............
>> 0x00948458  00 00 00 00 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff65c00, "shasta-interrupt-sequencer", 0x00948448, 4) = -1
>> peer(0xfff65c00) = 0xfff660c8
>> getprop(0xfff660c8, "reg", 0x00948448, 20) = 60
>> 0x00948448  00 00 70 00 00 00 00 00 00 00 00 00 00 00 00 00  ..p.............
>> 0x00948458  00 00 00 00 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff660c8, "shasta-interrupt-sequencer", 0x00948448, 4) = -1
>> peer(0xfff660c8) = 0xfff6b69c
>> getprop(0xfff6b69c, "reg", 0x00948448, 20) = 40
>> 0x00948448  00 00 78 00 00 00 00 00 00 00 00 00 00 00 00 00  ..x.............
>> 0x00948458  00 00 00 00 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff6b69c, "shasta-interrupt-sequencer", 0x00948448, 4) = -1
>> peer(0xfff6b69c) = 0x00000000
>> getprop(0xfff62e80, "compatible", 0x00948448, 32) = 10
>> 0x00948448  75 6e 69 2d 6e 6f 72 74 68 00 __ __ __ __ __ __  uni-north.
>> child(0xfff62e80) = 0xfff633a8
>> getprop(0xfff633a8, "reg", 0x00948448, 20) = 40
>> 0x00948448  00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00  ..`.............
>> 0x00948458  00 00 00 00 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff633a8, "shasta-interrupt-sequencer", 0x00948448, 4) = -1
>> peer(0xfff633a8) = 0xfff65c00
>> getprop(0xfff65c00, "reg", 0x00948448, 20) = 40
>> 0x00948448  00 00 68 00 00 00 00 00 00 00 00 00 00 00 00 00  ..h.............
>> 0x00948458  00 00 00 00 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff65c00, "shasta-interrupt-sequencer", 0x00948448, 4) = -1
>> peer(0xfff65c00) = 0xfff660c8
>> getprop(0xfff660c8, "reg", 0x00948448, 20) = 60
>> 0x00948448  00 00 70 00 00 00 00 00 00 00 00 00 00 00 00 00  ..p.............
>> 0x00948458  00 00 00 00 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff660c8, "shasta-interrupt-sequencer", 0x00948448, 4) = -1
>> getprop(0xfff62e80, "compatible", 0x00948448, 32) = 10
>> 0x00948448  75 6e 69 2d 6e 6f 72 74 68 00 __ __ __ __ __ __  uni-north.
>> child(0xfff62e80) = 0xfff633a8
>> getprop(0xfff633a8, "reg", 0x00948448, 20) = 40
>> 0x00948448  00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00  ..`.............
>> 0x00948458  00 00 00 00 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff633a8, "shasta-interrupt-sequencer", 0x00948448, 4) = -1
macobio0 at pci0 dev 12 function 0 "Apple Keylargo" rev 0x00>> finddevice("mac-io") = 0xfff633a8
>> getprop(0xfff633a8, "assigned-addresses", 0x00948448, 80) = 20
>> 0x00948448  02 00 60 10 00 00 00 00 80 00 00 00 00 00 00 00  ..`.............
>> 0x00948458  00 08 00 00 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff633a8, "assigned-addresses", 0x00948448, 80) = 20
>> 0x00948448  02 00 60 10 00 00 00 00 80 00 00 00 00 00 00 00  ..`.............
>> 0x00948458  00 08 00 00 __ __ __ __ __ __ __ __ __ __ __ __  ....

>> child(0xfff633a8) = 0xfff63868
>> getprop(0xfff63868, "name", 0x00948448, 32) = 5
>> 0x00948448  67 70 69 6f 00 __ __ __ __ __ __ __ __ __ __ __  gpio.
>> getprop(0xfff63868, "reg", 0x00948448, 80) = 8
>> 0x00948448  00 00 00 50 00 00 00 30 __ __ __ __ __ __ __ __  ...P...0
>> getprop(0xfff63868, "AAPL,interrupts", 0x00948448, 32) = -1
>> getprop(0xfff63868, "interrupts", 0x00948448, 32) = -1
>> getprop(0xfff63868, "interrupt-parent", 0x00948448, 4) = -1
>> getprop(0xfff63868, "compatible", 0x00948448, 32) = 12
>> 0x00948448  6d 61 63 2d 69 6f 2d 67 70 69 6f 00 __ __ __ __  mac-io-gpio.
macgpio0 at macobio0 offset 0x50
>> child(0xfff63868) = 0xfff6398c
>> getprop(0xfff6398c, "name", 0x00948448, 32) = 13
>> 0x00948448  65 78 74 69 6e 74 2d 67 70 69 6f 31 00 __ __ __  extint-gpio1.
>> getprop(0xfff6398c, "reg", 0x00948448, 80) = 4
>> 0x00948448  00 00 00 09 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff6398c, "AAPL,interrupts", 0x00948448, 24) = -1
>> getprop(0xfff6398c, "interrupts", 0x00948448, 24) = 8
>> 0x00948448  00 00 00 2f 00 00 00 01 __ __ __ __ __ __ __ __  .../....
macgpio1 at macgpio0 offset 0x9: irq 47
>> peer(0xfff6398c) = 0xfff63a78
>> getprop(0xfff63a78, "name", 0x00948448, 32) = 18
>> 0x00948448  70 72 6f 67 72 61 6d 6d 65 72 2d 73 77 69 74 63  programmer-switc
>> 0x00948458  68 00 __ __ __ __ __ __ __ __ __ __ __ __ __ __  h.
>> getprop(0xfff63a78, "reg", 0x00948448, 80) = -1
>> getprop(0xfff63a78, "AAPL,interrupts", 0x00948448, 24) = -1
>> getprop(0xfff63a78, "interrupts", 0x00948448, 24) = 8
>> 0x00948448  00 00 00 37 00 00 00 00 __ __ __ __ __ __ __ __  ...7....
"programmer-switch" at macgpio0 not configured
>> peer(0xfff63a78) = 0x00000000
>> peer(0xfff63868) = 0xfff63b50
>> getprop(0xfff63b50, "name", 0x00948448, 32) = 8
>> 0x00948448  76 69 61 2d 70 6d 75 00 __ __ __ __ __ __ __ __  via-pmu.
>> getprop(0xfff63b50, "reg", 0x00948448, 80) = 8
>> 0x00948448  00 01 60 00 00 00 20 00 __ __ __ __ __ __ __ __  ..`... .
>> getprop(0xfff63b50, "AAPL,interrupts", 0x00948448, 32) = -1
>> getprop(0xfff63b50, "interrupts", 0x00948448, 32) = 8
>> 0x00948448  00 00 00 19 00 00 00 01 __ __ __ __ __ __ __ __  ........
>> getprop(0xfff63b50, "interrupt-parent", 0x00948448, 4) = 4
>> 0x00948448  ff f6 59 b0 __ __ __ __ __ __ __ __ __ __ __ __  яцY°
>> getprop(0xfff63b50, "compatible", 0x00948448, 32) = 4
>> 0x00948448  70 6d 75 00 __ __ __ __ __ __ __ __ __ __ __ __  pmu.
adb0 at macobio0 offset 0x16000>> child(0xfff63b50) = 0xfff63d58
>> getprop(0xfff63d58, "name", 0x00948448, 32) = 4
>> 0x00948448  72 74 63 00 __ __ __ __ __ __ __ __ __ __ __ __  rtc.
>> peer(0xfff63d58) = 0xfff63f1c
>> getprop(0xfff63f1c, "name", 0x00948448, 32) = 10
>> 0x00948448  70 6f 77 65 72 2d 6d 67 74 00 __ __ __ __ __ __  power-mgt.
>> peer(0xfff63f1c) = 0x00000000

>> child(0xfff63b50) = 0xfff63d58
>> getprop(0xfff63d58, "name", 0x00948448, 32) = 4
>> 0x00948448  72 74 63 00 __ __ __ __ __ __ __ __ __ __ __ __  rtc.
>> peer(0xfff63d58) = 0xfff63f1c
>> getprop(0xfff63f1c, "name", 0x00948448, 32) = 10
>> 0x00948448  70 6f 77 65 72 2d 6d 67 74 00 __ __ __ __ __ __  power-mgt.
>> peer(0xfff63f1c) = 0x00000000
>> peer(0xfff63b50) = 0xfff64168
>> getprop(0xfff64168, "name", 0x00948448, 32) = 5
>> 0x00948448  65 73 63 63 00 __ __ __ __ __ __ __ __ __ __ __  escc.
>> getprop(0xfff64168, "reg", 0x00948448, 80) = 8
>> 0x00948448  00 01 30 00 00 00 10 00 __ __ __ __ __ __ __ __  ..0.....
>> getprop(0xfff64168, "AAPL,interrupts", 0x00948448, 32) = -1
>> getprop(0xfff64168, "interrupts", 0x00948448, 32) = -1
>> getprop(0xfff64168, "interrupt-parent", 0x00948448, 4) = -1
>> getprop(0xfff64168, "compatible", 0x00948448, 32) = 14
>> 0x00948448  65 73 63 63 00 43 48 52 50 2c 65 73 30 00 __ __  escc.CHRP,es0.
zs0 at macobio0 offset 0x13000>> child(0xfff64168) = 0xfff64288
>> getprop(0xfff64288, "AAPL,interrupts", 0x00948448, 12) = -1
>> getprop(0xfff64288, "interrupts", 0x00948448, 12) = 24
>> 0x00948448  00 00 00 25 00 00 00 01 00 00 00 04 __ __ __ __  ...%........
>> getprop(0xfff64288, "reg", 0x00948448, 64) = 40
>> 0x00948448  00 01 30 20 00 00 00 01 00 01 30 30 00 00 00 01  ..0 ......00....
>> 0x00948458  00 01 30 50 00 00 00 01 00 00 84 00 00 00 01 00  ..0P............
>> 0x00948468  00 00 85 00 00 00 01 00 __ __ __ __ __ __ __ __  ........
>> peer(0xfff64288) = 0xfff644e0
>> getprop(0xfff644e0, "AAPL,interrupts", 0x00948448, 12) = -1
>> getprop(0xfff644e0, "interrupts", 0x00948448, 12) = 24
>> 0x00948448  00 00 00 24 00 00 00 01 00 00 00 06 __ __ __ __  ...$........
>> getprop(0xfff644e0, "reg", 0x00948448, 64) = 40
>> 0x00948448  00 01 30 00 00 00 00 01 00 01 30 10 00 00 00 01  ..0.......0.....
>> 0x00948458  00 01 30 40 00 00 00 01 00 00 86 00 00 00 01 00  ..0@............
>> 0x00948468  00 00 87 00 00 00 01 00 __ __ __ __ __ __ __ __  ........
>> peer(0xfff644e0) = 0x00000000
: irq 37,36
zstty0 at zs0 channel 0: console
zstty1 at zs0 channel 1
>> peer(0xfff64168) = 0xfff647a8
>> getprop(0xfff647a8, "name", 0x00948448, 32) = 12
>> 0x00948448  65 73 63 63 2d 6c 65 67 61 63 79 00 __ __ __ __  escc-legacy.
>> getprop(0xfff647a8, "reg", 0x00948448, 80) = 8
>> 0x00948448  00 01 20 00 00 00 10 00 __ __ __ __ __ __ __ __  .. .....
>> getprop(0xfff647a8, "AAPL,interrupts", 0x00948448, 32) = -1
>> getprop(0xfff647a8, "interrupts", 0x00948448, 32) = -1
>> getprop(0xfff647a8, "interrupt-parent", 0x00948448, 4) = -1
>> getprop(0xfff647a8, "compatible", 0x00948448, 32) = 9
>> 0x00948448  63 68 72 70 2c 65 73 31 00 __ __ __ __ __ __ __  chrp,es1.
"escc-legacy" at macobio0 offset 0x12000 not configured
>> peer(0xfff647a8) = 0xfff64d74
>> getprop(0xfff64d74, "name", 0x00948448, 32) = 6
>> 0x00948448  61 74 61 2d 33 00 __ __ __ __ __ __ __ __ __ __  ata-3.
>> getprop(0xfff64d74, "reg", 0x00948448, 80) = 16
>> 0x00948448  00 02 00 00 00 00 10 00 00 00 8b 00 00 00 02 00  ................
>> getprop(0xfff64d74, "AAPL,interrupts", 0x00948448, 32) = -1
>> getprop(0xfff64d74, "interrupts", 0x00948448, 32) = 16
>> 0x00948448  00 00 00 0d 00 00 00 01 00 00 00 02 00 00 00 00  ................
>> getprop(0xfff64d74, "interrupt-parent", 0x00948448, 4) = 4
>> 0x00948448  ff f6 59 b0 __ __ __ __ __ __ __ __ __ __ __ __  яцY°
wdc0 at macobio0 offset 0x20000 irq 13: DMA
>> peer(0xfff64d74) = 0xfff65144
>> getprop(0xfff65144, "name", 0x00948448, 32) = 6
>> 0x00948448  61 74 61 2d 33 00 __ __ __ __ __ __ __ __ __ __  ata-3.
>> getprop(0xfff65144, "reg", 0x00948448, 80) = 16
>> 0x00948448  00 02 10 00 00 00 10 00 00 00 8d 00 00 00 02 00  ................
>> getprop(0xfff65144, "AAPL,interrupts", 0x00948448, 32) = -1
>> getprop(0xfff65144, "interrupts", 0x00948448, 32) = 16
>> 0x00948448  00 00 00 0e 00 00 00 01 00 00 00 03 00 00 00 00  ................
>> getprop(0xfff65144, "interrupt-parent", 0x00948448, 4) = 4
>> 0x00948448  ff f6 59 b0 __ __ __ __ __ __ __ __ __ __ __ __  яцY°
wdc1 at macobio0 offset 0x21000 irq 14: DMA
atapiscsi0 at wdc1 channel 0 drive 0
scsibus0 at atapiscsi0: 2 targets
cd0 at scsibus0 targ 0 lun 0: <QEMU, QEMU DVD-ROM, 2.5+> removable
cd0(wdc1:0:0): using BIOS timings, DMA mode 2
>> peer(0xfff65144) = 0xfff659b0
>> getprop(0xfff659b0, "name", 0x00948448, 32) = 21
>> 0x00948448  69 6e 74 65 72 72 75 70 74 2d 63 6f 6e 74 72 6f  interrupt-contro
>> 0x00948458  6c 6c 65 72 00 __ __ __ __ __ __ __ __ __ __ __  ller.
>> getprop(0xfff659b0, "reg", 0x00948448, 80) = 8
>> 0x00948448  00 04 00 00 00 04 00 00 __ __ __ __ __ __ __ __  ........
>> getprop(0xfff659b0, "AAPL,interrupts", 0x00948448, 32) = -1
>> getprop(0xfff659b0, "interrupts", 0x00948448, 32) = -1
>> getprop(0xfff659b0, "device_type", 0x00948448, 40) = 9
>> 0x00948448  6f 70 65 6e 2d 70 69 63 00 __ __ __ __ __ __ __  open-pic.
>> getprop(0xfff659b0, "interrupt-parent", 0x00948448, 4) = -1
>> getprop(0xfff659b0, "device_type", 0x00948448, 40) = 9
>> 0x00948448  6f 70 65 6e 2d 70 69 63 00 __ __ __ __ __ __ __  open-pic.
>> getprop(0xfff659b0, "compatible", 0x00948448, 32) = 14
>> 0x00948448  63 68 72 70 2c 6f 70 65 6e 2d 70 69 63 00 __ __  chrp,open-pic.
openpic0 at macobio0 offset 0x40000>> getprop(0xfff659b0, "big-endian", 0x00948448, 4) = -1
: version 0x0 feature 3f0102 LE
>> peer(0xfff659b0) = 0x00000000
>> peer(0xfff633a8) = 0xfff65c00
>> getprop(0xfff65c00, "reg", 0x00948448, 20) = 40
>> 0x00948448  00 00 68 00 00 00 00 00 00 00 00 00 00 00 00 00  ..h.............
>> 0x00948458  00 00 00 00 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff65c00, "shasta-interrupt-sequencer", 0x00948448, 4) = -1
ohci0 at pci0 dev 13 function 0 "Apple Intrepid USB" rev 0x00>> getprop(0xfff65c00, "reg", 0x00948448, 20) = 40
>> 0x00948448  00 00 68 00 00 00 00 00 00 00 00 00 00 00 00 00  ..h.............
>> 0x00948458  00 00 00 00 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff65c00, "AAPL,interrupts", 0x00948448, 16) = -1
>> getprop(0xfff65c00, "interrupts", 0x00948448, 16) = 4
>> 0x00948448  00 00 00 01 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> parent(0xfff65c00) = 0xfff62e80
>> getprop(0xfff62e80, "interrupt-map", 0x00948448, 576) = 56
>> 0x00948448  00 00 68 00 00 00 00 00 00 00 00 00 00 00 00 01  ..h.............
>> 0x00948458  ff f6 59 b0 00 00 00 1c 00 00 00 01 00 00 78 00  яцY°..........x.
>> 0x00948468  00 00 00 00 00 00 00 00 00 00 00 01 ff f6 59 b0  ............яцY°
>> 0x00948478  00 00 00 1e 00 00 00 01 __ __ __ __ __ __ __ __  ........
>> getprop(0xfff62e80, "interrupt-map-mask", 0x00948448, 32) = 16
>> 0x00948448  00 ff f8 00 00 00 00 00 00 00 00 00 00 00 00 07  .яш.............
>> getprop(0xfff62e80, "#address-cells", 0x00948448, 4) = 4
>> 0x00948448  00 00 00 03 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff62e80, "#interrupt-cells", 0x00948448, 4) = 4
>> 0x00948448  00 00 00 01 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff659b0, "interrupt-controller", 0x00948448, 20) = 0
: irq 28, version 1.0, legacy support
: SMM does not respond, will reset
>> peer(0xfff65c00) = 0xfff660c8
>> getprop(0xfff660c8, "reg", 0x00948448, 20) = 60
>> 0x00948448  00 00 70 00 00 00 00 00 00 00 00 00 00 00 00 00  ..p.............
>> 0x00948458  00 00 00 00 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff660c8, "shasta-interrupt-sequencer", 0x00948448, 4) = -1
"Bochs VGA" rev 0x02 at pci0 dev 14 function 0 not configured
>> peer(0xfff660c8) = 0xfff6b69c
>> getprop(0xfff6b69c, "reg", 0x00948448, 20) = 40
>> 0x00948448  00 00 78 00 00 00 00 00 00 00 00 00 00 00 00 00  ..x.............
>> 0x00948458  00 00 00 00 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff6b69c, "shasta-interrupt-sequencer", 0x00948448, 4) = -1
gem0 at pci0 dev 15 function 0 "Apple Uni-N GMAC" rev 0x01>> finddevice("enet") = 0xffffffff
>> getprop(0xffffffff, "local-mac-address", 0x00948448, 6) = -1
>> getprop(0xfff6b69c, "reg", 0x00948448, 20) = 40
>> 0x00948448  00 00 78 00 00 00 00 00 00 00 00 00 00 00 00 00  ..x.............
>> 0x00948458  00 00 00 00 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff6b69c, "AAPL,interrupts", 0x00948448, 16) = -1
>> getprop(0xfff6b69c, "interrupts", 0x00948448, 16) = 4
>> 0x00948448  00 00 00 01 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> parent(0xfff6b69c) = 0xfff62e80
>> getprop(0xfff62e80, "interrupt-map", 0x00948448, 576) = 56
>> 0x00948448  00 00 68 00 00 00 00 00 00 00 00 00 00 00 00 01  ..h.............
>> 0x00948458  ff f6 59 b0 00 00 00 1c 00 00 00 01 00 00 78 00  яцY°..........x.
>> 0x00948468  00 00 00 00 00 00 00 00 00 00 00 01 ff f6 59 b0  ............яцY°
>> 0x00948478  00 00 00 1e 00 00 00 01 __ __ __ __ __ __ __ __  ........
>> getprop(0xfff62e80, "interrupt-map-mask", 0x00948448, 32) = 16
>> 0x00948448  00 ff f8 00 00 00 00 00 00 00 00 00 00 00 00 07  .яш.............
>> getprop(0xfff62e80, "#address-cells", 0x00948448, 4) = 4
>> 0x00948448  00 00 00 03 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff62e80, "#interrupt-cells", 0x00948448, 4) = 4
>> 0x00948448  00 00 00 01 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff659b0, "#address-cells", 0x00948448, 4) = 4
>> 0x00948448  00 00 00 00 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff659b0, "#interrupt-cells", 0x00948448, 4) = 4
>> 0x00948448  00 00 00 02 __ __ __ __ __ __ __ __ __ __ __ __  ....
>> getprop(0xfff659b0, "interrupt-controller", 0x00948448, 20) = 0
: irq 30їЃT€¦ : cannot reset receiver
їЃT€¦ : cannot reset transmitter
їЃT€¦ : cannot reset device
panic: trap type 400 srr1 40008032 at 7ffb02a4 (0+0x7ffb02a4) lr 14306c
halted

>> exit()
EXIT
0 >

 

 


/dev/shm/qemu-9.0.0/build/qemu-system-ppc -m 512 -M mac99,via=pmu  -smp 2 -nographic  -kernel /mnt/tmp/boot/vmlinux -append "console=ttyPZ0 init=/bin/bash"  -bios /dev/shm/openbios-qemu.elf -d guest_errors,unimp

result in

Invalid read at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid read at addr 0x38, size 4, region '(null)', reason: rejected
Invalid write at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid write at addr 0x38, size 4, region '(null)', reason: rejected
Invalid write at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid write at addr 0x38, size 4, region '(null)', reason: rejected
Invalid read at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid read at addr 0x38, size 4, region '(null)', reason: rejected
Invalid write at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid write at addr 0x38, size 4, region '(null)', reason: rejected
Invalid write at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid write at addr 0x38, size 4, region '(null)', reason: rejected
Invalid read at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid read at addr 0x38, size 4, region '(null)', reason: rejected
Invalid write at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid write at addr 0x38, size 4, region '(null)', reason: rejected
Invalid write at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid write at addr 0x38, size 4, region '(null)', reason: rejected
Invalid read at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid read at addr 0x38, size 4, region '(null)', reason: rejected
Invalid write at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid write at addr 0x38, size 4, region '(null)', reason: rejected
Invalid write at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid write at addr 0x38, size 4, region '(null)', reason: rejected
Invalid read at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid read at addr 0x38, size 4, region '(null)', reason: rejected
Invalid write at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid write at addr 0x38, size 4, region '(null)', reason: rejected
Invalid read at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid read at addr 0x38, size 4, region '(null)', reason: rejected
Invalid write at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid write at addr 0x38, size 4, region '(null)', reason: rejected
Invalid read at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid read at addr 0x38, size 4, region '(null)', reason: rejected
Invalid read at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid read at addr 0x38, size 4, region '(null)', reason: rejected
Invalid write at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid write at addr 0x38, size 4, region '(null)', reason: rejected
[    0.000000] Invalid signature
[    0.000000] Invalid checksum
Invalid read at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid read at addr 0x38, size 4, region '(null)', reason: rejected
Invalid write at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid write at addr 0x38, size 4, region '(null)', reason: rejected
Invalid read at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid read at addr 0x38, size 4, region '(null)', reason: rejected
Invalid write at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid write at addr 0x38, size 4, region '(null)', reason: rejected
Invalid read at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid read at addr 0x38, size 4, region '(null)', reason: rejected
Invalid read at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid read at addr 0x38, size 4, region '(null)', reason: rejected
Invalid write at addr 0x80000038, size 4, region '(null)', reason: rejected
Invalid write at addr 0x38, size 4, region '(null)', reason: rejected

I think 0x38 is KEYLARGO_FCR0 0x38 from Linux's Keylargo.h

 

Regards,
BALATON Zoltan

reply via email to

[Prev in Thread] Current Thread [Next in Thread]