From 786281db31cc4e37300487404540af9ecb6c139e Mon Sep 17 00:00:00 2001 From: Elliot Nunn Date: Thu, 20 Oct 2016 22:38:42 +0800 Subject: [PATCH] docker refactor --- Makefile | 308 +- rom-nokern => PowerROM-nokern | Bin chrp-boot-script => boot-script | 0 kern.asm | 39654 ------------------------------ kernel-disasm-script.py | 1350 + kernel-stock | Bin 0 -> 105280 bytes 6 files changed, 1509 insertions(+), 39803 deletions(-) rename rom-nokern => PowerROM-nokern (100%) rename chrp-boot-script => boot-script (100%) delete mode 100644 kern.asm create mode 100755 kernel-disasm-script.py create mode 100644 kernel-stock diff --git a/Makefile b/Makefile index eec5684..f3dc889 100644 --- a/Makefile +++ b/Makefile @@ -1,164 +1,174 @@ -export PATH := /usr/cross/powerpc-eabi/bin:$(HOME)/mac-project/toolboxtoolbox:$(PATH) +# mount our current dir as /work in the container, and cd /work +# --rm means don't keep this container after command is done +# next arg should be the image to use (e.g. elliotnunn/toolboxtools) +# then the next one should be the command to run +DOCKER=docker run --volume="$$PWD":/work --workdir=/work --rm -tbxi.hqx: tbxi-data tbxi-rsrc - binhexmake --data=tbxi-data --rsrc=tbxi-rsrc --type=tbxi --creator=chrp --name='Mac OS ROM' tbxi.hqx +# If there is a disassembled kernel (possibly edited) then use it. If not, use the stock kernel. +ifeq ($(wildcard kernel-disasm.s),) + KERNEL=kernel-stock +else + KERNEL=kernel-built +endif -tbxi-data tbxi-rsrc: boot rsrc-template datafork-pefs - tbximake tbxi-data tbxi-rsrc boot rsrc-template datafork-pefs/NQDResidentCursor datafork-pefs/ProcessMgrLib +.PHONY: test-boot.img test clean -boot: chrp-boot-script trampoline.elf prcl - bootmake --boot-script=chrp-boot-script --trampoline=trampoline.elf --parcels=prcl boot +Mac\ OS\ ROM.hqx: tbxi-data tbxi-rsrc + $(DOCKER) elliotnunn/toolboxtools binhexmake --data=tbxi-data --rsrc=tbxi-rsrc --type=tbxi --creator=chrp --name='Mac OS ROM' 'Mac OS ROM.hqx' -prcl: prcl-pefs rom - @echo making parcels... takes a while - @prclmake prcl \ ---prcl -f=00020000 -t=node -n='CodePrepare Node Parcel' -c='' \ - --bin -f=00000000 -t=cstr -n=name --data AAPL,CodePrepare \ - --bin -f=00000000 -t=csta -n=AAPL,prepare_order --data Placeholder \ - --bin -f=00020094 -t=nlib -n=TimeManagerLib -l --src=prcl-pefs/CodePrepare_TimeManagerLib \ - --bin -f=00020094 -t=nlib -n=NVRAMServicesLib -l --src=prcl-pefs/CodePrepare_NVRAMServicesLib \ - --bin -f=00020094 -t=nlib -n=RTCServicesLib -l --src=prcl-pefs/CodePrepare_RTCServicesLib \ -\ ---prcl -f=00010000 -t=node -n='CodeRegister Node Parcel' -c='' \ - --bin -f=00000000 -t=cstr -n=name --data AAPL,CodeRegister \ - --bin -f=00010094 -t=nlib -n=NativePowerMgrLib -l --src=prcl-pefs/CodeRegister_NativePowerMgrLib \ - --bin -f=00010094 -t=nlib -n=AGPLib -l --src=prcl-pefs/CodeRegister_AGPLib \ - --bin -f=00010194 -t=nlib -n=EtherPrintfLib -l --src=prcl-pefs/CodeRegister_EtherPrintfLib \ - --bin -f=00010094 -t=shlb -n=StartLib -l --src=prcl-pefs/CodeRegister_StartLib \ -\ ---prcl -f=00000000 -t='rom ' -n='Mac OS ROM Parcel' -c='' \ - --bin -f=00000005 -t='rom ' -n='' -l --src=rom \ -\ ---prcl -f=00000000 -t=psum -n='Property Checksum' -c='' \ - --bin -f=00000000 -t=csta -n='' --data name model compatible device_type reg assigned-addresses slot-names vendor-id device-id class-code devsel-speed fast-back-to-back bootpath mac-address \ - --bin -f=00000000 -t=csta -n='' --data boot-rom macos \ - --bin -f=00000000 -t=csta -n='' --data Placeholder \ - --bin -f=00000000 -t=csta -n='' --data Placeholder \ - --bin -f=00000000 -t=csta -n='' --data usb ieee1394 \ -\ ---prcl -f=0000000c -t=prop -n=apple21143 -c=network \ - --bin -f=00000006 -t=shlb -n=lanLib,AAPL,MacOS,PowerPC -l --src=prcl-pefs/lanLib_apple21143 \ -\ ---prcl -f=00000009 -t=prop -n=backlight -c=backlight \ - --bin -f=00000000 -t=ndrv -n=driver,AAPL,MacOS,PowerPC --src=prcl-pefs/BacklightDriver \ - --bin -f=00000002 -t=cstr -n=code,AAPL,MacOS,name --data BacklightDriver \ -\ ---prcl -f=0000000c -t=prop -n=bmac+ -c=network \ - --bin -f=00000006 -t=shlb -n=lanLib,AAPL,MacOS,PowerPC -l --src=prcl-pefs/lanLib_bmac+ \ -\ ---prcl -f=0000000c -t=prop -n=cmd646-ata -c=ata \ - --bin -f=00000006 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/ATA_CMD646_driver \ -\ ---prcl -f=00000008 -t=prop -n=cofb -c=display \ - --bin -f=00000024 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/Display_driver \ -\ ---prcl -f=0000000c -t=prop -n=cuda -c=via-cuda \ - --bin -f=00000000 -t=ndrv -n=pef,AAPL,MacOS,PowerPC,register -l --src=prcl-pefs/PowerMgrPlugin_CUDA \ - --bin -f=00000002 -t=cstr -n=code,AAPL,MacOS,name --data PowerMgrPlugin \ -\ ---prcl -f=0000000c -t=prop -n=gmac -c=network \ - --bin -f=00000006 -t=shlb -n=lanLib,AAPL,MacOS,PowerPC -l --src=prcl-pefs/lanLib_gmac \ -\ ---prcl -f=0000000c -t=prop -n=grackle -c=pci \ - --bin -f=00000016 -t=nlib -n=pef,AAPL,MacOS,PowerPC,prepare -l --src=prcl-pefs/PCICyclesLib_Grackle \ - --bin -f=00000000 -t=cstr -n=code,AAPL,MacOS,name --data Grackle_PCICyclesLib \ -\ ---prcl -f=0000000c -t=prop -n=heathrow-ata -c=ide \ - --bin -f=00000006 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/ATA_Heathrow_driver \ -\ ---prcl -f=0000000c -t=prop -n=heathrow-ata -c=ata \ - --bin -f=00000002 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/ATA_Heathrow_driver \ -\ ---prcl -f=0000000c -t=prop -n=kauai-ata -c=ata \ - --bin -f=00000006 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/ATA_Kauai_driver \ -\ ---prcl -f=0000000c -t=prop -n=keylargo-ata -c=ata \ - --bin -f=00000006 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/ATA_KeyLargo_driver \ -\ ---prcl -f=0000000c -t=prop -n=keywest-i2c -c=i2c \ - --bin -f=00000006 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/I2C_driver \ -\ ---prcl -f=0000000a -t=prop -n=mac-io -c=nvram \ - --bin -f=00000004 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/NVRAM_mac-io_driver \ -\ ---prcl -f=00000001 -t=prop -n=macos -c='' \ - --bin -f=00000000 -t=cstr -n=MacOSROMFile-version --data 9.6f1 \ -\ ---prcl -f=0000000c -t=prop -n=nvram,flash -c=nvram \ - --bin -f=00000004 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/NVRAM_flash_driver \ -\ ---prcl -f=0000000c -t=prop -n=pci104c,ac1a -c=cardbus \ - --bin -f=00000016 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/CardBus_driver \ - --bin -f=00010094 -t=nlib -n=PCCard -l --src=prcl-pefs/CardBus_PCCard_lib \ -\ ---prcl -f=0000000c -t=prop -n=pci104c,ac50 -c=cardbus \ - --bin -f=00000016 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/CardBus_driver \ - --bin -f=00010094 -t=nlib -n=PCCard -l --src=prcl-pefs/CardBus_PCCard_lib \ -\ ---prcl -f=0000020c -t=prop -n=pciclass,0c0010 -c=ieee1394 \ - --bin -f=00000004 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/FireWire_driver \ - --bin -f=00010096 -t=nlib -n=FWServicesLib -l --src=prcl-pefs/FireWire_FWServicesLib \ - --bin -f=00010096 -t=nlib -n=DevNLib -l --src=prcl-pefs/FireWire_DevNLib \ - --bin -f=00010096 -t=nlib -n=DFMLib -l --src=prcl-pefs/FireWire_DFMLib \ - --bin -f=00010096 -t=nlib -n=GenericDriverFamily -l --src=prcl-pefs/FireWire_GenericDriverFamily \ -\ ---prcl -f=0000000c -t=prop -n=pmu -c=power-mgt \ - --bin -f=00000000 -t=ndrv -n=pef,AAPL,MacOS,PowerPC,register -l --src=prcl-pefs/PowerMgrPlugin_PMU \ - --bin -f=00000002 -t=cstr -n=code,AAPL,MacOS,name --data PowerMgrPlugin \ - --bin -f=00000002 -t=cstr -n=target-mode-capable --data SCSI \ - --bin -f=00010096 -t=nlib -n=PMULib -l --src=prcl-pefs/PMULib \ -\ ---prcl -f=0000000c -t=prop -n=uni-n-i2c -c=i2c \ - --bin -f=00000006 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/I2C_driver \ -\ ---prcl -f=0000000c -t=prop -n=uni-north -c=pci \ - --bin -f=00000016 -t=nlib -n=pef,AAPL,MacOS,PowerPC,prepare -l --src=prcl-pefs/PCICyclesLib_UniNorth \ - --bin -f=00000002 -t=cstr -n=code,AAPL,MacOS,name --data UniNorth_PCICyclesLib \ -\ ---prcl -f=0000000a -t=prop -n=via-cuda -c=rtc \ - --bin -f=00000004 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/RTC_CUDA_driver \ -\ ---prcl -f=0000000a -t=prop -n=via-pmu -c=nvram \ - --bin -f=00000004 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/NVRAM_PMU_driver \ -\ ---prcl -f=0000000a -t=prop -n=via-pmu -c=rtc \ - --bin -f=00000004 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/RTC_PMU_driver \ -\ ---prcl -f=0000000c -t=prop -n=via-pmu-2000 -c=power-mgt \ - --bin -f=00000000 -t=ndrv -n=pef,AAPL,MacOS,PowerPC,register -l --src=prcl-pefs/PowerMgrPlugin_PMU2000 \ - --bin -f=00000002 -t=cstr -n=code,AAPL,MacOS,name --data PowerMgrPlugin \ - --bin -f=00010096 -t=nlib -n=PMULib -l --src=prcl-pefs/PMULib \ -\ ---prcl -f=0000000c -t=prop -n=via-pmu-99 -c=power-mgt \ - --bin -f=00000000 -t=ndrv -n=pef,AAPL,MacOS,PowerPC,register -l --src=prcl-pefs/PowerMgrPlugin_PMU99 \ - --bin -f=00000002 -t=cstr -n=code,AAPL,MacOS,name --data PowerMgrPlugin \ - --bin -f=00010096 -t=nlib -n=PMULib -l --src=prcl-pefs/PMULib +tbxi-data tbxi-rsrc: base-tbxi rsrc-template datafork-pefs + $(DOCKER) elliotnunn/toolboxtools tbximake tbxi-data tbxi-rsrc base-tbxi rsrc-template datafork-pefs/NQDResidentCursor datafork-pefs/ProcessMgrLib -rom: rom-nokern kern - cp rom-nokern rom; \ - dd if=kern of=rom conv=notrunc seek=3211264 bs=1 +base-tbxi: boot-script trampoline.elf prcl + $(DOCKER) elliotnunn/toolboxtools bootmake --boot-script=boot-script --trampoline=trampoline.elf --parcels=prcl base-tbxi -kern: kern.o - powerpc-eabi-objcopy -O binary -j .text kern.o kern +PowerROM: PowerROM-nokern $(KERNEL) + cp PowerROM-nokern "$@" + dd if=$(KERNEL) of="$@" conv=notrunc seek=3211264 bs=1 -kern.o: kern.asm - powerpc-eabi-as -many -mregnames -o kern.o kern.asm +kernel-built: kernel-built.o + $(DOCKER) elliotnunn/powerpc-binutils objcopy -O binary -j .text "$<" "$@" +# Don't declare kernel-disasm.s as a dep because we never want to remake it! +kernel-built.o: + $(DOCKER) elliotnunn/powerpc-binutils as -many -mregnames --nops=2 -o "$@" kernel-disasm.s -test-boot.img: FORCE tbxi.hqx - rsync test-template.img test-boot.img - HOME=$$PWD hmount test-boot.img - HOME=$$PWD hcopy -b tbxi.hqx 'QEMU HD:System Folder:' +kernel-disasm.s: kernel-stock + $(DOCKER) elliotnunn/powerpc-disasm python kernel-disasm-script.py --disasm "$@" "$<" + +test-boot.img: Mac\ OS\ ROM.hqx + rsync test-template.img "$@" + HOME=$$PWD hmount "$@" + HOME=$$PWD hcopy -b "$<" 'QEMU HD:System Folder:' rm .hcwd test: test-boot.img - qemu-system-ppc -M mac99 -m 512 -prom-env 'auto-boot?=true' -g 800x600x32 -drive format=raw,media=disk,file=test-boot.img - -upload: tbxi.hqx - printf "open 192.168.0.6\nuser anonymous cdg5\ndelete tbxi.hqx\nput tbxi.hqx\ndelete \"System Folder\"/tbxi.hqx\nrename tbxi.hqx \"System Folder\"/tbxi.hqx\nclose\nexit\n" | ftp -n + qemu-system-ppc -M mac99 -m 512 -prom-env 'auto-boot?=true' -g 800x600x32 -drive format=raw,media=disk,file="$<" clean: - rm -f boot tbxi.hqx kern kern.o prcl rom tbxi-data tbxi-rsrc test-boot.img + rm -f base-tbxi 'Mac OS ROM.hqx' kernel-built kernel-built.o prcl PowerROM tbxi-data tbxi-rsrc test-boot.img - -FORCE: +prcl: prcl-pefs PowerROM + @echo making parcels... takes a while + @$(DOCKER) elliotnunn/toolboxtools prclmake prcl \ +--prcl -f=00020000 -t=node -n='CodePrepare Node Parcel' -c='' \ + --bin -f=00000000 -t=cstr -n=name --data AAPL,CodePrepare \ + --bin -f=00000000 -t=csta -n=AAPL,prepare_order --data Placeholder \ + --bin -f=00020094 -t=nlib -n=TimeManagerLib -l --src=prcl-pefs/CodePrepare_TimeManagerLib \ + --bin -f=00020094 -t=nlib -n=NVRAMServicesLib -l --src=prcl-pefs/CodePrepare_NVRAMServicesLib \ + --bin -f=00020094 -t=nlib -n=RTCServicesLib -l --src=prcl-pefs/CodePrepare_RTCServicesLib \ +\ +--prcl -f=00010000 -t=node -n='CodeRegister Node Parcel' -c='' \ + --bin -f=00000000 -t=cstr -n=name --data AAPL,CodeRegister \ + --bin -f=00010094 -t=nlib -n=NativePowerMgrLib -l --src=prcl-pefs/CodeRegister_NativePowerMgrLib \ + --bin -f=00010094 -t=nlib -n=AGPLib -l --src=prcl-pefs/CodeRegister_AGPLib \ + --bin -f=00010194 -t=nlib -n=EtherPrintfLib -l --src=prcl-pefs/CodeRegister_EtherPrintfLib \ + --bin -f=00010094 -t=shlb -n=StartLib -l --src=prcl-pefs/CodeRegister_StartLib \ +\ +--prcl -f=00000000 -t='rom ' -n='Mac OS ROM Parcel' -c='' \ + --bin -f=00000005 -t='rom ' -n='' -l --src=PowerROM \ +\ +--prcl -f=00000000 -t=psum -n='Property Checksum' -c='' \ + --bin -f=00000000 -t=csta -n='' --data name model compatible device_type reg assigned-addresses slot-names vendor-id device-id class-code devsel-speed fast-back-to-back bootpath mac-address \ + --bin -f=00000000 -t=csta -n='' --data boot-rom macos \ + --bin -f=00000000 -t=csta -n='' --data Placeholder \ + --bin -f=00000000 -t=csta -n='' --data Placeholder \ + --bin -f=00000000 -t=csta -n='' --data usb ieee1394 \ +\ +--prcl -f=0000000c -t=prop -n=apple21143 -c=network \ + --bin -f=00000006 -t=shlb -n=lanLib,AAPL,MacOS,PowerPC -l --src=prcl-pefs/lanLib_apple21143 \ +\ +--prcl -f=00000009 -t=prop -n=backlight -c=backlight \ + --bin -f=00000000 -t=ndrv -n=driver,AAPL,MacOS,PowerPC --src=prcl-pefs/BacklightDriver \ + --bin -f=00000002 -t=cstr -n=code,AAPL,MacOS,name --data BacklightDriver \ +\ +--prcl -f=0000000c -t=prop -n=bmac+ -c=network \ + --bin -f=00000006 -t=shlb -n=lanLib,AAPL,MacOS,PowerPC -l --src=prcl-pefs/lanLib_bmac+ \ +\ +--prcl -f=0000000c -t=prop -n=cmd646-ata -c=ata \ + --bin -f=00000006 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/ATA_CMD646_driver \ +\ +--prcl -f=00000008 -t=prop -n=cofb -c=display \ + --bin -f=00000024 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/Display_driver \ +\ +--prcl -f=0000000c -t=prop -n=cuda -c=via-cuda \ + --bin -f=00000000 -t=ndrv -n=pef,AAPL,MacOS,PowerPC,register -l --src=prcl-pefs/PowerMgrPlugin_CUDA \ + --bin -f=00000002 -t=cstr -n=code,AAPL,MacOS,name --data PowerMgrPlugin \ +\ +--prcl -f=0000000c -t=prop -n=gmac -c=network \ + --bin -f=00000006 -t=shlb -n=lanLib,AAPL,MacOS,PowerPC -l --src=prcl-pefs/lanLib_gmac \ +\ +--prcl -f=0000000c -t=prop -n=grackle -c=pci \ + --bin -f=00000016 -t=nlib -n=pef,AAPL,MacOS,PowerPC,prepare -l --src=prcl-pefs/PCICyclesLib_Grackle \ + --bin -f=00000000 -t=cstr -n=code,AAPL,MacOS,name --data Grackle_PCICyclesLib \ +\ +--prcl -f=0000000c -t=prop -n=heathrow-ata -c=ide \ + --bin -f=00000006 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/ATA_Heathrow_driver \ +\ +--prcl -f=0000000c -t=prop -n=heathrow-ata -c=ata \ + --bin -f=00000002 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/ATA_Heathrow_driver \ +\ +--prcl -f=0000000c -t=prop -n=kauai-ata -c=ata \ + --bin -f=00000006 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/ATA_Kauai_driver \ +\ +--prcl -f=0000000c -t=prop -n=keylargo-ata -c=ata \ + --bin -f=00000006 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/ATA_KeyLargo_driver \ +\ +--prcl -f=0000000c -t=prop -n=keywest-i2c -c=i2c \ + --bin -f=00000006 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/I2C_driver \ +\ +--prcl -f=0000000a -t=prop -n=mac-io -c=nvram \ + --bin -f=00000004 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/NVRAM_mac-io_driver \ +\ +--prcl -f=00000001 -t=prop -n=macos -c='' \ + --bin -f=00000000 -t=cstr -n=MacOSROMFile-version --data 9.6f1 \ +\ +--prcl -f=0000000c -t=prop -n=nvram,flash -c=nvram \ + --bin -f=00000004 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/NVRAM_flash_driver \ +\ +--prcl -f=0000000c -t=prop -n=pci104c,ac1a -c=cardbus \ + --bin -f=00000016 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/CardBus_driver \ + --bin -f=00010094 -t=nlib -n=PCCard -l --src=prcl-pefs/CardBus_PCCard_lib \ +\ +--prcl -f=0000000c -t=prop -n=pci104c,ac50 -c=cardbus \ + --bin -f=00000016 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/CardBus_driver \ + --bin -f=00010094 -t=nlib -n=PCCard -l --src=prcl-pefs/CardBus_PCCard_lib \ +\ +--prcl -f=0000020c -t=prop -n=pciclass,0c0010 -c=ieee1394 \ + --bin -f=00000004 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/FireWire_driver \ + --bin -f=00010096 -t=nlib -n=FWServicesLib -l --src=prcl-pefs/FireWire_FWServicesLib \ + --bin -f=00010096 -t=nlib -n=DevNLib -l --src=prcl-pefs/FireWire_DevNLib \ + --bin -f=00010096 -t=nlib -n=DFMLib -l --src=prcl-pefs/FireWire_DFMLib \ + --bin -f=00010096 -t=nlib -n=GenericDriverFamily -l --src=prcl-pefs/FireWire_GenericDriverFamily \ +\ +--prcl -f=0000000c -t=prop -n=pmu -c=power-mgt \ + --bin -f=00000000 -t=ndrv -n=pef,AAPL,MacOS,PowerPC,register -l --src=prcl-pefs/PowerMgrPlugin_PMU \ + --bin -f=00000002 -t=cstr -n=code,AAPL,MacOS,name --data PowerMgrPlugin \ + --bin -f=00000002 -t=cstr -n=target-mode-capable --data SCSI \ + --bin -f=00010096 -t=nlib -n=PMULib -l --src=prcl-pefs/PMULib \ +\ +--prcl -f=0000000c -t=prop -n=uni-n-i2c -c=i2c \ + --bin -f=00000006 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/I2C_driver \ +\ +--prcl -f=0000000c -t=prop -n=uni-north -c=pci \ + --bin -f=00000016 -t=nlib -n=pef,AAPL,MacOS,PowerPC,prepare -l --src=prcl-pefs/PCICyclesLib_UniNorth \ + --bin -f=00000002 -t=cstr -n=code,AAPL,MacOS,name --data UniNorth_PCICyclesLib \ +\ +--prcl -f=0000000a -t=prop -n=via-cuda -c=rtc \ + --bin -f=00000004 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/RTC_CUDA_driver \ +\ +--prcl -f=0000000a -t=prop -n=via-pmu -c=nvram \ + --bin -f=00000004 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/NVRAM_PMU_driver \ +\ +--prcl -f=0000000a -t=prop -n=via-pmu -c=rtc \ + --bin -f=00000004 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/RTC_PMU_driver \ +\ +--prcl -f=0000000c -t=prop -n=via-pmu-2000 -c=power-mgt \ + --bin -f=00000000 -t=ndrv -n=pef,AAPL,MacOS,PowerPC,register -l --src=prcl-pefs/PowerMgrPlugin_PMU2000 \ + --bin -f=00000002 -t=cstr -n=code,AAPL,MacOS,name --data PowerMgrPlugin \ + --bin -f=00010096 -t=nlib -n=PMULib -l --src=prcl-pefs/PMULib \ +\ +--prcl -f=0000000c -t=prop -n=via-pmu-99 -c=power-mgt \ + --bin -f=00000000 -t=ndrv -n=pef,AAPL,MacOS,PowerPC,register -l --src=prcl-pefs/PowerMgrPlugin_PMU99 \ + --bin -f=00000002 -t=cstr -n=code,AAPL,MacOS,name --data PowerMgrPlugin \ + --bin -f=00010096 -t=nlib -n=PMULib -l --src=prcl-pefs/PMULib diff --git a/rom-nokern b/PowerROM-nokern similarity index 100% rename from rom-nokern rename to PowerROM-nokern diff --git a/chrp-boot-script b/boot-script similarity index 100% rename from chrp-boot-script rename to boot-script diff --git a/kern.asm b/kern.asm deleted file mode 100644 index 3608e37..0000000 --- a/kern.asm +++ /dev/null @@ -1,39654 +0,0 @@ -/*********************************************************** - - nk_start - -************************************************************ - -Entry point from Trampoline on NewWorld. -Only continues loading if the DR (data address translation) bit of the MSR is unset. Be not fooled by the linking call, which never returns. If DR is set, then we RFI to a location *in* the ConfigInfo struct with DR and IR unset, and r9 containing the address of our caller - -************************************************************ - -Xrefs: -"boot_newworld" - -************************************************************ - -> r3 = ConfigInfo -> r4 = processor_info -> r5 = sys_info -> r6 = boot_r6 -> r7 = rtas_fourcc -> r8 = rtas_proc -> r9 = boot_hw_info - -***********************************************************/ - -nk_start: /* < outside referer */ -b nk_start_0xc # 00000 -.long 0x0228000c # 00004 -.long 0x04000000 # 00008 - -nk_start_0xc: -crclr 4*cr5 + eq # 0000c -mfmsr r0 # 00010 -rlwinm. r0, r0, 0, 27, 27 # 00014 - -# r3 = ConfigInfo -# r4 = processor_info -# r5 = sys_info -# r6 = boot_r6 -# r7 = rtas_fourcc -# r8 = rtas_proc -# r9 = boot_hw_info -beql- new_world # 00018 -mflr r9 # 0001c -addi r9, r9, -0x1c # 00020 -addi r12, r3, 0x40 # ConfigInfo.bl_fffff93c_from_start -mfmsr r11 # 00028 -li r10, -0x7fd0 # 0002c -andc r11, r11, r10 # 00030 -mtspr 26/*srr0*/, r12 # 00034 -mtspr 27/*srr1*/, r11 # 00038 -rfi # 0003c - - - -/*********************************************************** - - replace_old_kernel - -************************************************************ - -Xrefs: -"boot_oldworld" - -***********************************************************/ - -.align 6 # 00040 - -crset 4*cr5 + eq # 00040 -li r0, 0x00 # 00044 -lis r12, 0x00 # 00048 -ori r12, r12, 0xa000 # 0004c -mr r13, r4 # 00050 - -replace_old_kernel_0x14: -addic. r12, r12, -0x04 # 00054 -stwx r0, r13, r12 # 00058 -bgt+ replace_old_kernel_0x14 # 0005c -mfspr r11, 272/*sprg0*/ # 00060 -lis r1, 0x00 # 00064 -ori r1, r1, 0xa000 # 00068 -add r1, r1, r4 # 0006c -li r12, 0x1000 # 00070 - -replace_old_kernel_0x34: -addic. r12, r12, -0x04 # 00074 -lwzx r10, r11, r12 # 00078 -stwx r10, r1, r12 # 0007c -bgt+ replace_old_kernel_0x34 # 00080 -lis r12, -0x01 # 00084 -ori r12, r12, 0x6000 # 00088 -add r12, r12, r1 # 0008c -stw r12, -0x0020( r1) # 00090 - -# r1 = kdp -bl wipe_irp # 00094 -mr r23, r7 # 00098 -cmpwi r6, 0x00 # 0009c -stw r11, 0x05a0( r1) # 000a0 -stw r9, 0x05a4( r1) # 000a4 -bne- replace_old_kernel_0x70 # 000a8 -addi r6, r1, 0x1000 # 000ac - -replace_old_kernel_0x70: -stw r6, 0x05a8( r1) # 000b0 -stw r3, 0x064c( r1) # 000b4 -stw r5, -0x0900( r1) # 000b8 -stw r1, -0x0004( r1) # 000bc -addi r12, r1, -0x340 # 000c0 -li r10, -0x01 # 000c4 -stw r10, 0x0000(r12) # 000c8 -lwz r3, 0x0630( r1) # 000cc - -# r3 = ConfigInfo -bl get_pih_addr # 000d0 -# r12 = clobbered -# r7 = pih_pa - -stw r7, 0x05b0( r1) # 000d4 -88: bl 99f # 000d8 -99: mflr r12 # 000dc -addi r12, r12, nk_start - 88b - 4 # 000e0 -stw r12, 0x064c( r1) # 000e4 -lis r10, funny_debug_place@h # 000e8 -ori r10, r10, funny_debug_place@l # 000ec -add r12, r10, r12 # 000f0 -stw r12, 0x0650( r1) # 000f4 -lwz r12, -0x0010( r1) # 000f8 -li r10, 0x00 # 000fc -rlwimi r10, r12, 0, 12, 15 # 00100 -rlwimi r10, r12, 0, 28, 30 # 00104 -stw r10, -0x0968( r1) # 00108 -mfmsr r12 # 0010c -andi. r12, r12, 0x40 # 00110 -ori r12, r12, 0xd032 # 00114 -stw r12, -0x0964( r1) # 00118 -mtspr 272/*sprg0*/, r1 # 0011c -lhz r12, 0x0fe4(r11) # 00120 -cmpwi r12, 0x101 # 00124 -bgt- replace_old_kernel_0x10c # 00128 -lwz r12, 0x065c( r1) # 0012c -stw r12, -0x0014( r1) # 00130 -lwz r12, 0x0660( r1) # 00134 -oris r12, r12, 0x20 # 00138 -stw r12, -0x0010( r1) # 0013c -lwz r12, 0x0664( r1) # 00140 -stw r12, -0x000c( r1) # 00144 -b replace_old_kernel_0x130 # 00148 - -replace_old_kernel_0x10c: -cmpwi r12, 0x200 # 0014c -bge- undo_failed_kernel_replacement # 00150 -lwz r12, -0x0014(r11) # 00154 -stw r12, -0x0014( r1) # 00158 -lwz r12, -0x0010(r11) # 0015c -oris r12, r12, 0x20 # 00160 -stw r12, -0x0010( r1) # 00164 -lwz r12, -0x000c(r11) # 00168 -stw r12, -0x000c( r1) # 0016c - -replace_old_kernel_0x130: -lwz r12, 0x0340(r11) # 00170 -lwz r10, 0x05b4(r11) # 00174 -cmpw r12, r10 # 00178 -beq- replace_old_kernel_0x198 # 0017c -stw r12, 0x05b4( r1) # 00180 -stw r0, 0x06b4( r1) # 00184 -lwz r10, 0x05b0(r11) # 00188 -stw r10, 0x06c0( r1) # 0018c -lwz r10, 0x05b4(r11) # 00190 -stw r10, 0x06c4( r1) # 00194 -lwz r10, 0x05b8(r11) # 00198 -stw r10, 0x06c8( r1) # 0019c -lwz r10, 0x05bc(r11) # 001a0 -stw r10, 0x06cc( r1) # 001a4 -stw r0, 0x06d0( r1) # 001a8 -stw r0, 0x06d4( r1) # 001ac -stw r0, 0x06d8( r1) # 001b0 -stw r0, 0x06dc( r1) # 001b4 -stw r0, 0x06e0( r1) # 001b8 -stw r0, 0x06e4( r1) # 001bc -stw r0, 0x06e8( r1) # 001c0 -stw r0, 0x06ec( r1) # 001c4 -stw r0, 0x06f0( r1) # 001c8 -stw r0, 0x06f4( r1) # 001cc -stw r0, 0x06f8( r1) # 001d0 -stw r0, 0x06fc( r1) # 001d4 - -replace_old_kernel_0x198: -lwz r12, 0x0684( r1) # 001d8 -subf r12, r11, r12 # 001dc -add r12, r12, r1 # 001e0 -stw r12, 0x0684( r1) # 001e4 -lwz r12, 0x066c( r1) # 001e8 -subf r12, r11, r12 # 001ec -add r12, r12, r1 # 001f0 -stw r12, 0x066c( r1) # 001f4 -lwz r12, 0x05e8( r1) # 001f8 -subf r12, r11, r12 # 001fc -add r12, r12, r1 # 00200 -stw r12, 0x05e8( r1) # 00204 -li r12, 0x200 # 00208 -addi r10, r1, 0xdc0 # 0020c - -replace_old_kernel_0x1d0: -addic. r12, r12, -0x04 # 00210 -stwx r0, r10, r12 # 00214 -bgt+ replace_old_kernel_0x1d0 # 00218 -li r12, 0x00 # 0021c -addi r10, r1, 0xfc0 # 00220 -bl major_0x00400 # 00224 -stw r10, 0x0fc0( r1) # 00228 -stw r0, 0x0fc4( r1) # 0022c -lhz r12, 0x0fce( r1) # 00230 -addi r10, r1, -0x4d0 # 00234 -lwz r9, 0x0fc8( r1) # 00238 -bl major_0x00400 # 0023c -stw r10, 0x0fc8( r1) # 00240 -lhz r12, 0x0fd6( r1) # 00244 -lwz r10, -0x0020( r1) # 00248 -addi r10, r10, 0xf00 # 0024c -lwz r9, 0x0fd0( r1) # 00250 -bl major_0x00400 # 00254 -stw r10, 0x0fd0( r1) # 00258 -lhz r12, 0x0fde( r1) # 0025c -addi r10, r1, 0xf20 # 00260 -lwz r9, 0x0fd8( r1) # 00264 -bl major_0x00400 # 00268 -stw r10, 0x0fd8( r1) # 0026c -stw r10, 0x0ff8( r1) # 00270 -lhz r10, 0x0fdc( r1) # 00274 -cmplwi r10, 0x112 # 00278 -bge- replace_old_kernel_0x258 # 0027c -li r12, 160 # 00280 -li r10, 0x112 # 00284 -sth r12, 0x0fde( r1) # 00288 -sth r12, 0x0ffe( r1) # 0028c -sth r10, 0x0fdc( r1) # 00290 -sth r10, 0x0ffc( r1) # 00294 - -replace_old_kernel_0x258: -lhz r12, 0x0fee( r1) # 00298 -addi r10, r1, -0x5d0 # 0029c -lwz r9, 0x0fe8( r1) # 002a0 -bl major_0x00400 # 002a4 -stw r10, 0x0fe8( r1) # 002a8 -lhz r12, 0x0ff6( r1) # 002ac -lwz r10, -0x0020( r1) # 002b0 -addi r10, r10, 0xdc0 # 002b4 -lwz r9, 0x0ff0( r1) # 002b8 -bl major_0x00400 # 002bc -stw r10, 0x0ff0( r1) # 002c0 -lhz r12, 0x0fe6( r1) # 002c4 -addi r10, r1, 0xdc0 # 002c8 -lwz r9, 0x0fe0( r1) # 002cc -bl major_0x00400 # 002d0 -stw r10, 0x0fe0( r1) # 002d4 -li r12, 0x160 # 002d8 -sth r12, 0x0fe6( r1) # 002dc -li r12, 0x228 # 002e0 -sth r12, 0x0fe4( r1) # 002e4 -lwz r8, 0x0f2c( r1) # 002e8 -stw r8, -0x0438( r1) # 002ec -lwz r8, 0x0edc( r1) # 002f0 -ori r8, r8, 0x01 # 002f4 -cmplwi r23, 0x27f3 # 002f8 -blt- replace_old_kernel_0x2c4 # 002fc -ori r8, r8, 0x10 # 00300 - -replace_old_kernel_0x2c4: -stw r8, 0x0edc( r1) # 00304 - -# r1 = kdp -bl screenlog_init # 00308 -bl 1f # 0030c -.ascii "Hello from the replacement multitasking NanoKernel. Version: " -.short 0 # 0034d -.align 2 # 0034f -1: mflr r8 # 00350 -bl print_string # 00354 -mr r8, r12 # 00358 -bl print_short_hex # 0035c -bl 1f # 00360 -.ascii "^n Old KDP: " # 00364 -.short 0 # 00370 -.align 2 # 00372 -1: mflr r8 # 00374 -bl print_string # 00378 -mr r8, r11 # 0037c -bl print_word_hex # 00380 -bl 1f # 00384 -.ascii " new KDP: " # 00388 -.short 0 # 00392 -.align 2 # 00394 -1: mflr r8 # 00394 -bl print_string # 00398 -mr r8, r1 # 0039c -bl print_word_hex # 003a0 -bl 1f # 003a4 -.ascii " new irp: " # 003a8 -.short 0 # 003b2 -.align 2 # 003b4 -1: mflr r8 # 003b4 -bl print_string # 003b8 -lwz r8, -0x0020( r1) # 003bc -mr r8, r8 # 003c0 -bl print_word_hex # 003c4 -bl 1f # 003c8 -.ascii "ROM vers: " # 003cc -.short 0 # 003d6 -.align 2 # 003d8 -1: mflr r8 # 003d8 -bl print_string # 003dc -mr r8, r23 # 003e0 -bl print_short_hex # 003e4 -bl 1f # 003e8 -.ascii "^n" # 003ec -.short 0 # 003ee -.align 2 # 003f0 -1: mflr r8 # 003f0 -bl print_string # 003f4 -lwz r6, 0x0658( r1) # 003f8 - -# r1 = kdp -b setup # 003fc - - - -/*********************************************************** - - major_0x00400 - -************************************************************ - -Xrefs: -replace_old_kernel - -***********************************************************/ - -.align 10 # 00400 - -major_0x00400: /* < outside referer */ -lwz r22, 0x0630( r1) # 00400 -lwz r22, 0x009c(r22) # 00404 -subf r9, r22, r9 # 00408 -cmplwi r9, 0x1000 # 0040c -bge- major_0x00400_0x6c # 00410 -add r21, r9, r11 # 00414 - -major_0x00400_0x18: -addic. r12, r12, -0x04 # 00418 -blt- major_0x00400_0x2c # 0041c -lwzx r9, r21, r12 # 00420 -stwx r9, r10, r12 # 00424 -bgt+ major_0x00400_0x18 # 00428 - -major_0x00400_0x2c: -lwz r22, 0x0630( r1) # 0042c -lwz r22, 0x00a0(r22) # 00430 -subf r10, r1, r10 # 00434 -lis r21, -0x01 # 00438 -ori r21, r21, 0x7000 # 0043c -cmpw r10, r21 # 00440 -blt- major_0x00400_0x50 # 00444 -add r10, r10, r22 # 00448 -blr # 0044c - -major_0x00400_0x50: -lwz r22, 0x0630( r1) # 00450 -lwz r22, 0x009c(r22) # 00454 -lwz r21, -0x0020( r1) # 00458 -add r10, r10, r1 # 0045c -subf r10, r21, r10 # 00460 -add r10, r10, r22 # 00464 -blr # 00468 - -major_0x00400_0x6c: -add r9, r9, r22 # 0046c -lwz r22, 0x0630( r1) # 00470 -lwz r22, 0x00a0(r22) # 00474 -subf r9, r22, r9 # 00478 -add r21, r9, r11 # 0047c -b major_0x00400_0x18 # 00480 - - - -/*********************************************************** - - wipe_irp - -************************************************************ - -Fill the irp with 0x68f1. - -************************************************************ - -Xrefs: -replace_old_kernel -new_world - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -wipe_irp: /* < outside referer */ -lwz r12, -0x0020( r1) # kdp.irp # 00484 - -wipe_irp_0x4: -lis r10, 0x68f1 # 00488 -ori r10, r10, 0x68f1 # 0048c -stw r10, 0x0000(r12) # 00490 -stw r10, 0x0004(r12) # 00494 -addi r12, r12, 0x08 # 00498 -andi. r10, r12, 0xfff # 0049c -bne+ wipe_irp_0x4 # 004a0 -blr # 004a4 - - - -/*********************************************************** - - new_world - -************************************************************ - -1. Fill segment registers very basically. -2. Zero the BAT. -3. Lay out the kernel's memory and copy some tables. -4. Print the first debug message: "Hello from..." -5. Choose an interrupt handler. -6. Copy some ConfigInfo stuff. -7. Override info for old CPUs then go to main setup. -8. Do something with caches for newer G4s. - -************************************************************ - -Xrefs: -nk_start - -************************************************************ - -> r3 = ConfigInfo -> r4 = processor_info -> r5 = sys_info -> r6 = boot_r6 -> r7 = rtas_fourcc -> r8 = rtas_proc -> r9 = boot_hw_info - -***********************************************************/ - -.align 3 # 004a8 - -new_world: /* < outside referer */ -li r0, 0x00 # 004a8 - -# Load seg reg 0 with 0x20000000 and all others with zeros -isync # 004ac -lis r12, 0x2000 # 004b0 -mtsr 0x00, r12 # 004b4 -mtsr 0x01, r0 # 004b8 -mtsr 0x02, r0 # 004bc -mtsr 0x03, r0 # 004c0 -mtsr 0x04, r0 # 004c4 -mtsr 0x05, r0 # 004c8 -mtsr 0x06, r0 # 004cc -mtsr 0x07, r0 # 004d0 -mtsr 0x08, r0 # 004d4 -mtsr 0x09, r0 # 004d8 -mtsr 0x0a, r0 # 004dc -mtsr 0x0b, r0 # 004e0 -mtsr 0x0c, r0 # 004e4 -mtsr 0x0d, r0 # 004e8 -mtsr 0x0e, r0 # 004ec -mtsr 0x0f, r0 # 004f0 -isync # 004f4 - -# Get all but lowest bit of CPU version -mfspr r12, 287/*pvr*/ # 004f8 -rlwinm. r12, r12, 0, 0, 14 # 004fc -bne- not_601 # 00500 - -# CPU is 601: -mtspr 21/*rtcl*/, r0 # 00504 -mtspr 20/*rtcu*/, r0 # 00508 -mtspr 529/*ibat0l*/, r0 # 0050c -mtspr 531/*ibat1l*/, r0 # 00510 -mtspr 533/*ibat2l*/, r0 # 00514 -mtspr 535/*ibat3l*/, r0 # 00518 -b end_if_601 # 0051c - -not_601: -mtspr 284/*tbl*/, r0 # 00520 -mtspr 285/*tbu*/, r0 # 00524 -mtspr 528/*ibat0u*/, r0 # 00528 -mtspr 530/*ibat1u*/, r0 # 0052c -mtspr 532/*ibat2u*/, r0 # 00530 -mtspr 534/*ibat3u*/, r0 # 00534 -mtspr 536/*dbat0u*/, r0 # 00538 -mtspr 538/*dbat1u*/, r0 # 0053c -mtspr 540/*dbat2u*/, r0 # 00540 -mtspr 542/*dbat3u*/, r0 # 00544 - -end_if_601: -lwz r12, 0x0360( r3) # ConfigInfo.phys_ram_base # 00548 -addi r10, r5, 0x2c # sys_info.phys_toolboxrom # 0054c - -# search sys_info for the physical address of the Toolbox ROM -new_world_0xa8: -lwzu r11, 0x0008(r10) # 00550 -cmpwi r11, 0x00 # 00554 -beq+ new_world_0xa8 # 00558 - -# now r11=toolbox and r12=ram -# Some really tricky stuff happens here with the memory data. -# The location of the KDP and the irp get chosen. -subf r11, r12, r11 # 0055c -srawi r11, r11, 31 # 00560 -andc r12, r12, r11 # 00564 -lwz r11, 0x0000(r10) # 00568 -subf r11, r12, r11 # 0056c -stw r11, 0x0000(r10) # 00570 -lwz r11, -0x0004(r10) # 00574 -add r11, r11, r12 # 00578 -stw r11, -0x0004(r10) # 0057c -lwz r11, 0x0000( r5) # sys_info.u32_ram_size # 00580 -addis r15, r11, 0x01 # 00584 -cmpwi r15, 0x00 # 00588 -bgt- new_world_0xec # 0058c -addi r11, r11, -0x1000 # 00590 - -new_world_0xec: -subf r11, r12, r11 # 00594 -stw r11, 0x0000( r5) # sys_info.u32_ram_size # 00598 -lwz r15, 0x0000( r5) # sys_info.u32_ram_size # 0059c -addi r15, r15, -0x01 # 005a0 -cntlzw r12, r15 # 005a4 -lis r14, 0x1ff # 005a8 -srw r14, r14, r12 # 005ac -ori r14, r14, 0xffff # 005b0 -clrlwi r14, r14, 0x0a # 005b4 -addis r15, r15, 0x40 # 005b8 -rlwinm r15, r15, 22, 10, 19 # 005bc -add r15, r15, r14 # 005c0 -lis r10, 0x00 # 005c4 -ori r10, r10, 0xc001 # 005c8 -add r15, r15, r10 # 005cc -addi r10, r5, 0x100 # sys_info.0x100 # 005d0 - -new_world_0x12c: -lwz r11, -0x0004(r10) # 005d4 -lwzu r12, -0x0008(r10) # 005d8 -add r11, r12, r11 # 005dc -andc r13, r11, r14 # 005e0 -subf r13, r15, r13 # 005e4 -cmplw r13, r12 # 005e8 -blt+ new_world_0x12c # 005ec -cmplw r13, r11 # 005f0 -bgt+ new_world_0x12c # 005f4 -add r12, r13, r15 # 005f8 -subf r12, r14, r12 # 005fc -rlwimi r12, r14, 16, 16, 31 # 00600 -mtspr 25/*sdr1*/, r12 # 00604 -rlwinm r11, r12, 0, 0, 15 # 00608 -lis r1, -0x01 # 0060c -ori r1, r1, 0xe000 # 00610 -add r1, r1, r11 # 00614 -mtspr 272/*sprg0*/, r1 # 00618 -lwz r11, 0x07b0( r1) # kdp.0x7b0 # 0061c -cmpw r12, r11 # 00620 -lis r11, 0x7fff # 00624 -bne- new_world_0x18c # 00628 -subf r11, r13, r1 # 0062c -addi r11, r11, 0x700 # 00630 - -new_world_0x18c: -subf r12, r14, r15 # 00634 -addi r12, r12, -0x01 # 00638 - -new_world_0x194: -addic. r12, r12, -0x04 # 0063c -subf r10, r11, r12 # 00640 -cmplwi cr7, r10, 520 # 00644 -ble- cr7, new_world_0x1a8 # 00648 -stwx r0, r13, r12 # 0064c - -new_world_0x1a8: -bne+ new_world_0x194 # 00650 -stw r1, -0x0004( r1) # kdp.-0x4 # 00654 -lis r12, -0x01 # 00658 -ori r12, r12, 0x6000 # 0065c -add r12, r12, r1 # 00660 -stw r12, -0x0020( r1) # kdp.irp # 00664 - -# r1 = kdp -bl wipe_irp # 00668 -lis r12, 0x5254 # 0066c -ori r12, r12, 0x4153 # 00670 -cmpw r7, r12 # 00674 -bne- no_rtas # 00678 -stw r8, 0x0908( r1) # kdp.rtas_proc # 0067c -lwz r7, 0x0038( r9) # hw_info.rtas_private_data -stw r7, 0x090c( r1) # kdp.rtas_private_data # 00684 -lwz r11, -0x0020( r1) # kdp.irp # 00688 -addi r11, r11, 0xf00 # 0068c -li r10, 0xc0 # 00690 - -new_world_0x1ec: -addic. r10, r10, -0x04 # 00694 -lwzx r12, r9, r10 # 00698 -stwx r12, r11, r10 # 0069c -bgt+ new_world_0x1ec # 006a0 -stw r23, -0x0900( r1) # kdp.-0x900 # 006a4 -b end_if_rtas # 006a8 - -no_rtas: -stw r0, 0x0908( r1) # kdp.rtas_proc # 006ac -stw r0, 0x090c( r1) # kdp.rtas_private_data # 006b0 - -end_if_rtas: -addi r11, r1, 0xf20 # kdp.u32_pvr # 006b4 -li r10, 160 # 006b8 - -new_world_0x214: -addic. r10, r10, -0x04 # 006bc -lwzx r12, r4, r10 # 006c0 -stwx r12, r11, r10 # 006c4 -bgt+ new_world_0x214 # 006c8 -lwz r11, -0x0020( r1) # kdp.irp # 006cc -addi r11, r11, 0xdc0 # 006d0 -li r10, 320 # 006d4 - -new_world_0x230: -addic. r10, r10, -0x04 # 006d8 -lwzx r12, r5, r10 # 006dc -stwx r12, r11, r10 # 006e0 -bgt+ new_world_0x230 # 006e4 -cmpwi r6, 0x00 # 006e8 -beq- new_world_0x260 # 006ec -addi r11, r1, -0x5d0 # kdp.-0x5d0 # 006f0 -li r10, 0x100 # 006f4 - -new_world_0x250: -addic. r10, r10, -0x04 # 006f8 -lwzx r12, r6, r10 # 006fc -stwx r12, r11, r10 # 00700 -bgt+ new_world_0x250 # 00704 - -new_world_0x260: -stw r3, 0x0630( r1) # kdp.pa_ConfigInfo # 00708 -lwz r9, 0x0630( r1) # kdp.pa_ConfigInfo # 0070c -lhz r8, 0x0378( r9) # 00710 -cmplwi r8, 0x101 # 00714 -lwz r8, 0x0edc( r1) # kdp.0xedc # 00718 -blt- new_world_0x28c # 0071c -lwz r8, 0x0388( r9) # 00720 -rlwinm. r8, r8, 0, 30, 30 # 00724 -lwz r8, 0x0edc( r1) # kdp.0xedc # 00728 -beq- new_world_0x28c # 0072c -ori r8, r8, 0x08 # 00730 - -new_world_0x28c: -ori r8, r8, 0x01 # 00734 -ori r8, r8, 0x10 # 00738 -stw r8, 0x0edc( r1) # kdp.0xedc # 0073c -addi r9, r1, -0x340 # kdp.-0x340 # 00740 -li r8, -0x01 # 00744 -stw r8, 0x0000( r9) # 00748 - -# r1 = kdp -bl screenlog_init # 0074c -bl 1f # 00750 -.ascii "Hello from the builtin multitasking NanoKernel. Version: " -.short 0 # 0078d -.align 2 # 0078f -1: mflr r8 # 00790 -bl print_string # 00794 -li r8, 0x228 # 00798 -mr r8, r8 # 0079c -bl print_short_hex # 007a0 -bl 1f # 007a4 -.ascii "^n" # 007a8 -.short 0 # 007aa -.align 2 # 007ac -1: mflr r8 # 007ac -bl print_string # 007b0 -stw r13, 0x0638( r1) # kdp.0x638 # 007b4 -lwz r12, 0x064c( r1) # kdp.phys_kern_base # 007b8 - -# r3 = ConfigInfo -bl get_pih_addr # 007bc -# r12 = clobbered -# r7 = pih_pa - -stw r7, 0x05b0( r1) # kdp.pih_proc_ptr # 007c0 -lwz r11, -0x0020( r1) # kdp.irp # 007c4 -addi r12, r14, 0x01 # 007c8 -stw r12, 0x0dcc(r11) # 007cc -addi r8, r1, 0x1000 # kdp.0x1000 # 007d0 -stw r8, 0x0634( r1) # kdp.pa_edp # 007d4 -add r12, r13, r15 # 007d8 -stw r12, 0x063c( r1) # kdp.0x63c # 007dc -lwz r12, 0x0360( r3) # ConfigInfo.phys_ram_base # 007e0 -stw r12, 0x0640( r1) # kdp.phys_ram_base # 007e4 -lwz r12, 0x035c( r3) # ConfigInfo.40820160 # 007e8 -stw r12, 0x0644( r1) # kdp.configinfo_40820160 # 007ec -lwz r12, 0x00ac( r3) # ConfigInfo.logi_EmulatorCode -lwz r11, 0x0084( r3) # ConfigInfo.emu_offset_e8c0 -add r12, r12, r11 # 007f8 -stw r12, 0x0648( r1) # kdp.emu_e8c0 # 007fc -88: bl 99f # 00800 -99: mflr r12 # 00804 -addi r12, r12, nk_start - 88b - 4 # 00808 -stw r12, 0x064c( r1) # kdp.phys_kern_base # 0080c -lis r11, funny_debug_place@h # 00810 -ori r11, r11, funny_debug_place@l # 00814 -add r12, r11, r12 # 00818 -stw r12, 0x0650( r1) # kdp.phys_funny_debug_place -lwz r12, 0x00a4( r3) # ConfigInfo.logi_EmulatorData -lwz r11, 0x0078( r3) # ConfigInfo.00000100 # 00824 -add r12, r12, r11 # 00828 -stw r12, 0x0654( r1) # kdp.0x654 # 0082c -add r12, r8, r11 # 00830 -stw r12, 0x0658( r1) # kdp.system_context # 00834 -stw r12, -0x0014( r1) # kdp.-0x14 # 00838 -lwz r12, 0x0088( r3) # ConfigInfo.0x88 # 0083c -stw r12, 0x0670( r1) # kdp.0x670 # 00840 -lwz r12, 0x008c( r3) # ConfigInfo.0x8c # 00844 -stw r12, 0x0678( r1) # kdp.0x678 # 00848 -lwz r12, 0x0090( r3) # ConfigInfo.0x90 # 0084c -stw r12, 0x0674( r1) # kdp.0x674 # 00850 -lwz r12, 0x007c( r3) # ConfigInfo.0x7c # 00854 -add r12, r8, r12 # 00858 -stw r12, 0x067c( r1) # kdp.0x67c # 0085c -lwz r12, 0x035c( r3) # ConfigInfo.40820160 # 00860 -addi r12, r12, 0x7c # 00864 -stw r12, 0x0680( r1) # kdp.0x680 # 00868 -lwz r12, 0x00b4( r3) # ConfigInfo.0xb4 # 0086c -stw r12, 0x0688( r1) # kdp.0x688 # 00870 -addi r13, r1, 0x920 # kdp.0x920 # 00874 -lwz r12, 0x00b8( r3) # ConfigInfo.0xb8 # 00878 -stw r13, 0x0684( r1) # kdp.0x684 # 0087c -add r13, r13, r12 # 00880 -stw r13, 0x066c( r1) # kdp.0x66c # 00884 -stw r0, 0x0910( r1) # kdp.0x910 # 00888 -lwz r11, 0x00a0( r3) # ConfigInfo.logi_KernelData -addi r12, r11, 0xfc0 # 00890 -stw r12, 0x0fc0( r1) # kdp.0xfc0 # 00894 -stw r0, 0x0fc4( r1) # kdp.0xfc4 # 00898 -lwz r11, 0x00a0( r3) # ConfigInfo.logi_KernelData -addi r12, r11, -0x4d0 # 008a0 -stw r12, 0x0fc8( r1) # kdp.0xfc8 # 008a4 -li r12, 0x100 # 008a8 -sth r12, 0x0fcc( r1) # kdp.0xfcc # 008ac -li r12, 0x80 # 008b0 -sth r12, 0x0fce( r1) # kdp.0xfce # 008b4 -lwz r11, 0x009c( r3) # ConfigInfo.logi_InfoRecord -addi r12, r11, 0xf00 # 008bc -stw r12, 0x0fd0( r1) # kdp.0xfd0 # 008c0 -li r12, 0x108 # 008c4 -sth r12, 0x0fd4( r1) # kdp.0xfd4 # 008c8 -li r12, 0xc0 # 008cc -sth r12, 0x0fd6( r1) # kdp.0xfd6 # 008d0 -lwz r11, 0x00a0( r3) # ConfigInfo.logi_KernelData -addi r12, r11, 0xf20 # 008d8 -stw r12, 0x0fd8( r1) # kdp.0xfd8 # 008dc -li r12, 0x112 # 008e0 -sth r12, 0x0fdc( r1) # kdp.0xfdc # 008e4 -li r12, 160 # 008e8 -sth r12, 0x0fde( r1) # kdp.0xfde # 008ec -lwz r11, 0x00a0( r3) # ConfigInfo.logi_KernelData -addi r12, r11, 0xdc0 # 008f4 -stw r12, 0x0fe0( r1) # kdp.0xfe0 # 008f8 -li r12, 0x228 # 008fc -sth r12, 0x0fe4( r1) # kdp.u16_version # 00900 -li r12, 0x160 # 00904 -sth r12, 0x0fe6( r1) # kdp.0xfe6 # 00908 -lwz r11, 0x00a0( r3) # ConfigInfo.logi_KernelData -addi r12, r11, -0x5d0 # 00910 -stw r12, 0x0fe8( r1) # kdp.0xfe8 # 00914 -li r12, 0x100 # 00918 -sth r12, 0x0fec( r1) # kdp.0xfec # 0091c -li r12, 0x100 # 00920 -sth r12, 0x0fee( r1) # kdp.0xfee # 00924 -lwz r11, 0x009c( r3) # ConfigInfo.logi_InfoRecord -addi r12, r11, 0xdc0 # 0092c -stw r12, 0x0ff0( r1) # kdp.0xff0 # 00930 -li r12, 0x107 # 00934 -sth r12, 0x0ff4( r1) # kdp.0xff4 # 00938 -li r12, 320 # 0093c -sth r12, 0x0ff6( r1) # kdp.0xff6 # 00940 -lwz r11, 0x00a0( r3) # ConfigInfo.logi_KernelData -addi r12, r11, 0xf20 # 00948 -stw r12, 0x0ff8( r1) # kdp.0xff8 # 0094c -li r12, 0x112 # 00950 -sth r12, 0x0ffc( r1) # kdp.0xffc # 00954 -li r12, 160 # 00958 -sth r12, 0x0ffe( r1) # kdp.0xffe # 0095c -lwz r11, 0x0074( r3) # ConfigInfo.0x74 # 00960 -lwz r12, 0x0064( r3) # ConfigInfo.rom_version_string_16char -stwux r12, r11, r8 # 00968 -lwz r12, 0x0068( r3) # ConfigInfo.0x68 # 0096c -stw r12, 0x0004(r11) # 00970 -lwz r12, 0x006c( r3) # ConfigInfo.0x6c # 00974 -stw r12, 0x0008(r11) # 00978 -lwz r12, 0x0070( r3) # ConfigInfo.0x70 # 0097c -stw r12, 0x000c(r11) # 00980 -lwz r12, 0x00ac( r3) # ConfigInfo.logi_EmulatorCode -lwz r11, 0x0080( r3) # ConfigInfo.emu_offset_80 # 00988 -add r12, r11, r12 # 0098c -lwz r11, 0x0078( r3) # ConfigInfo.00000100 # 00990 -add r11, r11, r8 # 00994 -stw r12, 0x0084(r11) # 00998 -lwz r12, 0x00a4( r3) # ConfigInfo.logi_EmulatorData -stw r12, 0x0094(r11) # 009a0 -lwz r12, 0x00a8( r3) # ConfigInfo.logi_DispatchTable -stw r12, 0x009c(r11) # 009a8 -lwz r12, 0x0648( r1) # kdp.emu_e8c0 # 009ac -stw r12, 0x005c(r11) # 009b0 -lwz r10, 0x0640( r1) # kdp.phys_ram_base # 009b4 -li r9, 0x2000 # 009b8 - -new_world_0x514: -addic. r9, r9, -0x04 # 009bc -stwx r0, r10, r9 # 009c0 -bne+ new_world_0x514 # 009c4 -lwz r11, 0x00b0( r3) # ConfigInfo.0xb0 # 009c8 -lwz r10, 0x0640( r1) # kdp.phys_ram_base # 009cc -lwzux r9, r11, r3 # 009d0 - -new_world_0x52c: -mr. r9, r9 # 009d4 -beq- new_world_0x544 # 009d8 -lwzu r12, 0x0004(r11) # 009dc -stwx r12, r10, r9 # 009e0 -lwzu r9, 0x0004(r11) # 009e4 -b new_world_0x52c # 009e8 - -new_world_0x544: -lwz r11, -0x0020( r1) # kdp.irp # 009ec -lwz r11, 0x0f70(r11) # 009f0 -lis r12, 0x486e # 009f4 -ori r12, r12, 0x666f # 009f8 -cmplw r12, r11 # 009fc - -# r1 = kdp -beq- new_world_final_common # 00a00 -mfspr r12, 287/*pvr*/ # 00a04 -stw r12, 0x0f20( r1) # kdp.u32_pvr # 00a08 -srwi r12, r12, 16 # 00a0c -lwz r11, 0x064c( r1) # kdp.phys_kern_base # 00a10 -addi r10, r1, 0xf30 # kdp.u32_cpuinfo_page_size # 00a14 -li r9, 0x24 # 00a18 - -# check for several (some unknown) pre-7410 CPUs, and load their info -cmpwi r12, 0x01 # 00a1c -addi r11, r11, cpuinfo_override_table - nk_start # 00a20 - -# r3 = ConfigInfo -# r4 = processor_info -# r5 = sys_info -# r6 = boot_r6 -# r9 = cpuinfo_size -# r10 = kdp_cpuinfo -# r11 = static_cpuinfo -beq- new_world_hardcode_cpu_info # 00a24 -cmpwi r12, 0x03 # 00a28 -addi r11, r11, 0x24 # 00a2c - -# r3 = ConfigInfo -# r4 = processor_info -# r5 = sys_info -# r6 = boot_r6 -# r9 = cpuinfo_size -# r10 = kdp_cpuinfo -# r11 = static_cpuinfo -beq- new_world_hardcode_cpu_info # 00a30 -cmpwi r12, 0x04 # 00a34 -addi r11, r11, 0x24 # 00a38 - -# r3 = ConfigInfo -# r4 = processor_info -# r5 = sys_info -# r6 = boot_r6 -# r9 = cpuinfo_size -# r10 = kdp_cpuinfo -# r11 = static_cpuinfo -beq- new_world_hardcode_cpu_info # 00a3c -cmpwi r12, 0x06 # 00a40 -addi r11, r11, 0x24 # 00a44 - -# r3 = ConfigInfo -# r4 = processor_info -# r5 = sys_info -# r6 = boot_r6 -# r9 = cpuinfo_size -# r10 = kdp_cpuinfo -# r11 = static_cpuinfo -beq- new_world_hardcode_cpu_info # 00a48 -cmpwi r12, 0x07 # 00a4c -addi r11, r11, 0x24 # 00a50 - -# r3 = ConfigInfo -# r4 = processor_info -# r5 = sys_info -# r6 = boot_r6 -# r9 = cpuinfo_size -# r10 = kdp_cpuinfo -# r11 = static_cpuinfo -beq- new_world_hardcode_cpu_info # 00a54 -cmpwi r12, 0x08 # 00a58 -addi r11, r11, 0x24 # 00a5c - -# r3 = ConfigInfo -# r4 = processor_info -# r5 = sys_info -# r6 = boot_r6 -# r9 = cpuinfo_size -# r10 = kdp_cpuinfo -# r11 = static_cpuinfo -beq- new_world_hardcode_cpu_info # 00a60 -cmpwi r12, 0x09 # 00a64 -addi r11, r11, 0x24 # 00a68 - -# r3 = ConfigInfo -# r4 = processor_info -# r5 = sys_info -# r6 = boot_r6 -# r9 = cpuinfo_size -# r10 = kdp_cpuinfo -# r11 = static_cpuinfo -beq- new_world_hardcode_cpu_info # 00a6c -cmpwi r12, 0x0a # 00a70 - -# r3 = ConfigInfo -# r4 = processor_info -# r5 = sys_info -# r6 = boot_r6 -# r9 = cpuinfo_size -# r10 = kdp_cpuinfo -# r11 = static_cpuinfo -beq- new_world_hardcode_cpu_info # 00a74 -cmpwi r12, 0x0c # 00a78 -addi r11, r11, 0x24 # 00a7c - -# r3 = ConfigInfo -# r4 = processor_info -# r5 = sys_info -# r6 = boot_r6 -# r9 = cpuinfo_size -# r10 = kdp_cpuinfo -# r11 = static_cpuinfo -beq- new_world_hardcode_cpu_info # 00a80 -cmpwi r12, 0x0d # 00a84 -addi r11, r11, 0x24 # 00a88 - -# r3 = ConfigInfo -# r4 = processor_info -# r5 = sys_info -# r6 = boot_r6 -# r9 = cpuinfo_size -# r10 = kdp_cpuinfo -# r11 = static_cpuinfo -beq- new_world_hardcode_cpu_info # 00a8c - -# get base of page table (why?) -mfspr r22, 25/*sdr1*/ # 00a90 - -# r21 = SDR1 & 0xffff0000 -rlwinm r21, r22, 0, 0, 15 # 00a94 - -# r22 = (SDR1 << 16) & 0x007F0000 -rlwinm r22, r22, 16, 9, 15 # 00a98 -addis r22, r22, 0x01 # 00a9c -li r15, 0x00 # 00aa0 -li r12, 0x1a # 00aa4 -mtctr r12 # 00aa8 -lwz r12, -0x0020( r1) # kdp.irp # 00aac -addi r10, r12, 0xec0 # 00ab0 - -new_world_0x60c: -lwz r11, -0x0004(r10) # 00ab4 -lwzu r12, -0x0008(r10) # 00ab8 -subf r9, r12, r21 # 00abc -cmplw r9, r11 # 00ac0 -bge- new_world_0x624 # 00ac4 -mr r11, r9 # 00ac8 - -new_world_0x624: -cmplw r11, r15 # 00acc -ble- new_world_0x634 # 00ad0 -mr r13, r12 # 00ad4 -mr r15, r11 # 00ad8 - -new_world_0x634: -bdnz+ new_world_0x60c # 00adc -addi r12, r22, -0x01 # 00ae0 -neg r11, r13 # 00ae4 -and r12, r11, r12 # 00ae8 -add r13, r13, r12 # 00aec -subf r15, r12, r15 # 00af0 -rlwinm r15, r15, 0, 0, 21 # 00af4 -li r11, 0x1000 # 00af8 -stw r11, 0x0f30( r1) # kdp.u32_cpuinfo_page_size -li r11, -0x01 # 00b00 -li r10, 0x400 # 00b04 - -new_world_0x660: -addic. r10, r10, -0x04 # 00b08 -stwx r11, r21, r10 # 00b0c -bne+ new_world_0x660 # 00b10 -dcbz r0, r21 # 00b14 - -new_world_0x670: -addi r10, r10, 0x01 # 00b18 -lbzx r11, r21, r10 # 00b1c -cmpwi r11, 0x00 # 00b20 -beq+ new_world_0x670 # 00b24 -sth r10, 0x0f3c( r1) # kdp.u16_cpuinfo_coherency_block_size -sth r10, 0x0f3e( r1) # kdp.u16_cpuinfo_reservation_granule_size -sth r10, 0x0f46( r1) # kdp.u16_cpuinfo_dcache_block_size_touch -sth r10, 0x0f48( r1) # kdp.u16_cpuinfo_icache_block_size -sth r10, 0x0f4a( r1) # kdp.u16_cpuinfo_dcache_block_size -lis r12, -0x8000 # 00b3c -add r11, r21, r22 # 00b40 -addi r11, r11, -0xe6e # 00b44 -addis r10, r21, 0x01 # 00b48 - -new_world_0x6a4: -stwu r11, -0x0004(r10) # 00b4c -rlwimi r12, r10, 29, 29, 31 # 00b50 -stwu r12, -0x0004(r10) # 00b54 -cmpw r10, r21 # 00b58 -rlwinm r9, r10, 9, 7, 19 # 00b5c -tlbie r9 # 00b60 -bne+ new_world_0x6a4 # 00b64 -sync # 00b68 -isync # 00b6c -lwz r11, 0x064c( r1) # kdp.phys_kern_base # 00b70 -li r12, (copied_code_1_end - copied_code_1) / 4 # 00b74 -mtctr r12 # 00b78 -add r20, r21, r22 # 00b7c -addi r11, r11, copied_code_1_end - nk_start # 00b80 - -new_world_0x6dc: -lwzu r12, -0x0004(r11) # 00b84 -stwu r12, -0x0004(r20) # 00b88 -dcbst r0, r20 # 00b8c -sync # 00b90 -icbi r0, r20 # 00b94 -bdnz+ new_world_0x6dc # 00b98 -sync # 00b9c -isync # 00ba0 -stw r0, 0x0f34( r1) # kdp.u32_cpuinfo_dcache_size -li r17, 0x00 # 00ba8 -li r18, 0x200 # 00bac -li r19, 0x00 # 00bb0 -li r16, -0x01 # 00bb4 -b new_world_0x720 # 00bb8 - -new_world_0x714: -addi r17, r17, 0x200 # 00bbc -cmplw r17, r15 # 00bc0 -bge- new_world_0x734 # 00bc4 - -new_world_0x720: -mtlr r20 # 00bc8 -blrl # 00bcc -ble+ new_world_0x714 # 00bd0 -addi r12, r17, -0x200 # 00bd4 -stw r12, 0x0f34( r1) # kdp.u32_cpuinfo_dcache_size - -new_world_0x734: -li r12, 0x01 # 00bdc -sth r12, 0x0f4e( r1) # kdp.u16_cpuinfo_dcache_assoc -lwz r18, 0x0f34( r1) # kdp.u32_cpuinfo_dcache_size -mr r17, r18 # 00be8 -li r19, 0x00 # 00bec -li r16, -0x01 # 00bf0 -b new_world_0x75c # 00bf4 - -new_world_0x750: -add r17, r17, r18 # 00bf8 -cmplw r17, r15 # 00bfc -bge- new_world_0x774 # 00c00 - -new_world_0x75c: -mtlr r20 # 00c04 -blrl # 00c08 -ble+ new_world_0x750 # 00c0c -subf r17, r18, r17 # 00c10 -divwu r12, r17, r18 # 00c14 -sth r12, 0x0f4e( r1) # kdp.u16_cpuinfo_dcache_assoc - -new_world_0x774: -lwz r17, 0x0f34( r1) # kdp.u32_cpuinfo_dcache_size -lhz r18, 0x0f4e( r1) # kdp.u16_cpuinfo_dcache_assoc -slwi r17, r17, 1 # 00c24 -divwu r18, r17, r18 # 00c28 -srwi r19, r18, 1 # 00c2c -li r14, 0x200 # 00c30 -add r19, r19, r14 # 00c34 -li r16, -0x01 # 00c38 -b new_world_0x7ac # 00c3c - -new_world_0x798: -lhz r12, 0x0f4a( r1) # kdp.u16_cpuinfo_dcache_block_size -cmplw r14, r12 # 00c44 -ble- new_world_0x7bc # 00c48 -srwi r14, r14, 1 # 00c4c -subf r19, r14, r19 # 00c50 - -new_world_0x7ac: -mtlr r20 # 00c54 -blrl # 00c58 -ble+ new_world_0x798 # 00c5c -slwi r12, r14, 1 # 00c60 - -new_world_0x7bc: -sth r12, 0x0f44( r1) # kdp.u16_cpuinfo_dcache_line_size -mtspr 25/*sdr1*/, r21 # 00c68 -mr r14, r13 # 00c6c -li r13, 0xff0 # 00c70 -sth r0, 0x0f50( r1) # kdp.u16_cpuinfo_tlb_size # 00c74 -li r17, 0x00 # 00c78 -lwz r18, 0x0f30( r1) # kdp.u32_cpuinfo_page_size -li r19, 0x00 # 00c80 -li r16, -0x01 # 00c84 -b new_world_0x7f4 # 00c88 - -new_world_0x7e4: -add r17, r17, r18 # 00c8c -lis r12, 0x3f # 00c90 -cmplw r17, r12 # 00c94 -bge- new_world_0x82c # 00c98 - -new_world_0x7f4: -mtlr r20 # 00c9c -mfmsr r12 # 00ca0 -ori r12, r12, 0x10 # 00ca4 -mtmsr r12 # 00ca8 -isync # 00cac -blrl # 00cb0 -mfmsr r12 # 00cb4 -rlwinm r12, r12, 0, 28, 26 # 00cb8 -mtmsr r12 # 00cbc -isync # 00cc0 -ble+ new_world_0x7e4 # 00cc4 -subf r17, r18, r17 # 00cc8 -divwu r12, r17, r18 # 00ccc -sth r12, 0x0f50( r1) # kdp.u16_cpuinfo_tlb_size # 00cd0 - -new_world_0x82c: -li r12, 0x01 # 00cd4 -sth r12, 0x0f52( r1) # kdp.u16_cpuinfo_tlb_assoc -li r17, 0x00 # 00cdc -lis r18, 0x40 # 00ce0 -li r19, 0x00 # 00ce4 -li r16, -0x01 # 00ce8 -b new_world_0x858 # 00cec - -new_world_0x848: -add r17, r17, r18 # 00cf0 -lis r12, 0x200 # 00cf4 -cmplw r17, r12 # 00cf8 -bge- new_world_0x890 # 00cfc - -new_world_0x858: -mtlr r20 # 00d00 -mfmsr r12 # 00d04 -ori r12, r12, 0x10 # 00d08 -mtmsr r12 # 00d0c -isync # 00d10 -blrl # 00d14 -mfmsr r12 # 00d18 -rlwinm r12, r12, 0, 28, 26 # 00d1c -mtmsr r12 # 00d20 -isync # 00d24 -ble+ new_world_0x848 # 00d28 -subf r17, r18, r17 # 00d2c -divwu r12, r17, r18 # 00d30 -sth r12, 0x0f52( r1) # kdp.u16_cpuinfo_tlb_assoc - -new_world_0x890: -mr r13, r14 # 00d38 -addi r12, r22, -0x01 # 00d3c -srwi r12, r12, 16 # 00d40 -or r12, r12, r21 # 00d44 -mtspr 25/*sdr1*/, r12 # 00d48 -lwz r12, 0x0f34( r1) # kdp.u32_cpuinfo_dcache_size -stw r12, 0x0f38( r1) # kdp.u32_cpuinfo_icache_size -lhz r12, 0x0f4e( r1) # kdp.u16_cpuinfo_dcache_assoc -sth r12, 0x0f4c( r1) # kdp.u16_cpuinfo_icache_assoc -lhz r12, 0x0f44( r1) # kdp.u16_cpuinfo_dcache_line_size -sth r12, 0x0f42( r1) # kdp.u16_cpuinfo_icache_line_size -lis r11, 0x3960 # 00d64 -stw r11, 0x0000(r21) # 00d68 -lis r11, 0x4e80 # 00d6c -ori r11, r11, 0x20 # 00d70 -stw r11, 0x0004(r21) # 00d74 -dcbst r0, r21 # 00d78 -sync # 00d7c -icbi r0, r21 # 00d80 -sync # 00d84 -isync # 00d88 -mtlr r21 # 00d8c -blrl # 00d90 -li r11, 0x01 # 00d94 -sth r11, 0x0002(r21) # 00d98 -sync # 00d9c -isync # 00da0 -mtlr r21 # 00da4 -blrl # 00da8 -sth r11, 0x0f40( r1) # kdp.u16_cpuinfo_unified_caches -cmpwi r11, 0x01 # 00db0 -beq- skip_cache_hackery_never # 00db4 -lwz r11, 0x064c( r1) # kdp.phys_kern_base # 00db8 -li r12, (copied_code_2_end - copied_code_2) / 4 # 00dbc -mtctr r12 # 00dc0 -add r20, r21, r22 # 00dc4 -addi r11, r11, copied_code_2_end - nk_start # 00dc8 - -new_world_0x924: -lwzu r12, -0x0004(r11) # 00dcc -stwu r12, -0x0004(r20) # 00dd0 -dcbst r0, r20 # 00dd4 -sync # 00dd8 -icbi r0, r20 # 00ddc -bdnz+ new_world_0x924 # 00de0 -sync # 00de4 -isync # 00de8 -subf r12, r21, r20 # 00dec -mulli r12, r12, 0x80 # 00df0 -cmplw r12, r15 # 00df4 -bge- new_world_0x958 # 00df8 -mr r15, r12 # 00dfc - -new_world_0x958: -add r12, r13, r15 # 00e00 -mr r11, r20 # 00e04 -lis r10, 0x4e80 # 00e08 -ori r10, r10, 0x20 # 00e0c - -new_world_0x968: -lwzu r9, -0x0200(r12) # 00e10 -stw r10, 0x0000(r12) # 00e14 -cmpw r12, r13 # 00e18 -stwu r9, -0x0004(r11) # 00e1c -dcbst r0, r12 # 00e20 -sync # 00e24 -icbi r0, r12 # 00e28 -bne+ new_world_0x968 # 00e2c -sync # 00e30 -isync # 00e34 -stw r0, 0x0f38( r1) # kdp.u32_cpuinfo_icache_size -li r17, 0x00 # 00e3c -li r18, 0x200 # 00e40 -li r19, 0x00 # 00e44 -li r16, -0x01 # 00e48 -b new_world_0x9b4 # 00e4c - -new_world_0x9a8: -addi r17, r17, 0x200 # 00e50 -cmplw r17, r15 # 00e54 -bge- new_world_0x9c8 # 00e58 - -new_world_0x9b4: -mtlr r20 # 00e5c -blrl # 00e60 -ble+ new_world_0x9a8 # 00e64 -addi r12, r17, -0x200 # 00e68 -stw r12, 0x0f38( r1) # kdp.u32_cpuinfo_icache_size - -new_world_0x9c8: -li r12, 0x01 # 00e70 -sth r12, 0x0f4c( r1) # kdp.u16_cpuinfo_icache_assoc -lwz r18, 0x0f38( r1) # kdp.u32_cpuinfo_icache_size -mr r17, r18 # 00e7c -li r19, 0x00 # 00e80 -li r16, -0x01 # 00e84 -b new_world_0x9f0 # 00e88 - -new_world_0x9e4: -add r17, r17, r18 # 00e8c -cmplw r17, r15 # 00e90 -bge- new_world_0xa08 # 00e94 - -new_world_0x9f0: -mtlr r20 # 00e98 -blrl # 00e9c -ble+ new_world_0x9e4 # 00ea0 -subf r17, r18, r17 # 00ea4 -divwu r12, r17, r18 # 00ea8 -sth r12, 0x0f4c( r1) # kdp.u16_cpuinfo_icache_assoc - -new_world_0xa08: -add r12, r13, r15 # 00eb0 -mr r11, r20 # 00eb4 - -new_world_0xa10: -lwzu r9, -0x0004(r11) # 00eb8 -stwu r9, -0x0200(r12) # 00ebc -cmpw r12, r13 # 00ec0 -dcbst r0, r12 # 00ec4 -sync # 00ec8 -icbi r0, r12 # 00ecc -bne+ new_world_0xa10 # 00ed0 -sync # 00ed4 -isync # 00ed8 -lwz r17, 0x0f38( r1) # kdp.u32_cpuinfo_icache_size -lhz r18, 0x0f4c( r1) # kdp.u16_cpuinfo_icache_assoc -divwu r18, r17, r18 # 00ee4 -slwi r17, r17, 1 # 00ee8 -add r12, r13, r17 # 00eec -addi r11, r21, -0x04 # 00ef0 - -new_world_0xa4c: -subf r12, r18, r12 # 00ef4 -li r14, 0x400 # 00ef8 - -new_world_0xa54: -rlwinm. r14, r14, 31, 0, 28 # 00efc -lwzx r9, r12, r14 # 00f00 -lis r10, 0x4e80 # 00f04 -ori r10, r10, 0x20 # 00f08 -stwx r10, r12, r14 # 00f0c -stwu r9, 0x0004(r11) # 00f10 -dcbst r12, r14 # 00f14 -sync # 00f18 -icbi r12, r14 # 00f1c -addi r14, r14, 0x04 # 00f20 -lwzx r9, r12, r14 # 00f24 -lis r10, 0x4bff # 00f28 -ori r10, r10, 0xfffc # 00f2c -stwx r10, r12, r14 # 00f30 -stwu r9, 0x0004(r11) # 00f34 -dcbst r12, r14 # 00f38 -sync # 00f3c -icbi r12, r14 # 00f40 -bne+ new_world_0xa54 # 00f44 -cmpw r12, r13 # 00f48 -bne+ new_world_0xa4c # 00f4c -sync # 00f50 -isync # 00f54 -mr r19, r18 # 00f58 -slwi r18, r18, 1 # 00f5c -li r14, 0x200 # 00f60 -add r19, r19, r14 # 00f64 -li r16, -0x01 # 00f68 -b new_world_0xadc # 00f6c - -new_world_0xac8: -li r12, 0x08 # 00f70 -cmplw r14, r12 # 00f74 -ble- new_world_0xaec # 00f78 -srwi r14, r14, 1 # 00f7c -subf r19, r14, r19 # 00f80 - -new_world_0xadc: -mtlr r20 # 00f84 -blrl # 00f88 -ble+ new_world_0xac8 # 00f8c -slwi r12, r14, 1 # 00f90 - -new_world_0xaec: -sth r12, 0x0f42( r1) # kdp.u16_cpuinfo_icache_line_size -srwi r18, r18, 1 # 00f98 -add r12, r13, r17 # 00f9c -addi r11, r21, -0x04 # 00fa0 - -new_world_0xafc: -subf r12, r18, r12 # 00fa4 -li r14, 0x400 # 00fa8 - -new_world_0xb04: -rlwinm. r14, r14, 31, 0, 28 # 00fac -lwzu r9, 0x0004(r11) # 00fb0 -stwx r9, r12, r14 # 00fb4 -addi r14, r14, 0x04 # 00fb8 -lwzu r9, 0x0004(r11) # 00fbc -stwx r9, r12, r14 # 00fc0 -bne+ new_world_0xb04 # 00fc4 -cmpw r12, r13 # 00fc8 -bne+ new_world_0xafc # 00fcc - -skip_cache_hackery_never: -# r1 = kdp -b new_world_final_common # 00fd0 - - - -/*********************************************************** - - copied_code_1 - -************************************************************ - -Xrefs: -new_world - -***********************************************************/ - -copied_code_1: /* < outside referer */ -li r10, 0x03 # 00fd4 - -copied_code_1_0x4: -li r12, 0x800 # 00fd8 -mtctr r12 # 00fdc -add r19, r19, r13 # 00fe0 -li r11, 0x00 # 00fe4 -mtspr 22/*dec*/, r11 # 00fe8 - -copied_code_1_0x18: -subf r12, r17, r11 # 00fec -srawi r12, r12, 31 # 00ff0 -and r11, r11, r12 # 00ff4 -lbzx r12, r13, r11 # 00ff8 -add r12, r12, r12 # 00ffc -lbzx r12, r19, r11 # 01000 -add r12, r12, r12 # 01004 -add r11, r11, r18 # 01008 -bdnz+ copied_code_1_0x18 # 0100c -subf r19, r13, r19 # 01010 -mfspr r12, 22/*dec*/ # 01014 -neg r12, r12 # 01018 -cmplw r12, r16 # 0101c -bgt- copied_code_1_0x54 # 01020 -mr r16, r12 # 01024 - -copied_code_1_0x54: -srwi r11, r12, 7 # 01028 -subf r12, r11, r12 # 0102c -cmpw r12, r16 # 01030 -blelr- # 01034 -addic. r10, r10, -0x01 # 01038 -bgt+ copied_code_1_0x4 # 0103c -cmpw r12, r16 # 01040 -blr # 01044 -.long 0x4c00012c # 01048 -.long 0x4c00012c # 0104c -.long 0x4c00012c # 01050 -.long 0x4c00012c # 01054 -.long 0x4c00012c # 01058 -.long 0x4c00012c # 0105c -.long 0x4c00012c # 01060 -.long 0x4c00012c # 01064 -.long 0x4c00012c # 01068 -.long 0x4c00012c # 0106c -.long 0x4c00012c # 01070 -.long 0x4c00012c # 01074 -.long 0x4c00012c # 01078 -.long 0x4c00012c # 0107c -.long 0x4c00012c # 01080 -.long 0x4c00012c # 01084 -copied_code_1_end: /* < outside referer */ - - - -/*********************************************************** - - copied_code_2 - -************************************************************ - -Xrefs: -new_world - -***********************************************************/ - -.align 3 # 01088 - -copied_code_2: /* < outside referer */ -li r10, 0x03 # 01088 -mflr r9 # 0108c - -copied_code_2_0x8: -li r12, 0x800 # 01090 -mtctr r12 # 01094 -add r19, r19, r13 # 01098 -li r11, 0x00 # 0109c -mtspr 22/*dec*/, r11 # 010a0 - -copied_code_2_0x1c: -subf r12, r17, r11 # 010a4 -srawi r12, r12, 31 # 010a8 -and r11, r11, r12 # 010ac -add r12, r13, r11 # 010b0 -mtlr r12 # 010b4 -blrl # 010b8 -add r12, r19, r11 # 010bc -mtlr r12 # 010c0 -blrl # 010c4 -add r11, r11, r18 # 010c8 -bdnz+ copied_code_2_0x1c # 010cc -subf r19, r13, r19 # 010d0 -mfspr r12, 22/*dec*/ # 010d4 -neg r12, r12 # 010d8 -cmplw r12, r16 # 010dc -bgt- copied_code_2_0x60 # 010e0 -mr r16, r12 # 010e4 - -copied_code_2_0x60: -srwi r11, r12, 7 # 010e8 -subf r12, r11, r12 # 010ec -cmpw r12, r16 # 010f0 -mtlr r9 # 010f4 -blelr- # 010f8 -addic. r10, r10, -0x01 # 010fc -bgt+ copied_code_2_0x8 # 01100 -cmpw r12, r16 # 01104 -blr # 01108 -.long 0x4c00012c # 0110c -.long 0x4c00012c # 01110 -.long 0x4c00012c # 01114 -.long 0x4c00012c # 01118 -.long 0x4c00012c # 0111c -.long 0x4c00012c # 01120 -.long 0x4c00012c # 01124 -.long 0x4c00012c # 01128 -.long 0x4c00012c # 0112c -.long 0x4c00012c # 01130 -.long 0x4c00012c # 01134 -.long 0x4c00012c # 01138 -.long 0x4c00012c # 0113c -.long 0x4c00012c # 01140 -.long 0x4c00012c # 01144 -.long 0x4c00012c # 01148 -copied_code_2_end: /* < outside referer */ - - - -/*********************************************************** - - cpu_pre_7410_infobytes_1 - -***********************************************************/ - -.long 0x0300031b # 0114c -.long 0x0a1b1b1b # 01150 -.long 0x1b0a0a03 # 01154 -.long 0x1b0b0303 # 01158 - - - -/*********************************************************** - - cpu_7410plus_infobytes_1 - -***********************************************************/ - -.long 0x031b0303 # 0115c -.long 0x03030303 # 01160 -.long 0x03030303 # 01164 -.long 0x1b030303 # 01168 - - - -/*********************************************************** - - cpu_pre_7410_infobytes_2 - -***********************************************************/ - -.long 0x01000102 # 0116c -.long 0x01020202 # 01170 -.long 0x02010101 # 01174 -.long 0x02020202 # 01178 - - - -/*********************************************************** - - cpu_7410plus_infobytes_2 - -***********************************************************/ - -.long 0x02020202 # 0117c -.long 0x01020202 # 01180 -.long 0x02020202 # 01184 -.long 0x02020202 # 01188 - - - -/*********************************************************** - - cpu_pre_7410_infolongs - -***********************************************************/ - -.long 0 # 0118c -.long 0 # 01190 -.long 0 # 01194 -.long 0 # 01198 -.long 0 # 0119c -.long 0 # 011a0 -.long 0 # 011a4 -.long 0 # 011a8 -.long 0x00000007 # 011ac -.long 0 # 011b0 -.long 0 # 011b4 -.long 0 # 011b8 -.long 0x0000001f # 011bc -.long 0 # 011c0 -.long 0 # 011c4 -.long 0 # 011c8 - - - -/*********************************************************** - - cpu_7410plus_infolongs - -***********************************************************/ - -.long 0x0000001f # 011cc -.long 0x0000001f # 011d0 -.long 0 # 011d4 -.long 0 # 011d8 -.long 0 # 011dc -.long 0 # 011e0 -.long 0 # 011e4 -.long 0 # 011e8 -.long 0 # 011ec -.long 0 # 011f0 -.long 0 # 011f4 -.long 0 # 011f8 -.long 0x0000001f # 011fc -.long 0 # 01200 -.long 0 # 01204 -.long 0 # 01208 - - - -/*********************************************************** - - cpuinfo_override_table - -************************************************************ - -For 7400(only) and earlier CPUs. Overwrites info in KDP copied from bootloader. - -***********************************************************/ - -cpuinfo_override_table: /* < outside referer */ -.long 0x00001000 # 0120c -.long 0x00008000 # 01210 -.long 0x00008000 # 01214 -.long 0x00200020 # 01218 -.long 0x00010040 # 0121c -.long 0x00400020 # 01220 -.long 0x00200020 # 01224 -.long 0x00080008 # 01228 -.long 0x01000002 # 0122c -.long 0x00001000 # 01230 -.long 0x00002000 # 01234 -.long 0x00002000 # 01238 -.long 0x00200020 # 0123c -.long 0x00000020 # 01240 -.long 0x00200020 # 01244 -.long 0x00200020 # 01248 -.long 0x00020002 # 0124c -.long 0x00400002 # 01250 -.long 0x00001000 # 01254 -.long 0x00004000 # 01258 -.long 0x00004000 # 0125c -.long 0x00200020 # 01260 -.long 0x00000020 # 01264 -.long 0x00200020 # 01268 -.long 0x00200020 # 0126c -.long 0x00040004 # 01270 -.long 0x00800002 # 01274 -.long 0x00001000 # 01278 -.long 0x00004000 # 0127c -.long 0x00004000 # 01280 -.long 0x00200020 # 01284 -.long 0x00000020 # 01288 -.long 0x00200020 # 0128c -.long 0x00200020 # 01290 -.long 0x00040004 # 01294 -.long 0x00400002 # 01298 -.long 0x00001000 # 0129c -.long 0x00004000 # 012a0 -.long 0x00004000 # 012a4 -.long 0x00200020 # 012a8 -.long 0x00000020 # 012ac -.long 0x00200020 # 012b0 -.long 0x00200020 # 012b4 -.long 0x00040004 # 012b8 -.long 0x00400002 # 012bc -.long 0x00001000 # 012c0 -.long 0x00008000 # 012c4 -.long 0x00008000 # 012c8 -.long 0x00200020 # 012cc -.long 0x00000020 # 012d0 -.long 0x00200020 # 012d4 -.long 0x00200020 # 012d8 -.long 0x00080008 # 012dc -.long 0x00800002 # 012e0 -.long 0x00001000 # 012e4 -.long 0x00008000 # 012e8 -.long 0x00008000 # 012ec -.long 0x00200020 # 012f0 -.long 0x00000020 # 012f4 -.long 0x00200020 # 012f8 -.long 0x00200020 # 012fc -.long 0x00040004 # 01300 -.long 0x00800002 # 01304 -.long 0x00001000 # 01308 -.long 0x00008000 # 0130c -.long 0x00008000 # 01310 -.long 0x00200020 # 01314 -.long 0x00000020 # 01318 -.long 0x00200020 # 0131c -.long 0x00200020 # 01320 -.long 0x00080008 # 01324 -.long 0x00800002 # 01328 -.long 0x00001000 # 0132c -.long 0x00008000 # 01330 -.long 0x00008000 # 01334 -.long 0x00200020 # 01338 -.long 0x00000020 # 0133c -.long 0x00200020 # 01340 -.long 0x00200020 # 01344 -.long 0x00080008 # 01348 -.long 0x01000004 # 0134c - - - -/*********************************************************** - - new_world_hardcode_cpu_info - -************************************************************ - -All G3s and earler, plus the G4-7400 (only). Overwrite part of the CPU info that we got from the bootloader (the important bits), and go to setup. - -************************************************************ - -Xrefs: -new_world - -************************************************************ - -> r3 = ConfigInfo -> r4 = processor_info -> r5 = sys_info -> r6 = boot_r6 -> r9 = cpuinfo_size -> r10 = kdp_cpuinfo -> r11 = static_cpuinfo - -***********************************************************/ - -.align 4 # 01350 - -new_world_hardcode_cpu_info: /* < outside referer */ -addic. r9, r9, -0x04 # 01350 -lwzx r12, r11, r9 # 01354 -stwx r12, r10, r9 # 01358 -bgt+ new_world_hardcode_cpu_info # 0135c - - - -/*********************************************************** - - new_world_final_common - -************************************************************ - -Xrefs: -new_world -new_world_hardcode_cpu_info - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -.align 5 # 01360 - -new_world_final_common: /* < outside referer */ -li r8, 0x112 # 01360 -sth r8, 0x0fdc( r1) # kdp.0xfdc # 01364 -lwz r9, 0x0f2c( r1) # kdp.u32_timebase_freq # 01368 -stw r9, 0x0f88( r1) # kdp.0xf88 # 0136c -lwz r9, 0x0f28( r1) # kdp.u32_bus_freq # 01370 -stw r9, 0x0f84( r1) # kdp.0xf84 # 01374 -lwz r9, 0x0f24( r1) # kdp.u32_cpu_clock_freq # 01378 -stw r9, 0x0f80( r1) # kdp.0xf80 # 0137c -li r9, 0x00 # 01380 -sth r9, 0x0f7e( r1) # kdp.0xf7e # 01384 -lwz r8, 0x0f2c( r1) # kdp.u32_timebase_freq # 01388 -stw r8, -0x0438( r1) # kdp.-0x438 # 0138c -lwz r9, 0x064c( r1) # kdp.phys_kern_base # 01390 -lis r8, return_to_kern_from_dummy_interrupt@h -ori r8, r8, return_to_kern_from_dummy_interrupt@l -add r8, r8, r9 # 0139c -stw r8, 0x037c( r1) # kdp.0x37c # 013a0 -lis r8, major_0x04bc0@h # 013a4 -ori r8, r8, major_0x04bc0@l # 013a8 -add r8, r8, r9 # 013ac -stw r8, 0x039c( r1) # kdp.0x39c # 013b0 -addi r8, r1, 0x360 # kdp.0x360 # 013b4 -mtspr 275/*sprg3*/, r8 # 013b8 -lis r8, 0x04 # 013bc -mtspr 0/*mq*/, r8 # 013c0 -li r8, 0x00 # 013c4 -mfspr r8, 0/*mq*/ # 013c8 -stw r8, -0x0968( r1) # kdp.-0x968 # 013cc -oris r9, r8, 0x08 # 013d0 -stw r9, 0x0000( r1) # kdp.0x0 # 013d4 -addi r9, r1, 0x00 # kdp.0x0 # 013d8 -lvewx v0, r0, r9 # 013dc -stw r8, 0x0000( r1) # kdp.0x0 # 013e0 -stvewx v0, r0, r9 # 013e4 -lwz r8, 0x0000( r1) # kdp.0x0 # 013e8 -stw r8, -0x0968( r1) # kdp.-0x968 # 013ec -oris r7, r8, 160 # 013f0 -stw r7, -0x0010( r1) # kdp.-0x10 # 013f4 -lwz r6, 0x0658( r1) # kdp.system_context # 013f8 -lwz r10, 0x0648( r1) # kdp.emu_e8c0 # 013fc -mfmsr r14 # 01400 -rlwinm r14, r14, 0, 7, 5 # 01404 -andi. r14, r14, 0x40 # 01408 -ori r15, r14, 0x1012 # 0140c -ori r11, r14, 0xd032 # 01410 -stw r11, -0x0964( r1) # kdp.-0x964 # 01414 -li r13, 0x00 # 01418 -li r12, 0x00 # 0141c -li r0, 0x00 # 01420 -li r2, 0x00 # 01424 -li r3, 0x00 # 01428 -li r4, 0x00 # 0142c - - - -/*********************************************************** - - setup_new_world - -************************************************************ - -Sometimes (?) on NewWorld machines, blue issues a 68k reset trap to reinit the kernel. Rene says that this is necessary to set up address spaces. - -************************************************************ - -Xrefs: -new_world_final_common -non_skeleton_reset_trap - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -.align 4 # 01430 - -setup_new_world: /* < outside referer */ -crclr 4*cr5 + eq # 01430 - - - -/*********************************************************** - - setup - -************************************************************ - -Final common pathway. Prints a whole heap of stuff. -cr5.eq is set for OldWorld, unset for NewWorld - -SPRG0: ("EWA" -- core-specific Exception Work Area) -"Software may load a unique physical address in this register to identify an area of memory reserved for use by the first-level exception handler. This area must be unique for each processor in the system." - -SPRG1: ("r1" = "KDP" = kernel data page) -"This register may be used as a scratch register by the first-level exception handler to save the content of a GPR. That GPR then can be loaded from SPRG0 and used as a base register to save other GPRs to memory." - -SPRG2: ("LR" = interrupt-saved link register -"This register may be used by the operating system as needed." - -SPRG3: ("vecBase" = pointer to one of six 48-member vector tables in KDP or KCP) -"This register may be used by the operating system as needed." - -************************************************************ - -Xrefs: -replace_old_kernel -setup_new_world - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -setup: /* < outside referer */ -mfxer r17 # 01434 -stw r17, 0x00d4( r6) # 01438 -bl 1f # 0143c -.ascii "Kernel code base at 0x" # 01440 -.short 0 # 01456 -.align 2 # 01458 -1: mflr r8 # 01458 -bl print_string # 0145c -lwz r8, 0x064c( r1) # kdp.phys_kern_base # 01460 -mr r8, r8 # 01464 -bl print_word_hex # 01468 -bl 1f # 0146c -.ascii " Physical RAM size 0x" # 01470 -.short 0 # 01485 -.align 2 # 01487 -1: mflr r8 # 01488 -bl print_string # 0148c -lwz r8, -0x0020( r1) # kdp.irp # 01490 -lwz r8, 0x0dc0( r8) # 01494 -mr r8, r8 # 01498 -bl print_word_hex # 0149c -bl 1f # 014a0 -.ascii "bytes^n" # 014a4 -.short 0 # 014ab -.align 2 # 014ad -1: mflr r8 # 014b0 -bl print_string # 014b4 - -# Copy 64b from 0xfc0(kdp) to 0xfc0(irp)... -lis r22, 0x00 # 014b8 -ori r22, r22, 0x40 # 014bc -lwz r9, -0x0020( r1) # kdp.irp # 014c0 -addi r8, r1, 0xfc0 # kdp.0xfc0 # 014c4 -addi r9, r9, 0xfc0 # 014c8 - -setup_0x98: -addic. r22, r22, -0x04 # 014cc -lwzx r0, r22, r8 # 014d0 -stwx r0, r22, r9 # 014d4 -bgt+ setup_0x98 # 014d8 - -# ...done -lwz r26, 0x0630( r1) # kdp.pa_ConfigInfo # 014dc -lwz r25, 0x064c( r1) # kdp.phys_kern_base # 014e0 -lwz r18, 0x0684( r1) # kdp.0x684 # 014e4 - -# Fill SIX vector tables, in kdp and below, with CRASHes... -lis r23, panic@h # 014e8 -ori r23, r23, panic@l # 014ec -add r23, r23, r25 # 014f0 -addi r8, r1, 0x360 # kdp.0x360 # 014f4 -li r22, 0xc0 # 014f8 - -# r8 = dest -# r22 = len in bytes -# r23 = fillword -bl wordfill # 014fc -addi r8, r1, 0x420 # kdp.0x420 # 01500 -li r22, 0xc0 # 01504 - -# r8 = dest -# r22 = len in bytes -# r23 = fillword -bl wordfill # 01508 -addi r8, r1, 0x4e0 # kdp.0x4e0 # 0150c -li r22, 0xc0 # 01510 - -# r8 = dest -# r22 = len in bytes -# r23 = fillword -bl wordfill # 01514 -addi r8, r1, -0x8d0 # kdp.-0x8d0 # 01518 -li r22, 0xc0 # 0151c - -# r8 = dest -# r22 = len in bytes -# r23 = fillword -bl wordfill # 01520 -addi r8, r1, -0x750 # kdp.-0x750 # 01524 -li r22, 0xc0 # 01528 - -# r8 = dest -# r22 = len in bytes -# r23 = fillword -bl wordfill # 0152c - -# ...done -# Fill ONE vector table, below kdp, with something ELSE... -lis r23, return_to_kern_from_dummy_interrupt@h -ori r23, r23, return_to_kern_from_dummy_interrupt@l -add r23, r23, r25 # 01538 -addi r8, r1, -0x690 # kdp.-0x690 # 0153c -li r22, 0xc0 # 01540 - -# r8 = dest -# r22 = len in bytes -# r23 = fillword -bl wordfill # 01544 - -# ...done -addi r9, r1, 0x360 # kdp.0x360 # 01548 - -# Point SPRG3=vecBase at one of those tables. -mtspr 275/*sprg3*/, r9 # 0154c -addi r8, r1, 0x420 # kdp.0x420 # 01550 -lis r23, panic@h # 01554 -ori r23, r23, panic@l # 01558 -add r23, r23, r25 # 0155c -stw r23, 0x0004( r9) # kdp.0x364 # 01560 -stw r23, 0x0004( r8) # kdp.0x424 # 01564 -lis r23, major_0x03940_0xc4@h # 01568 -ori r23, r23, major_0x03940_0xc4@l # 0156c -add r23, r23, r25 # 01570 -stw r23, 0x0008( r9) # kdp.0x368 # 01574 -stw r23, 0x0008( r8) # kdp.0x428 # 01578 -lis r23, major_0x032c0@h # 0157c -ori r23, r23, major_0x032c0@l # 01580 -add r23, r23, r25 # 01584 -stw r23, 0x000c( r9) # kdp.0x36c # 01588 -stw r23, 0x000c( r8) # kdp.0x42c # 0158c -lis r23, major_0x03940@h # 01590 -ori r23, r23, major_0x03940@l # 01594 -add r23, r23, r25 # 01598 -stw r23, 0x0010( r9) # kdp.0x370 # 0159c -stw r23, 0x0010( r8) # kdp.0x430 # 015a0 -lis r23, major_0x04880@h # 015a4 -ori r23, r23, major_0x04880@l # 015a8 -add r23, r23, r25 # 015ac -stw r23, 0x0014( r9) # kdp.0x374 # 015b0 -lis r23, major_0x046e0@h # 015b4 -ori r23, r23, major_0x046e0@l # 015b8 -add r23, r23, r25 # 015bc -stw r23, 0x0014( r8) # kdp.0x434 # 015c0 -lis r23, major_0x03460@h # 015c4 -ori r23, r23, major_0x03460@l # 015c8 -add r23, r23, r25 # 015cc -stw r23, 0x0018( r9) # kdp.0x378 # 015d0 -stw r23, 0x0018( r8) # kdp.0x438 # 015d4 -lis r23, major_0x04700@h # 015d8 -ori r23, r23, major_0x04700@l # 015dc -add r23, r23, r25 # 015e0 -stw r23, 0x001c( r9) # kdp.0x37c # 015e4 -stw r23, 0x001c( r8) # kdp.0x43c # 015e8 -lis r23, major_0x03da0@h # 015ec -ori r23, r23, major_0x03da0@l # 015f0 -add r23, r23, r25 # 015f4 -stw r23, 0x0020( r9) # kdp.0x380 # 015f8 -stw r23, 0x0020( r8) # kdp.0x440 # 015fc -lis r23, major_0x03200@h # 01600 -ori r23, r23, major_0x03200@l # 01604 -add r23, r23, r25 # 01608 -stw r23, 0x0024( r9) # kdp.0x384 # 0160c -stw r23, 0x0024( r8) # kdp.0x444 # 01610 -lis r23, sc_vector@h # 01614 -ori r23, r23, sc_vector@l # 01618 -add r23, r23, r25 # 0161c -stw r23, 0x0030( r9) # kdp.0x390 # 01620 -stw r23, 0x0030( r8) # kdp.0x450 # 01624 -lis r23, major_0x04240@h # 01628 -ori r23, r23, major_0x04240@l # 0162c -add r23, r23, r25 # 01630 -stw r23, 0x003c( r9) # kdp.0x39c # 01634 -stw r23, 0x003c( r8) # kdp.0x45c # 01638 -lis r23, major_0x04b60@h # 0163c -ori r23, r23, major_0x04b60@l # 01640 -add r23, r23, r25 # 01644 -stw r23, 0x0034( r9) # kdp.0x394 # 01648 -stw r23, 0x0034( r8) # kdp.0x454 # 0164c -stw r23, 0x0080( r9) # kdp.0x3e0 # 01650 -stw r23, 0x0080( r8) # kdp.0x4a0 # 01654 -lis r23, major_0x07440@h # 01658 -ori r23, r23, major_0x07440@l # 0165c -add r23, r23, r25 # 01660 -stw r23, 0x0058( r9) # kdp.0x3b8 # 01664 -stw r23, 0x0058( r8) # kdp.0x478 # 01668 -lis r23, major_0x04300@h # 0166c -ori r23, r23, major_0x04300@l # 01670 -add r23, r23, r25 # 01674 -stw r23, 0x005c( r9) # kdp.0x3bc # 01678 -stw r23, 0x005c( r8) # kdp.0x47c # 0167c -addi r8, r1, 0x4e0 # kdp.0x4e0 # 01680 -lis r23, panic@h # 01684 -ori r23, r23, panic@l # 01688 -add r23, r23, r25 # 0168c -stw r23, 0x0004( r8) # kdp.0x4e4 # 01690 -lis r23, memretry_machine_check@h # 01694 -ori r23, r23, memretry_machine_check@l # 01698 -add r23, r23, r25 # 0169c -stw r23, 0x0008( r8) # kdp.0x4e8 # 016a0 -lis r23, major_0x035a0@h # 016a4 -ori r23, r23, major_0x035a0@l # 016a8 -add r23, r23, r25 # 016ac -stw r23, 0x000c( r8) # kdp.0x4ec # 016b0 -lis r23, sc_vector@h # 016b4 -ori r23, r23, sc_vector@l # 016b8 -add r23, r23, r25 # 016bc -stw r23, 0x0030( r8) # kdp.0x510 # 016c0 -lis r23, major_0x04a20@h # 016c4 -ori r23, r23, major_0x04a20@l # 016c8 -add r23, r23, r25 # 016cc -addi r8, r1, -0x8d0 # kdp.-0x8d0 # 016d0 -li r22, 0xc0 # 016d4 - -# r8 = dest -# r22 = len in bytes -# r23 = fillword -bl wordfill # 016d8 -lis r23, panic@h # 016dc -ori r23, r23, panic@l # 016e0 -add r23, r23, r25 # 016e4 -stw r23, 0x0004( r8) # kdp.-0x8cc # 016e8 -lis r23, major_0x032c0@h # 016ec -ori r23, r23, major_0x032c0@l # 016f0 -add r23, r23, r25 # 016f4 -stw r23, 0x000c( r8) # kdp.-0x8c4 # 016f8 -lis r23, major_0x03940@h # 016fc -ori r23, r23, major_0x03940@l # 01700 -add r23, r23, r25 # 01704 -stw r23, 0x0010( r8) # kdp.-0x8c0 # 01708 -lis r23, major_0x03460@h # 0170c -ori r23, r23, major_0x03460@l # 01710 -add r23, r23, r25 # 01714 -stw r23, 0x0018( r8) # kdp.-0x8b8 # 01718 -bl panic_offset_to_r1_minus_0x810_x48__0x9dfc_to_prev_plus_4_20_36 -addi r8, r1, -0x750 # kdp.-0x750 # 01720 -lis r23, panic@h # 01724 -ori r23, r23, panic@l # 01728 -add r23, r23, r25 # 0172c -stw r23, 0x0004( r8) # kdp.-0x74c # 01730 -lis r23, major_0x03940_0xc4@h # 01734 -ori r23, r23, major_0x03940_0xc4@l # 01738 -add r23, r23, r25 # 0173c -stw r23, 0x0008( r8) # kdp.-0x748 # 01740 -lis r23, dsi_vector@h # 01744 -ori r23, r23, dsi_vector@l # 01748 -add r23, r23, r25 # 0174c -stw r23, 0x000c( r8) # kdp.-0x744 # 01750 -lis r23, sc_vector@h # 01754 -ori r23, r23, sc_vector@l # 01758 -add r23, r23, r25 # 0175c -stw r23, 0x0030( r8) # kdp.-0x720 # 01760 -lis r23, major_0x046d0@h # 01764 -ori r23, r23, major_0x046d0@l # 01768 -add r23, r23, r25 # 0176c -addi r8, r1, 0x5f0 # kdp.0x5f0 # 01770 -li r22, 0x40 # 01774 - -loop_memset: -addic. r22, r22, -0x04 # 01778 -stwx r23, r8, r22 # 0177c -bne+ loop_memset # 01780 -lis r23, major_0x03be0_0x18@h # 01784 -ori r23, r23, major_0x03be0_0x18@l # 01788 -add r23, r23, r25 # 0178c -stw r23, 0x0000( r8) # kdp.0x5f0 # 01790 -lis r23, major_0x043a0@h # 01794 -ori r23, r23, major_0x043a0@l # 01798 -add r23, r23, r25 # 0179c -stw r23, 0x0004( r8) # kdp.0x5f4 # 017a0 -lis r23, reset_trap@h # 017a4 -ori r23, r23, reset_trap@l # 017a8 -add r23, r23, r25 # 017ac -stw r23, 0x0008( r8) # kdp.0x5f8 # 017b0 -lis r23, major_0x08640@h # 017b4 -ori r23, r23, major_0x08640@l # 017b8 -add r23, r23, r25 # 017bc -stw r23, 0x000c( r8) # kdp.0x5fc # 017c0 -lis r23, pih_indirect@h # 017c4 -ori r23, r23, pih_indirect@l # 017c8 -add r23, r23, r25 # 017cc -stw r23, 0x0010( r8) # kdp.0x600 # 017d0 -lis r23, bootstrap_cpu@h # 017d4 -ori r23, r23, bootstrap_cpu@l # 017d8 -add r23, r23, r25 # 017dc -stw r23, 0x0014( r8) # kdp.0x604 # 017e0 -lis r23, rtas_call@h # 017e4 -ori r23, r23, rtas_call@l # 017e8 -add r23, r23, r25 # 017ec -stw r23, 0x0018( r8) # kdp.0x608 # 017f0 -lis r23, major_0x0a8c0@h # 017f4 -ori r23, r23, major_0x0a8c0@l # 017f8 -add r23, r23, r25 # 017fc -stw r23, 0x001c( r8) # kdp.0x60c # 01800 -lis r23, syscall@h # 01804 -ori r23, r23, syscall@l # 01808 -add r23, r23, r25 # 0180c -stw r23, 0x0020( r8) # kdp.0x610 # 01810 -lis r23, regsave_debug@h # 01814 -ori r23, r23, regsave_debug@l # 01818 -add r23, r23, r25 # 0181c -stw r23, 0x003c( r8) # kdp.0x62c # 01820 - -# super boring stuff over. now cpu-specific stuff! -# (I have only listed CPUs that I think Apple used) -# PVR = version << 16 | revision - -# Pre-G3: -# 0001 = 601 -# 0003 = 603 -# 0006 = 603e -# 0007 = 606ev/606r -# 0004 = 604 -# 0004 = 604e - -# G3: -# 0008 = 750/750CX/750CXe/755 -# 0007 = 750FX - -# G4: -# 000c = 7400 -# 800c = 7410 -# 8000 = 7450 -# 8001 = 7445/7455 -# 8002 = 7447/7457 (upgrades only!) - -# G5: -# 0039 = 970 -# 003c = 970FX -mfspr r23, 287/*pvr*/ # 01824 -srwi r23, r23, 16 # 01828 -andi. r8, r23, 0x8000 # 0182c -bne- G4_7410_or_later # 01830 - -# pre-7410 CPUs (not that a 7400 is anything like a G3) -cmplwi r23, 0x0f # 01834 - -# the only CPUs >= 0x0010 are G5s -ble- skip_zeroing_G5 # 01838 -li r23, 0x00 # 0183c - -skip_zeroing_G5: -add r8, r25, r23 # 01840 -lbz r23, 0x114c( r8) # 01844 -stb r23, 0x06b8( r1) # kdp.0x6b8 # 01848 -lbz r23, 0x116c( r8) # 0184c -stb r23, 0x06b9( r1) # kdp.0x6b9 # 01850 -mfspr r23, 287/*pvr*/ # 01854 -srwi r23, r23, 16 # 01858 -slwi r23, r23, 2 # 0185c -add r8, r25, r23 # 01860 -lwz r23, 0x118c( r8) # 01864 -stw r23, 0x0f68( r1) # kdp.0xf68 # 01868 -b post_cpu_specific # 0186c - -# clear the high (8000) bit and have fun -G4_7410_or_later: -andi. r23, r23, 0x7fff # 01870 -cmplwi r23, 0x0f # 01874 -ble- skip_spoofing_weird_G4 # 01878 - -# treat 8010 (doesnt exist) as 8FF0 -- why?? -li r23, -0x10 # 0187c - -skip_spoofing_weird_G4: -add r8, r25, r23 # 01880 -lbz r23, 0x115c( r8) # 01884 -stb r23, 0x06b8( r1) # kdp.0x6b8 # 01888 -lbz r23, 0x117c( r8) # 0188c -stb r23, 0x06b9( r1) # kdp.0x6b9 # 01890 -mfspr r23, 287/*pvr*/ # 01894 -srwi r23, r23, 16 # 01898 -andi. r23, r23, 0x7fff # 0189c -slwi r23, r23, 2 # 018a0 -add r8, r25, r23 # 018a4 -lwz r23, 0x11cc( r8) # 018a8 -stw r23, 0x0f68( r1) # kdp.0xf68 # 018ac - -# im not even going to complain that this compiler is so dumb -b post_cpu_specific # 018b0 - -# fill a buncha r1 stuff with 0xFFFFFFFF -post_cpu_specific: -li r23, -0x01 # 018b4 -stw r23, 0x0340( r1) # kdp.0x340 # 018b8 -stw r23, 0x0348( r1) # kdp.0x348 # 018bc -stw r23, 0x0350( r1) # kdp.0x350 # 018c0 -stw r23, 0x0358( r1) # kdp.0x358 # 018c4 - -# Initialise the seven kernel locks with zero in the count field... -li r23, 0x00 # 018c8 -stw r23, -0x0b90( r1) # kdp.htab_lock # 018cc -stw r23, -0x0b70( r1) # kdp.pih_lock # 018d0 -stw r23, -0x0b50( r1) # kdp.sch_lock # 018d4 -stw r23, -0x0b30( r1) # kdp.thud_lock # 018d8 -stw r23, -0x0b10( r1) # kdp.rtas_lock # 018dc -stw r23, -0x0af0( r1) # kdp.dbug_lock # 018e0 -stw r23, -0x0ad0( r1) # kdp.pool_lock # 018e4 - -# ...and a name in the fourcc field. -lis r23, 256 * 'h'+'t' # 018e8 -ori r23, r23, 256 * 'a'+'b' # 018ec -stw r23, -0x0b8c( r1) # kdp.-0xb8c # 018f0 - -lis r23, 256 * 'p'+'i' # 018f4 -ori r23, r23, 256 * 'h'+' ' # 018f8 -stw r23, -0x0b6c( r1) # kdp.-0xb6c # 018fc - -lis r23, 256 * 's'+'c' # 01900 -ori r23, r23, 256 * 'h'+' ' # 01904 -stw r23, -0x0b4c( r1) # kdp.-0xb4c # 01908 - -lis r23, 256 * 't'+'h' # 0190c -ori r23, r23, 256 * 'u'+'d' # 01910 -stw r23, -0x0b2c( r1) # kdp.-0xb2c # 01914 - -lis r23, 256 * 'r'+'t' # 01918 -ori r23, r23, 256 * 'a'+'s' # 0191c -stw r23, -0x0b0c( r1) # kdp.-0xb0c # 01920 - -lis r23, 256 * 'd'+'b' # 01924 -ori r23, r23, 256 * 'u'+'g' # 01928 -stw r23, -0x0aec( r1) # kdp.-0xaec # 0192c - -lis r23, 256 * 'p'+'o' # 01930 -ori r23, r23, 256 * 'o'+'l' # 01934 -stw r23, -0x0acc( r1) # kdp.-0xacc # 01938 - -lis r17, 0x7fff # 0193c -ori r17, r17, 0xdead # 01940 -stw r17, -0x08e0( r1) # kdp.-0x8e0 # 01944 -stw r17, -0x08dc( r1) # kdp.-0x8dc # 01948 -stw r17, -0x08d8( r1) # kdp.-0x8d8 # 0194c -stw r17, -0x08d4( r1) # kdp.-0x8d4 # 01950 - -# Now what? -# r1 = kdp -bl pool_init # 01954 - -# r1 = kdp -bl index_init # 01958 -lwz r7, -0x0010( r1) # kdp.-0x10 # 0195c -li r8, 0x20 # 01960 - -# r1 = kdp -# r8 = size -bl pool_malloc # 01964 -# r8 = ptr - -mr. r31, r8 # 01968 -beq- panic_wrapper_0x02940 # 0196c -li r9, 0x01 # 01970 - -# r1 = kdp -# r9 = kind -bl alloc_id # 01974 -stw r31, -0x041c( r1) # kdp.system_address_space # 01978 -stw r8, 0x0000(r31) # 0197c -stw r8, 0x0ec0( r1) # kdp.0xec0 # 01980 -lis r8, 256 * 'P'+'R' # 01984 -ori r8, r8, 256 * 'O'+'C' # 01988 -stw r8, 0x0004(r31) # 0198c -li r8, 0x02 # 01990 -stw r8, 0x0010(r31) # 01994 -addi r30, r1, -0xa94 # kdp.-0xa94 # 01998 -lis r17, 256 * 'G'+'R' # 0199c -stw r30, 0x0008(r30) # 019a0 -ori r17, r17, 256 * 'P'+'S' # 019a4 -stw r30, 0x000c(r30) # 019a8 -stw r17, 0x0004(r30) # 019ac -li r8, 0x58 # 019b0 - -# r1 = kdp -# r8 = size -bl pool_malloc # 019b4 -# r8 = ptr - -mr. r31, r8 # 019b8 -beq- panic_wrapper_0x02940 # 019bc -addi r17, r31, 0x10 # 019c0 -stw r30, 0x0000(r17) # 019c4 -stw r30, 0x0008(r17) # 019c8 -lwz r18, 0x000c(r30) # 019cc -stw r18, 0x000c(r17) # 019d0 -stw r17, 0x0008(r18) # 019d4 -stw r17, 0x000c(r30) # 019d8 -addi r29, r31, 0x00 # 019dc -lis r17, 0x4347 # 019e0 -stw r29, 0x0008(r29) # 019e4 -ori r17, r17, 0x5250 # 019e8 -stw r29, 0x000c(r29) # 019ec -stw r17, 0x0004(r29) # 019f0 -mr r8, r31 # 019f4 -li r9, 0x0a # 019f8 - -# r1 = kdp -# r9 = kind -bl alloc_id # 019fc -stw r8, 0x0000(r31) # 01a00 -mr r16, r8 # 01a04 -bl 1f # 01a08 -.ascii "Created motherboard coherence group. ID " # 01a0c -.short 0 # 01a34 -.align 2 # 01a36 -1: mflr r8 # 01a38 -bl print_string # 01a3c -mr r8, r16 # 01a40 -bl print_word_hex # 01a44 -bl 1f # 01a48 -.ascii "^n" # 01a4c -.short 0 # 01a4e -.align 2 # 01a50 -1: mflr r8 # 01a50 -bl print_string # 01a54 -li r16, 0x01 # 01a58 -stw r16, 0x0020(r31) # 01a5c -stw r16, 0x0024(r31) # 01a60 -addi r31, r1, -0x340 # kdp.-0x340 # 01a64 -addi r30, r31, 0x20 # 01a68 -mr r8, r31 # 01a6c -li r9, 0x07 # 01a70 - -# r1 = kdp -# r9 = kind -bl alloc_id # 01a74 -stw r8, 0x0000(r31) # 01a78 -lis r8, 0x4350 # 01a7c -ori r8, r8, 0x5520 # 01a80 -stw r8, 0x0004(r31) # 01a84 -addi r17, r31, 0x08 # 01a88 -stw r29, 0x0000(r17) # 01a8c -stw r29, 0x0008(r17) # 01a90 -lwz r18, 0x000c(r29) # 01a94 -stw r18, 0x000c(r17) # 01a98 -stw r17, 0x0008(r18) # 01a9c -stw r17, 0x000c(r29) # 01aa0 -lis r8, 0x00 # 01aa4 -ori r8, r8, 0x0f # 01aa8 -stw r8, 0x0018(r31) # 01aac -addi r8, r1, -0xb90 # kdp.htab_lock # 01ab0 -stw r8, 0x0308(r30) # 01ab4 -stw r1, 0x031c(r30) # 01ab8 -li r8, 0x00 # 01abc -stw r8, 0x0318(r30) # 01ac0 -sth r8, 0x020a(r30) # 01ac4 -lis r8, 0x7469 # 01ac8 -ori r8, r8, 0x6d65 # 01acc -stw r8, 0x0004(r30) # 01ad0 -li r8, 0x04 # 01ad4 -stb r8, 0x0014(r30) # 01ad8 -li r8, 0x01 # 01adc -stb r8, 0x0016(r30) # 01ae0 -li r8, 0x00 # 01ae4 -stb r8, 0x0017(r30) # 01ae8 -lis r8, 0x7fff # 01aec -ori r8, r8, 0xffff # 01af0 -stw r8, 0x0038(r30) # 01af4 -oris r8, r8, 0xffff # 01af8 -stw r8, 0x003c(r30) # 01afc -lwz r26, 0x0630( r1) # kdp.pa_ConfigInfo # 01b00 -addi r9, r26, 0x2c8 # 01b04 -addi r8, r1, 0x27c # kdp.0x27c # 01b08 -li r22, 0x80 # 01b0c - -setup_0x6dc: -lwzu r20, 0x0004( r9) # 01b10 -lwzu r21, 0x0004( r9) # 01b14 -stwu r20, 0x0004( r8) # 01b18 -rlwinm r23, r21, 0, 23, 21 # 01b1c -cmpw r21, r23 # 01b20 -beq- setup_0x6f8 # 01b24 -add r21, r23, r26 # 01b28 - -setup_0x6f8: -addic. r22, r22, -0x08 # 01b2c -stwu r21, 0x0004( r8) # 01b30 -bgt+ setup_0x6dc # 01b34 -li r8, 0x00 # 01b38 -lwz r9, -0x041c( r1) # kdp.system_address_space # 01b3c -bl NKCreateAddressSpaceSub # 01b40 -cmpwi r8, 0x00 # 01b44 -mr r30, r9 # 01b48 -bne- panic_wrapper_0x02940 # 01b4c -lwz r31, -0x041c( r1) # kdp.system_address_space # 01b50 -lwz r16, 0x0000(r30) # 01b54 -stw r16, 0x000c(r31) # 01b58 -stw r16, -0x0424( r1) # kdp.-0x424 # 01b5c -stw r30, 0x0014(r31) # 01b60 -stw r30, -0x001c( r1) # kdp.-0x1c # 01b64 -stw r30, -0x03fc( r1) # kdp.-0x3fc # 01b68 -bl 1f # 01b6c -.ascii "Created system address space. ID " # 01b70 -.short 0 # 01b91 -.align 2 # 01b93 -1: mflr r8 # 01b94 -bl print_string # 01b98 -mr r8, r16 # 01b9c -bl print_word_hex # 01ba0 -bl 1f # 01ba4 -.ascii "^n BATs " # 01ba8 -.short 0 # 01bb0 -.align 2 # 01bb2 -1: mflr r8 # 01bb4 -bl print_string # 01bb8 -lwz r16, 0x0288( r1) # kdp.bat0l # 01bbc -lwz r17, 0x028c( r1) # kdp.bat0u # 01bc0 -stw r16, 0x0080(r30) # 01bc4 -stw r17, 0x0084(r30) # 01bc8 -mr r8, r16 # 01bcc -bl print_word_hex # 01bd0 -mr r8, r17 # 01bd4 -bl print_word_hex # 01bd8 -bl 1f # 01bdc -.ascii " " # 01be0 -.short 0 # 01be2 -.align 2 # 01be4 -1: mflr r8 # 01be4 -bl print_string # 01be8 -lwz r16, 0x0298( r1) # kdp.bat1l # 01bec -lwz r17, 0x029c( r1) # kdp.bat1u # 01bf0 -stw r16, 0x0088(r30) # 01bf4 -stw r17, 0x008c(r30) # 01bf8 -mr r8, r16 # 01bfc -bl print_word_hex # 01c00 -mr r8, r17 # 01c04 -bl print_word_hex # 01c08 -bl 1f # 01c0c -.ascii " " # 01c10 -.short 0 # 01c12 -.align 2 # 01c14 -1: mflr r8 # 01c14 -bl print_string # 01c18 -lwz r16, 0x02a8( r1) # kdp.bat2l # 01c1c -lwz r17, 0x02ac( r1) # kdp.bat2u # 01c20 -stw r16, 0x0090(r30) # 01c24 -stw r17, 0x0094(r30) # 01c28 -mr r8, r16 # 01c2c -bl print_word_hex # 01c30 -mr r8, r17 # 01c34 -bl print_word_hex # 01c38 -bl 1f # 01c3c -.ascii " " # 01c40 -.short 0 # 01c42 -.align 2 # 01c44 -1: mflr r8 # 01c44 -bl print_string # 01c48 -lwz r16, 0x02b8( r1) # kdp.bat3l # 01c4c -lwz r17, 0x02bc( r1) # kdp.bat3u # 01c50 -stw r16, 0x0098(r30) # 01c54 -stw r17, 0x009c(r30) # 01c58 -mr r8, r16 # 01c5c -bl print_word_hex # 01c60 -mr r8, r17 # 01c64 -bl print_word_hex # 01c68 -bl 1f # 01c6c -.ascii "^n" # 01c70 -.short 0 # 01c72 -.align 2 # 01c74 -1: mflr r8 # 01c74 -bl print_string # 01c78 -bl major_0x0f384 # 01c7c -addi r9, r1, -0xa44 # kdp.-0xa44 # 01c80 -lis r8, 0x444c # 01c84 -stw r9, 0x0008( r9) # 01c88 -ori r8, r8, 0x5951 # 01c8c -stw r9, 0x000c( r9) # 01c90 -stw r8, 0x0004( r9) # 01c94 -addi r9, r1, -0xa34 # kdp.-0xa34 # 01c98 -lis r8, 0x4442 # 01c9c -stw r9, 0x0008( r9) # 01ca0 -ori r8, r8, 0x5547 # 01ca4 -stw r9, 0x000c( r9) # 01ca8 -stw r8, 0x0004( r9) # 01cac -addi r8, r1, -0xa24 # kdp.-0xa24 # 01cb0 -li r9, 0x04 # 01cb4 - -# r1 = kdp -# r9 = kind -bl alloc_id # 01cb8 -addi r9, r1, -0xa24 # kdp.-0xa24 # 01cbc -stw r8, 0x0000( r9) # 01cc0 -stw r8, 0x0ec8( r1) # kdp.0xec8 # 01cc4 -lis r16, 0x5041 # 01cc8 -stw r9, 0x0008( r9) # 01ccc -ori r16, r16, 0x4751 # 01cd0 -stw r9, 0x000c( r9) # 01cd4 -stw r16, 0x0004( r9) # 01cd8 -li r8, 0x00 # 01cdc -stw r8, -0x0a00( r1) # kdp.-0xa00 # 01ce0 -stw r8, -0x09fc( r1) # kdp.-0x9fc # 01ce4 -addi r9, r1, -0xa14 # kdp.-0xa14 # 01ce8 -lis r16, 0x4e4f # 01cec -stw r9, 0x0008( r9) # 01cf0 -ori r16, r16, 0x5451 # 01cf4 -stw r9, 0x000c( r9) # 01cf8 -stw r16, 0x0004( r9) # 01cfc -bl say_nanodebugger_activated # 01d00 - -# r1 = kdp -bl init_rdyqs # 01d04 -lwz r8, -0x001c( r1) # kdp.-0x1c # 01d08 -li r9, 0x00 # 01d0c -bl major_0x13f78 # 01d10 -lwz r8, -0x041c( r1) # kdp.system_address_space # 01d14 -bl mktask # 01d18 -mr. r31, r8 # 01d1c -beq- panic_wrapper_0x02940 # 01d20 -lwz r8, 0x0000(r31) # 01d24 -stw r8, 0x0ec4( r1) # kdp.blue_task # 01d28 -li r8, -0x01 # 01d2c -sth r8, -0x043c( r1) # kdp.-0x43c # 01d30 -stw r31, -0x08f0( r1) # kdp.-0x8f0 # 01d34 -stw r31, -0x0008( r1) # kdp.-0x8 # 01d38 -lis r8, 256 * 'b'+'l' # 01d3c -ori r8, r8, 256 * 'u'+'e' # 01d40 -stw r8, 0x0074(r31) # 01d44 -li r8, 0x02 # 01d48 -stb r8, 0x0018(r31) # 01d4c -lis r8, 0x03 # 01d50 -ori r8, r8, 0x28 # 01d54 -stw r8, 0x0064(r31) # 01d58 -li r8, 200 # 01d5c -stw r8, 0x001c(r31) # 01d60 -li r8, 0x02 # 01d64 -stb r8, 0x0019(r31) # 01d68 -lhz r8, -0x0116( r1) # kdp.-0x116 # 01d6c -sth r8, 0x001a(r31) # 01d70 -lwz r8, -0x0340( r1) # kdp.-0x340 # 01d74 -stw r8, 0x0078(r31) # 01d78 -lwz r6, 0x0658( r1) # kdp.system_context # 01d7c -stw r6, 0x0088(r31) # 01d80 -lwz r16, 0x01d8(r31) # 01d84 -stw r16, 0x00d8( r6) # 01d88 -bl 1f # 01d8c -.ascii "System context at 0x" # 01d90 -.short 0 # 01da4 -.align 2 # 01da6 -1: mflr r8 # 01da8 -bl print_string # 01dac -mr r8, r6 # 01db0 -bl print_word_hex # 01db4 -bl 1f # 01db8 -.ascii " Vector save area at 0x" # 01dbc -.short 0 # 01dd3 -.align 2 # 01dd5 -1: mflr r8 # 01dd8 -bl print_string # 01ddc -mr r8, r16 # 01de0 -bl print_word_hex # 01de4 -bl 1f # 01de8 -.ascii " SDR1 0x" # 01dec -.short 0 # 01df4 -.align 2 # 01df6 -1: mflr r8 # 01df8 -bl print_string # 01dfc -mfspr r8, 25/*sdr1*/ # 01e00 -mr r8, r8 # 01e04 -bl print_word_hex # 01e08 -bl 1f # 01e0c -.ascii "^n" # 01e10 -.short 0 # 01e12 -.align 2 # 01e14 -1: mflr r8 # 01e14 -bl print_string # 01e18 -bl 1f # 01e1c -.ascii "Adding blue task " # 01e20 -.short 0 # 01e31 -.align 2 # 01e33 -1: mflr r8 # 01e34 -bl print_string # 01e38 -lwz r8, 0x0000(r31) # 01e3c -mr r8, r8 # 01e40 -bl print_word_hex # 01e44 -bl 1f # 01e48 -.ascii "to the ready queue^n" # 01e4c -.short 0 # 01e60 -.align 2 # 01e62 -1: mflr r8 # 01e64 -bl print_string # 01e68 -addi r16, r31, 0x08 # 01e6c -lwz r17, 0x0008(r16) # 01e70 -lwz r18, 0x000c(r16) # 01e74 -stw r17, 0x0008(r18) # 01e78 -stw r18, 0x000c(r17) # 01e7c -li r17, 0x00 # 01e80 -stw r17, 0x0008(r16) # 01e84 -stw r17, 0x000c(r16) # 01e88 -mr r8, r31 # 01e8c -bl major_0x13ed8_0x8 # 01e90 -bl major_0x149d4_0x8 # 01e94 -bl major_0x14af8_0xa0 # 01e98 -bl say_starting_timeslicing # 01e9c -mr r31, r7 # 01ea0 -rlwinm r7, r7, 0, 13, 11 # 01ea4 -lwz r8, -0x041c( r1) # kdp.system_address_space # 01ea8 -bl mktask # 01eac -mr r7, r31 # 01eb0 -mr. r31, r8 # 01eb4 -beq- panic_wrapper_0x02940 # 01eb8 -lis r8, 256 * 'i'+'d' # 01ebc -ori r8, r8, 256 * 'l'+'e' # 01ec0 -stw r8, 0x0074(r31) # 01ec4 -lis r8, 0x0a # 01ec8 -ori r8, r8, 0x40 # 01ecc -stw r8, 0x0064(r31) # 01ed0 -li r8, 0x01 # 01ed4 -stw r8, 0x001c(r31) # 01ed8 -li r8, 0x03 # 01edc -stb r8, 0x0019(r31) # 01ee0 -lhz r8, -0x0116( r1) # kdp.-0x116 # 01ee4 -sth r8, 0x001a(r31) # 01ee8 -lwz r8, -0x0340( r1) # kdp.-0x340 # 01eec -stw r8, 0x0078(r31) # 01ef0 -lwz r8, 0x0100(r31) # 01ef4 -oris r8, r8, 0x40 # 01ef8 -stw r8, 0x0100(r31) # 01efc -lwz r8, 0x064c( r1) # kdp.phys_kern_base # 01f00 -lis r26, major_0x14bcc_0x338@h # 01f04 -ori r26, r26, major_0x14bcc_0x338@l # 01f08 -add r8, r8, r26 # 01f0c -stw r8, 0x01fc(r31) # 01f10 -lwz r8, 0x01a4(r31) # 01f14 -andi. r8, r8, 0xbfcf # 01f18 -stw r8, 0x01a4(r31) # 01f1c -addi r30, r1, -0x340 # kdp.-0x340 # 01f20 -stw r31, 0x001c(r30) # 01f24 -bl 1f # 01f28 -.ascii "Adding idle task " # 01f2c -.short 0 # 01f3d -.align 2 # 01f3f -1: mflr r8 # 01f40 -bl print_string # 01f44 -lwz r8, 0x0000(r31) # 01f48 -mr r8, r8 # 01f4c -bl print_word_hex # 01f50 -bl 1f # 01f54 -.ascii "to the ready queue^n" # 01f58 -.short 0 # 01f6c -.align 2 # 01f6e -1: mflr r8 # 01f70 -bl print_string # 01f74 -addi r16, r31, 0x08 # 01f78 -lwz r17, 0x0008(r16) # 01f7c -lwz r18, 0x000c(r16) # 01f80 -stw r17, 0x0008(r18) # 01f84 -stw r18, 0x000c(r17) # 01f88 -li r17, 0x00 # 01f8c -stw r17, 0x0008(r16) # 01f90 -stw r17, 0x000c(r16) # 01f94 -mr r8, r31 # 01f98 -bl major_0x13ed8_0x8 # 01f9c -bl major_0x149d4_0x8 # 01fa0 -li r8, 0x00 # 01fa4 -lwz r9, -0x041c( r1) # kdp.system_address_space # 01fa8 -bl NKCreateAddressSpaceSub # 01fac -cmpwi r8, 0x00 # 01fb0 -mr r30, r9 # 01fb4 -lwz r31, -0x0324( r1) # kdp.-0x324 # 01fb8 -bne- panic_wrapper_0x02940 # 01fbc -stw r30, 0x0070(r31) # 01fc0 -lwz r7, -0x0010( r1) # kdp.-0x10 # 01fc4 -lwz r26, 0x0630( r1) # kdp.pa_ConfigInfo # 01fc8 -lwz r18, 0x0684( r1) # kdp.0x684 # 01fcc -beq- cr5, setup_0xbcc # 01fd0 -mfspr r8, 25/*sdr1*/ # 01fd4 -rlwinm r22, r8, 16, 7, 15 # 01fd8 -rlwinm r8, r8, 0, 0, 15 # 01fdc -ori r22, r22, 0xffc0 # 01fe0 -stw r8, 0x06a4( r1) # kdp.0x6a4 # 01fe4 -stw r22, 0x06a0( r1) # kdp.0x6a0 # 01fe8 -li r23, 0x00 # 01fec -addi r22, r22, 0x40 # 01ff0 - -setup_0xbc0: -addic. r22, r22, -0x04 # 01ff4 -stwx r23, r8, r22 # 01ff8 -bgt+ setup_0xbc0 # 01ffc - -setup_0xbcc: -bl flush_tlb # 02000 -beq- cr5, setup_0xc10 # 02004 -lwz r9, 0x00bc(r26) # 02008 -lwz r22, 0x00b8(r26) # 0200c -add r9, r9, r26 # 02010 - -setup_0xbe0: -addi r22, r22, -0x04 # 02014 -lwzx r21, r9, r22 # 02018 -andi. r23, r21, 0xa00 # 0201c -cmpwi r23, 0x200 # 02020 -bne- setup_0xbfc # 02024 -rlwinm r21, r21, 0, 23, 21 # 02028 -add r21, r21, r26 # 0202c - -setup_0xbfc: -stwx r21, r18, r22 # 02030 -addic. r22, r22, -0x04 # 02034 -lwzx r20, r9, r22 # 02038 -stwx r20, r18, r22 # 0203c -bgt+ setup_0xbe0 # 02040 - -setup_0xc10: -lwz r8, 0x00c0(r26) # 02044 -add r8, r18, r8 # 02048 -lis r19, -0x01 # 0204c -ori r19, r19, 0x6000 # 02050 -add r19, r19, r1 # 02054 -lwz r23, 0x0004( r8) # 02058 -rlwimi r23, r19, 0, 0, 19 # 0205c -stw r23, 0x0004( r8) # 02060 -lwz r8, 0x00c4(r26) # 02064 -add r8, r18, r8 # 02068 -lis r19, -0x01 # 0206c -ori r19, r19, 0x7000 # 02070 -add r19, r1, r19 # 02074 -lis r22, 0x00 # 02078 -ori r22, r22, 0x09 # 0207c -lwz r23, 0x0004( r8) # 02080 -rlwimi r23, r19, 0, 0, 19 # 02084 -stw r23, 0x0004( r8) # 02088 -sth r22, 0x0002( r8) # 0208c -lhz r23, 0x0000( r8) # 02090 -subf r23, r22, r23 # 02094 -sth r23, 0x0000( r8) # 02098 -lwz r19, 0x0634( r1) # kdp.pa_edp # 0209c -lwz r8, 0x00c8(r26) # 020a0 -add r8, r18, r8 # 020a4 -lwz r23, 0x0004( r8) # 020a8 -rlwimi r23, r19, 0, 0, 19 # 020ac -stw r23, 0x0004( r8) # 020b0 -addi r9, r26, 200 # 020b4 -addi r8, r1, 0x7c # kdp.0x7c # 020b8 -li r22, 0x200 # 020bc - -setup_0xc8c: -lwzu r23, 0x0004( r9) # 020c0 -addic. r22, r22, -0x08 # 020c4 -add r23, r18, r23 # 020c8 -stwu r23, 0x0004( r8) # 020cc -lwzu r23, 0x0004( r9) # 020d0 -oris r23, r23, 0x2000 # 020d4 -stwu r23, 0x0004( r8) # 020d8 -bgt+ setup_0xc8c # 020dc -addi r23, r1, 0x80 # kdp.0x80 # 020e0 -stw r23, 0x05c8( r1) # kdp.0x5c8 # 020e4 -lwz r23, 0x034c(r26) # 020e8 -stw r23, 0x05cc( r1) # kdp.0x5cc # 020ec -addi r23, r1, 0x100 # kdp.0x100 # 020f0 -stw r23, 0x05d0( r1) # kdp.0x5d0 # 020f4 -lwz r23, 0x0350(r26) # 020f8 -stw r23, 0x05d4( r1) # kdp.0x5d4 # 020fc -addi r23, r1, 0x180 # kdp.0x180 # 02100 -stw r23, 0x05d8( r1) # kdp.0x5d8 # 02104 -lwz r23, 0x0354(r26) # 02108 -stw r23, 0x05dc( r1) # kdp.0x5dc # 0210c -addi r23, r1, 0x200 # kdp.0x200 # 02110 -stw r23, 0x05e0( r1) # kdp.0x5e0 # 02114 -lwz r23, 0x0358(r26) # 02118 -stw r23, 0x05e4( r1) # kdp.0x5e4 # 0211c -li r22, 0x00 # 02120 -addi r19, r1, 120 # kdp.0x78 # 02124 -b setup_0xd00 # 02128 - -setup_0xcf8: -addi r8, r8, 0x08 # 0212c -b setup_0xd04 # 02130 - -setup_0xd00: -lwzu r8, 0x0008(r19) # 02134 - -setup_0xd04: -lwz r30, 0x0000( r8) # 02138 -lwz r31, 0x0004( r8) # 0213c -cmplwi cr7, r30, 0xffff # 02140 -rlwinm. r31, r31, 0, 20, 21 # 02144 -bgt- cr7, setup_0xd30 # 02148 -cmpwi cr6, r31, 0xc00 # 0214c -beq- setup_0xd30 # 02150 -beq+ cr6, setup_0xcf8 # 02154 -add r22, r22, r30 # 02158 -addi r22, r22, 0x01 # 0215c -beq+ cr7, setup_0xd00 # 02160 - -setup_0xd30: -stw r22, 0x06b4( r1) # kdp.VMMaxVirtualPages # 02164 -beq- cr5, setup_0xdac # 02168 -lwz r21, 0x0638( r1) # kdp.0x638 # 0216c -lwz r20, 0x063c( r1) # kdp.0x63c # 02170 -stw r21, 0x06b0( r1) # kdp.0x6b0 # 02174 -lwz r30, -0x0020( r1) # kdp.irp # 02178 -addi r29, r21, -0x04 # 0217c -addi r19, r30, 0xde8 # 02180 -lwz r23, 0x0688( r1) # kdp.0x688 # 02184 -li r30, 0x01 # 02188 -rlwimi r30, r23, 1, 25, 25 # 0218c -rlwimi r30, r23, 31, 26, 26 # 02190 -xori r30, r30, 0x20 # 02194 -rlwimi r30, r23, 29, 27, 27 # 02198 -rlwimi r30, r23, 27, 28, 28 # 0219c -li r23, 0x1a # 021a0 - -setup_0xd70: -addic. r23, r23, -0x01 # 021a4 -blt- setup_0xdac # 021a8 -lwzu r31, 0x0008(r19) # 021ac -lwz r22, 0x0004(r19) # 021b0 -or r31, r31, r30 # 021b4 - -setup_0xd84: -cmplwi r22, 0x1000 # 021b8 -cmplw cr6, r31, r21 # 021bc -cmplw cr7, r31, r20 # 021c0 -addi r22, r22, -0x1000 # 021c4 -blt+ setup_0xd70 # 021c8 -blt- cr6, setup_0xda0 # 021cc -blt- cr7, setup_0xda4 # 021d0 - -setup_0xda0: -stwu r31, 0x0004(r29) # 021d4 - -setup_0xda4: -addi r31, r31, 0x1000 # 021d8 -b setup_0xd84 # 021dc - -setup_0xdac: -beq- cr5, setup_0xe30 # 021e0 -subf r22, r21, r29 # 021e4 -addi r8, r22, 0x1000 # 021e8 -srwi r17, r22, 13 # 021ec -addi r17, r17, 0x12 # 021f0 -bl 1f # 021f4 -.ascii "Priming the system free list with " # 021f8 -.short 0 # 0221a -.align 2 # 0221c -1: mflr r8 # 0221c -bl print_string # 02220 -mr r8, r17 # 02224 -bl print_decimal # 02228 -bl 1f # 0222c -.ascii "pages.^n" # 02230 -.short 0 # 02238 -.align 2 # 0223a -1: mflr r8 # 0223c -bl print_string # 02240 - -setup_0xe10: -lwz r8, 0x0000(r29) # 02244 -rlwinm r8, r8, 0, 0, 19 # 02248 - -# r1 = kdp -# r8 = maybe the page -bl free_list_add_page # 0224c -addi r17, r17, -0x01 # 02250 -addi r29, r29, -0x04 # 02254 -cmpwi r17, 0x00 # 02258 -bgt+ setup_0xe10 # 0225c -b setup_0xebc # 02260 - -setup_0xe30: -lwz r8, 0x05a8( r1) # kdp.0x5a8 # 02264 -addi r18, r1, 0x2000 # kdp.0x2000 # 02268 -subf. r8, r18, r8 # 0226c -blt- setup_0xebc # 02270 -addi r8, r8, 0x1000 # 02274 -srwi r17, r8, 12 # 02278 -bl 1f # 0227c -.ascii "Priming the system free list with " # 02280 -.short 0 # 022a2 -.align 2 # 022a4 -1: mflr r8 # 022a4 -bl print_string # 022a8 -mr r8, r17 # 022ac -bl print_decimal # 022b0 -bl 1f # 022b4 -.ascii "system heap pages.^n" # 022b8 -.short 0 # 022cc -.align 2 # 022ce -1: mflr r8 # 022d0 -bl print_string # 022d4 - -setup_0xea4: -rlwinm r8, r18, 0, 0, 19 # 022d8 - -# r1 = kdp -# r8 = maybe the page -bl free_list_add_page # 022dc -addi r17, r17, -0x01 # 022e0 -addi r18, r18, 0x1000 # 022e4 -cmpwi r17, 0x00 # 022e8 -bgt+ setup_0xea4 # 022ec - -setup_0xebc: -bl 1f # 022f0 -.ascii "VMMaxVirtualPages: " # 022f4 -.short 0 # 02307 -.align 2 # 02309 -1: mflr r8 # 0230c -bl print_string # 02310 -lwz r8, 0x06b4( r1) # kdp.VMMaxVirtualPages # 02314 -mr r8, r8 # 02318 -bl print_word_hex # 0231c -bl 1f # 02320 -.ascii "VMLogicalPages: " # 02324 -.short 0 # 02334 -.align 2 # 02336 -1: mflr r8 # 02338 -bl print_string # 0233c -lwz r8, 0x06a8( r1) # kdp.phys_pages # 02340 -mr r8, r8 # 02344 -bl print_word_hex # 02348 -bl 1f # 0234c -.ascii "^n" # 02350 -.short 0 # 02352 -.align 2 # 02354 -1: mflr r8 # 02354 -bl print_string # 02358 -bl 1f # 0235c -.ascii "Interrupt handler kind: " # 02360 -.short 0 # 02378 -.align 2 # 0237a -1: mflr r8 # 0237c -bl print_string # 02380 -lwz r8, 0x0630( r1) # kdp.pa_ConfigInfo # 02384 -lbz r8, 0x0098( r8) # 02388 -mr r8, r8 # 0238c -bl print_twodig_decimal # 02390 -bl 1f # 02394 -.ascii "^n" # 02398 -.short 0 # 0239a -.align 2 # 0239c -1: mflr r8 # 0239c -bl print_string # 023a0 -beq- cr5, finish_old_world # 023a4 -subf r22, r21, r29 # 023a8 -lwz r8, 0x06b4( r1) # kdp.VMMaxVirtualPages # 023ac -slwi r8, r8, 2 # 023b0 -cmplw r22, r8 # 023b4 -addi r19, r22, 0x04 # 023b8 -srwi r19, r19, 2 # 023bc -stw r19, 0x06ac( r1) # kdp.logi_pages # 023c0 -blt- setup_0xf98 # 023c4 -addi r22, r8, -0x04 # 023c8 - -setup_0xf98: -li r30, 0x00 # 023cc -lwz r8, -0x0020( r1) # kdp.irp # 023d0 -addi r19, r22, 0x04 # 023d4 -slwi r19, r19, 10 # 023d8 -ori r30, r30, 0xffff # 023dc -stw r19, 0x0dc4( r8) # 023e0 -srwi r22, r22, 2 # 023e4 -stw r19, 0x0dc8( r8) # 023e8 -srwi r19, r19, 12 # 023ec -stw r19, 0x06a8( r1) # kdp.phys_pages # 023f0 -addi r29, r1, 0x6bc # kdp.0x6bc # 023f4 -addi r19, r1, 120 # kdp.0x78 # 023f8 - -setup_0xfc8: -cmplwi r22, 0xffff # 023fc -lwzu r8, 0x0008(r19) # 02400 -rotlwi r31, r21, 0x0a # 02404 -ori r31, r31, 0xc00 # 02408 -stw r30, 0x0000( r8) # 0240c -stw r31, 0x0004( r8) # 02410 -stwu r21, 0x0004(r29) # 02414 -addis r21, r21, 0x04 # 02418 -addis r22, r22, -0x01 # 0241c -bgt+ setup_0xfc8 # 02420 -sth r22, 0x0002( r8) # 02424 -lwz r17, 0x06a8( r1) # kdp.phys_pages # 02428 -lwz r18, 0x06ac( r1) # kdp.logi_pages # 0242c -stw r17, 0x06ac( r1) # kdp.logi_pages # 02430 -subf. r18, r17, r18 # 02434 -slwi r31, r17, 12 # 02438 -ble- setup_skip_grabbing_more_pages # 0243c -bl 1f # 02440 -.ascii "Physical RAM greater than the initial logical area.^n Moving " -.short 0 # 02481 -.align 2 # 02483 -1: mflr r8 # 02484 -bl print_string # 02488 -mr r8, r18 # 0248c -bl print_decimal # 02490 -bl 1f # 02494 -.ascii "pages into the system free page list.^n" # 02498 -.short 0 # 024bf -.align 2 # 024c1 -1: mflr r8 # 024c4 -bl print_string # 024c8 - -setup_0x1098: -mr r8, r31 # 024cc - -# r1 = kdp -# r8 = maybe the page -bl free_list_add_page # 024d0 -addi r31, r31, 0x1000 # 024d4 -addi r18, r18, -0x01 # 024d8 -cmpwi r18, 0x00 # 024dc -bgt+ setup_0x1098 # 024e0 - -setup_skip_grabbing_more_pages: -bl convert_pmdts_to_areas # 024e4 -addi r29, r1, 0x5e0 # kdp.0x5e0 # 024e8 -bl major_0x05278 # 024ec -bl flush_tlb # 024f0 -bl major_0x06870 # 024f4 -bl 1f # 024f8 -.ascii "Reset system - Into the 68K fire: " # 024fc -.short 0 # 0251e -.align 2 # 02520 -1: mflr r8 # 02520 -bl print_string # 02524 -mr r8, r11 # 02528 -bl print_word_hex # 0252c -mr r8, r10 # 02530 -bl print_word_hex # 02534 -bl 1f # 02538 -.ascii "^n" # 0253c -.short 0 # 0253e -.align 2 # 02540 -1: mflr r8 # 02540 -bl print_string # 02544 -lwz r9, 0x00d4( r6) # 02548 -mfspr r8, 272/*sprg0*/ # 0254c -mtxer r9 # 02550 - -# r6 = ewa -bl restore_registers_from_r14 # 02554 - -# r1 = kdp -b pih_indirect # 02558 - -finish_old_world: -addi r29, r1, 0x5e8 # kdp.0x5e8 # 0255c -bl major_0x05278 # 02560 -bl flush_tlb # 02564 -bl convert_pmdts_to_areas # 02568 -bl major_0x06870 # 0256c -lwz r27, 0x0630( r1) # kdp.pa_ConfigInfo # 02570 -lwz r27, 0x0094(r27) # 02574 -bl major_0x05524 # 02578 -beq- setup_0x1160 # 0257c -li r30, 0x00 # 02580 -stw r30, -0x0004(r29) # 02584 -eieio # 02588 -stw r30, 0x0000(r29) # 0258c -sync # 02590 - -setup_0x1160: -bl major_0x04c20 # 02594 -lwz r27, 0x0630( r1) # kdp.pa_ConfigInfo # 02598 -lwz r27, 0x009c(r27) # 0259c -bl major_0x05524 # 025a0 -beq- setup_0x1188 # 025a4 -li r30, 0x00 # 025a8 -stw r30, -0x0004(r29) # 025ac -eieio # 025b0 -stw r30, 0x0000(r29) # 025b4 -sync # 025b8 - -setup_0x1188: -bl major_0x04c20 # 025bc -lwz r27, 0x0630( r1) # kdp.pa_ConfigInfo # 025c0 -lwz r27, 0x00a0(r27) # 025c4 -lis r19, 0x00 # 025c8 -ori r19, r19, 0xa000 # 025cc -subf r19, r19, r27 # 025d0 - -setup_0x11a0: -bl major_0x05524 # 025d4 -beq- setup_0x11bc # 025d8 -li r30, 0x00 # 025dc -stw r30, -0x0004(r29) # 025e0 -eieio # 025e4 -stw r30, 0x0000(r29) # 025e8 -sync # 025ec - -setup_0x11bc: -bl major_0x04c20 # 025f0 -cmplw r27, r19 # 025f4 -addi r27, r27, -0x1000 # 025f8 -bgt+ setup_0x11a0 # 025fc -lwz r27, 0x0630( r1) # kdp.pa_ConfigInfo # 02600 -lwz r27, 0x00a4(r27) # 02604 -bl major_0x05524 # 02608 -beq- setup_0x11f0 # 0260c -li r30, 0x00 # 02610 -stw r30, -0x0004(r29) # 02614 -eieio # 02618 -stw r30, 0x0000(r29) # 0261c -sync # 02620 - -setup_0x11f0: -bl major_0x04c20 # 02624 -bl 1f # 02628 -.ascii "Nanokernel replaced. Returning to boot process^n" -.short 0 # 0265c -.align 2 # 0265e -1: mflr r8 # 02660 -bl print_string # 02664 -addi r9, r1, 0x420 # kdp.0x420 # 02668 -mtspr 275/*sprg3*/, r9 # 0266c - -# r1 = kdp -b old_world_rfi_to_userspace_boot # 02670 - - - -/*********************************************************** - - undo_failed_kernel_replacement - -************************************************************ - -Inits or reinits the log - -************************************************************ - -Xrefs: -replace_old_kernel - -***********************************************************/ - -undo_failed_kernel_replacement: /* < outside referer */ -# r1 = kdp -bl screenlog_init # 02674 -bl 1f # 02678 -.ascii "Nanokernel NOT replaced. Returning to boot process^n" -.short 0 # 026b0 -.align 2 # 026b2 -1: mflr r8 # 026b4 -bl print_string # 026b8 -lwz r8, 0x05a0( r1) # 026bc -mtspr 272/*sprg0*/, r8 # 026c0 -addi r9, r8, 0x420 # 026c4 -mtspr 275/*sprg3*/, r9 # 026c8 - - - -/*********************************************************** - - old_world_rfi_to_userspace_boot - -************************************************************ - -Xrefs: -setup -undo_failed_kernel_replacement - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -old_world_rfi_to_userspace_boot: /* < outside referer */ -lwz r4, 0x0648( r1) # kdp.emu_e8c0 # 026cc -lwz r8, 0x05a4( r1) # kdp.0x5a4 # 026d0 -lwz r9, -0x0964( r1) # kdp.-0x964 # 026d4 -addi r8, r8, 0x26e8 # 026d8 -mtspr 26/*srr0*/, r8 # 026dc -mtspr 27/*srr1*/, r9 # 026e0 -rfi # 026e4 -.long 0x386000ff # 026e8 -.long 0x7c8803a6 # 026ec - - - -/*********************************************************** - - major_0x026f0 - -***********************************************************/ - -.align 4 # 026f0 - -.long 0x4e800021 # 026f0 - - - -/*********************************************************** - - major_0x026f4 - -***********************************************************/ - -.long 0x4800000c # 026f4 -.long 0x60000000 # 026f8 -.long 0x60000000 # 026fc - - - -/*********************************************************** - - lock - -************************************************************ - -Gets something from -0x340(ewa) -Lock struct: word@0=count, word@16=holder -Return pretty quick-smart if we get the lock. -If hands must be dirtied, put r22-r31 into EWA. - -************************************************************ - -Xrefs: -major_0x02ccc -major_0x03200 -major_0x035a0 -memretry_machine_check -major_0x03940 -dsi_vector -major_0x04240 -major_0x04300 -major_0x08640 -rtas_call -major_0x0b144 -NKRegisterCpuPlugin -major_0x0b3cc -major_0x0b45c -major_0x0b4a4 -nk_yield_with_hint -major_0x0b640 -major_0x0b664 -major_0x0b960 -major_0x0ba80 -major_0x0bb20 -NKStopScheduling -NKRegisterThermalHandler -NKRegisterPMFHandler -NKMarkPMFTask -NKSetClockStep -NKSetClockDriftCorrection -major_0x0c3ac -NKRegisterExternalHandler -major_0x0c52c -major_0x0c5e0 -major_0x0c680 -major_0x0c778 -major_0x0c830 -major_0x0c968 -major_0x0cac0 -major_0x0cb00 -major_0x0cb8c -major_0x0cc80 -major_0x0ccbc -major_0x0cd9c -major_0x0ce48 -major_0x0ced4 -major_0x0d010 -major_0x0d06c -major_0x0d158 -major_0x0d204 -major_0x0d278 -major_0x0d324 -major_0x0d504 -major_0x0d678 -major_0x0d6b4 -major_0x0d70c -major_0x0d798 -major_0x0d818 -major_0x0d8a0 -major_0x0d9a8 -major_0x0da20 -major_0x0da8c -major_0x0dacc -major_0x0dc0c -major_0x0dc88 -major_0x0dd64 -major_0x0e284 -major_0x0e548 -major_0x0e604 -major_0x0e76c -major_0x0e894 -major_0x0e90c -NKThrowException -major_0x0ea58 -major_0x0ec54 -major_0x0ec8c -major_0x0f050 -major_0x0f288 -major_0x0f2b8 -NKSetTaskType -major_0x0f7b8 -major_0x0f9f8 -NKSetTaskAddressSpace -major_0x0fb34 -createarea -major_0x10414 -major_0x104ec -major_0x1070c -major_0x108fc -NKSetAreaAccess -major_0x10de0 -major_0x10e94 -major_0x10ee0 -major_0x11040 -major_0x11098 -major_0x11104 -major_0x111d4 -major_0x11360 -major_0x1139c -major_0x11490 -NKMapPage -NKUnmapPages -NKMakePhysicallyContiguous -NKLockPages -NKUnlockPages -NKHoldPages -NKUnholdPages -major_0x11ebc -major_0x11fac -major_0x120a8 -major_0x12110 -major_0x121d4 -major_0x12248 -pool_malloc -looks_like_poolextend -major_0x142a8 -major_0x14bcc -interrupt_blue -NKPropogateExternalInterrupt -pdm_pih_01 -pbx_pih_03 -gazelle_pih_05 -tnt_pih_02 -gossamer_pih_07 -nwpbg3_pih_0a -cordyceps_pih_04 -newworld_pih_06 -unknown_pih_08 -print_string -print_decimal -print_digity_common -getchar -print_char -panic - -************************************************************ - -> r8 = lock - -***********************************************************/ - -.align 8 # 02700 - -lock: /* < outside referer */ -lwarx r9, r0, r8 # 02700 -cmpwi r9, 0x00 # 02704 -mfspr r9, 272/*sprg0*/ # 02708 -bne- lock_already_held # 0270c -lwz r9, -0x0340( r9) # kdp.-0x340 # 02710 -sync # 02714 -stwcx. r9, r0, r8 # 02718 -bne+ lock # 0271c -mflr r9 # 02720 -stw r9, 0x0010( r8) # lock.holder # 02724 -isync # 02728 -blr # 0272c - -lock_already_held: -stmw r22, -0x0094( r9) # kdp.-0x94 # 02730 -mr r22, r9 # 02734 -mflr r30 # 02738 -mr r31, r8 # 0273c -lwz r29, -0x0340(r22) # 02740 -lwz r28, 0x0000(r31) # 02744 -stw r30, -0x0098(r22) # 02748 -cmpw r28, r29 # 0274c -bne+ lock_0x84 # 02750 -bl spinlock_what # 02754 -bl 1f # 02758 -.ascii "Recursive spinlock ***^n" # 0275c -.short 0 # 02774 -.align 2 # 02776 -1: mflr r8 # 02778 -bl print_string # 0277c -bl panic_wrapper_0x02940 # 02780 - -lock_0x84: -bl lock_0x184 # 02784 -mr r24, r28 # 02788 -mr r25, r29 # 0278c -lwz r30, -0x0004(r22) # 02790 -mfspr r29, 22/*dec*/ # 02794 -lwz r28, -0x0438(r30) # 02798 -slwi r28, r28, 3 # 0279c -subf r29, r28, r29 # 027a0 -b lock_0xc0 # 027a4 - -lock_0xa8: -lwz r30, -0x0004(r22) # 027a8 -lwz r28, -0x0b30(r30) # 027ac -cmpwi r28, 0x00 # 027b0 -beq- lock_0xc0 # 027b4 -mfspr r29, 22/*dec*/ # 027b8 -addis r29, r29, -0x01 # 027bc - -lock_0xc0: -mfspr r28, 22/*dec*/ # 027c0 -subf. r28, r29, r28 # 027c4 -bgt- lock_0x118 # 027c8 -bl spinlock_what # 027cc -bl 1f # 027d0 -.ascii "Timeout - locked CpuID " # 027d4 -.short 0 # 027eb -.align 2 # 027ed -1: mflr r8 # 027f0 -bl print_string # 027f4 -mr r8, r30 # 027f8 -bl print_word_hex # 027fc -bl 1f # 02800 -.ascii "***^n" # 02804 -.short 0 # 02809 -.align 2 # 0280b -1: mflr r8 # 0280c -bl print_string # 02810 -bl panic_wrapper_0x02940 # 02814 - -lock_0x118: -lwz r30, 0x0000(r31) # 02818 -cmpwi r30, 0x00 # 0281c -bne+ lock_0xa8 # 02820 - -lock_0x124: -lwarx r30, r0, r31 # 02824 -cmpwi r30, 0x00 # 02828 -bne+ lock_0xa8 # 0282c -lwz r30, -0x0340(r22) # 02830 -sync # 02834 -stwcx. r30, r0, r31 # 02838 -bne+ lock_0x124 # 0283c -mfxer r30 # 02840 -bl lock_0x184 # 02844 -lwz r27, -0x0098(r22) # 02848 -subfc r29, r25, r29 # 0284c -lwz r25, 0x000c(r31) # 02850 -subfe r28, r24, r28 # 02854 -lwz r24, 0x0008(r31) # 02858 -addc r25, r25, r29 # 0285c -adde r24, r24, r28 # 02860 -stw r25, 0x000c(r31) # 02864 -stw r24, 0x0008(r31) # 02868 -mtlr r27 # 0286c -stw r27, 0x0010(r31) # 02870 -mtxer r30 # 02874 -mr r8, r22 # 02878 -lmw r22, -0x0094( r8) # lock.-0x94 # 0287c -blr # 02880 - -lock_0x184: -mftbu r28 # 02884 -mftb r29, 0x10c # 02888 -mftbu r27 # 0288c -cmpw r28, r27 # 02890 -beqlr+ # 02894 -b lock_0x184 # 02898 - - - -/*********************************************************** - - spinlock_what - -************************************************************ - -Xrefs: -lock - -***********************************************************/ - -spinlock_what: /* < outside referer */ -mfspr r28, 272/*sprg0*/ # 0289c -mflr r27 # 028a0 -lwz r29, -0x0340(r28) # 028a4 -bl 1f # 028a8 -.ascii "^n*** On CPU " # 028ac -.short 0 # 028b9 -.align 2 # 028bb -1: mflr r8 # 028bc -bl print_string # 028c0 -mr r8, r29 # 028c4 -bl print_word_hex # 028c8 -bl 1f # 028cc -.ascii "spinlock 0x" # 028d0 -.short 0 # 028db -.align 2 # 028dd -1: mflr r8 # 028e0 -bl print_string # 028e4 -mr r8, r31 # 028e8 -bl print_word_hex # 028ec -lwz r8, 0x0004(r31) # 028f0 -rotlwi r8, r8, 0x08 # 028f4 -bl print_char # 028f8 -rotlwi r8, r8, 0x08 # 028fc -bl print_char # 02900 -rotlwi r8, r8, 0x08 # 02904 -bl print_char # 02908 -rotlwi r8, r8, 0x08 # 0290c -bl print_char # 02910 -lwz r29, -0x0098(r28) # 02914 -bl 1f # 02918 -.ascii " caller 0x" # 0291c -.short 0 # 02926 -.align 2 # 02928 -1: mflr r8 # 02928 -bl print_string # 0292c -mr r8, r29 # 02930 -bl print_word_hex # 02934 -mtlr r27 # 02938 -blr # 0293c - - - -/*********************************************************** - - panic_wrapper_0x02940 - -************************************************************ - -Xrefs: -setup -lock - -***********************************************************/ - -.align 6 # 02940 - -panic_wrapper_0x02940: /* < outside referer */ -b panic # 02940 - - - -/*********************************************************** - - major_0x02944 - -***********************************************************/ - -.long 0x4800001c # 02944 -.long 0x60000000 # 02948 -.long 0x60000000 # 0294c -.long 0x60000000 # 02950 -.long 0x60000000 # 02954 -.long 0x60000000 # 02958 -.long 0x60000000 # 0295c - - - -/*********************************************************** - - panic_wrapper_0x02960 - -************************************************************ - -Xrefs: -major_0x02ccc -major_0x035a0 -regsave_debug -major_0x046e0 - -***********************************************************/ - -.align 5 # 02960 - -panic_wrapper_0x02960: /* < outside referer */ -b panic # 02960 - - - -/*********************************************************** - - major_0x02964 - -************************************************************ - -Xrefs: -major_0x02ccc - -***********************************************************/ - -major_0x02964: /* < outside referer */ -b major_0x0b0fc # 02964 - - - -/*********************************************************** - - major_0x02968 - -***********************************************************/ - -.align 3 # 02968 - -.long 0x48000018 # 02968 -.long 0x60000000 # 0296c -.long 0x60000000 # 02970 -.long 0x60000000 # 02974 -.long 0x60000000 # 02978 -.long 0x60000000 # 0297c - - - -/*********************************************************** - - major_0x02980 - -************************************************************ - -Xrefs: -major_0x02ccc -major_0x03460 -major_0x035a0 -memretry_machine_check -major_0x03940 -major_0x03be0 -major_0x04180 -major_0x043a0 -major_0x046d0 -major_0x046e0 -major_0x04700 -major_0x04b60 -major_0x05808 -major_0x06a14 - -***********************************************************/ - -.align 7 # 02980 - -major_0x02980: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 02980 -mtspr 275/*sprg3*/, r24 # 02984 -lwz r9, -0x000c( r1) # 02988 -rlwinm r23, r17, 31, 27, 31 # 0298c -rlwnm. r9, r9, r8, 0x00, 0x00 # 02990 -bsol- cr3, major_0x02980_0x100 # 02994 -lwz r6, -0x0014( r1) # 02998 -ori r7, r16, 0x10 # 0299c -neg r23, r23 # 029a0 -mtcrf 0x3f, r7 # 029a4 -add r19, r19, r23 # 029a8 -rlwimi r7, r8, 24, 0, 7 # 029ac -lwz r1, -0x0004( r1) # 029b0 -slwi r8, r8, 2 # 029b4 -add r8, r8, r1 # 029b8 -lwz r9, 0x0dc0( r8) # 029bc -addi r9, r9, 0x01 # 029c0 -stw r9, 0x0dc0( r8) # 029c4 -srwi r9, r7, 24 # 029c8 -mfspr r1, 272/*sprg0*/ # 029cc -lwz r8, 0x0000( r1) # 029d0 -stw r8, 0x0104( r6) # 029d4 -lwz r8, 0x001c( r1) # 029d8 -stw r8, 0x013c( r6) # 029dc -lwz r8, 0x0020( r1) # 029e0 -stw r8, 0x0144( r6) # 029e4 -lwz r8, 0x0024( r1) # 029e8 -stw r8, 0x014c( r6) # 029ec -lwz r8, 0x0028( r1) # 029f0 -stw r8, 0x0154( r6) # 029f4 -lwz r8, 0x002c( r1) # 029f8 -stw r8, 0x015c( r6) # 029fc -lwz r8, 0x0030( r1) # 02a00 -stw r8, 0x0164( r6) # 02a04 -lwz r8, 0x0034( r1) # 02a08 -stw r8, 0x016c( r6) # 02a0c -cmpwi cr1, r9, 0x14 # 02a10 -blt- cr4, major_0x04a20_0x18 # 02a14 -bne- cr2, major_0x02ccc_0x310 # 02a18 -blt- major_0x02980_0xa8 # 02a1c -bne- cr1, major_0x02980_0x178 # 02a20 -b major_0x02ccc_0x310 # 02a24 - -major_0x02980_0xa8: -mfspr r1, 272/*sprg0*/ # 02a28 -stw r10, 0x0084( r6) # 02a2c -stw r12, 0x008c( r6) # 02a30 -stw r3, 0x0094( r6) # 02a34 -stw r4, 0x009c( r6) # 02a38 -lwz r8, -0x000c( r1) # 02a3c -stw r7, 0x0040( r6) # 02a40 -stw r8, 0x0044( r6) # 02a44 -li r8, 0x00 # 02a48 -lwz r10, 0x004c( r6) # 02a4c -stw r8, -0x000c( r1) # 02a50 -lwz r1, -0x0004( r1) # 02a54 -lwz r4, 0x0054( r6) # 02a58 -lwz r3, 0x0654( r1) # 02a5c -blt- cr2, major_0x02980_0xec # 02a60 -lwz r3, 0x05b4( r1) # 02a64 -rlwinm r11, r11, 0, 17, 15 # 02a68 - -major_0x02980_0xec: -lwz r12, 0x0648( r1) # 02a6c -bsol- cr6, major_0x02980_0x114 # 02a70 -rlwinm r7, r7, 0, 29, 16 # 02a74 -rlwimi r11, r7, 0, 20, 23 # 02a78 -b skeleton_key # 02a7c - -major_0x02980_0x100: -lwz r2, 0x0008( r1) # 02a80 -lwz r3, 0x000c( r1) # 02a84 -lwz r4, 0x0010( r1) # 02a88 -lwz r5, 0x0014( r1) # 02a8c -blr # 02a90 - -major_0x02980_0x114: /* < outside referer */ -mfspr r8, 272/*sprg0*/ # 02a94 -stw r17, 0x0064( r6) # 02a98 -stw r20, 0x0068( r6) # 02a9c -stw r21, 0x006c( r6) # 02aa0 -stw r19, 0x0074( r6) # 02aa4 -stw r18, 0x007c( r6) # 02aa8 -lmw r14, 0x0038( r8) # 02aac -blr # 02ab0 - -major_0x02980_0x134: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 02ab4 -mtcrf 0x3f, r7 # 02ab8 -lwz r9, -0x000c( r1) # 02abc -lwz r1, -0x0004( r1) # 02ac0 -rlwnm. r9, r9, r8, 0x00, 0x00 # 02ac4 -rlwimi r7, r8, 24, 0, 7 # 02ac8 -slwi r8, r8, 2 # 02acc -add r8, r8, r1 # 02ad0 -lwz r9, 0x0dc0( r8) # 02ad4 -addi r9, r9, 0x01 # 02ad8 -stw r9, 0x0dc0( r8) # 02adc -srwi r9, r7, 24 # 02ae0 -blt- cr4, major_0x04a20_0x18 # 02ae4 -bne- cr2, major_0x02ccc_0x2a4 # 02ae8 -cmpwi cr1, r9, 0x0c # 02aec -blt+ major_0x02980_0xa8 # 02af0 -beq- cr1, major_0x02ccc_0x2a4 # 02af4 - -major_0x02980_0x178: /* < outside referer */ -lwz r1, -0x0004( r1) # 02af8 -lwz r9, 0x0658( r1) # 02afc -addi r8, r1, 0x360 # 02b00 -mtspr 275/*sprg3*/, r8 # 02b04 -bltl- cr2, major_0x02ccc_0x108 # 02b08 - -major_0x02980_0x18c: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 02b0c -lwz r8, -0x000c( r1) # 02b10 -stw r7, 0x0000( r6) # 02b14 -stw r8, 0x0004( r6) # 02b18 -bns- cr6, major_0x02980_0x1b8 # 02b1c -stw r17, 0x0024( r6) # 02b20 -stw r20, 0x0028( r6) # 02b24 -stw r21, 0x002c( r6) # 02b28 -stw r19, 0x0034( r6) # 02b2c -stw r18, 0x003c( r6) # 02b30 -lmw r14, 0x0038( r1) # 02b34 - -major_0x02980_0x1b8: -mfxer r8 # 02b38 -stw r13, 0x00dc( r6) # 02b3c -stw r8, 0x00d4( r6) # 02b40 -stw r12, 0x00ec( r6) # 02b44 -mfctr r8 # 02b48 -stw r10, 0x00fc( r6) # 02b4c -stw r8, 0x00f4( r6) # 02b50 -ble- cr3, major_0x02980_0x1e8 # 02b54 -lwz r8, 0x00c4( r9) # 02b58 -mfspr r12, 0/*mq*/ # 02b5c -mtspr 0/*mq*/, r8 # 02b60 -stw r12, 0x00c4( r6) # 02b64 - -major_0x02980_0x1e8: -lwz r8, 0x0004( r1) # 02b68 -stw r8, 0x010c( r6) # 02b6c -stw r2, 0x0114( r6) # 02b70 -stw r3, 0x011c( r6) # 02b74 -stw r4, 0x0124( r6) # 02b78 -lwz r8, 0x0018( r1) # 02b7c -stw r5, 0x012c( r6) # 02b80 -stw r8, 0x0134( r6) # 02b84 -stw r14, 0x0174( r6) # 02b88 -stw r15, 0x017c( r6) # 02b8c -stw r16, 0x0184( r6) # 02b90 -stw r17, 0x018c( r6) # 02b94 -stw r18, 0x0194( r6) # 02b98 -stw r19, 0x019c( r6) # 02b9c -stw r20, 0x01a4( r6) # 02ba0 -stw r21, 0x01ac( r6) # 02ba4 -stw r22, 0x01b4( r6) # 02ba8 -stw r23, 0x01bc( r6) # 02bac -stw r24, 0x01c4( r6) # 02bb0 -stw r25, 0x01cc( r6) # 02bb4 -stw r26, 0x01d4( r6) # 02bb8 -andi. r8, r11, 0x2000 # 02bbc -stw r27, 0x01dc( r6) # 02bc0 -stw r28, 0x01e4( r6) # 02bc4 -stw r29, 0x01ec( r6) # 02bc8 -stw r30, 0x01f4( r6) # 02bcc -stw r31, 0x01fc( r6) # 02bd0 -bnel- major_0x03da0_0x12c # 02bd4 -bge- cr3, major_0x02980_0x260 # 02bd8 -bl major_0x13c90 # 02bdc - -major_0x02980_0x260: -stw r11, 0x00a4( r6) # 02be0 -lwz r8, 0x0000( r9) # 02be4 -stw r9, -0x0014( r1) # 02be8 -xoris r7, r7, 0x80 # 02bec -rlwimi r11, r8, 0, 20, 23 # 02bf0 -mr r6, r9 # 02bf4 -rlwimi r7, r8, 0, 17, 31 # 02bf8 -andi. r8, r11, 0x900 # 02bfc -lwz r8, 0x0004( r6) # 02c00 -lwz r13, 0x00dc( r6) # 02c04 -stw r8, -0x000c( r1) # 02c08 -lwz r8, 0x00d4( r6) # 02c0c -lwz r12, 0x00ec( r6) # 02c10 -mtxer r8 # 02c14 -lwz r8, 0x00f4( r6) # 02c18 -lwz r10, 0x00fc( r6) # 02c1c -mtctr r8 # 02c20 -bnel- major_0x03da0_0x80 # 02c24 -lwarx r8, r0, r1 # 02c28 -sync # 02c2c -stwcx. r8, r0, r1 # 02c30 -lwz r29, 0x00d8( r6) # 02c34 -lwz r8, 0x010c( r6) # 02c38 -cmpwi r29, 0x00 # 02c3c -stw r8, 0x0004( r1) # 02c40 -lwz r28, 0x0210(r29) # 02c44 -beq- major_0x02980_0x2d0 # 02c48 -mtspr 256/*vrsave*/, r28 # 02c4c - -major_0x02980_0x2d0: -lwz r2, 0x0114( r6) # 02c50 -lwz r3, 0x011c( r6) # 02c54 -lwz r4, 0x0124( r6) # 02c58 -lwz r8, 0x0134( r6) # 02c5c -lwz r5, 0x012c( r6) # 02c60 -stw r8, 0x0018( r1) # 02c64 -lwz r14, 0x0174( r6) # 02c68 -lwz r15, 0x017c( r6) # 02c6c -lwz r16, 0x0184( r6) # 02c70 -lwz r17, 0x018c( r6) # 02c74 -lwz r18, 0x0194( r6) # 02c78 -lwz r19, 0x019c( r6) # 02c7c -lwz r20, 0x01a4( r6) # 02c80 -lwz r21, 0x01ac( r6) # 02c84 -lwz r22, 0x01b4( r6) # 02c88 -lwz r23, 0x01bc( r6) # 02c8c -lwz r24, 0x01c4( r6) # 02c90 -lwz r25, 0x01cc( r6) # 02c94 -lwz r26, 0x01d4( r6) # 02c98 -lwz r27, 0x01dc( r6) # 02c9c -lwz r28, 0x01e4( r6) # 02ca0 -lwz r29, 0x01ec( r6) # 02ca4 -lwz r30, 0x01f4( r6) # 02ca8 -lwz r31, 0x01fc( r6) # 02cac - - - -/*********************************************************** - - skeleton_key - -************************************************************ - -Called when a Gary reset trap is called. When else? - -************************************************************ - -Xrefs: -major_0x02980 -major_0x03200 -major_0x03940 -major_0x03be0 -major_0x04240 -major_0x04300 -major_0x043a0 -reset_trap -major_0x04700 -major_0x04880 -major_0x08794 -major_0x09dfc -major_0x0a600 -rtas_call -major_0x0a8c0 -syscall_return -interrupt_blue - -***********************************************************/ - -.align 4 # 02cb0 - -skeleton_key: /* < outside referer */ -andi. r8, r7, 0x30 # 02cb0 -mfspr r1, 272/*sprg0*/ # 02cb4 -bnel- major_0x02ccc # 02cb8 -li r8, 0x00 # 02cbc -stw r7, -0x0010( r1) # 02cc0 -stw r8, -0x0114( r1) # 02cc4 -b major_0x142a8 # 02cc8 - - - -/*********************************************************** - - major_0x02ccc - -************************************************************ - -Xrefs: -major_0x02980 -skeleton_key - -***********************************************************/ - -major_0x02ccc: /* < outside referer */ -mtcrf 0x3f, r7 # 02ccc -bns- cr6, major_0x02ccc_0x18 # 02cd0 -rlwinm r7, r7, 0, 28, 26 # 02cd4 -bso- cr7, major_0x02ccc_0x30 # 02cd8 -rlwinm r7, r7, 0, 27, 25 # 02cdc -b major_0x02ccc_0x2c # 02ce0 - -major_0x02ccc_0x18: -bne- cr6, major_0x02ccc_0x2c # 02ce4 -rlwinm r7, r7, 0, 27, 25 # 02ce8 -stw r7, -0x0010( r1) # 02cec -li r8, 0x08 # 02cf0 -b major_0x02980_0x134 # 02cf4 - -major_0x02ccc_0x2c: -blr # 02cf8 - -major_0x02ccc_0x30: -rlwinm. r8, r7, 0, 8, 8 # 02cfc -beq- major_0x02ccc_0x108 # 02d00 -stw r7, -0x0010( r1) # 02d04 -lwz r8, 0x0104( r6) # 02d08 -stw r8, 0x0000( r1) # 02d0c -stw r2, 0x0008( r1) # 02d10 -stw r3, 0x000c( r1) # 02d14 -stw r4, 0x0010( r1) # 02d18 -stw r5, 0x0014( r1) # 02d1c -lwz r8, 0x013c( r6) # 02d20 -stw r8, 0x001c( r1) # 02d24 -lwz r8, 0x0144( r6) # 02d28 -stw r8, 0x0020( r1) # 02d2c -lwz r8, 0x014c( r6) # 02d30 -stw r8, 0x0024( r1) # 02d34 -lwz r8, 0x0154( r6) # 02d38 -stw r8, 0x0028( r1) # 02d3c -lwz r8, 0x015c( r6) # 02d40 -stw r8, 0x002c( r1) # 02d44 -lwz r8, 0x0164( r6) # 02d48 -stw r8, 0x0030( r1) # 02d4c -lwz r8, 0x016c( r6) # 02d50 -stw r8, 0x0034( r1) # 02d54 -stmw r14, 0x0038( r1) # 02d58 -lwz r8, -0x0004( r1) # 02d5c -lwz r17, 0x0024( r9) # 02d60 -lwz r20, 0x0028( r9) # 02d64 -lwz r21, 0x002c( r9) # 02d68 -lwz r19, 0x0034( r9) # 02d6c -lwz r18, 0x003c( r9) # 02d70 -rlwinm r16, r7, 0, 28, 26 # 02d74 -lwz r25, 0x0650( r8) # 02d78 -rlwinm. r22, r17, 31, 27, 31 # 02d7c -add r19, r19, r22 # 02d80 -rlwimi r25, r17, 7, 25, 30 # 02d84 -lhz r26, 0x0d20(r25) # 02d88 -rlwimi r25, r19, 1, 28, 30 # 02d8c -stw r16, -0x0010( r1) # 02d90 -rlwimi r26, r26, 8, 8, 15 # 02d94 -rlwimi r25, r17, 4, 23, 27 # 02d98 -mtcrf 0x10, r26 # 02d9c -lha r22, 0x0c00(r25) # 02da0 -addi r23, r8, 0x4e0 # 02da4 -add r22, r22, r25 # 02da8 -mfspr r24, 275/*sprg3*/ # 02dac -mtlr r22 # 02db0 -mtspr 275/*sprg3*/, r23 # 02db4 -mfmsr r14 # 02db8 -ori r15, r14, 0x10 # 02dbc -mtmsr r15 # 02dc0 -isync # 02dc4 -rlwimi r25, r26, 2, 22, 29 # 02dc8 -bnelr- # 02dcc -b major_0x05808_0x114 # 02dd0 - -major_0x02ccc_0x108: /* < outside referer */ -# r6 = ewa -bl save_registers_from_r14 # 02dd4 -# r8 = sprg0 (not used by me) - -lwz r31, -0x0008( r8) # 02dd8 -lwz r8, 0x00f4(r31) # 02ddc - -# r8 = id -bl id_kind # 02de0 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x04 # 02de4 -mr r30, r8 # 02de8 -bnel- major_0x02ccc_0x20c # 02dec -lwz r28, 0x0028(r30) # 02df0 -cmpwi r28, 0x00 # 02df4 -beql- major_0x02ccc_0x20c # 02df8 -mr r8, r8 # 02dfc -mr r9, r9 # 02e00 -addi r8, r1, -0xb50 # 02e04 - -# r8 = lock -bl lock # 02e08 -mr r8, r8 # 02e0c -mr r9, r9 # 02e10 -lwz r29, 0x0064(r31) # 02e14 -ori r29, r29, 0x200 # 02e18 -ori r29, r29, 0x1000 # 02e1c -stw r29, 0x0064(r31) # 02e20 -lwz r17, 0x0008(r28) # 02e24 -stw r17, 0x0028(r30) # 02e28 -lwz r17, 0x0000(r31) # 02e2c -stw r17, 0x0010(r28) # 02e30 -li r18, -0x7271 # 02e34 -stw r18, 0x0014(r28) # 02e38 -stw r18, 0x00f8(r31) # 02e3c -stw r10, 0x0018(r28) # 02e40 -bl 1f # 02e44 -.ascii "Blue task suspended. Notifying exception handler - srr1/0 " -.short 0 # 02e82 -.align 2 # 02e84 -1: mflr r8 # 02e84 -bl print_string # 02e88 -mr r8, r11 # 02e8c -bl print_word_hex # 02e90 -mr r8, r10 # 02e94 -bl print_word_hex # 02e98 -bl 1f # 02e9c -.ascii "lr " # 02ea0 -.short 0 # 02ea3 -.align 2 # 02ea5 -1: mflr r8 # 02ea8 -bl print_string # 02eac -mr r8, r12 # 02eb0 -bl print_word_hex # 02eb4 -bl 1f # 02eb8 -.ascii "^n" # 02ebc -.short 0 # 02ebe -.align 2 # 02ec0 -1: mflr r8 # 02ec0 -bl print_string # 02ec4 -mr r31, r30 # 02ec8 -mr r8, r28 # 02ecc -bl major_0x0c8b4 # 02ed0 -b major_0x142dc # 02ed4 - -major_0x02ccc_0x20c: -mflr r16 # 02ed8 -bl 1f # 02edc -.ascii "Blue task terminated - no exception handler registered - srr1/0 " -.short 0 # 02f20 -.align 2 # 02f22 -1: mflr r8 # 02f24 -bl print_string # 02f28 -mr r8, r11 # 02f2c -bl print_word_hex # 02f30 -mr r8, r10 # 02f34 -bl print_word_hex # 02f38 -bl 1f # 02f3c -.ascii "lr " # 02f40 -.short 0 # 02f43 -.align 2 # 02f45 -1: mflr r8 # 02f48 -bl print_string # 02f4c -mr r8, r12 # 02f50 -bl print_word_hex # 02f54 -bl 1f # 02f58 -.ascii "^n" # 02f5c -.short 0 # 02f5e -.align 2 # 02f60 -1: mflr r8 # 02f60 -bl print_string # 02f64 -mtlr r16 # 02f68 -b panic_wrapper_0x02960 # 02f6c - -major_0x02ccc_0x2a4: /* < outside referer */ -bsol+ cr6, panic_wrapper_0x02960 # 02f70 - -# r6 = ewa -bl save_registers_from_r14 # 02f74 -# r8 = sprg0 (not used by me) - -mr r30, r10 # 02f78 -lwz r29, 0x0018( r8) # 02f7c -lwz r31, -0x0008( r8) # 02f80 -stw r29, 0x0134( r6) # 02f84 -stw r30, 0x0074( r6) # 02f88 -stw r7, 0x0040( r6) # 02f8c -lwz r1, -0x0004( r1) # 02f90 -mr r28, r8 # 02f94 -mr r29, r9 # 02f98 -addi r8, r1, -0xb50 # 02f9c - -# r8 = lock -bl lock # 02fa0 -mr r8, r28 # 02fa4 -mr r9, r29 # 02fa8 -mr r8, r31 # 02fac -bl major_0x13e4c # 02fb0 -lwz r16, 0x0064(r31) # 02fb4 -srwi r8, r7, 24 # 02fb8 -rlwinm. r16, r16, 0, 9, 9 # 02fbc -cmpwi cr1, r8, 0x0c # 02fc0 -bne- major_0x02ccc_0x524 # 02fc4 -bne- cr1, major_0x02ccc_0x524 # 02fc8 -lwz r8, 0x00e0(r31) # 02fcc -addi r8, r8, 0x01 # 02fd0 -stw r8, 0x00e0(r31) # 02fd4 -b major_0x02ccc_0x380 # 02fd8 - -major_0x02ccc_0x310: /* < outside referer */ -bnsl+ cr6, panic_wrapper_0x02960 # 02fdc -bl major_0x02980_0x114 # 02fe0 -stw r10, 0x0084( r6) # 02fe4 -rlwinm r7, r7, 0, 28, 26 # 02fe8 - -# r6 = ewa -bl save_registers_from_r14 # 02fec -# r8 = sprg0 (not used by me) - -lwz r30, 0x0074( r6) # 02ff0 -lwz r29, 0x0018( r8) # 02ff4 -lwz r31, -0x0008( r8) # 02ff8 -stw r29, 0x0134( r6) # 02ffc -stw r7, 0x0040( r6) # 03000 -lwz r1, -0x0004( r1) # 03004 -mr r28, r8 # 03008 -mr r29, r9 # 0300c -addi r8, r1, -0xb50 # 03010 - -# r8 = lock -bl lock # 03014 -mr r8, r28 # 03018 -mr r9, r29 # 0301c -mr r8, r31 # 03020 -bl major_0x13e4c # 03024 -lwz r16, 0x0064(r31) # 03028 -srwi r8, r7, 24 # 0302c -rlwinm. r16, r16, 0, 9, 9 # 03030 -cmpwi cr1, r8, 0x14 # 03034 -bne- major_0x02ccc_0x524 # 03038 -bne- cr1, major_0x02ccc_0x524 # 0303c -lwz r8, 0x00e4(r31) # 03040 -addi r8, r8, 0x01 # 03044 -stw r8, 0x00e4(r31) # 03048 - -major_0x02ccc_0x380: -mfspr r14, 272/*sprg0*/ # 0304c -rlwinm r7, r7, 0, 27, 25 # 03050 -rlwinm r7, r7, 0, 0, 30 # 03054 -lwz r29, -0x00e4(r14) # 03058 -lis r17, 0x4152 # 0305c -ori r17, r17, 0x4541 # 03060 -lwz r16, 0x0004(r29) # 03064 -cmplw r16, r17 # 03068 -bnel+ panic_wrapper_0x02960 # 0306c -lwz r17, 0x0034(r29) # 03070 -addi r17, r17, 0x01 # 03074 -stw r17, 0x0034(r29) # 03078 -lwz r8, 0x0018(r29) # 0307c - -# r8 = id -bl id_kind # 03080 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -lwz r16, 0x06b4( r1) # 03084 -cmpwi r9, 0x0c # 03088 -cmpwi cr1, r16, 0x00 # 0308c -mr r26, r8 # 03090 -bne- major_0x02ccc_0x430 # 03094 -beq- cr1, major_0x02ccc_0x3d4 # 03098 -beq- cr2, major_0x02ccc_0x430 # 0309c - -major_0x02ccc_0x3d4: -lwz r16, 0x0064(r31) # 030a0 -addi r17, r31, 0x08 # 030a4 -addi r18, r31, 160 # 030a8 -stw r18, 0x0000(r17) # 030ac -stw r18, 0x0008(r17) # 030b0 -lwz r19, 0x000c(r18) # 030b4 -stw r19, 0x000c(r17) # 030b8 -stw r17, 0x0008(r19) # 030bc -stw r17, 0x000c(r18) # 030c0 -li r17, 0x01 # 030c4 -ori r16, r16, 0x2000 # 030c8 -stw r17, 0x00b0(r31) # 030cc -stw r16, 0x0064(r31) # 030d0 -rlwinm r30, r30, 0, 0, 19 # 030d4 -lwz r27, 0x0000(r29) # 030d8 -lwz r28, 0x0000(r31) # 030dc -stw r30, 0x0010(r26) # 030e0 -stw r27, 0x0014(r26) # 030e4 -stw r28, 0x0018(r26) # 030e8 -mr r30, r26 # 030ec -bl major_0x0db04 # 030f0 -cmpwi r8, 0x00 # 030f4 -beq+ major_0x02964 # 030f8 - -major_0x02ccc_0x430: -mfcr r28 # 030fc -li r8, 0x1c # 03100 -beq- cr2, major_0x02ccc_0x4a8 # 03104 -bl pool_malloc_with_crset # 03108 -mr. r26, r8 # 0310c -beq- major_0x02ccc_0x50c # 03110 -addi r17, r31, 0x08 # 03114 -addi r18, r31, 160 # 03118 -stw r18, 0x0000(r17) # 0311c -stw r18, 0x0008(r17) # 03120 -lwz r19, 0x000c(r18) # 03124 -stw r19, 0x000c(r17) # 03128 -stw r17, 0x0008(r19) # 0312c -stw r17, 0x000c(r18) # 03130 -li r17, 0x01 # 03134 -stw r17, 0x00b0(r31) # 03138 -lwz r27, 0x0000(r29) # 0313c -lis r8, 0x6e6f # 03140 -ori r8, r8, 0x7465 # 03144 -lwz r29, 0x00a0(r31) # 03148 -stw r27, 0x0010(r26) # 0314c -stw r29, 0x0014(r26) # 03150 -stw r8, 0x0004(r26) # 03154 -stw r30, 0x0018(r26) # 03158 -mr r8, r26 # 0315c -addi r31, r1, -0xa24 # 03160 -bl major_0x0c8b4 # 03164 -lwz r8, -0x0410( r1) # 03168 -bl major_0x0dce8 # 0316c -b major_0x0b0fc # 03170 - -major_0x02ccc_0x4a8: -mr r8, r31 # 03174 -bl major_0x13ed8_0x8 # 03178 -sync # 0317c -lwz r31, -0x0b50( r1) # 03180 -cmpwi cr1, r31, 0x00 # 03184 -li r31, 0x00 # 03188 -bne+ cr1, major_0x02ccc_0x4cc # 0318c -mflr r31 # 03190 -bl panic # 03194 - -major_0x02ccc_0x4cc: -stw r31, -0x0b50( r1) # 03198 -mtcr r28 # 0319c -bns- cr6, major_0x02ccc_0x504 # 031a0 -lwz r8, 0x0064( r6) # 031a4 -lwz r9, 0x0068( r6) # 031a8 -stw r8, 0x0024( r6) # 031ac -stw r9, 0x0028( r6) # 031b0 -lwz r8, 0x006c( r6) # 031b4 -lwz r9, 0x0074( r6) # 031b8 -stw r8, 0x002c( r6) # 031bc -stw r9, 0x0034( r6) # 031c0 -lwz r8, 0x007c( r6) # 031c4 -stw r8, 0x003c( r6) # 031c8 -crclr 4*cr6 + so # 031cc - -major_0x02ccc_0x504: -# r6 = ewa -bl restore_registers_from_r14 # 031d0 -b major_0x02980_0x178 # 031d4 - -major_0x02ccc_0x50c: -li r16, 0x02 # 031d8 -stb r16, 0x0019(r31) # 031dc -mr r8, r31 # 031e0 -bl major_0x13ed8_0x8 # 031e4 -bl major_0x14af8_0xa0 # 031e8 -b major_0x0b0fc # 031ec - -major_0x02ccc_0x524: -b major_0x0ea58_0xe4 # 031f0 - - - -/*********************************************************** - - major_0x031f4 - -***********************************************************/ - -.long 0x4800000c # 031f4 -.long 0x60000000 # 031f8 -.long 0x60000000 # 031fc - - - -/*********************************************************** - - major_0x03200 - -************************************************************ - -Xrefs: -"lisori_caller" - -***********************************************************/ - -.align 9 # 03200 - -major_0x03200: /* < outside referer */ -# r6 = saved at *(ewa + 0x18) -# sprg1 = saved at *(ewa + 4) -# rN (0,7,8,9,10,11,12,13, not r1) = saved at *(*(ewa - 0x14) + 0x104 + 8*N) -bl int_prepare # 03200 -# r0 = 0 -# r1 = *(ewa - 4) -# r6 = kdp -# r7 = *(ewa - 0x10) # flags? -# r8 = ewa -# r10 = srr0 -# r11 = srr1 -# r12 = sprg2 -# r13 = cr - -lwz r8, 0x05a0( r1) # 03204 -rlwinm. r9, r11, 0, 16, 16 # 03208 -cmpwi cr1, r8, 0x00 # 0320c -beq- major_0x03940_0x170 # 03210 -beq- cr1, major_0x03200_0x54 # 03214 -stw r16, 0x0184( r6) # 03218 -stw r17, 0x018c( r6) # 0321c -stw r18, 0x0194( r6) # 03220 -stw r25, 0x01cc( r6) # 03224 -bl major_0x14a98 # 03228 -ble- major_0x03200_0x48 # 0322c -lwz r8, -0x09d4( r1) # 03230 -mtspr 22/*dec*/, r8 # 03234 -lwz r16, 0x0184( r6) # 03238 -lwz r17, 0x018c( r6) # 0323c -lwz r18, 0x0194( r6) # 03240 -b skeleton_key # 03244 - -major_0x03200_0x48: -lwz r16, 0x0184( r6) # 03248 -lwz r17, 0x018c( r6) # 0324c -lwz r18, 0x0194( r6) # 03250 - -major_0x03200_0x54: -# r6 = ewa -bl save_registers_from_r14 # 03254 -# r8 = sprg0 (not used by me) - -mr r8, r8 # 03258 -mr r9, r9 # 0325c -addi r8, r1, -0xb50 # 03260 - -# r8 = lock -bl lock # 03264 -mr r8, r8 # 03268 -mr r9, r9 # 0326c -lwz r8, 0x0e8c( r1) # 03270 -addi r8, r8, 0x01 # 03274 -stw r8, 0x0e8c( r1) # 03278 -bl major_0x12e88_0x24 # 0327c -sync # 03280 -lwz r8, -0x0b50( r1) # 03284 -cmpwi cr1, r8, 0x00 # 03288 -li r8, 0x00 # 0328c -bne+ cr1, major_0x03200_0x9c # 03290 -mflr r8 # 03294 -bl panic # 03298 - -major_0x03200_0x9c: -stw r8, -0x0b50( r1) # 0329c - -# r6 = ewa -bl restore_registers_from_r14 # 032a0 -b skeleton_key # 032a4 - - - -/*********************************************************** - - major_0x032a8 - -***********************************************************/ - -.align 3 # 032a8 - -.long 0x48000018 # 032a8 -.long 0x60000000 # 032ac -.long 0x60000000 # 032b0 -.long 0x60000000 # 032b4 -.long 0x60000000 # 032b8 -.long 0x60000000 # 032bc - - - -/*********************************************************** - - major_0x032c0 - -************************************************************ - -Xrefs: -"lisori_caller" -major_0x06a14 - -***********************************************************/ - -.align 6 # 032c0 - -major_0x032c0: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 032c0 -stmw r2, 0x0008( r1) # 032c4 -mfspr r11, 273/*sprg1*/ # 032c8 -stw r0, 0x0000( r1) # 032cc -stw r11, 0x0004( r1) # 032d0 -li r0, 0x00 # 032d4 -mfspr r10, 26/*srr0*/ # 032d8 -mfspr r11, 27/*srr1*/ # 032dc -mfspr r12, 274/*sprg2*/ # 032e0 -mfcr r13 # 032e4 -mfspr r24, 275/*sprg3*/ # 032e8 -lwz r16, -0x0010( r1) # 032ec -lwz r1, -0x0004( r1) # 032f0 -mfspr r26, 18/*dsisr*/ # 032f4 -addi r23, r1, 0x4e0 # 032f8 -andis. r28, r26, 0x400 # 032fc -mtspr 275/*sprg3*/, r23 # 03300 -mfmsr r14 # 03304 -bne- major_0x032c0_0x100 # 03308 -ori r15, r14, 0x10 # 0330c -mtmsr r15 # 03310 -isync # 03314 -lwz r27, 0x0000(r10) # 03318 -mtmsr r14 # 0331c -isync # 03320 - -major_0x032c0_0x64: /* < outside referer */ -rlwinm. r18, r27, 18, 25, 29 # 03324 -lwz r25, 0x0650( r1) # 03328 -li r21, 0x00 # 0332c -mfspr r1, 272/*sprg0*/ # 03330 -beq- major_0x032c0_0x7c # 03334 -lwzx r18, r1, r18 # 03338 - -major_0x032c0_0x7c: -andis. r26, r27, 0xec00 # 0333c -lwz r16, -0x0010( r1) # 03340 -rlwinm r17, r27, 0, 6, 15 # 03344 -rlwimi r16, r16, 27, 26, 26 # 03348 -bge- major_0x032c0_0xbc # 0334c -rlwimi r25, r27, 7, 26, 29 # 03350 -rlwimi r25, r27, 12, 25, 25 # 03354 -lwz r26, 0x0b80(r25) # 03358 -extsh r23, r27 # 0335c -rlwimi r25, r26, 26, 22, 29 # 03360 -mtlr r25 # 03364 -mtcr r26 # 03368 -add r18, r18, r23 # 0336c -crclr 4*cr5 + so # 03370 -rlwimi r17, r26, 6, 26, 5 # 03374 -blr # 03378 - -major_0x032c0_0xbc: -rlwimi r25, r27, 27, 26, 29 # 0337c -rlwimi r25, r27, 0, 25, 25 # 03380 -rlwimi r25, r27, 6, 23, 24 # 03384 -rlwimi r25, r27, 4, 22, 22 # 03388 -lwz r26, 0x0800(r25) # 0338c -rlwinm r23, r27, 23, 25, 29 # 03390 -rlwimi r25, r26, 26, 22, 29 # 03394 -mtlr r25 # 03398 -mtcr r26 # 0339c -lwzx r23, r1, r23 # 033a0 -crclr 4*cr5 + so # 033a4 -rlwimi r17, r26, 6, 26, 5 # 033a8 -add r18, r18, r23 # 033ac -blelr- cr3 # 033b0 -neg r23, r23 # 033b4 -add r18, r18, r23 # 033b8 -blr # 033bc - -major_0x032c0_0x100: -ori r15, r14, 0x10 # 033c0 -mr r28, r16 # 033c4 -mfspr r18, 19/*dar*/ # 033c8 -mfspr r19, 18/*dsisr*/ # 033cc -mtmsr r15 # 033d0 -isync # 033d4 -lwz r27, 0x0000(r10) # 033d8 -mtmsr r14 # 033dc -isync # 033e0 -mtspr 275/*sprg3*/, r24 # 033e4 -lwz r1, -0x0004( r1) # 033e8 -mr r31, r19 # 033ec -mr r8, r18 # 033f0 -li r9, 0x00 # 033f4 -bl major_0x12248_0x38c # 033f8 -mr r16, r28 # 033fc -crset 4*cr3 + so # 03400 -mfspr r1, 272/*sprg0*/ # 03404 -beq- major_0x032c0_0x190 # 03408 -mr r18, r8 # 0340c -rlwinm r28, r27, 13, 25, 29 # 03410 -andis. r9, r31, 0x200 # 03414 -rlwimi r18, r17, 0, 0, 19 # 03418 -beq- major_0x032c0_0x17c # 0341c -lwzx r31, r1, r28 # 03420 -stwcx. r31, r0, r18 # 03424 -sync # 03428 -dcbf r0, r18 # 0342c -mfcr r31 # 03430 -rlwimi r13, r31, 0, 0, 3 # 03434 -b major_0x06000_0x5a0 # 03438 - -major_0x032c0_0x17c: -lwarx r31, r0, r18 # 0343c -sync # 03440 -dcbf r0, r18 # 03444 -stwx r31, r1, r28 # 03448 -b major_0x06000_0x5a0 # 0344c - -major_0x032c0_0x190: -addi r10, r10, -0x04 # 03450 -b major_0x06000_0x5a0 # 03454 - - - -/*********************************************************** - - major_0x03458 - -***********************************************************/ - -.align 3 # 03458 - -.long 0x60000000 # 03458 -.long 0x60000000 # 0345c - - - -/*********************************************************** - - major_0x03460 - -************************************************************ - -Xrefs: -"lisori_caller" -major_0x05808 - -***********************************************************/ - -.align 5 # 03460 - -major_0x03460: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 03460 -stmw r2, 0x0008( r1) # 03464 -mfspr r11, 273/*sprg1*/ # 03468 -stw r0, 0x0000( r1) # 0346c -stw r11, 0x0004( r1) # 03470 -li r0, 0x00 # 03474 -lwz r11, -0x0008( r1) # 03478 -lwz r16, -0x0010( r1) # 0347c -lwz r21, 0x0064(r11) # 03480 -lwz r1, -0x0004( r1) # 03484 -lwz r11, 0x0e84( r1) # 03488 -addi r11, r11, 0x01 # 0348c -stw r11, 0x0e84( r1) # 03490 -mfspr r10, 26/*srr0*/ # 03494 -mfspr r11, 27/*srr1*/ # 03498 -mfspr r12, 274/*sprg2*/ # 0349c -mfcr r13 # 034a0 -mfspr r24, 275/*sprg3*/ # 034a4 -mfspr r27, 18/*dsisr*/ # 034a8 -mfspr r18, 19/*dar*/ # 034ac -rlwinm. r21, r21, 0, 9, 9 # 034b0 -addi r23, r1, 0x4e0 # 034b4 -bne- major_0x03460_0x108 # 034b8 -clrlwi. r21, r11, 0x1f # 034bc -lwz r25, 0x0650( r1) # 034c0 -bne- major_0x03460_0x108 # 034c4 -rlwinm. r21, r27, 17, 30, 31 # 034c8 -rlwinm r17, r27, 16, 6, 15 # 034cc -mfspr r1, 272/*sprg0*/ # 034d0 -rlwimi r25, r27, 24, 23, 29 # 034d4 -rlwimi r16, r16, 27, 26, 26 # 034d8 -bne- major_0x03460_0xa4 # 034dc -lwz r26, 0x0b80(r25) # 034e0 -mfmsr r14 # 034e4 -rlwimi r25, r26, 26, 22, 29 # 034e8 -mtlr r25 # 034ec -ori r15, r14, 0x10 # 034f0 -mtcr r26 # 034f4 -rlwimi r17, r26, 6, 26, 5 # 034f8 -crclr 4*cr5 + so # 034fc -blr # 03500 - -major_0x03460_0xa4: -lwz r26, 0x0a00(r25) # 03504 -mfmsr r14 # 03508 -mtspr 275/*sprg3*/, r23 # 0350c -rlwimi r25, r26, 26, 22, 29 # 03510 -mtlr r25 # 03514 -ori r15, r14, 0x10 # 03518 -mtcr r26 # 0351c -rlwimi r17, r26, 6, 26, 5 # 03520 -crclr 4*cr5 + so # 03524 -bgelr- cr3 # 03528 -mtmsr r15 # 0352c -isync # 03530 -lwz r27, 0x0000(r10) # 03534 -mtmsr r14 # 03538 -isync # 0353c -mtspr 275/*sprg3*/, r24 # 03540 -blr # 03544 - -major_0x03460_0xe8: /* < outside referer */ -sync # 03548 -mtmsr r14 # 0354c -isync # 03550 -mflr r23 # 03554 -icbi r0, r23 # 03558 -sync # 0355c -isync # 03560 -blr # 03564 - -major_0x03460_0x108: -li r8, 0x00 # 03568 -lis r17, -0x100 # 0356c -mtcr r8 # 03570 -mr r19, r18 # 03574 -rlwimi r17, r27, 7, 31, 31 # 03578 -xori r17, r17, 0x01 # 0357c -li r8, 0x18 # 03580 -b major_0x02980 # 03584 - - - -/*********************************************************** - - major_0x03588 - -***********************************************************/ - -.align 3 # 03588 - -.long 0x48000018 # 03588 -.long 0x60000000 # 0358c -.long 0x60000000 # 03590 -.long 0x60000000 # 03594 -.long 0x60000000 # 03598 -.long 0x60000000 # 0359c - - - -/*********************************************************** - - major_0x035a0 - -************************************************************ - -Xrefs: -"lisori_caller" - -***********************************************************/ - -.align 5 # 035a0 - -major_0x035a0: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 035a0 -mfspr r31, 18/*dsisr*/ # 035a4 -mfspr r27, 19/*dar*/ # 035a8 -andis. r28, r31, 0xc030 # 035ac -lwz r1, -0x0004( r1) # 035b0 -bne- major_0x035a0_0x1c8 # 035b4 -mfspr r30, 27/*srr1*/ # 035b8 -andi. r28, r30, 0x4000 # 035bc -mfspr r30, 272/*sprg0*/ # 035c0 -beq- major_0x035a0_0x100 # 035c4 -stw r8, -0x00e0(r30) # 035c8 -stw r9, -0x00dc(r30) # 035cc -mfcr r8 # 035d0 -stw r16, -0x00d8(r30) # 035d4 -stw r17, -0x00d4(r30) # 035d8 -stw r18, -0x00d0(r30) # 035dc -stw r19, -0x00cc(r30) # 035e0 -stw r8, -0x00c8(r30) # 035e4 -lwz r8, -0x001c(r30) # 035e8 -mr r9, r27 # 035ec -bl major_0x10320_0xcc # 035f0 -lwz r16, 0x0024( r8) # 035f4 -lwz r17, 0x0028( r8) # 035f8 -cmplw r27, r16 # 035fc -cmplw cr7, r27, r17 # 03600 -blt- major_0x035a0_0xe0 # 03604 -bgt- cr7, major_0x035a0_0xe0 # 03608 -mr r31, r8 # 0360c -mr r8, r27 # 03610 -bl major_0x12248_0x1e4 # 03614 -beq- major_0x035a0_0xe0 # 03618 -lwz r8, 0x0000(r30) # 0361c -lwz r16, 0x0098(r31) # 03620 -rlwinm r28, r8, 0, 29, 30 # 03624 -cmpwi cr7, r28, 0x04 # 03628 -cmpwi r28, 0x02 # 0362c -beq- cr7, major_0x035a0_0xe0 # 03630 -beq- major_0x035a0_0xe0 # 03634 - -major_0x035a0_0x98: -addi r17, r31, 0x90 # 03638 -cmpw r16, r17 # 0363c -addi r17, r16, 0x14 # 03640 -beq- major_0x035a0_0x158 # 03644 -lwz r9, 0x0010(r16) # 03648 -add r9, r9, r17 # 0364c - -major_0x035a0_0xb0: -lwz r18, 0x0000(r17) # 03650 -cmplw cr7, r17, r9 # 03654 -lwz r19, 0x0004(r17) # 03658 -bgt- cr7, major_0x035a0_0xd8 # 0365c -cmplw r27, r18 # 03660 -cmplw cr7, r27, r19 # 03664 -blt- major_0x035a0_0xd0 # 03668 -ble- cr7, major_0x035a0_0xe0 # 0366c - -major_0x035a0_0xd0: -addi r17, r17, 0x08 # 03670 -b major_0x035a0_0xb0 # 03674 - -major_0x035a0_0xd8: -lwz r16, 0x0008(r16) # 03678 -b major_0x035a0_0x98 # 0367c - -major_0x035a0_0xe0: -mfspr r30, 272/*sprg0*/ # 03680 -mfspr r31, 18/*dsisr*/ # 03684 -lwz r8, -0x00e0(r30) # 03688 -lwz r9, -0x00dc(r30) # 0368c -lwz r16, -0x00d8(r30) # 03690 -lwz r17, -0x00d4(r30) # 03694 -lwz r18, -0x00d0(r30) # 03698 -lwz r19, -0x00cc(r30) # 0369c - -major_0x035a0_0x100: -andis. r28, r31, 0x800 # 036a0 -addi r29, r1, 800 # 036a4 -bnel- major_0x054b8 # 036a8 -li r28, 0x43 # 036ac -and r28, r31, r28 # 036b0 -cmpwi cr7, r28, 0x43 # 036b4 -beql+ panic_wrapper_0x02960 # 036b8 -mfspr r28, 274/*sprg2*/ # 036bc -mtlr r28 # 036c0 -bne- cr7, major_0x035a0_0x144 # 036c4 -mfspr r28, 26/*srr0*/ # 036c8 -addi r28, r28, 0x04 # 036cc -lwz r26, 0x0e90( r1) # 036d0 -mtspr 26/*srr0*/, r28 # 036d4 -addi r26, r26, 0x01 # 036d8 -stw r26, 0x0e90( r1) # 036dc -b major_0x035a0_0x19c # 036e0 - -major_0x035a0_0x144: -andi. r28, r31, 0x03 # 036e4 -li r8, 0x16 # 036e8 -beq+ major_0x02980 # 036ec -li r8, 0x15 # 036f0 -b major_0x02980 # 036f4 - -major_0x035a0_0x158: -mfspr r30, 272/*sprg0*/ # 036f8 -lwz r16, 0x0f00( r1) # 036fc -lwz r8, -0x00c8(r30) # 03700 -addi r16, r16, 0x01 # 03704 -mtcr r8 # 03708 -lwz r9, -0x00dc(r30) # 0370c -stw r16, 0x0f00( r1) # 03710 -lwz r16, -0x00d8(r30) # 03714 -lwz r17, -0x00d4(r30) # 03718 -lwz r18, -0x00d0(r30) # 0371c -lwz r19, -0x00cc(r30) # 03720 -lwz r8, -0x00e0(r30) # 03724 -mfspr r29, 27/*srr1*/ # 03728 -mfspr r28, 274/*sprg2*/ # 0372c -rlwinm r29, r29, 0, 18, 16 # 03730 -mtlr r28 # 03734 -mtspr 27/*srr1*/, r29 # 03738 - -major_0x035a0_0x19c: -mfspr r1, 273/*sprg1*/ # 0373c -rlwinm r26, r25, 30, 24, 31 # 03740 -rfi # 03744 -.long 0 # 03748 -.long 0 # 0374c -.long 0 # 03750 -.long 0 # 03754 -.long 0 # 03758 -.long 0 # 0375c -.long 0 # 03760 -.long 0 # 03764 - -major_0x035a0_0x1c8: -andis. r28, r31, 0x8010 # 03768 -bne- memretry_machine_check_0x14c # 0376c -mr r28, r8 # 03770 -mr r31, r9 # 03774 -addi r8, r1, -0xb90 # 03778 - -# r8 = lock -bl lock # 0377c -mr r8, r28 # 03780 -mr r9, r31 # 03784 -bl major_0x04c20 # 03788 -sync # 0378c -lwz r28, -0x0b90( r1) # 03790 -cmpwi cr1, r28, 0x00 # 03794 -li r28, 0x00 # 03798 -bne+ cr1, major_0x035a0_0x208 # 0379c -mflr r28 # 037a0 -bl panic # 037a4 - -major_0x035a0_0x208: -stw r28, -0x0b90( r1) # 037a8 -mfspr r28, 274/*sprg2*/ # 037ac -mtlr r28 # 037b0 -beq+ major_0x035a0_0x19c # 037b4 -li r8, 0x12 # 037b8 -bge+ major_0x02980 # 037bc -li r8, 0x14 # 037c0 -b major_0x02980 # 037c4 - - - -/*********************************************************** - - memretry_machine_check - -************************************************************ - -Xrefs: -"lisori_caller" -major_0x035a0 - -***********************************************************/ - -.align 3 # 037c8 - -memretry_machine_check: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 037c8 -mr r28, r8 # 037cc -lwz r27, -0x0340( r1) # 037d0 -bl 1f # 037d4 -.ascii "CPU " # 037d8 -.short 0 # 037dc -.align 2 # 037de -1: mflr r8 # 037e0 -bl print_string # 037e4 -mr r8, r27 # 037e8 -bl print_word_hex # 037ec -bl 1f # 037f0 -.ascii "MemRetry machine check - last EA " # 037f4 -.short 0 # 03815 -.align 2 # 03817 -1: mflr r8 # 03818 -bl print_string # 0381c -lwz r1, -0x0004( r1) # 03820 -lwz r27, 0x0694( r1) # 03824 -mr r8, r27 # 03828 -bl print_word_hex # 0382c -bl 1f # 03830 -.ascii " SRR1 " # 03834 -.short 0 # 0383a -.align 2 # 0383c -1: mflr r8 # 0383c -bl print_string # 03840 -mfspr r8, 27/*srr1*/ # 03844 -mr r8, r8 # 03848 -bl print_word_hex # 0384c -bl 1f # 03850 -.ascii " SRR0 " # 03854 -.short 0 # 0385a -.align 2 # 0385c -1: mflr r8 # 0385c -bl print_string # 03860 -mfspr r8, 26/*srr0*/ # 03864 -mr r8, r8 # 03868 -bl print_word_hex # 0386c -bl 1f # 03870 -.ascii "^n" # 03874 -.short 0 # 03876 -.align 2 # 03878 -1: mflr r8 # 03878 -bl print_string # 0387c -mr r8, r28 # 03880 -lwz r1, -0x0004( r1) # 03884 -lwz r27, 0x0694( r1) # 03888 -subf r28, r19, r27 # 0388c -cmpwi r28, -0x10 # 03890 -blt- memretry_machine_check_0x14c # 03894 -cmpwi r28, 0x10 # 03898 -bgt- memretry_machine_check_0x14c # 0389c -mr r28, r8 # 038a0 -mr r29, r9 # 038a4 -addi r8, r1, -0xb90 # 038a8 - -# r8 = lock -bl lock # 038ac -mr r8, r28 # 038b0 -mr r9, r29 # 038b4 -lwz r28, 0x0e98( r1) # 038b8 -addi r28, r28, 0x01 # 038bc -stw r28, 0x0e98( r1) # 038c0 -lwz r29, 0x0698( r1) # 038c4 -li r28, 0x00 # 038c8 -stw r28, 0x0000(r29) # 038cc -mfspr r28, 287/*pvr*/ # 038d0 -rlwinm. r28, r28, 0, 0, 14 # 038d4 -sync # 038d8 -tlbie r27 # 038dc -beq- memretry_machine_check_0x124 # 038e0 -sync # 038e4 -tlbsync # 038e8 - -memretry_machine_check_0x124: -sync # 038ec -isync # 038f0 -sync # 038f4 -lwz r28, -0x0b90( r1) # 038f8 -cmpwi cr1, r28, 0x00 # 038fc -li r28, 0x00 # 03900 -bne+ cr1, memretry_machine_check_0x148 # 03904 -mflr r28 # 03908 -bl panic # 0390c - -memretry_machine_check_0x148: -stw r28, -0x0b90( r1) # 03910 - -memretry_machine_check_0x14c: /* < outside referer */ -cmplw r10, r19 # 03914 -li r8, 0x13 # 03918 -bne+ major_0x02980 # 0391c -mfspr r1, 272/*sprg0*/ # 03920 -mtspr 275/*sprg3*/, r24 # 03924 -lmw r14, 0x0038( r1) # 03928 -li r8, 0x0b # 0392c -b major_0x02980_0x134 # 03930 - - - -/*********************************************************** - - major_0x03934 - -***********************************************************/ - -.long 0x4800000c # 03934 -.long 0x60000000 # 03938 -.long 0x60000000 # 0393c - - - -/*********************************************************** - - major_0x03940 - -************************************************************ - -Xrefs: -"lisori_caller" -major_0x03200 -dsi_vector -major_0x04240 -major_0x04300 -major_0x04880 - -***********************************************************/ - -.align 6 # 03940 - -major_0x03940: /* < outside referer */ -# r6 = saved at *(ewa + 0x18) -# sprg1 = saved at *(ewa + 4) -# rN (0,7,8,9,10,11,12,13, not r1) = saved at *(*(ewa - 0x14) + 0x104 + 8*N) -bl int_prepare # 03940 -# r0 = 0 -# r1 = *(ewa - 4) -# r6 = kdp -# r7 = *(ewa - 0x10) # flags? -# r8 = ewa -# r10 = srr0 -# r11 = srr1 -# r12 = sprg2 -# r13 = cr - -andis. r8, r11, 0x4020 # 03944 -beq- major_0x03940_0xb0 # 03948 -mfspr r8, 272/*sprg0*/ # 0394c -stmw r14, 0x0038( r8) # 03950 -mr r28, r8 # 03954 -mr r31, r9 # 03958 -addi r8, r1, -0xb90 # 0395c - -# r8 = lock -bl lock # 03960 -mr r8, r28 # 03964 -mr r9, r31 # 03968 -mr r27, r10 # 0396c -bl major_0x04c20 # 03970 -sync # 03974 -lwz r28, -0x0b90( r1) # 03978 -cmpwi cr1, r28, 0x00 # 0397c -li r28, 0x00 # 03980 -bne+ cr1, major_0x03940_0x50 # 03984 -mflr r28 # 03988 -bl panic # 0398c - -major_0x03940_0x50: -stw r28, -0x0b90( r1) # 03990 -mfspr r8, 272/*sprg0*/ # 03994 -bne- major_0x03940_0x9c # 03998 -mfspr r24, 275/*sprg3*/ # 0399c -mfmsr r14 # 039a0 -ori r15, r14, 0x10 # 039a4 -addi r23, r1, 0x4e0 # 039a8 -mtspr 275/*sprg3*/, r23 # 039ac -mr r19, r10 # 039b0 -mtmsr r15 # 039b4 -isync # 039b8 -lbz r23, 0x0000(r19) # 039bc -sync # 039c0 -mtmsr r14 # 039c4 -isync # 039c8 -mfspr r8, 272/*sprg0*/ # 039cc -mtspr 275/*sprg3*/, r24 # 039d0 -lmw r14, 0x0038( r8) # 039d4 -b skeleton_key # 039d8 - -major_0x03940_0x9c: /* < outside referer */ -lmw r14, 0x0038( r8) # 039dc -li r8, 0x0c # 039e0 -blt+ major_0x02980_0x134 # 039e4 -li r8, 0x0a # 039e8 -b major_0x02980_0x134 # 039ec - -major_0x03940_0xb0: /* < outside referer */ -andis. r8, r11, 0x800 # 039f0 -li r8, 0x0e # 039f4 -bne+ major_0x02980_0x134 # 039f8 -li r8, 0x0b # 039fc -b major_0x02980_0x134 # 03a00 - -major_0x03940_0xc4: /* < outside referer */ -# r6 = saved at *(ewa + 0x18) -# sprg1 = saved at *(ewa + 4) -# rN (0,7,8,9,10,11,12,13, not r1) = saved at *(*(ewa - 0x14) + 0x104 + 8*N) -bl int_prepare # 03a04 -# r0 = 0 -# r1 = *(ewa - 4) -# r6 = kdp -# r7 = *(ewa - 0x10) # flags? -# r8 = ewa -# r10 = srr0 -# r11 = srr1 -# r12 = sprg2 -# r13 = cr - -lwz r9, -0x0340( r8) # 03a08 -bl 1f # 03a0c -.ascii "CPU " # 03a10 -.short 0 # 03a14 -.align 2 # 03a16 -1: mflr r8 # 03a18 -bl print_string # 03a1c -mr r8, r9 # 03a20 -bl print_word_hex # 03a24 -bl 1f # 03a28 -.ascii "Machine check at " # 03a2c -.short 0 # 03a3d -.align 2 # 03a3f -1: mflr r8 # 03a40 -bl print_string # 03a44 -mr r8, r11 # 03a48 -bl print_word_hex # 03a4c -mr r8, r10 # 03a50 -bl print_word_hex # 03a54 -bl 1f # 03a58 -.ascii "- last unmapped EA " # 03a5c -.short 0 # 03a6f -.align 2 # 03a71 -1: mflr r8 # 03a74 -bl print_string # 03a78 -lwz r8, 0x0694( r1) # 03a7c -mr r8, r8 # 03a80 -bl print_word_hex # 03a84 -bl 1f # 03a88 -.ascii "^n" # 03a8c -.short 0 # 03a8e -.align 2 # 03a90 -1: mflr r8 # 03a90 -bl print_string # 03a94 -rlwinm. r8, r11, 0, 2, 2 # 03a98 -beq- major_0x03940_0x168 # 03a9c -bl major_0x0a8c0_0x39c # 03aa0 -b skeleton_key # 03aa4 - -major_0x03940_0x168: -li r8, 0x07 # 03aa8 -b major_0x02980_0x134 # 03aac - -major_0x03940_0x170: /* < outside referer */ -bl 1f # 03ab0 -.ascii "*** CPU MALFUNCTION - Masked interrupt punched through. SRR1/0 " -.short 0 # 03af3 -.align 2 # 03af5 -1: mflr r8 # 03af8 -bl print_string # 03afc -mr r8, r11 # 03b00 -bl print_word_hex # 03b04 -mr r8, r10 # 03b08 -bl print_word_hex # 03b0c -bl 1f # 03b10 -.ascii "^n" # 03b14 -.short 0 # 03b16 -.align 2 # 03b18 -1: mflr r8 # 03b18 -bl print_string # 03b1c -lis r10, -0x4523 # 03b20 -ori r10, r10, 0xcb00 # 03b24 -li r8, 0x07 # 03b28 -b major_0x02980_0x134 # 03b2c - - - -/*********************************************************** - - major_0x03b30 - -***********************************************************/ - -.align 4 # 03b30 - -.long 0x48000010 # 03b30 -.long 0x60000000 # 03b34 -.long 0x60000000 # 03b38 -.long 0x60000000 # 03b3c - - - -/*********************************************************** - - dsi_vector - -************************************************************ - -Xrefs: -"lisori_caller" - -***********************************************************/ - -.align 6 # 03b40 - -dsi_vector: /* < outside referer */ -mfspr r8, 18/*dsisr*/ # 03b40 -rlwimi r11, r8, 0, 0, 9 # 03b44 -andis. r8, r11, 0x4020 # 03b48 -beq+ major_0x03940_0xb0 # 03b4c -mfspr r8, 272/*sprg0*/ # 03b50 -stmw r14, 0x0038( r8) # 03b54 -lwz r1, -0x0004( r8) # 03b58 -mr r28, r8 # 03b5c -mr r31, r9 # 03b60 -addi r8, r1, -0xb90 # 03b64 - -# r8 = lock -bl lock # 03b68 -mr r8, r28 # 03b6c -mr r9, r31 # 03b70 -mfspr r27, 19/*dar*/ # 03b74 -bl major_0x04c20 # 03b78 -sync # 03b7c -lwz r28, -0x0b90( r1) # 03b80 -cmpwi cr1, r28, 0x00 # 03b84 -li r28, 0x00 # 03b88 -bne+ cr1, dsi_vector_0x58 # 03b8c -mflr r28 # 03b90 -bl panic # 03b94 - -dsi_vector_0x58: -stw r28, -0x0b90( r1) # 03b98 -mfspr r8, 272/*sprg0*/ # 03b9c -bne+ major_0x03940_0x9c # 03ba0 -lmw r14, 0x0038( r8) # 03ba4 -mfspr r1, 274/*sprg2*/ # 03ba8 -mtlr r1 # 03bac -mfspr r1, 273/*sprg1*/ # 03bb0 -rfi # 03bb4 -.long 0 # 03bb8 -.long 0 # 03bbc -.long 0 # 03bc0 -.long 0 # 03bc4 -.long 0 # 03bc8 -.long 0 # 03bcc -.long 0 # 03bd0 -.long 0 # 03bd4 - - - -/*********************************************************** - - major_0x03bd8 - -***********************************************************/ - -.align 3 # 03bd8 - -.long 0x60000000 # 03bd8 -.long 0x60000000 # 03bdc - - - -/*********************************************************** - - major_0x03be0 - -************************************************************ - -Xrefs: -"lisori_caller" - -***********************************************************/ - -.align 5 # 03be0 - -.long 0x81610e40 # 03be0 -.long 0x7d8a6378 # 03be4 -.long 0x396b0001 # 03be8 -.long 0x91610e40 # 03bec -.long 0x7d7b02a6 # 03bf0 -.long 0x50e7deb4 # 03bf4 - -major_0x03be0_0x18: /* < outside referer */ -ori r11, r11, 0x8000 # 03bf8 -mtcrf 0x3f, r7 # 03bfc -cmplwi cr1, r3, 0x01 # 03c00 -blt- cr4, major_0x04a20_0x18 # 03c04 -blt- cr1, major_0x03be0_0x58 # 03c08 -beq- cr1, major_0x03be0_0x90 # 03c0c -addi r8, r3, -0x20 # 03c10 -lwz r9, 0x0eac( r1) # 03c14 -cmplwi r8, 0xe0 # 03c18 -addi r9, r9, 0x01 # 03c1c -stw r9, 0x0eac( r1) # 03c20 -mfspr r1, 272/*sprg0*/ # 03c24 -rlwimi r7, r3, 24, 0, 7 # 03c28 -blt- major_0x03be0_0xe8 # 03c2c -li r8, 0x02 # 03c30 -b major_0x02980_0x134 # 03c34 - -major_0x03be0_0x58: -mfspr r1, 272/*sprg0*/ # 03c38 -lwz r8, 0x0040( r6) # 03c3c -lwz r10, 0x0084( r6) # 03c40 -rlwimi r7, r8, 0, 17, 7 # 03c44 -lwz r8, 0x0044( r6) # 03c48 -rlwimi r11, r7, 0, 20, 23 # 03c4c -stw r8, -0x000c( r1) # 03c50 -andi. r8, r11, 0x900 # 03c54 -lwz r12, 0x008c( r6) # 03c58 -lwz r3, 0x0094( r6) # 03c5c -lwz r4, 0x009c( r6) # 03c60 -bnel- major_0x03da0_0x78 # 03c64 -addi r9, r6, 0x40 # 03c68 -b skeleton_key # 03c6c - -major_0x03be0_0x90: -lwz r9, 0x0ea8( r1) # 03c70 -lwz r8, 0x0040( r6) # 03c74 -addi r9, r9, 0x01 # 03c78 -stw r9, 0x0ea8( r1) # 03c7c -mfspr r1, 272/*sprg0*/ # 03c80 -lwz r10, 0x0084( r6) # 03c84 -rlwimi r7, r8, 0, 17, 7 # 03c88 -lwz r8, 0x0044( r6) # 03c8c -mtcrf 0x0f, r7 # 03c90 -rlwimi r11, r7, 0, 20, 23 # 03c94 -stw r8, -0x000c( r1) # 03c98 -lwz r12, 0x008c( r6) # 03c9c -lwz r3, 0x0094( r6) # 03ca0 -lwz r4, 0x009c( r6) # 03ca4 -bne- cr2, major_0x03be0_0xe8 # 03ca8 -bns- cr6, major_0x03be0_0xe8 # 03cac -stmw r14, 0x0038( r1) # 03cb0 -lwz r17, 0x0064( r6) # 03cb4 -lwz r20, 0x0068( r6) # 03cb8 -lwz r21, 0x006c( r6) # 03cbc -lwz r19, 0x0074( r6) # 03cc0 -lwz r18, 0x007c( r6) # 03cc4 - -major_0x03be0_0xe8: -beq+ cr2, major_0x02980_0x178 # 03cc8 -crclr 4*cr6 + so # 03ccc -mfspr r10, 26/*srr0*/ # 03cd0 -li r8, 0x02 # 03cd4 -b major_0x02980_0x134 # 03cd8 - - - -/*********************************************************** - - major_0x03cdc - -***********************************************************/ - -.long 0x60000000 # 03cdc - - - -/*********************************************************** - - save_all_registers - -************************************************************ - -Xrefs: -major_0x04240 -major_0x04300 - -***********************************************************/ - -.align 5 # 03ce0 - -save_all_registers: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 03ce0 -stw r6, 0x0018( r1) # 03ce4 -mfspr r6, 273/*sprg1*/ # 03ce8 -stw r6, 0x0004( r1) # 03cec -lwz r6, -0x0014( r1) # 03cf0 -stw r0, 0x0104( r6) # 03cf4 -stw r7, 0x013c( r6) # 03cf8 -stw r8, 0x0144( r6) # 03cfc -stw r9, 0x014c( r6) # 03d00 -stw r10, 0x0154( r6) # 03d04 -stw r11, 0x015c( r6) # 03d08 -stw r12, 0x0164( r6) # 03d0c -stw r13, 0x016c( r6) # 03d10 -li r0, 0x00 # 03d14 -mfspr r10, 26/*srr0*/ # 03d18 -mfspr r11, 27/*srr1*/ # 03d1c -mfcr r13 # 03d20 -mfspr r12, 274/*sprg2*/ # 03d24 -lwz r7, -0x0010( r1) # 03d28 -lwz r1, -0x0004( r1) # 03d2c - -# r6 = ewa -b save_registers_from_r14 # 03d30 -# r8 = sprg0 (not used by me) - - - -/*********************************************************** - - major_0x03d34 - -***********************************************************/ - -.long 0x4800000c # 03d34 -.long 0x60000000 # 03d38 -.long 0x60000000 # 03d3c - - - -/*********************************************************** - - int_prepare - -************************************************************ - -Xrefs: -major_0x03200 -major_0x03940 -major_0x04180 -major_0x046d0 -major_0x046e0 -major_0x04700 -major_0x04880 -sc_vector -major_0x04b60 -major_0x07440 - -************************************************************ - -> r6 = saved at *(ewa + 0x18) -> sprg1 = saved at *(ewa + 4) -> rN (0,7,8,9,10,11,12,13, not r1) = saved at *(*(ewa - 0x14) + 0x104 + 8*N) - -< r0 = 0 -< r1 = *(ewa - 4) -< r6 = kdp -< r7 = *(ewa - 0x10) # flags? -< r8 = ewa -< r10 = srr0 -< r11 = srr1 -< r12 = sprg2 -< r13 = cr - -***********************************************************/ - -.align 6 # 03d40 - -int_prepare: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 03d40 -stw r6, 0x0018( r1) # 03d44 -mfspr r6, 273/*sprg1*/ # 03d48 -stw r6, 0x0004( r1) # 03d4c -lwz r6, -0x0014( r1) # 03d50 -stw r0, 0x0104( r6) # 03d54 -stw r7, 0x013c( r6) # 03d58 -stw r8, 0x0144( r6) # 03d5c -stw r9, 0x014c( r6) # 03d60 -stw r10, 0x0154( r6) # 03d64 -stw r11, 0x015c( r6) # 03d68 -stw r12, 0x0164( r6) # 03d6c -stw r13, 0x016c( r6) # 03d70 -li r0, 0x00 # 03d74 -mfspr r10, 26/*srr0*/ # 03d78 -mfspr r11, 27/*srr1*/ # 03d7c -mfcr r13 # 03d80 -mfspr r12, 274/*sprg2*/ # 03d84 -mr r8, r1 # 03d88 -lwz r7, -0x0010( r1) # 03d8c -lwz r1, -0x0004( r1) # 03d90 -blr # 03d94 - - - -/*********************************************************** - - major_0x03d98 - -***********************************************************/ - -.align 3 # 03d98 - -.long 0x60000000 # 03d98 -.long 0x60000000 # 03d9c - - - -/*********************************************************** - - major_0x03da0 - -************************************************************ - -Xrefs: -"lisori_caller" -major_0x02980 -major_0x03be0 -rtas_call - -***********************************************************/ - -.align 5 # 03da0 - -major_0x03da0: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 03da0 -stw r11, -0x0290( r1) # 03da4 -stw r6, -0x028c( r1) # 03da8 -lwz r6, -0x0004( r1) # 03dac -lwz r11, 0x0e88( r6) # 03db0 -addi r11, r11, 0x01 # 03db4 -stw r11, 0x0e88( r6) # 03db8 -mfspr r11, 27/*srr1*/ # 03dbc -ori r11, r11, 0x2000 # 03dc0 -mtspr 27/*srr1*/, r11 # 03dc4 -mfmsr r11 # 03dc8 -ori r11, r11, 0x2000 # 03dcc -lwz r6, -0x0014( r1) # 03dd0 -mtmsr r11 # 03dd4 -isync # 03dd8 -bl major_0x03da0_0xa0 # 03ddc -lwz r11, -0x0290( r1) # 03de0 -lwz r6, -0x028c( r1) # 03de4 -mfspr r1, 274/*sprg2*/ # 03de8 -mtlr r1 # 03dec -mfspr r1, 273/*sprg1*/ # 03df0 -rfi # 03df4 -.long 0 # 03df8 -.long 0 # 03dfc -.long 0 # 03e00 -.long 0 # 03e04 -.long 0 # 03e08 -.long 0 # 03e0c -.long 0 # 03e10 -.long 0 # 03e14 - -major_0x03da0_0x78: /* < outside referer */ -rlwinm. r8, r11, 0, 18, 18 # 03e18 -bnelr- # 03e1c - -major_0x03da0_0x80: /* < outside referer */ -lwz r8, 0x00e4( r6) # 03e20 -rlwinm. r8, r8, 1, 0, 0 # 03e24 -mfmsr r8 # 03e28 -ori r8, r8, 0x2000 # 03e2c -beqlr- # 03e30 -mtmsr r8 # 03e34 -isync # 03e38 -ori r11, r11, 0x2000 # 03e3c - -major_0x03da0_0xa0: -lfd f31, 0x00e0( r6) # 03e40 -lfd f0, 0x0200( r6) # 03e44 -lfd f1, 0x0208( r6) # 03e48 -lfd f2, 0x0210( r6) # 03e4c -lfd f3, 0x0218( r6) # 03e50 -lfd f4, 0x0220( r6) # 03e54 -lfd f5, 0x0228( r6) # 03e58 -lfd f6, 0x0230( r6) # 03e5c -lfd f7, 0x0238( r6) # 03e60 -mtfsf 0xff, f31 # 03e64 -lfd f8, 0x0240( r6) # 03e68 -lfd f9, 0x0248( r6) # 03e6c -lfd f10, 0x0250( r6) # 03e70 -lfd f11, 0x0258( r6) # 03e74 -lfd f12, 0x0260( r6) # 03e78 -lfd f13, 0x0268( r6) # 03e7c -lfd f14, 0x0270( r6) # 03e80 -lfd f15, 0x0278( r6) # 03e84 -lfd f16, 0x0280( r6) # 03e88 -lfd f17, 0x0288( r6) # 03e8c -lfd f18, 0x0290( r6) # 03e90 -lfd f19, 0x0298( r6) # 03e94 -lfd f20, 0x02a0( r6) # 03e98 -lfd f21, 0x02a8( r6) # 03e9c -lfd f22, 0x02b0( r6) # 03ea0 -lfd f23, 0x02b8( r6) # 03ea4 -lfd f24, 0x02c0( r6) # 03ea8 -lfd f25, 0x02c8( r6) # 03eac -lfd f26, 0x02d0( r6) # 03eb0 -lfd f27, 0x02d8( r6) # 03eb4 -lfd f28, 0x02e0( r6) # 03eb8 -lfd f29, 0x02e8( r6) # 03ebc -lfd f30, 0x02f0( r6) # 03ec0 -lfd f31, 0x02f8( r6) # 03ec4 -blr # 03ec8 - -major_0x03da0_0x12c: /* < outside referer */ -mfmsr r8 # 03ecc -ori r8, r8, 0x2000 # 03ed0 -mtmsr r8 # 03ed4 -isync # 03ed8 -rlwinm r11, r11, 0, 19, 17 # 03edc -stfd f0, 0x0200( r6) # 03ee0 -stfd f1, 0x0208( r6) # 03ee4 -stfd f2, 0x0210( r6) # 03ee8 -stfd f3, 0x0218( r6) # 03eec -stfd f4, 0x0220( r6) # 03ef0 -stfd f5, 0x0228( r6) # 03ef4 -stfd f6, 0x0230( r6) # 03ef8 -stfd f7, 0x0238( r6) # 03efc -stfd f8, 0x0240( r6) # 03f00 -stfd f9, 0x0248( r6) # 03f04 -stfd f10, 0x0250( r6) # 03f08 -stfd f11, 0x0258( r6) # 03f0c -stfd f12, 0x0260( r6) # 03f10 -stfd f13, 0x0268( r6) # 03f14 -stfd f14, 0x0270( r6) # 03f18 -stfd f15, 0x0278( r6) # 03f1c -stfd f16, 0x0280( r6) # 03f20 -stfd f17, 0x0288( r6) # 03f24 -stfd f18, 0x0290( r6) # 03f28 -stfd f19, 0x0298( r6) # 03f2c -stfd f20, 0x02a0( r6) # 03f30 -stfd f21, 0x02a8( r6) # 03f34 -stfd f22, 0x02b0( r6) # 03f38 -stfd f23, 0x02b8( r6) # 03f3c -mffs f0 # 03f40 -stfd f24, 0x02c0( r6) # 03f44 -stfd f25, 0x02c8( r6) # 03f48 -stfd f26, 0x02d0( r6) # 03f4c -stfd f27, 0x02d8( r6) # 03f50 -stfd f28, 0x02e0( r6) # 03f54 -stfd f29, 0x02e8( r6) # 03f58 -stfd f30, 0x02f0( r6) # 03f5c -stfd f31, 0x02f8( r6) # 03f60 -stfd f0, 0x00e0( r6) # 03f64 -blr # 03f68 -.long 0xc801fd20 # 03f6c -.long 0x48002630 # 03f70 -.long 0xc821fd20 # 03f74 -.long 0x48002628 # 03f78 -.long 0xc841fd20 # 03f7c -.long 0x48002620 # 03f80 -.long 0xc861fd20 # 03f84 -.long 0x48002618 # 03f88 -.long 0xc881fd20 # 03f8c -.long 0x48002610 # 03f90 -.long 0xc8a1fd20 # 03f94 -.long 0x48002608 # 03f98 -.long 0xc8c1fd20 # 03f9c -.long 0x48002600 # 03fa0 -.long 0xc8e1fd20 # 03fa4 -.long 0x480025f8 # 03fa8 -.long 0xc901fd20 # 03fac -.long 0x480025f0 # 03fb0 -.long 0xc921fd20 # 03fb4 -.long 0x480025e8 # 03fb8 -.long 0xc941fd20 # 03fbc -.long 0x480025e0 # 03fc0 -.long 0xc961fd20 # 03fc4 -.long 0x480025d8 # 03fc8 -.long 0xc981fd20 # 03fcc -.long 0x480025d0 # 03fd0 -.long 0xc9a1fd20 # 03fd4 -.long 0x480025c8 # 03fd8 -.long 0xc9c1fd20 # 03fdc -.long 0x480025c0 # 03fe0 -.long 0xc9e1fd20 # 03fe4 -.long 0x480025b8 # 03fe8 -.long 0xca01fd20 # 03fec -.long 0x480025b0 # 03ff0 -.long 0xca21fd20 # 03ff4 -.long 0x480025a8 # 03ff8 -.long 0xca41fd20 # 03ffc -.long 0x480025a0 # 04000 -.long 0xca61fd20 # 04004 -.long 0x48002598 # 04008 -.long 0xca81fd20 # 0400c -.long 0x48002590 # 04010 -.long 0xcaa1fd20 # 04014 -.long 0x48002588 # 04018 -.long 0xcac1fd20 # 0401c -.long 0x48002580 # 04020 -.long 0xcae1fd20 # 04024 -.long 0x48002578 # 04028 -.long 0xcb01fd20 # 0402c -.long 0x48002570 # 04030 -.long 0xcb21fd20 # 04034 -.long 0x48002568 # 04038 -.long 0xcb41fd20 # 0403c -.long 0x48002560 # 04040 -.long 0xcb61fd20 # 04044 -.long 0x48002558 # 04048 -.long 0xcb81fd20 # 0404c -.long 0x48002550 # 04050 -.long 0xcba1fd20 # 04054 -.long 0x48002548 # 04058 -.long 0xcbc1fd20 # 0405c -.long 0x48002540 # 04060 -.long 0xcbe1fd20 # 04064 -.long 0x48002538 # 04068 -.long 0xd801fd20 # 0406c -.long 0x480017cc # 04070 -.long 0xd821fd20 # 04074 -.long 0x480017c4 # 04078 -.long 0xd841fd20 # 0407c -.long 0x480017bc # 04080 -.long 0xd861fd20 # 04084 -.long 0x480017b4 # 04088 -.long 0xd881fd20 # 0408c -.long 0x480017ac # 04090 -.long 0xd8a1fd20 # 04094 -.long 0x480017a4 # 04098 -.long 0xd8c1fd20 # 0409c -.long 0x4800179c # 040a0 -.long 0xd8e1fd20 # 040a4 -.long 0x48001794 # 040a8 -.long 0xd901fd20 # 040ac -.long 0x4800178c # 040b0 -.long 0xd921fd20 # 040b4 -.long 0x48001784 # 040b8 -.long 0xd941fd20 # 040bc -.long 0x4800177c # 040c0 -.long 0xd961fd20 # 040c4 -.long 0x48001774 # 040c8 -.long 0xd981fd20 # 040cc -.long 0x4800176c # 040d0 -.long 0xd9a1fd20 # 040d4 -.long 0x48001764 # 040d8 -.long 0xd9c1fd20 # 040dc -.long 0x4800175c # 040e0 -.long 0xd9e1fd20 # 040e4 -.long 0x48001754 # 040e8 -.long 0xda01fd20 # 040ec -.long 0x4800174c # 040f0 -.long 0xda21fd20 # 040f4 -.long 0x48001744 # 040f8 -.long 0xda41fd20 # 040fc -.long 0x4800173c # 04100 -.long 0xda61fd20 # 04104 -.long 0x48001734 # 04108 -.long 0xda81fd20 # 0410c -.long 0x4800172c # 04110 -.long 0xdaa1fd20 # 04114 -.long 0x48001724 # 04118 -.long 0xdac1fd20 # 0411c -.long 0x4800171c # 04120 -.long 0xdae1fd20 # 04124 -.long 0x48001714 # 04128 -.long 0xdb01fd20 # 0412c -.long 0x4800170c # 04130 -.long 0xdb21fd20 # 04134 -.long 0x48001704 # 04138 -.long 0xdb41fd20 # 0413c -.long 0x480016fc # 04140 -.long 0xdb61fd20 # 04144 -.long 0x480016f4 # 04148 -.long 0xdb81fd20 # 0414c -.long 0x480016ec # 04150 -.long 0xdba1fd20 # 04154 -.long 0x480016e4 # 04158 -.long 0xdbc1fd20 # 0415c -.long 0x480016dc # 04160 -.long 0xdbe1fd20 # 04164 -.long 0x480016d4 # 04168 - - - -/*********************************************************** - - major_0x0416c - -***********************************************************/ - -.long 0x48000014 # 0416c -.long 0x60000000 # 04170 -.long 0x60000000 # 04174 -.long 0x60000000 # 04178 -.long 0x60000000 # 0417c - - - -/*********************************************************** - - major_0x04180 - -************************************************************ - -Xrefs: -major_0x04240 - -***********************************************************/ - -.align 7 # 04180 - -major_0x04180: /* < outside referer */ -stw r6, -0x0290( r1) # 04180 -stw r10, -0x028c( r1) # 04184 -stw r11, -0x0288( r1) # 04188 -lwz r6, -0x0014( r1) # 0418c -lwz r10, 0x00d8( r6) # 04190 -mfspr r11, 27/*srr1*/ # 04194 -cmpwi r10, 0x00 # 04198 -beql- major_0x04180_0x9c # 0419c -oris r11, r11, 0x200 # 041a0 -stw r9, -0x027c( r1) # 041a4 -mtspr 27/*srr1*/, r11 # 041a8 -mfmsr r11 # 041ac -oris r11, r11, 0x200 # 041b0 -mtmsr r11 # 041b4 -isync # 041b8 -bl major_0x13988_0xd8 # 041bc -lwz r8, -0x0004( r1) # 041c0 -lwz r11, 0x0ed4( r8) # 041c4 -addi r11, r11, 0x01 # 041c8 -stw r11, 0x0ed4( r8) # 041cc -mtcr r13 # 041d0 -lwz r6, -0x0290( r1) # 041d4 -lwz r10, -0x028c( r1) # 041d8 -lwz r11, -0x0288( r1) # 041dc -lwz r13, -0x0284( r1) # 041e0 -lwz r8, -0x0280( r1) # 041e4 -lwz r9, -0x027c( r1) # 041e8 -mfspr r1, 274/*sprg2*/ # 041ec -mtlr r1 # 041f0 -mfspr r1, 273/*sprg1*/ # 041f4 -rfi # 041f8 -.long 0 # 041fc -.long 0 # 04200 -.long 0 # 04204 -.long 0 # 04208 -.long 0 # 0420c -.long 0 # 04210 -.long 0 # 04214 -.long 0 # 04218 - -major_0x04180_0x9c: -mtcr r13 # 0421c -lwz r6, -0x0290( r1) # 04220 -lwz r10, -0x028c( r1) # 04224 -lwz r11, -0x0288( r1) # 04228 -lwz r13, -0x0284( r1) # 0422c - -# r6 = saved at *(ewa + 0x18) -# sprg1 = saved at *(ewa + 4) -# rN (0,7,8,9,10,11,12,13, not r1) = saved at *(*(ewa - 0x14) + 0x104 + 8*N) -bl int_prepare # 04230 -# r0 = 0 -# r1 = *(ewa - 4) -# r6 = kdp -# r7 = *(ewa - 0x10) # flags? -# r8 = ewa -# r10 = srr0 -# r11 = srr1 -# r12 = sprg2 -# r13 = cr - -li r8, 0x04 # 04234 -b major_0x02980_0x134 # 04238 - - - -/*********************************************************** - - major_0x0423c - -***********************************************************/ - -.long 0x60000000 # 0423c - - - -/*********************************************************** - - major_0x04240 - -************************************************************ - -Xrefs: -"lisori_caller" - -***********************************************************/ - -.align 6 # 04240 - -major_0x04240: /* < outside referer */ -mtlr r1 # 04240 -mfspr r1, 272/*sprg0*/ # 04244 -stw r8, -0x0280( r1) # 04248 -stw r13, -0x0284( r1) # 0424c -mflr r8 # 04250 -mfcr r13 # 04254 -cmpwi r8, 0xf20 # 04258 -beq+ major_0x04180 # 0425c -mtcr r13 # 04260 -lwz r13, -0x0284( r1) # 04264 -lwz r8, -0x0280( r1) # 04268 -bl save_all_registers # 0426c -mr r28, r8 # 04270 -rlwinm. r9, r11, 0, 16, 16 # 04274 -beq+ major_0x03940_0x170 # 04278 -mr r8, r8 # 0427c -mr r9, r9 # 04280 -addi r8, r1, -0xb50 # 04284 - -# r8 = lock -bl lock # 04288 -mr r8, r8 # 0428c -mr r9, r9 # 04290 -lwz r8, -0x0414( r1) # 04294 - -# r8 = id -bl id_kind # 04298 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0c # 0429c -mr r30, r8 # 042a0 -bne- major_0x04240_0x88 # 042a4 -lwz r16, -0x0340(r28) # 042a8 -lwz r17, -0x0008(r28) # 042ac -stw r16, 0x0010(r30) # 042b0 -lwz r16, 0x0000(r17) # 042b4 -stw r16, 0x0014(r30) # 042b8 -mfspr r16, 0x3bb # 042bc -stw r16, 0x0018(r30) # 042c0 -bl major_0x0db04 # 042c4 - -major_0x04240_0x88: -sync # 042c8 -lwz r8, -0x0b50( r1) # 042cc -cmpwi cr1, r8, 0x00 # 042d0 -li r8, 0x00 # 042d4 -bne+ cr1, major_0x04240_0xa4 # 042d8 -mflr r8 # 042dc -bl panic # 042e0 - -major_0x04240_0xa4: -stw r8, -0x0b50( r1) # 042e4 - -# r6 = ewa -bl restore_registers_from_r14 # 042e8 -b skeleton_key # 042ec - - - -/*********************************************************** - - major_0x042f0 - -***********************************************************/ - -.align 4 # 042f0 - -.long 0x48000010 # 042f0 -.long 0x60000000 # 042f4 -.long 0x60000000 # 042f8 -.long 0x60000000 # 042fc - - - -/*********************************************************** - - major_0x04300 - -************************************************************ - -Xrefs: -"lisori_caller" - -***********************************************************/ - -.align 8 # 04300 - -major_0x04300: /* < outside referer */ -bl save_all_registers # 04300 -mr r28, r8 # 04304 -rlwinm. r9, r11, 0, 16, 16 # 04308 -beq+ major_0x03940_0x170 # 0430c -bl 1f # 04310 -.ascii "Thermal event^n" # 04314 -.short 0 # 04323 -.align 2 # 04325 -1: mflr r8 # 04328 -bl print_string # 0432c -mr r8, r8 # 04330 -mr r9, r9 # 04334 -addi r8, r1, -0xb50 # 04338 - -# r8 = lock -bl lock # 0433c -mr r8, r8 # 04340 -mr r9, r9 # 04344 -lwz r8, -0x0418( r1) # 04348 - -# r8 = id -bl id_kind # 0434c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0c # 04350 -mr r30, r8 # 04354 -bne- major_0x04300_0x68 # 04358 -lwz r16, -0x0340(r28) # 0435c -stw r16, 0x0010(r30) # 04360 -bl major_0x0db04 # 04364 - -major_0x04300_0x68: -sync # 04368 -lwz r8, -0x0b50( r1) # 0436c -cmpwi cr1, r8, 0x00 # 04370 -li r8, 0x00 # 04374 -bne+ cr1, major_0x04300_0x84 # 04378 -mflr r8 # 0437c -bl panic # 04380 - -major_0x04300_0x84: -stw r8, -0x0b50( r1) # 04384 - -# r6 = ewa -bl restore_registers_from_r14 # 04388 -b skeleton_key # 0438c - - - -/*********************************************************** - - major_0x04390 - -***********************************************************/ - -.align 4 # 04390 - -.long 0x48000010 # 04390 -.long 0x60000000 # 04394 -.long 0x60000000 # 04398 -.long 0x60000000 # 0439c - - - -/*********************************************************** - - major_0x043a0 - -************************************************************ - -Xrefs: -"lisori_caller" - -***********************************************************/ - -.align 5 # 043a0 - -major_0x043a0: /* < outside referer */ -mtcrf 0x3f, r7 # 043a0 -bnel+ cr2, skeleton_key # 043a4 -and. r8, r4, r13 # 043a8 -lwz r9, 0x0340( r1) # 043ac -rlwinm r8, r3, 0, 0, 25 # 043b0 -cmpw cr1, r8, r9 # 043b4 -bne+ skeleton_key # 043b8 -lwz r9, 0x0344( r1) # 043bc -bne- cr1, major_0x043a0_0x48 # 043c0 - -major_0x043a0_0x24: -addi r8, r1, 0x420 # 043c4 -mtspr 275/*sprg3*/, r8 # 043c8 -lwz r8, 0x0648( r1) # 043cc -mtcrf 0x3f, r7 # 043d0 -mfspr r1, 272/*sprg0*/ # 043d4 -clrlwi r7, r7, 0x08 # 043d8 -stw r8, 0x005c( r9) # 043dc -stw r9, -0x0014( r1) # 043e0 -b major_0x02980_0x18c # 043e4 - -major_0x043a0_0x48: -lwz r9, 0x0348( r1) # 043e8 -cmpw cr1, r8, r9 # 043ec -beq- cr1, major_0x043a0_0x130 # 043f0 -lwz r9, 0x0350( r1) # 043f4 -cmpw cr1, r8, r9 # 043f8 -beq- cr1, major_0x043a0_0x110 # 043fc -lwz r9, 0x0358( r1) # 04400 -cmpw cr1, r8, r9 # 04404 -beq- cr1, major_0x043a0_0xf0 # 04408 -mfspr r1, 272/*sprg0*/ # 0440c -stmw r14, 0x0038( r1) # 04410 -lwz r1, -0x0004( r1) # 04414 -cmpw cr1, r8, r6 # 04418 -beq- cr1, major_0x043a0_0x154 # 0441c -mr r27, r8 # 04420 -addi r29, r1, 800 # 04424 -bl major_0x054b8 # 04428 -clrlwi r23, r8, 0x14 # 0442c -beq- major_0x043a0_0x154 # 04430 -cmplwi r23, 0xd00 # 04434 -mr r9, r8 # 04438 -mr r8, r31 # 0443c -ble- major_0x043a0_0xc4 # 04440 -addi r27, r27, 0x1000 # 04444 -addi r29, r1, 800 # 04448 -bl major_0x054b8 # 0444c -beq- major_0x043a0_0x154 # 04450 -addi r31, r31, -0x1000 # 04454 -xor r23, r8, r31 # 04458 -rlwinm. r23, r23, 0, 25, 22 # 0445c -bne- major_0x043a0_0x154 # 04460 - -major_0x043a0_0xc4: -clrlwi r23, r31, 0x1e # 04464 -cmpwi r23, 0x03 # 04468 -rlwimi r8, r9, 0, 20, 31 # 0446c -beq- major_0x043a0_0x154 # 04470 -lwz r23, 0x0ea4( r1) # 04474 -addi r23, r23, 0x01 # 04478 -stw r23, 0x0ea4( r1) # 0447c -mfspr r1, 272/*sprg0*/ # 04480 -lmw r14, 0x0038( r1) # 04484 -lwz r1, -0x0004( r1) # 04488 -stw r8, 0x035c( r1) # 0448c - -major_0x043a0_0xf0: -lwz r8, 0x0350( r1) # 04490 -stw r9, 0x0350( r1) # 04494 -stw r8, 0x0358( r1) # 04498 -lwz r9, 0x035c( r1) # 0449c -lwz r8, 0x0354( r1) # 044a0 -stw r9, 0x0354( r1) # 044a4 -stw r8, 0x035c( r1) # 044a8 -lwz r9, 0x0350( r1) # 044ac - -major_0x043a0_0x110: -lwz r8, 0x0348( r1) # 044b0 -stw r9, 0x0348( r1) # 044b4 -stw r8, 0x0350( r1) # 044b8 -lwz r9, 0x0354( r1) # 044bc -lwz r8, 0x034c( r1) # 044c0 -stw r9, 0x034c( r1) # 044c4 -stw r8, 0x0354( r1) # 044c8 -lwz r9, 0x0348( r1) # 044cc - -major_0x043a0_0x130: -lwz r8, 0x0340( r1) # 044d0 -stw r9, 0x0340( r1) # 044d4 -stw r9, 0x05b4( r1) # 044d8 -stw r8, 0x0348( r1) # 044dc -lwz r9, 0x034c( r1) # 044e0 -lwz r8, 0x0344( r1) # 044e4 -stw r9, 0x0344( r1) # 044e8 -stw r8, 0x034c( r1) # 044ec -b major_0x043a0_0x24 # 044f0 - -major_0x043a0_0x154: -mfspr r1, 272/*sprg0*/ # 044f4 -lmw r14, 0x0038( r1) # 044f8 -lwz r1, -0x0004( r1) # 044fc -li r8, 0x02 # 04500 -b major_0x02980_0x134 # 04504 - - - -/*********************************************************** - - wordfill - -************************************************************ - -Xrefs: -setup -panic_offset_to_r1_minus_0x810_x48__0x9dfc_to_prev_plus_4_20_36 - -************************************************************ - -> r8 = dest -> r22 = len in bytes -> r23 = fillword - -***********************************************************/ - -.align 3 # 04508 - -wordfill: /* < outside referer */ -addic. r22, r22, -0x04 # 04508 -stwx r23, r8, r22 # 0450c -bne+ wordfill # 04510 -blr # 04514 - - - -/*********************************************************** - - major_0x04518 - -***********************************************************/ - -.align 3 # 04518 - -.long 0x60000000 # 04518 -.long 0x60000000 # 0451c - - - -/*********************************************************** - - reset_trap - -************************************************************ - -Handle a 68k reset trap. -Some messing around with 601 RTC vs later timebase registers. -If Gary Davidian's first name and birthdate were in the 68k's A0/A1 (the 'skeleton key'), do something. Otherwise, farm it out to non_skeleton_reset_trap. - -************************************************************ - -Xrefs: -"lisori_caller" - -************************************************************ - -> r3 = a0 -> r4 = a1 - -***********************************************************/ - -.align 5 # 04520 - -reset_trap: /* < outside referer */ -# r6 = ewa -bl save_registers_from_r14 # 04520 -# r8 = sprg0 (not used by me) - -mfspr r9, 287/*pvr*/ # 04524 -rlwinm. r9, r9, 0, 0, 14 # 04528 -xoris r8, r3, 256 * 'G'+'a' # 0452c -beq- reset_trap_cpu_not_601 # 04530 -mftb r9, 0x10c # 04534 -b reset_trap_endif # 04538 - -reset_trap_cpu_not_601: -mfspr r9, 5/*rtcl*/ # 0453c - -reset_trap_endif: -andis. r9, r9, 0xffff # 04540 -cmplwi r8, 256 * 'r'+'y' # 04544 -bne- non_skeleton_reset_trap # 04548 -xoris r8, r4, 0x505 # 0454c -cmplwi r8, 0x1956 # 04550 -bne- non_skeleton_reset_trap # 04554 -andc r11, r11, r5 # 04558 -lwz r8, 0x013c( r6) # 0455c -or r11, r11, r8 # 04560 -bl 1f # 04564 -.ascii "Skeleton key inserted at" # 04568 -.short 0 # 04580 -.align 2 # 04582 -1: mflr r8 # 04584 -bl print_string # 04588 -mr r8, r11 # 0458c -bl print_word_hex # 04590 -mr r8, r10 # 04594 -bl print_word_hex # 04598 -bl 1f # 0459c -.ascii "^n" # 045a0 -.short 0 # 045a2 -.align 2 # 045a4 -1: mflr r8 # 045a4 -bl print_string # 045a8 -b skeleton_key # 045ac - - - -/*********************************************************** - - non_skeleton_reset_trap - -************************************************************ - -A 68k reset trap without Gary Davidian's magic numbers. - -************************************************************ - -Xrefs: -reset_trap - -***********************************************************/ - -.align 4 # 045b0 - -non_skeleton_reset_trap: /* < outside referer */ -bl 1f # 045b0 -.ascii "ResetSystem trap entered^n" # 045b4 -.short 0 # 045ce -.align 2 # 045d0 -1: mflr r8 # 045d0 -bl print_string # 045d4 -lwz r8, 0x05a0( r1) # 045d8 -cmpwi r8, 0x00 # 045dc - -# r1 = kdp -beq+ setup_new_world # 045e0 -bl 1f # 045e4 -.ascii "Unplugging the replacement nanokernel^n" # 045e8 -.short 0 # 0460f -.align 2 # 04611 -1: mflr r8 # 04614 -bl print_string # 04618 -lwz r8, 0x05a0( r1) # 0461c -mfspr r1, 272/*sprg0*/ # 04620 -addi r9, r8, 0x360 # 04624 -mtspr 272/*sprg0*/, r8 # 04628 -mtspr 275/*sprg3*/, r9 # 0462c -lwz r9, 0x0004( r1) # 04630 -stw r9, 0x0004( r8) # 04634 -lwz r9, 0x0018( r1) # 04638 -stw r9, 0x0018( r8) # 0463c -stw r6, 0x065c( r8) # 04640 -stw r7, 0x0660( r8) # 04644 -lwz r9, -0x000c( r1) # 04648 -stw r9, 0x0664( r8) # 0464c - -# r6 = ewa -bl restore_registers_from_r14 # 04650 -addi r10, r10, -0x04 # 04654 -lwz r1, -0x0004( r1) # 04658 - -# sprg0 = for r1 and r6 -# r1 = kdp -# r6 = register restore area -# r7 = flag to insert into XER -# r10 = new srr0 (return location) -# r11 = new srr1 -# r12 = lr restore -# r13 = cr restore -b int_teardown # 0465c - - - -/*********************************************************** - - pih_indirect - -************************************************************ - -Xrefs: -"lisori_caller" -setup -major_0x04880 - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -.align 5 # 04660 - -pih_indirect: /* < outside referer */ -lwz r9, 0x05b0( r1) # kdp.pih_proc_ptr # 04660 -mtlr r9 # 04664 -blr # 04668 - - - -/*********************************************************** - - major_0x0466c - -***********************************************************/ - -.long 0x48000014 # 0466c -.long 0x60000000 # 04670 -.long 0x60000000 # 04674 -.long 0x60000000 # 04678 -.long 0x60000000 # 0467c - - - -/*********************************************************** - - regsave_debug - -************************************************************ - -r2-r5 and r14-r31 (real registers) and r6-r13 (regsave) into compact area, then debug. - -************************************************************ - -Xrefs: -"lisori_caller" - -************************************************************ - -> r1 = compact area - -***********************************************************/ - -.align 7 # 04680 - -regsave_debug: /* < outside referer */ -stw r2, 0x0008( r1) # 04680 -stw r3, 0x000c( r1) # 04684 -stw r4, 0x0010( r1) # 04688 -stw r5, 0x0014( r1) # 0468c -lwz r8, 0x013c( r6) # 04690 -lwz r9, 0x0144( r6) # 04694 -stw r8, 0x001c( r1) # 04698 -stw r9, 0x0020( r1) # 0469c -lwz r8, 0x014c( r6) # 046a0 -lwz r9, 0x0154( r6) # 046a4 -stw r8, 0x0024( r1) # 046a8 -stw r9, 0x0028( r1) # 046ac -lwz r8, 0x015c( r6) # 046b0 -lwz r9, 0x0164( r6) # 046b4 -stw r8, 0x002c( r1) # 046b8 -stw r9, 0x0030( r1) # 046bc -lwz r8, 0x016c( r6) # 046c0 -stw r8, 0x0034( r1) # 046c4 -stmw r14, 0x0038( r1) # 046c8 -bl panic_wrapper_0x02960 # 046cc - - - -/*********************************************************** - - major_0x046d0 - -************************************************************ - -Xrefs: -"lisori_caller" -regsave_debug - -***********************************************************/ - -.align 4 # 046d0 - -major_0x046d0: /* < outside referer */ -# r6 = saved at *(ewa + 0x18) -# sprg1 = saved at *(ewa + 4) -# rN (0,7,8,9,10,11,12,13, not r1) = saved at *(*(ewa - 0x14) + 0x104 + 8*N) -bl int_prepare # 046d0 -# r0 = 0 -# r1 = *(ewa - 4) -# r6 = kdp -# r7 = *(ewa - 0x10) # flags? -# r8 = ewa -# r10 = srr0 -# r11 = srr1 -# r12 = sprg2 -# r13 = cr - -li r8, 0x02 # 046d4 -b major_0x02980_0x134 # 046d8 - - - -/*********************************************************** - - major_0x046dc - -***********************************************************/ - -.long 0x60000000 # 046dc - - - -/*********************************************************** - - major_0x046e0 - -************************************************************ - -Xrefs: -"lisori_caller" - -***********************************************************/ - -.align 5 # 046e0 - -major_0x046e0: /* < outside referer */ -# r6 = saved at *(ewa + 0x18) -# sprg1 = saved at *(ewa + 4) -# rN (0,7,8,9,10,11,12,13, not r1) = saved at *(*(ewa - 0x14) + 0x104 + 8*N) -bl int_prepare # 046e0 -# r0 = 0 -# r1 = *(ewa - 4) -# r6 = kdp -# r7 = *(ewa - 0x10) # flags? -# r8 = ewa -# r10 = srr0 -# r11 = srr1 -# r12 = sprg2 -# r13 = cr - -mtcrf 0x3f, r7 # 046e4 -bnel+ cr2, panic_wrapper_0x02960 # 046e8 -li r8, 0x00 # 046ec -b major_0x02980_0x134 # 046f0 - - - -/*********************************************************** - - major_0x046f4 - -***********************************************************/ - -.long 0x4800000c # 046f4 -.long 0x60000000 # 046f8 -.long 0x60000000 # 046fc - - - -/*********************************************************** - - major_0x04700 - -************************************************************ - -Xrefs: -"lisori_caller" - -***********************************************************/ - -.align 8 # 04700 - -major_0x04700: /* < outside referer */ -# r6 = saved at *(ewa + 0x18) -# sprg1 = saved at *(ewa + 4) -# rN (0,7,8,9,10,11,12,13, not r1) = saved at *(*(ewa - 0x14) + 0x104 + 8*N) -bl int_prepare # 04700 -# r0 = 0 -# r1 = *(ewa - 4) -# r6 = kdp -# r7 = *(ewa - 0x10) # flags? -# r8 = ewa -# r10 = srr0 -# r11 = srr1 -# r12 = sprg2 -# r13 = cr - -lwz r8, 0x0648( r1) # 04704 -mtcr r11 # 04708 -xor r8, r10, r8 # 0470c -bne- cr3, major_0x04700_0x144 # 04710 -cmplwi r8, 0x00 # 04714 -cmplwi cr1, r8, 0x20 # 04718 -beq- major_0x04700_0x120 # 0471c -beq- cr1, major_0x04700_0x120 # 04720 -cmplwi r8, 0x0c # 04724 -cmplwi cr1, r8, 0x40 # 04728 -beq- major_0x04700_0x120 # 0472c -blt- cr1, major_0x04700_0x110 # 04730 -bne- cr6, major_0x04700_0x58 # 04734 -stw r14, 0x0174( r6) # 04738 -mfspr r14, 275/*sprg3*/ # 0473c -addi r8, r1, -0x750 # 04740 -mfmsr r9 # 04744 -mtspr 275/*sprg3*/, r8 # 04748 -ori r8, r9, 0x10 # 0474c -mtmsr r8 # 04750 -isync # 04754 - -major_0x04700_0x58: -lwz r8, 0x0000(r10) # 04758 -bne- cr6, major_0x04700_0x74 # 0475c -isync # 04760 -mtmsr r9 # 04764 -isync # 04768 -mtspr 275/*sprg3*/, r14 # 0476c -lwz r14, 0x0174( r6) # 04770 - -major_0x04700_0x74: -mtcr r7 # 04774 -xoris r8, r8, 0xfff # 04778 -cmplwi r8, 0x10 # 0477c -cmplwi cr1, r8, 0x00 # 04780 -bge- major_0x04700_0x150 # 04784 -cmplwi cr7, r8, 0x08 # 04788 -cmplwi r8, 0x03 # 0478c -slwi r8, r8, 2 # 04790 -beq- cr1, major_0x04700_0xac # 04794 -beq- cr7, major_0x04700_0xd0 # 04798 -beq- major_0x04700_0xac # 0479c -blt- cr4, major_0x04700_0x150 # 047a0 -blt- cr2, major_0x04700_0xac # 047a4 -ble- cr2, major_0x04700_0x150 # 047a8 - -major_0x04700_0xac: -add r8, r8, r1 # 047ac -lwz r9, 0x0e40( r8) # 047b0 -addi r9, r9, 0x01 # 047b4 -stw r9, 0x0e40( r8) # 047b8 - -major_0x04700_0xbc: -lwz r8, 0x05f0( r8) # 047bc -mtlr r8 # 047c0 -addi r10, r10, 0x04 # 047c4 -rlwimi r7, r7, 27, 26, 26 # 047c8 -blr # 047cc - -major_0x04700_0xd0: -lwz r9, 0x0104( r6) # 047d0 -add r8, r8, r1 # 047d4 -cmpwi r9, -0x01 # 047d8 -lwz r9, 0x0e40( r8) # 047dc -addi r9, r9, 0x01 # 047e0 -stw r9, 0x0e40( r8) # 047e4 -bne+ major_0x04700_0xbc # 047e8 -addi r10, r10, 0x04 # 047ec -rlwimi r7, r7, 27, 26, 26 # 047f0 -mfspr r8, 272/*sprg0*/ # 047f4 -rlwimi r13, r7, 8, 2, 2 # 047f8 -lwz r9, -0x0008( r8) # 047fc -xoris r13, r13, 0x2000 # 04800 -lwz r8, 0x00ec( r9) # 04804 -stw r8, 0x0104( r6) # 04808 -b skeleton_key # 0480c - -major_0x04700_0x110: -mtcr r7 # 04810 -blt- cr4, major_0x04700_0x150 # 04814 -blt- cr2, major_0x04700_0x120 # 04818 -ble- cr2, major_0x04700_0x150 # 0481c - -major_0x04700_0x120: -add r8, r8, r1 # 04820 -lwz r9, 0x0e40( r8) # 04824 -lwz r10, 0x05f0( r8) # 04828 -addi r9, r9, 0x01 # 0482c -stw r9, 0x0e40( r8) # 04830 -mtlr r10 # 04834 -mr r10, r12 # 04838 -rlwimi r7, r7, 27, 26, 26 # 0483c -blr # 04840 - -major_0x04700_0x144: -blt+ cr3, major_0x06a14 # 04844 -bgt- cr3, major_0x06a14 # 04848 -bso- cr2, major_0x04700_0x160 # 0484c - -major_0x04700_0x150: -rlwinm r8, r11, 17, 28, 29 # 04850 -addi r8, r8, 0x4b3 # 04854 -rlwnm r8, r8, r8, 0x1c, 0x1f # 04858 -b major_0x02980_0x134 # 0485c - -major_0x04700_0x160: -li r8, 0x03 # 04860 -bso+ cr3, major_0x02980_0x134 # 04864 -addi r10, r10, 0x04 # 04868 -rlwimi r7, r7, 27, 26, 26 # 0486c -b major_0x02980_0x134 # 04870 - - - -/*********************************************************** - - major_0x04874 - -***********************************************************/ - -.long 0x4800000c # 04874 -.long 0x60000000 # 04878 -.long 0x60000000 # 0487c - - - -/*********************************************************** - - major_0x04880 - -************************************************************ - -Xrefs: -"lisori_caller" - -***********************************************************/ - -.align 7 # 04880 - -major_0x04880: /* < outside referer */ -# r6 = saved at *(ewa + 0x18) -# sprg1 = saved at *(ewa + 4) -# rN (0,7,8,9,10,11,12,13, not r1) = saved at *(*(ewa - 0x14) + 0x104 + 8*N) -bl int_prepare # 04880 -# r0 = 0 -# r1 = *(ewa - 4) -# r6 = kdp -# r7 = *(ewa - 0x10) # flags? -# r8 = ewa -# r10 = srr0 -# r11 = srr1 -# r12 = sprg2 -# r13 = cr - -rlwinm. r9, r11, 0, 16, 16 # 04884 -beq+ major_0x03940_0x170 # 04888 -lwz r9, -0x0338( r8) # 0488c -lwz r9, 0x0020( r9) # 04890 -cmpwi r9, 0x02 # 04894 - -# r1 = kdp -blt+ pih_indirect # 04898 - -# r6 = ewa -bl save_registers_from_r14 # 0489c -# r8 = sprg0 (not used by me) - -li r9, 0x09 # 048a0 -stw r9, -0x0238( r8) # 048a4 -li r8, 0x01 # 048a8 - -# r7 = flags -# r8 = usually 2? -bl SIGP # 048ac - -# r6 = ewa -bl restore_registers_from_r14 # 048b0 -cmpwi r8, -0x725e # 048b4 -cmpwi cr1, r8, -0x725d # 048b8 -cmpwi cr2, r8, -0x725f # 048bc - -# r1 = kdp -beq+ pih_indirect # 048c0 -beq+ cr1, skeleton_key # 048c4 - -# r1 = kdp -bne+ cr2, pih_indirect # 048c8 -mfspr r9, 272/*sprg0*/ # 048cc -li r8, 0x01 # 048d0 -stb r8, -0x0118( r9) # 048d4 -b skeleton_key # 048d8 - - - -/*********************************************************** - - major_0x048dc - -***********************************************************/ - -.long 0x60000000 # 048dc - - - -/*********************************************************** - - SIGP - -************************************************************ - -Really need to figure out what this does... - -************************************************************ - -Xrefs: -major_0x04880 -major_0x0ba80 -major_0x0bb20 -major_0x0bc2c -major_0x0bccc -NKCpuPlugin -major_0x14af8 -major_0x16bb4 - -************************************************************ - -> r7 = flags -> r8 = usually 2? - -***********************************************************/ - -.align 5 # 048e0 - -SIGP: /* < outside referer */ -mfspr r23, 272/*sprg0*/ # 048e0 -mtcr r7 # 048e4 -lwz r16, -0x001c(r23) # 048e8 -slwi r20, r3, 2 # 048ec -stw r16, -0x02ac(r23) # 048f0 -blt- cr4, major_0x04a20_0x18 # 048f4 -cmpwi cr2, r8, 0x00 # 048f8 -lwz r18, -0x0238(r23) # 048fc -beq- cr2, SIGP_0x28 # 04900 -slwi r20, r18, 2 # 04904 - -SIGP_0x28: -lwz r22, -0x0338(r23) # 04908 -li r8, -0x7266 # 0490c -lwz r17, 0x0038(r22) # 04910 -lwz r16, 0x0044(r22) # 04914 -mr. r17, r17 # 04918 -beqlr- # 0491c -slwi r16, r16, 2 # 04920 -li r8, -0x7267 # 04924 -cmplw r20, r16 # 04928 -bgelr- # 0492c -stw r10, -0x02d0(r23) # 04930 -stw r11, -0x02cc(r23) # 04934 -stw r12, -0x02c8(r23) # 04938 -stw r13, -0x02c4(r23) # 0493c -mfxer r16 # 04940 -mfctr r17 # 04944 -stw r16, -0x02c0(r23) # 04948 -mflr r16 # 0494c -stw r17, -0x02bc(r23) # 04950 -stw r16, -0x02b8(r23) # 04954 -stw r6, -0x02b4(r23) # 04958 -stw r7, -0x02b0(r23) # 0495c -lwz r9, -0x001c(r23) # 04960 -lwz r8, 0x004c(r22) # 04964 -cmpw r9, r8 # 04968 -beq- SIGP_0x94 # 0496c -bl major_0x13f78 # 04970 - -SIGP_0x94: -lwz r16, 0x0004(r23) # 04974 -lwz r17, 0x0018(r23) # 04978 -stw r16, 0x010c( r6) # 0497c -stw r2, 0x0114( r6) # 04980 -stw r3, 0x011c( r6) # 04984 -stw r4, 0x0124( r6) # 04988 -stw r5, 0x012c( r6) # 0498c -stw r17, 0x0134( r6) # 04990 -lwz r17, 0x0648( r1) # 04994 -lhz r16, -0x0116(r23) # 04998 -lwz r19, -0x0964( r1) # 0499c -slwi r16, r16, 2 # 049a0 -rlwinm r19, r19, 0, 18, 15 # 049a4 -lwz r8, 0x003c(r22) # 049a8 -lwz r9, 0x0040(r22) # 049ac -lwzx r20, r8, r20 # 049b0 -lwz r18, 0x0000(r20) # 049b4 -mtlr r17 # 049b8 -mtspr 26/*srr0*/, r18 # 049bc -mtspr 27/*srr1*/, r19 # 049c0 -lwzx r1, r9, r16 # 049c4 -lwz r2, 0x0004(r20) # 049c8 -srwi r3, r16, 2 # 049cc -ori r7, r7, 0x8000 # 049d0 -mr r16, r6 # 049d4 -stw r7, -0x0010(r23) # 049d8 -addi r6, r23, -0x318 # 049dc -stw r6, -0x0014(r23) # 049e0 -beq- cr2, SIGP_0x128 # 049e4 -lwz r4, -0x0234(r23) # 049e8 -lwz r5, -0x0230(r23) # 049ec -lwz r6, -0x022c(r23) # 049f0 -lwz r7, -0x0228(r23) # 049f4 -lwz r8, -0x0224(r23) # 049f8 -lwz r9, -0x0220(r23) # 049fc -lwz r10, -0x021c(r23) # 04a00 -rfi # 04a04 - -SIGP_0x128: -lwz r6, 0x0134(r16) # 04a08 -lwz r7, 0x013c(r16) # 04a0c -lwz r8, 0x0144(r16) # 04a10 -lwz r9, 0x014c(r16) # 04a14 -lwz r10, 0x0154(r16) # 04a18 -rfi # 04a1c - - - -/*********************************************************** - - major_0x04a20 - -************************************************************ - -Xrefs: -"lisori_caller" -major_0x02980 -major_0x03be0 -SIGP - -***********************************************************/ - -.align 5 # 04a20 - -major_0x04a20: /* < outside referer */ -mfspr r23, 272/*sprg0*/ # 04a20 -lwz r6, -0x0014(r23) # 04a24 -lwz r7, -0x0010(r23) # 04a28 -lwz r1, -0x0004(r23) # 04a2c -mfspr r10, 26/*srr0*/ # 04a30 -mfspr r11, 27/*srr1*/ # 04a34 - -major_0x04a20_0x18: /* < outside referer */ -mfspr r23, 272/*sprg0*/ # 04a38 -lwz r7, -0x02b0(r23) # 04a3c -andis. r8, r11, 0x02 # 04a40 -stw r7, -0x0010(r23) # 04a44 -bne- major_0x04a20_0x30 # 04a48 -li r3, -0x7265 # 04a4c - -major_0x04a20_0x30: -lwz r8, -0x02ac(r23) # 04a50 -lwz r9, -0x001c(r23) # 04a54 -cmpw r9, r8 # 04a58 -beq- major_0x04a20_0x44 # 04a5c -bl major_0x13f78 # 04a60 - -major_0x04a20_0x44: -lwz r10, -0x02d0(r23) # 04a64 -lwz r11, -0x02cc(r23) # 04a68 -lwz r12, -0x02c8(r23) # 04a6c -lwz r13, -0x02c4(r23) # 04a70 -lwz r8, -0x02c0(r23) # 04a74 -lwz r9, -0x02bc(r23) # 04a78 -mtxer r8 # 04a7c -lwz r8, -0x02b8(r23) # 04a80 -lwz r6, -0x02b4(r23) # 04a84 -mtctr r9 # 04a88 -stw r6, -0x0014(r23) # 04a8c -mtlr r8 # 04a90 -mr r8, r3 # 04a94 -mr r9, r4 # 04a98 -lwz r16, 0x010c( r6) # 04a9c -lwz r2, 0x0114( r6) # 04aa0 -lwz r3, 0x011c( r6) # 04aa4 -lwz r4, 0x0124( r6) # 04aa8 -lwz r5, 0x012c( r6) # 04aac -lwz r17, 0x0134( r6) # 04ab0 -stw r16, 0x0004(r23) # 04ab4 -stw r17, 0x0018(r23) # 04ab8 -blr # 04abc - - - -/*********************************************************** - - sc_vector - -************************************************************ - -Not fully sure about this one - -************************************************************ - -Xrefs: -"lisori_caller" - -***********************************************************/ - -.align 6 # 04ac0 - -sc_vector: /* < outside referer */ -cmpwi r0, -0x03 # 04ac0 -bne- sc_vector_0x2c # 04ac4 -mfspr r1, 27/*srr1*/ # 04ac8 -rlwinm. r0, r1, 26, 26, 27 # 04acc -rlwinm r1, r1, 0, 18, 16 # 04ad0 -blt- sc_vector_0x1c # 04ad4 -mtspr 27/*srr1*/, r1 # 04ad8 - -sc_vector_0x1c: -mfspr r1, 274/*sprg2*/ # 04adc -mtlr r1 # 04ae0 -mfspr r1, 273/*sprg1*/ # 04ae4 -rfi # 04ae8 - -sc_vector_0x2c: -cmpwi r0, -0x01 # 04aec -mfspr r1, 272/*sprg0*/ # 04af0 -bne- sc_vector_0x50 # 04af4 -lwz r0, -0x0010( r1) # 04af8 -mfspr r1, 274/*sprg2*/ # 04afc -rlwinm. r0, r0, 0, 10, 10 # 04b00 -mtlr r1 # 04b04 -mfspr r1, 273/*sprg1*/ # 04b08 -rfi # 04b0c - -sc_vector_0x50: -cmpwi r0, -0x02 # 04b10 -bne- sc_vector_not_special # 04b14 -lwz r0, -0x0010( r1) # 04b18 -lwz r1, -0x0008( r1) # 04b1c -rlwinm. r0, r0, 0, 10, 10 # 04b20 -lwz r0, 0x00ec( r1) # 04b24 -mfspr r1, 274/*sprg2*/ # 04b28 -mtlr r1 # 04b2c -mfspr r1, 273/*sprg1*/ # 04b30 -rfi # 04b34 - -sc_vector_not_special: -# r6 = saved at *(ewa + 0x18) -# sprg1 = saved at *(ewa + 4) -# rN (0,7,8,9,10,11,12,13, not r1) = saved at *(*(ewa - 0x14) + 0x104 + 8*N) -bl int_prepare # 04b38 -# r0 = 0 -# r1 = *(ewa - 4) -# r6 = kdp -# r7 = *(ewa - 0x10) # flags? -# r8 = ewa -# r10 = srr0 -# r11 = srr1 -# r12 = sprg2 -# r13 = cr - -lwz r9, 0x0e60( r1) # 04b3c -addi r9, r9, 0x01 # 04b40 -stw r9, 0x0e60( r1) # 04b44 -oris r11, r11, 0x02 # 04b48 -rlwimi r7, r7, 27, 26, 26 # 04b4c - -# r1 = kdp -# r6 = save area -b syscall # 04b50 - - - -/*********************************************************** - - major_0x04b54 - -***********************************************************/ - -.long 0x4800000c # 04b54 -.long 0x60000000 # 04b58 -.long 0x60000000 # 04b5c - - - -/*********************************************************** - - major_0x04b60 - -************************************************************ - -Xrefs: -"lisori_caller" - -***********************************************************/ - -.align 5 # 04b60 - -major_0x04b60: /* < outside referer */ -# r6 = saved at *(ewa + 0x18) -# sprg1 = saved at *(ewa + 4) -# rN (0,7,8,9,10,11,12,13, not r1) = saved at *(*(ewa - 0x14) + 0x104 + 8*N) -bl int_prepare # 04b60 -# r0 = 0 -# r1 = *(ewa - 4) -# r6 = kdp -# r7 = *(ewa - 0x10) # flags? -# r8 = ewa -# r10 = srr0 -# r11 = srr1 -# r12 = sprg2 -# r13 = cr - -li r8, 0x08 # 04b64 -b major_0x02980_0x134 # 04b68 - - - -/*********************************************************** - - major_0x04b6c - -***********************************************************/ - -.long 0x48000014 # 04b6c -.long 0x60000000 # 04b70 -.long 0x60000000 # 04b74 -.long 0x60000000 # 04b78 -.long 0x60000000 # 04b7c - - - -/*********************************************************** - - return_to_kern_from_dummy_interrupt - -************************************************************ - -Xrefs: -"lisori_caller" - -***********************************************************/ - -.align 7 # 04b80 - -return_to_kern_from_dummy_interrupt: /* < outside referer */ -mfspr r1, 26/*srr0*/ # 04b80 -addi r1, r1, 0x04 # 04b84 -mtspr 26/*srr0*/, r1 # 04b88 -mfspr r1, 274/*sprg2*/ # 04b8c -mtlr r1 # 04b90 -mfspr r1, 273/*sprg1*/ # 04b94 -rfi # 04b98 -.long 0 # 04b9c -.long 0 # 04ba0 -.long 0 # 04ba4 -.long 0 # 04ba8 -.long 0 # 04bac -.long 0 # 04bb0 -.long 0 # 04bb4 -.long 0 # 04bb8 - - - -/*********************************************************** - - major_0x04bbc - -***********************************************************/ - -.long 0x60000000 # 04bbc - - - -/*********************************************************** - - major_0x04bc0 - -************************************************************ - -Xrefs: -"lisori_caller" - -***********************************************************/ - -.align 6 # 04bc0 - -major_0x04bc0: /* < outside referer */ -mfspr r1, 27/*srr1*/ # 04bc0 -oris r1, r1, 0x200 # 04bc4 -mtspr 27/*srr1*/, r1 # 04bc8 -mfspr r1, 274/*sprg2*/ # 04bcc -mtlr r1 # 04bd0 -mfspr r1, 273/*sprg1*/ # 04bd4 -rfi # 04bd8 -.long 0 # 04bdc -.long 0 # 04be0 -.long 0 # 04be4 -.long 0 # 04be8 -.long 0 # 04bec -.long 0 # 04bf0 -.long 0 # 04bf4 -.long 0 # 04bf8 - - - -/*********************************************************** - - major_0x04bfc - -***********************************************************/ - -.long 0x60000000 # 04bfc - - - -/*********************************************************** - - panic_wrapper_0x04c00 - -************************************************************ - -Xrefs: -major_0x04c20 - -***********************************************************/ - -.align 10 # 04c00 - -panic_wrapper_0x04c00: /* < outside referer */ -b panic # 04c00 - - - -/*********************************************************** - - major_0x04c04 - -***********************************************************/ - -.long 0x4800001c # 04c04 -.long 0x60000000 # 04c08 -.long 0x60000000 # 04c0c -.long 0x60000000 # 04c10 -.long 0x60000000 # 04c14 -.long 0x60000000 # 04c18 -.long 0x60000000 # 04c1c - - - -/*********************************************************** - - major_0x04c20 - -************************************************************ - -Xrefs: -setup -major_0x035a0 -major_0x03940 -dsi_vector -major_0x08794 -print_memory_logical - -***********************************************************/ - -.align 5 # 04c20 - -major_0x04c20: /* < outside referer */ -mfspr r29, 272/*sprg0*/ # 04c20 -mflr r28 # 04c24 -stw r8, -0x00dc(r29) # 04c28 -mfcr r8 # 04c2c -stw r9, -0x00d8(r29) # 04c30 -stw r8, -0x00a4(r29) # 04c34 -stw r14, -0x00d4(r29) # 04c38 -stw r15, -0x00d0(r29) # 04c3c -stw r16, -0x00cc(r29) # 04c40 -stw r17, -0x00c8(r29) # 04c44 -stw r18, -0x00c4(r29) # 04c48 -stw r19, -0x00c0(r29) # 04c4c -stw r20, -0x00bc(r29) # 04c50 -stw r21, -0x00b8(r29) # 04c54 -stw r22, -0x00b4(r29) # 04c58 -stw r28, -0x00e0(r29) # 04c5c -b major_0x04c20_0x88 # 04c60 - -major_0x04c20_0x44: -mfspr r29, 272/*sprg0*/ # 04c64 -lwz r8, -0x00a4(r29) # 04c68 -lwz r28, -0x00e0(r29) # 04c6c -mtcrf 0x7f, r8 # 04c70 -lwz r8, -0x00dc(r29) # 04c74 -mtlr r28 # 04c78 -lwz r9, -0x00d8(r29) # 04c7c -lwz r14, -0x00d4(r29) # 04c80 -lwz r15, -0x00d0(r29) # 04c84 -lwz r16, -0x00cc(r29) # 04c88 -lwz r17, -0x00c8(r29) # 04c8c -lwz r18, -0x00c4(r29) # 04c90 -lwz r19, -0x00c0(r29) # 04c94 -lwz r20, -0x00bc(r29) # 04c98 -lwz r21, -0x00b8(r29) # 04c9c -lwz r22, -0x00b4(r29) # 04ca0 -blr # 04ca4 - -major_0x04c20_0x88: -mfspr r30, 272/*sprg0*/ # 04ca8 -mr r9, r27 # 04cac -lwz r8, -0x001c(r30) # 04cb0 -bl major_0x10320_0xcc # 04cb4 -mr r31, r8 # 04cb8 -stw r8, -0x00e4(r30) # 04cbc -stw r27, -0x00e8(r30) # 04cc0 -lwz r16, 0x0024(r31) # 04cc4 -lwz r17, 0x0020(r31) # 04cc8 -cmplw r16, r27 # 04ccc -lwz r18, 0x007c(r31) # 04cd0 -bgt- major_0x04c20_0x1a0 # 04cd4 -bgt+ major_0x04c20_0x44 # 04cd8 -and r28, r27, r18 # 04cdc -rlwinm. r26, r17, 0, 16, 16 # 04ce0 -lwz r17, 0x0038(r31) # 04ce4 -beq- major_0x04c20_0xfc # 04ce8 -lwz r18, 0x0070(r31) # 04cec -subf r19, r16, r28 # 04cf0 -clrlwi r31, r18, 0x1e # 04cf4 -cmpwi cr7, r17, -0x01 # 04cf8 -cmpwi cr6, r31, 0x00 # 04cfc -beq- cr7, major_0x04c20_0x1a0 # 04d00 -beq+ cr6, major_0x04c20_0x44 # 04d04 -cmpwi r17, 0x01 # 04d08 -add r31, r18, r19 # 04d0c -blt+ major_0x04c20_0x44 # 04d10 -li r26, 0x00 # 04d14 -b major_0x04c20_0x208 # 04d18 - -major_0x04c20_0xfc: -mr r8, r27 # 04d1c -bl major_0x12248_0x1e4 # 04d20 -lwz r28, 0x0000(r30) # 04d24 -mr r26, r30 # 04d28 -mr r8, r27 # 04d2c -bl major_0x12248_0x254 # 04d30 -beq- major_0x04c20_0x12c # 04d34 -lhz r16, 0x0000(r30) # 04d38 -rlwinm. r8, r16, 0, 16, 16 # 04d3c -bne- major_0x04c20_0x12c # 04d40 -srwi r16, r16, 1 # 04d44 -sth r16, 0x0000(r30) # 04d48 - -major_0x04c20_0x12c: -lwz r8, 0x0024(r31) # 04d4c -lwz r9, 0x06b4( r1) # 04d50 -cmpwi r8, 0x00 # 04d54 -cmpwi cr6, r9, 0x00 # 04d58 -li r8, 0x801 # 04d5c -li r9, 0x01 # 04d60 -bne- major_0x04c20_0x154 # 04d64 -beq- cr6, major_0x04c20_0x154 # 04d68 -li r8, 0x881 # 04d6c -li r9, 0x81 # 04d70 - -major_0x04c20_0x154: -lwz r31, 0x0688( r1) # 04d74 -and. r30, r28, r8 # 04d78 -rlwimi r31, r28, 0, 0, 19 # 04d7c -cmplwi cr6, r30, 0x800 # 04d80 -cmplwi r30, 0x01 # 04d84 -bge- cr6, major_0x04c20_0x2ec # 04d88 -cmplw cr7, r30, r9 # 04d8c -ori r31, r31, 0x100 # 04d90 -rlwimi r31, r28, 28, 28, 28 # 04d94 -rlwimi r31, r28, 3, 24, 24 # 04d98 -rlwimi r31, r28, 31, 26, 26 # 04d9c -rlwimi r31, r28, 1, 25, 25 # 04da0 -xori r31, r31, 0x40 # 04da4 -rlwimi r31, r28, 30, 31, 31 # 04da8 -rlwimi r31, r28, 0, 30, 30 # 04dac -xori r31, r31, 0x02 # 04db0 -beq- major_0x04c20_0x208 # 04db4 -blt+ cr7, major_0x04c20_0x44 # 04db8 -bl panic_wrapper_0x04c00 # 04dbc - -major_0x04c20_0x1a0: -lwz r29, 0x05e8( r1) # 04dc0 -rlwinm r28, r27, 7, 25, 28 # 04dc4 -lwzx r29, r29, r28 # 04dc8 -rlwinm r28, r27, 20, 16, 31 # 04dcc -lhz r30, 0x0000(r29) # 04dd0 -b major_0x04c20_0x1bc # 04dd4 - -major_0x04c20_0x1b8: -lhzu r30, 0x0008(r29) # 04dd8 - -major_0x04c20_0x1bc: -lhz r31, 0x0002(r29) # 04ddc -subf r30, r30, r28 # 04de0 -cmplw cr7, r30, r31 # 04de4 -bgt+ cr7, major_0x04c20_0x1b8 # 04de8 -lwz r28, 0x0690( r1) # 04dec -lwz r31, 0x0004(r29) # 04df0 -cmpwi cr7, r28, 0x00 # 04df4 -bnel- cr7, major_0x04c20_0x314 # 04df8 -rlwinm. r26, r31, 23, 29, 30 # 04dfc -cmplwi cr7, r26, 0x06 # 04e00 -beq- major_0x04c20_0x200 # 04e04 -cmplwi cr6, r26, 0x02 # 04e08 -beq- cr7, major_0x04c20_0x368 # 04e0c -beq- cr6, major_0x04c20_0x3b8 # 04e10 -b major_0x04c20_0x44 # 04e14 -.long 0x41800168 # 04e18 -.long 0x418101bc # 04e1c - -major_0x04c20_0x200: -slwi r28, r30, 12 # 04e20 -add r31, r31, r28 # 04e24 - -major_0x04c20_0x208: -mfsrin r30, r27 # 04e28 -rlwinm r28, r27, 26, 10, 25 # 04e2c -rlwinm r30, r30, 6, 7, 25 # 04e30 -xor r28, r28, r30 # 04e34 -lwz r30, 0x06a0( r1) # 04e38 -lwz r29, 0x06a4( r1) # 04e3c -and r28, r28, r30 # 04e40 -or. r29, r29, r28 # 04e44 - -major_0x04c20_0x228: -lwz r30, 0x0000(r29) # 04e48 -lwz r28, 0x0008(r29) # 04e4c -cmpwi cr6, r30, 0x00 # 04e50 -lwz r30, 0x0010(r29) # 04e54 -cmpwi cr7, r28, 0x00 # 04e58 -lwzu r28, 0x0018(r29) # 04e5c -bge- cr6, major_0x04c20_0x298 # 04e60 -cmpwi cr6, r30, 0x00 # 04e64 -lwzu r30, 0x0008(r29) # 04e68 -bge- cr7, major_0x04c20_0x298 # 04e6c -cmpwi cr7, r28, 0x00 # 04e70 -lwzu r28, 0x0008(r29) # 04e74 -bge- cr6, major_0x04c20_0x298 # 04e78 -cmpwi cr6, r30, 0x00 # 04e7c -lwzu r30, 0x0008(r29) # 04e80 -bge- cr7, major_0x04c20_0x298 # 04e84 -cmpwi cr7, r28, 0x00 # 04e88 -lwzu r28, 0x0008(r29) # 04e8c -bge- cr6, major_0x04c20_0x298 # 04e90 -cmpwi cr6, r30, 0x00 # 04e94 -addi r29, r29, 0x08 # 04e98 -bge- cr7, major_0x04c20_0x298 # 04e9c -cmpwi cr7, r28, 0x00 # 04ea0 -addi r29, r29, 0x08 # 04ea4 -bge- cr6, major_0x04c20_0x298 # 04ea8 -rlwinm r28, r31, 0, 26, 26 # 04eac -addi r29, r29, 0x08 # 04eb0 -blt- cr7, major_0x04c20_0x3e0 # 04eb4 - -major_0x04c20_0x298: -cmpwi r26, 0x00 # 04eb8 -mfsrin r28, r27 # 04ebc -rlwinm r30, r27, 10, 26, 31 # 04ec0 -stw r27, 0x0694( r1) # 04ec4 -oris r30, r30, 0x8000 # 04ec8 -ori r31, r31, 0x100 # 04ecc -rlwimi r30, r31, 27, 25, 25 # 04ed0 -rlwinm r31, r31, 0, 21, 19 # 04ed4 -rlwimi r30, r28, 7, 1, 24 # 04ed8 -stw r31, -0x0014(r29) # 04edc -eieio # 04ee0 -stwu r30, -0x0018(r29) # 04ee4 -sync # 04ee8 -lwz r28, 0x0e94( r1) # 04eec -stw r29, 0x0698( r1) # 04ef0 -addi r28, r28, 0x01 # 04ef4 -stw r28, 0x0e94( r1) # 04ef8 -beq+ major_0x04c20_0x44 # 04efc -cmpwi r26, 0x5a5a # 04f00 -bne- major_0x04c20_0x2f4 # 04f04 -stw r29, 0x0690( r1) # 04f08 - -major_0x04c20_0x2ec: -cmpw r29, r29 # 04f0c -b major_0x04c20_0x44 # 04f10 - -major_0x04c20_0x2f4: -lwz r28, 0x0000(r26) # 04f14 -lwz r30, 0x06a4( r1) # 04f18 -ori r28, r28, 0x800 # 04f1c -subf r30, r30, r29 # 04f20 -cmpw r29, r29 # 04f24 -rlwimi r28, r30, 9, 0, 19 # 04f28 -stw r28, 0x0000(r26) # 04f2c -b major_0x04c20_0x44 # 04f30 - -major_0x04c20_0x314: -lwz r28, 0x0e98( r1) # 04f34 -lwz r29, 0x0690( r1) # 04f38 -addi r28, r28, 0x01 # 04f3c -stw r28, 0x0e98( r1) # 04f40 -li r28, 0x00 # 04f44 -stw r28, 0x0000(r29) # 04f48 -lwz r29, 0x068c( r1) # 04f4c -stw r28, 0x068c( r1) # 04f50 -stw r28, 0x0690( r1) # 04f54 -mfspr r28, 287/*pvr*/ # 04f58 -rlwinm. r28, r28, 0, 0, 14 # 04f5c -sync # 04f60 -tlbie r29 # 04f64 -beq- major_0x04c20_0x354 # 04f68 -sync # 04f6c -tlbsync # 04f70 - -major_0x04c20_0x354: -sync # 04f74 -isync # 04f78 -blr # 04f7c -.long 0x57fca803 # 04f80 -.long 0x40800068 # 04f84 - -major_0x04c20_0x368: -slwi r28, r30, 2 # 04f88 -rlwinm r26, r31, 22, 0, 29 # 04f8c -lwzux r28, r26, r28 # 04f90 -lwz r31, 0x0688( r1) # 04f94 -andi. r30, r28, 0x881 # 04f98 -rlwimi r31, r28, 0, 0, 19 # 04f9c -cmplwi cr6, r30, 0x800 # 04fa0 -cmplwi cr7, r30, 0x81 # 04fa4 -cmplwi r30, 0x01 # 04fa8 -bge+ cr6, major_0x04c20_0x2ec # 04fac -cmplwi cr7, r30, 0x81 # 04fb0 -ori r31, r31, 0x100 # 04fb4 -rlwimi r31, r28, 3, 24, 24 # 04fb8 -rlwimi r31, r28, 31, 26, 26 # 04fbc -rlwimi r31, r28, 1, 25, 25 # 04fc0 -xori r31, r31, 0x40 # 04fc4 -rlwimi r31, r28, 30, 31, 31 # 04fc8 -beq+ major_0x04c20_0x208 # 04fcc -blt+ cr7, major_0x04c20_0x44 # 04fd0 -bl panic_wrapper_0x04c00 # 04fd4 - -major_0x04c20_0x3b8: -ori r28, r27, 0xfff # 04fd8 -stw r28, 0x068c( r1) # 04fdc -rlwinm r31, r31, 0, 22, 19 # 04fe0 -li r26, 0x5a5a # 04fe4 -b major_0x04c20_0x208 # 04fe8 -.long 0x4181fc78 # 04fec -.long 0x4bfffc11 # 04ff0 -.long 0x3ba105c8 # 04ff4 -.long 0x48000281 # 04ff8 -.long 0x4bfffc68 # 04ffc - -major_0x04c20_0x3e0: -cmplw cr6, r28, r26 # 05000 -addi r29, r29, -0x50 # 05004 -ble- cr6, major_0x04c20_0x400 # 05008 -crnot r2, r2 # 0500c -lwz r30, 0x06a0( r1) # 05010 -xori r31, r31, 0x800 # 05014 -xor r29, r29, r30 # 05018 -beq+ major_0x04c20_0x228 # 0501c - -major_0x04c20_0x400: -lwz r26, 0x069c( r1) # 05020 -crclr 4*cr6 + eq # 05024 -rlwimi r26, r29, 0, 0, 25 # 05028 -li r9, 0x08 # 0502c -addi r29, r26, 0x08 # 05030 -b major_0x04c20_0x428 # 05034 -.long 0x409a0008 # 05038 -.long 0x7fbaeb78 # 0503c - -major_0x04c20_0x420: -cmpw cr6, r29, r26 # 05040 -addi r29, r29, 0x08 # 05044 - -major_0x04c20_0x428: -rlwimi r29, r26, 0, 0, 25 # 05048 -lwz r31, 0x0004(r29) # 0504c -lwz r30, 0x0000(r29) # 05050 -beq- cr6, major_0x04c20_0x444 # 05054 -rlwinm r28, r31, 30, 25, 25 # 05058 -andc. r28, r28, r30 # 0505c -bne+ major_0x04c20_0x420 # 05060 - -major_0x04c20_0x444: -addi r9, r9, -0x01 # 05064 -cmpwi cr7, r9, 0x00 # 05068 -rlwinm r31, r30, 0, 25, 25 # 0506c -blel+ cr7, panic_wrapper_0x04c00 # 05070 -rlwinm r28, r30, 1, 0, 3 # 05074 -neg r31, r31 # 05078 -rlwimi r28, r30, 22, 4, 9 # 0507c -xor r31, r31, r29 # 05080 -rlwimi r28, r30, 5, 10, 19 # 05084 -rlwinm r31, r31, 6, 10, 19 # 05088 -xor r28, r28, r31 # 0508c -xoris r30, r30, 0x8000 # 05090 -lwz r31, 0x0e9c( r1) # 05094 -stw r29, 0x069c( r1) # 05098 -addi r31, r31, 0x01 # 0509c -stw r31, 0x0e9c( r1) # 050a0 -lwz r31, 0x0e98( r1) # 050a4 -stw r30, 0x0000(r29) # 050a8 -addi r31, r31, 0x01 # 050ac -stw r31, 0x0e98( r1) # 050b0 -sync # 050b4 -mfspr r31, 287/*pvr*/ # 050b8 -rlwinm. r31, r31, 0, 0, 14 # 050bc -tlbie r28 # 050c0 -beq- major_0x04c20_0x4b0 # 050c4 -sync # 050c8 -tlbsync # 050cc - -major_0x04c20_0x4b0: -sync # 050d0 -isync # 050d4 -li r8, -0x01 # 050d8 -stw r8, 0x0340( r1) # 050dc -stw r8, 0x0348( r1) # 050e0 -stw r8, 0x0350( r1) # 050e4 -stw r8, 0x0358( r1) # 050e8 -mfspr r8, 272/*sprg0*/ # 050ec -mr r9, r28 # 050f0 -lwz r8, -0x001c( r8) # 050f4 -bl major_0x10320_0xcc # 050f8 -lwz r16, 0x0024( r8) # 050fc -mr r31, r8 # 05100 -cmplw r16, r28 # 05104 -mr r8, r28 # 05108 -bgt- major_0x04c20_0x600 # 0510c -bgt+ panic_wrapper_0x04c00 # 05110 -bl major_0x12248_0x1e4 # 05114 -mr r26, r30 # 05118 -beql+ major_0x04c20_0x88 # 0511c - -major_0x04c20_0x500: -lwz r28, 0x0000(r26) # 05120 -lwz r31, 0x0004(r29) # 05124 -andi. r30, r28, 0x800 # 05128 -rlwinm r30, r28, 23, 9, 28 # 0512c -xor r30, r30, r29 # 05130 -beq+ panic_wrapper_0x04c00 # 05134 -andi. r30, r30, 0xffff # 05138 -xori r28, r28, 0x800 # 0513c -bne+ panic_wrapper_0x04c00 # 05140 -rlwimi r28, r31, 0, 0, 19 # 05144 -rlwimi r28, r31, 29, 27, 27 # 05148 -rlwimi r28, r31, 27, 28, 28 # 0514c -stw r28, 0x0000(r26) # 05150 -bl major_0x04c20_0x88 # 05154 -bl 1f # 05158 -.ascii "PTEG overflow: EA " # 0515c -.short 0 # 0516e -.align 2 # 05170 -1: mflr r8 # 05170 -bl print_string # 05174 -mr r8, r27 # 05178 -bl print_word_hex # 0517c -bl 1f # 05180 -.ascii "Victim EA: " # 05184 -.short 0 # 0518f -.align 2 # 05191 -1: mflr r8 # 05194 -bl print_string # 05198 -mr r8, r28 # 0519c -bl print_word_hex # 051a0 -bl 1f # 051a4 -.ascii "MapInfo: " # 051a8 -.short 0 # 051b1 -.align 2 # 051b3 -1: mflr r8 # 051b4 -bl print_string # 051b8 -mr r8, r29 # 051bc -bl print_word_hex # 051c0 -lwz r16, 0x0000(r26) # 051c4 -mr r8, r26 # 051c8 -bl print_word_hex # 051cc -mr r8, r16 # 051d0 -bl print_word_hex # 051d4 -bl 1f # 051d8 -.ascii " PTE: " # 051dc -.short 0 # 051e2 -.align 2 # 051e4 -1: mflr r8 # 051e4 -bl print_string # 051e8 -lwz r16, 0x0000(r29) # 051ec -lwz r17, 0x0004(r29) # 051f0 -mr r8, r29 # 051f4 -bl print_word_hex # 051f8 -mr r8, r16 # 051fc -bl print_word_hex # 05200 -mr r8, r17 # 05204 -bl print_word_hex # 05208 -bl 1f # 0520c -.ascii "^n" # 05210 -.short 0 # 05212 -.align 2 # 05214 -1: mflr r8 # 05214 -bl print_string # 05218 -bl major_0x04c20_0x88 # 0521c - -major_0x04c20_0x600: -lwz r26, 0x05e8( r1) # 05220 -rlwinm r30, r28, 7, 25, 28 # 05224 -lwzx r26, r26, r30 # 05228 - -major_0x04c20_0x60c: -lhz r30, 0x0000(r26) # 0522c -rlwinm r31, r28, 20, 16, 31 # 05230 -subf r30, r30, r31 # 05234 -lhz r31, 0x0002(r26) # 05238 -addi r26, r26, 0x08 # 0523c -cmplw cr7, r30, r31 # 05240 -lwz r31, -0x0004(r26) # 05244 -andi. r31, r31, 0xe01 # 05248 -cmpwi r31, 0xa01 # 0524c -bgt+ cr7, major_0x04c20_0x60c # 05250 -beq+ major_0x04c20_0x60c # 05254 -lwz r26, -0x0004(r26) # 05258 -slwi r30, r30, 2 # 0525c -rlwinm r31, r26, 22, 30, 31 # 05260 -cmpwi cr7, r31, 0x03 # 05264 -rlwinm r26, r26, 22, 0, 29 # 05268 -add r26, r26, r30 # 0526c -bnel+ cr7, major_0x04c20_0x88 # 05270 -b major_0x04c20_0x500 # 05274 - - - -/*********************************************************** - - major_0x05278 - -************************************************************ - -Xrefs: -setup - -***********************************************************/ - -.align 3 # 05278 - -major_0x05278: /* < outside referer */ -sync # 05278 -isync # 0527c -lwz r28, 0x0000(r29) # 05280 -stw r28, 0x05e8( r1) # 05284 -addi r28, r28, 0x84 # 05288 -lis r31, 0x00 # 0528c - -major_0x05278_0x18: -lwzu r30, -0x0008(r28) # 05290 -addis r31, r31, -0x1000 # 05294 -mr. r31, r31 # 05298 -mtsrin r30, r31 # 0529c -bne+ major_0x05278_0x18 # 052a0 -isync # 052a4 -lwz r28, 0x0004(r29) # 052a8 -mfspr r31, 287/*pvr*/ # 052ac -rlwinm. r31, r31, 0, 0, 14 # 052b0 -addi r29, r1, 0x00 # 052b4 -stw r28, 0x05ec( r1) # 052b8 -beq- major_0x05278_0x168 # 052bc -li r30, 0x00 # 052c0 -mtspr 528/*ibat0u*/, r30 # 052c4 -mtspr 530/*ibat1u*/, r30 # 052c8 -mtspr 532/*ibat2u*/, r30 # 052cc -mtspr 534/*ibat3u*/, r30 # 052d0 -mtspr 536/*dbat0u*/, r30 # 052d4 -mtspr 538/*dbat1u*/, r30 # 052d8 -mtspr 540/*dbat2u*/, r30 # 052dc -mtspr 542/*dbat3u*/, r30 # 052e0 -rlwimi r29, r28, 7, 25, 28 # 052e4 -lwz r31, 0x0284(r29) # 052e8 -lwz r30, 0x0280(r29) # 052ec -rlwinm r31, r31, 0, 29, 27 # 052f0 -mtspr 529/*ibat0l*/, r31 # 052f4 -mtspr 528/*ibat0u*/, r30 # 052f8 -stw r31, 0x0304( r1) # 052fc -stw r30, 0x0300( r1) # 05300 -rlwimi r29, r28, 11, 25, 28 # 05304 -lwz r31, 0x0284(r29) # 05308 -lwz r30, 0x0280(r29) # 0530c -rlwinm r31, r31, 0, 29, 27 # 05310 -mtspr 531/*ibat1l*/, r31 # 05314 -mtspr 530/*ibat1u*/, r30 # 05318 -stw r31, 0x030c( r1) # 0531c -stw r30, 0x0308( r1) # 05320 -rlwimi r29, r28, 15, 25, 28 # 05324 -lwz r31, 0x0284(r29) # 05328 -lwz r30, 0x0280(r29) # 0532c -rlwinm r31, r31, 0, 29, 27 # 05330 -mtspr 533/*ibat2l*/, r31 # 05334 -mtspr 532/*ibat2u*/, r30 # 05338 -stw r31, 0x0314( r1) # 0533c -stw r30, 0x0310( r1) # 05340 -rlwimi r29, r28, 19, 25, 28 # 05344 -lwz r31, 0x0284(r29) # 05348 -lwz r30, 0x0280(r29) # 0534c -rlwinm r31, r31, 0, 29, 27 # 05350 -mtspr 535/*ibat3l*/, r31 # 05354 -mtspr 534/*ibat3u*/, r30 # 05358 -stw r31, 0x031c( r1) # 0535c -stw r30, 0x0318( r1) # 05360 -rlwimi r29, r28, 23, 25, 28 # 05364 -lwz r31, 0x0284(r29) # 05368 -lwz r30, 0x0280(r29) # 0536c -mtspr 537/*dbat0l*/, r31 # 05370 -mtspr 536/*dbat0u*/, r30 # 05374 -stw r31, 0x0324( r1) # 05378 -stw r30, 0x0320( r1) # 0537c -rlwimi r29, r28, 27, 25, 28 # 05380 -lwz r31, 0x0284(r29) # 05384 -lwz r30, 0x0280(r29) # 05388 -mtspr 539/*dbat1l*/, r31 # 0538c -mtspr 538/*dbat1u*/, r30 # 05390 -stw r31, 0x032c( r1) # 05394 -stw r30, 0x0328( r1) # 05398 -rlwimi r29, r28, 31, 25, 28 # 0539c -lwz r31, 0x0284(r29) # 053a0 -lwz r30, 0x0280(r29) # 053a4 -mtspr 541/*dbat2l*/, r31 # 053a8 -mtspr 540/*dbat2u*/, r30 # 053ac -stw r31, 0x0334( r1) # 053b0 -stw r30, 0x0330( r1) # 053b4 -rlwimi r29, r28, 3, 25, 28 # 053b8 -lwz r31, 0x0284(r29) # 053bc -lwz r30, 0x0280(r29) # 053c0 -mtspr 543/*dbat3l*/, r31 # 053c4 -mtspr 542/*dbat3u*/, r30 # 053c8 -stw r31, 0x033c( r1) # 053cc -stw r30, 0x0338( r1) # 053d0 -isync # 053d4 -cmpw r29, r29 # 053d8 -blr # 053dc - -major_0x05278_0x168: -rlwimi r29, r28, 7, 25, 28 # 053e0 -lwz r30, 0x0280(r29) # 053e4 -lwz r31, 0x0284(r29) # 053e8 -stw r30, 0x0300( r1) # 053ec -stw r31, 0x0304( r1) # 053f0 -stw r30, 0x0320( r1) # 053f4 -stw r31, 0x0324( r1) # 053f8 -rlwimi r30, r31, 0, 25, 31 # 053fc -mtspr 528/*ibat0u*/, r30 # 05400 -lwz r30, 0x0280(r29) # 05404 -rlwimi r31, r30, 30, 26, 31 # 05408 -rlwimi r31, r30, 6, 25, 25 # 0540c -mtspr 529/*ibat0l*/, r31 # 05410 -rlwimi r29, r28, 11, 25, 28 # 05414 -lwz r30, 0x0280(r29) # 05418 -lwz r31, 0x0284(r29) # 0541c -stw r30, 0x0308( r1) # 05420 -stw r31, 0x030c( r1) # 05424 -stw r30, 0x0328( r1) # 05428 -stw r31, 0x032c( r1) # 0542c -rlwimi r30, r31, 0, 25, 31 # 05430 -mtspr 530/*ibat1u*/, r30 # 05434 -lwz r30, 0x0280(r29) # 05438 -rlwimi r31, r30, 30, 26, 31 # 0543c -rlwimi r31, r30, 6, 25, 25 # 05440 -mtspr 531/*ibat1l*/, r31 # 05444 -rlwimi r29, r28, 15, 25, 28 # 05448 -lwz r30, 0x0280(r29) # 0544c -lwz r31, 0x0284(r29) # 05450 -stw r30, 0x0310( r1) # 05454 -stw r31, 0x0314( r1) # 05458 -stw r30, 0x0330( r1) # 0545c -stw r31, 0x0334( r1) # 05460 -rlwimi r30, r31, 0, 25, 31 # 05464 -mtspr 532/*ibat2u*/, r30 # 05468 -lwz r30, 0x0280(r29) # 0546c -rlwimi r31, r30, 30, 26, 31 # 05470 -rlwimi r31, r30, 6, 25, 25 # 05474 -mtspr 533/*ibat2l*/, r31 # 05478 -rlwimi r29, r28, 19, 25, 28 # 0547c -lwz r30, 0x0280(r29) # 05480 -lwz r31, 0x0284(r29) # 05484 -stw r30, 0x0318( r1) # 05488 -stw r31, 0x031c( r1) # 0548c -stw r30, 0x0338( r1) # 05490 -stw r31, 0x033c( r1) # 05494 -rlwimi r30, r31, 0, 25, 31 # 05498 -mtspr 534/*ibat3u*/, r30 # 0549c -lwz r30, 0x0280(r29) # 054a0 -rlwimi r31, r30, 30, 26, 31 # 054a4 -rlwimi r31, r30, 6, 25, 25 # 054a8 -mtspr 535/*ibat3l*/, r31 # 054ac -cmpw r29, r29 # 054b0 -blr # 054b4 - - - -/*********************************************************** - - major_0x054b8 - -************************************************************ - -Xrefs: -major_0x035a0 -major_0x043a0 -rtas_call -NKRegisterCpuPlugin -major_0x16bb4 - -***********************************************************/ - -.align 3 # 054b8 - -major_0x054b8: /* < outside referer */ -lwz r30, 0x0000(r29) # 054b8 -li r28, -0x01 # 054bc -rlwimi r28, r30, 15, 0, 14 # 054c0 -xor r31, r27, r30 # 054c4 -andc. r31, r31, r28 # 054c8 -beq- major_0x054b8_0x54 # 054cc -lwzu r30, 0x0008(r29) # 054d0 -rlwimi r28, r30, 15, 0, 14 # 054d4 -xor r31, r27, r30 # 054d8 -andc. r31, r31, r28 # 054dc -beq- major_0x054b8_0x54 # 054e0 -lwzu r30, 0x0008(r29) # 054e4 -rlwimi r28, r30, 15, 0, 14 # 054e8 -xor r31, r27, r30 # 054ec -andc. r31, r31, r28 # 054f0 -beq- major_0x054b8_0x54 # 054f4 -lwzu r30, 0x0008(r29) # 054f8 -rlwimi r28, r30, 15, 0, 14 # 054fc -xor r31, r27, r30 # 05500 -andc. r31, r31, r28 # 05504 -bne- major_0x05524 # 05508 - -major_0x054b8_0x54: -andi. r31, r30, 0x01 # 0550c -rlwinm r28, r28, 0, 8, 19 # 05510 -lwzu r31, 0x0004(r29) # 05514 -and r28, r27, r28 # 05518 -or r31, r31, r28 # 0551c -bnelr- # 05520 - - - -/*********************************************************** - - major_0x05524 - -************************************************************ - -Xrefs: -setup -major_0x054b8 -print_memory_logical -major_0x18c08 - -***********************************************************/ - -major_0x05524: /* < outside referer */ -mfsrin r31, r27 # 05524 -rlwinm r30, r27, 10, 26, 31 # 05528 -rlwimi r30, r31, 7, 1, 24 # 0552c -rlwinm r28, r27, 26, 10, 25 # 05530 -oris r30, r30, 0x8000 # 05534 -rlwinm r31, r31, 6, 7, 25 # 05538 -xor r28, r28, r31 # 0553c -lwz r31, 0x06a0( r1) # 05540 -lwz r29, 0x06a4( r1) # 05544 -and r28, r28, r31 # 05548 -or. r29, r29, r28 # 0554c - -major_0x05524_0x2c: -lwz r31, 0x0000(r29) # 05550 -lwz r28, 0x0008(r29) # 05554 -cmpw cr6, r30, r31 # 05558 -lwz r31, 0x0010(r29) # 0555c -cmpw cr7, r30, r28 # 05560 -lwzu r28, 0x0018(r29) # 05564 -bne- cr6, major_0x05524_0x50 # 05568 - -major_0x05524_0x48: -lwzu r31, -0x0014(r29) # 0556c -blr # 05570 - -major_0x05524_0x50: -cmpw cr6, r30, r31 # 05574 -lwzu r31, 0x0008(r29) # 05578 -beq+ cr7, major_0x05524_0x48 # 0557c -cmpw cr7, r30, r28 # 05580 -lwzu r28, 0x0008(r29) # 05584 -beq+ cr6, major_0x05524_0x48 # 05588 -cmpw cr6, r30, r31 # 0558c -lwzu r31, 0x0008(r29) # 05590 -beq+ cr7, major_0x05524_0x48 # 05594 -cmpw cr7, r30, r28 # 05598 -lwzu r28, 0x0008(r29) # 0559c -beq+ cr6, major_0x05524_0x48 # 055a0 -cmpw cr6, r30, r31 # 055a4 -lwzu r31, -0x000c(r29) # 055a8 -beqlr- cr7 # 055ac -cmpw cr7, r30, r28 # 055b0 -lwzu r31, 0x0008(r29) # 055b4 -beqlr- cr6 # 055b8 -lwzu r31, 0x0008(r29) # 055bc -beqlr- cr7 # 055c0 -lwz r31, 0x06a0( r1) # 055c4 -xori r30, r30, 0x40 # 055c8 -andi. r28, r30, 0x40 # 055cc -addi r29, r29, -0x3c # 055d0 -xor r29, r29, r31 # 055d4 -bne+ major_0x05524_0x2c # 055d8 -blr # 055dc - - - -/*********************************************************** - - flush_tlb - -************************************************************ - -Xrefs: -setup -major_0x14bcc -major_0x16bb4 - -***********************************************************/ - -.align 5 # 055e0 - -flush_tlb: /* < outside referer */ -lhz r29, 0x0f50( r1) # 055e0 -slwi r29, r29, 12 # 055e4 - -flush_tlb_0x8: -addi r29, r29, -0x1000 # 055e8 -cmpwi r29, 0x00 # 055ec -tlbie r29 # 055f0 -bgt+ flush_tlb_0x8 # 055f4 -mfspr r29, 287/*pvr*/ # 055f8 -rlwinm. r29, r29, 0, 0, 14 # 055fc -sync # 05600 -beqlr- # 05604 -tlbsync # 05608 -sync # 0560c -isync # 05610 -blr # 05614 - - - -/*********************************************************** - - major_0x05618 - -***********************************************************/ - -.align 3 # 05618 - -.long 0x60000000 # 05618 -.long 0x60000000 # 0561c - - - -/*********************************************************** - - major_0x05620 - -***********************************************************/ - -.align 5 # 05620 - -.long 0x480001e0 # 05620 -.long 0x60000000 # 05624 -.long 0x60000000 # 05628 -.long 0x60000000 # 0562c -.long 0x60000000 # 05630 -.long 0x60000000 # 05634 -.long 0x60000000 # 05638 -.long 0x60000000 # 0563c -.long 0x60000000 # 05640 -.long 0x60000000 # 05644 -.long 0x60000000 # 05648 -.long 0x60000000 # 0564c -.long 0x60000000 # 05650 -.long 0x60000000 # 05654 -.long 0x60000000 # 05658 -.long 0x60000000 # 0565c -.long 0x60000000 # 05660 -.long 0x60000000 # 05664 -.long 0x60000000 # 05668 -.long 0x60000000 # 0566c -.long 0x60000000 # 05670 -.long 0x60000000 # 05674 -.long 0x60000000 # 05678 -.long 0x60000000 # 0567c -.long 0x60000000 # 05680 -.long 0x60000000 # 05684 -.long 0x60000000 # 05688 -.long 0x60000000 # 0568c -.long 0x60000000 # 05690 -.long 0x60000000 # 05694 -.long 0x60000000 # 05698 -.long 0x60000000 # 0569c -.long 0x60000000 # 056a0 -.long 0x60000000 # 056a4 -.long 0x60000000 # 056a8 -.long 0x60000000 # 056ac -.long 0x60000000 # 056b0 -.long 0x60000000 # 056b4 -.long 0x60000000 # 056b8 -.long 0x60000000 # 056bc -.long 0x60000000 # 056c0 -.long 0x60000000 # 056c4 -.long 0x60000000 # 056c8 -.long 0x60000000 # 056cc -.long 0x60000000 # 056d0 -.long 0x60000000 # 056d4 -.long 0x60000000 # 056d8 -.long 0x60000000 # 056dc -.long 0x60000000 # 056e0 -.long 0x60000000 # 056e4 -.long 0x60000000 # 056e8 -.long 0x60000000 # 056ec -.long 0x60000000 # 056f0 -.long 0x60000000 # 056f4 -.long 0x60000000 # 056f8 -.long 0x60000000 # 056fc -.long 0x60000000 # 05700 -.long 0x60000000 # 05704 -.long 0x60000000 # 05708 -.long 0x60000000 # 0570c -.long 0x60000000 # 05710 -.long 0x60000000 # 05714 -.long 0x60000000 # 05718 -.long 0x60000000 # 0571c -.long 0x60000000 # 05720 -.long 0x60000000 # 05724 -.long 0x60000000 # 05728 -.long 0x60000000 # 0572c -.long 0x60000000 # 05730 -.long 0x60000000 # 05734 -.long 0x60000000 # 05738 -.long 0x60000000 # 0573c -.long 0x60000000 # 05740 -.long 0x60000000 # 05744 -.long 0x60000000 # 05748 -.long 0x60000000 # 0574c -.long 0x60000000 # 05750 -.long 0x60000000 # 05754 -.long 0x60000000 # 05758 -.long 0x60000000 # 0575c -.long 0x60000000 # 05760 -.long 0x60000000 # 05764 -.long 0x60000000 # 05768 -.long 0x60000000 # 0576c -.long 0x60000000 # 05770 -.long 0x60000000 # 05774 -.long 0x60000000 # 05778 -.long 0x60000000 # 0577c -.long 0x60000000 # 05780 -.long 0x60000000 # 05784 -.long 0x60000000 # 05788 -.long 0x60000000 # 0578c -.long 0x60000000 # 05790 -.long 0x60000000 # 05794 -.long 0x60000000 # 05798 -.long 0x60000000 # 0579c -.long 0x60000000 # 057a0 -.long 0x60000000 # 057a4 -.long 0x60000000 # 057a8 -.long 0x60000000 # 057ac -.long 0x60000000 # 057b0 -.long 0x60000000 # 057b4 -.long 0x60000000 # 057b8 -.long 0x60000000 # 057bc -.long 0x60000000 # 057c0 -.long 0x60000000 # 057c4 -.long 0x60000000 # 057c8 -.long 0x60000000 # 057cc -.long 0x60000000 # 057d0 -.long 0x60000000 # 057d4 -.long 0x60000000 # 057d8 -.long 0x60000000 # 057dc -.long 0x60000000 # 057e0 -.long 0x60000000 # 057e4 -.long 0x60000000 # 057e8 -.long 0x60000000 # 057ec -.long 0x60000000 # 057f0 -.long 0x60000000 # 057f4 -.long 0x60000000 # 057f8 -.long 0x60000000 # 057fc - - - -/*********************************************************** - - funny_debug_place - -************************************************************ - -Xrefs: -"lisori_caller" -"who_the_hell_knows" - -***********************************************************/ - -.align 11 # 05800 - -funny_debug_place: /* < outside referer */ -bl panic # 05800 -b major_0x05808_0x244 # 05804 - - - -/*********************************************************** - - major_0x05808 - -************************************************************ - -Xrefs: -major_0x02ccc -funny_debug_place -major_0x06000 - -***********************************************************/ - -.align 3 # 05808 - -.long 0x56310414 # 05808 -.long 0x4ffff982 # 0580c -.long 0x4800000c # 05810 -.long 0x56310414 # 05814 -.long 0x4ffffa42 # 05818 -.long 0x5733002a # 0581c -.long 0x52337638 # 05820 -.long 0x3a73e86c # 05824 -.long 0x7e6803a6 # 05828 -.long 0x516e04a4 # 0582c -.long 0x7dc00124 # 05830 -.long 0x4c00012c # 05834 -.long 0x4e800020 # 05838 -.long 0x616b2000 # 0583c -.long 0x8281fd20 # 05840 -.long 0x82a1fd24 # 05844 -.long 0x419f00a0 # 05848 -.long 0x5697657e # 0584c -.long 0x2c170380 # 05850 -.long 0x529418b8 # 05854 -.long 0x52b41f7e # 05858 -.long 0x7e95a378 # 0585c -.long 0x41810088 # 05860 -.long 0x2c17036a # 05864 -.long 0x56950000 # 05868 -.long 0x4180007c # 0586c -.long 0x66940080 # 05870 -.long 0x7ef700d0 # 05874 -.long 0x5694023e # 05878 -.long 0x7e94bc30 # 0587c -.long 0x5295fa7e # 05880 -.long 0x48000064 # 05884 -.long 0x563c6e7a # 05888 -.long 0x7ea1e42c # 0588c -.long 0x48000054 # 05890 -.long 0x563c6e7a # 05894 -.long 0x3aa10002 # 05898 -.long 0x7eb5e62c # 0589c -.long 0x48000044 # 058a0 -.long 0x563c6e7a # 058a4 -.long 0x7ea1e02e # 058a8 -.long 0x4800003c # 058ac -.long 0x563c6e7a # 058b0 -.long 0x7ea1e02e # 058b4 -.long 0x4ef7ba42 # 058b8 -.long 0x48000028 # 058bc -.long 0x56520036 # 058c0 -.long 0x516f018c # 058c4 -.long 0x4800001c # 058c8 -.long 0x5652003c # 058cc -.long 0x48000014 # 058d0 -.long 0x5652003a # 058d4 -.long 0x4800000c # 058d8 -.long 0x563c6e7a # 058dc -.long 0x7ea1e02e # 058e0 -.long 0x56310414 # 058e4 -.long 0x5636feff # 058e8 -.long 0x7e72b214 # 058ec -.long 0x480002bc # 058f0 -.long 0x56b7843e # 058f4 -.long 0xb2f3fffc # 058f8 -.long 0x3a31fffc # 058fc -.long 0xb2b3fffe # 05900 -.long 0x48000018 # 05904 -.long 0xa2f3fffc # 05908 -.long 0x3a31fffc # 0590c -.long 0x52f5801e # 05910 -.long 0xa2f3fffe # 05914 -.long 0x52f5043e # 05918 - -major_0x05808_0x114: /* < outside referer */ -li r0, -0x03 # 0591c -sc # 05920 -bl major_0x03460_0xe8 # 05924 -rlwinm. r28, r17, 18, 25, 29 # 05928 -mtlr r25 # 0592c -mfspr r1, 272/*sprg0*/ # 05930 -cror r2, r2, r14 # 05934 -mtspr 275/*sprg3*/, r24 # 05938 -beqlr- # 0593c -crset 4*cr3 + so # 05940 -stwx r18, r1, r28 # 05944 -blr # 05948 -.long 0x7eb50734 # 0594c -.long 0x563c6e7a # 05950 -.long 0x4def7a42 # 05954 -.long 0x7ea1e12e # 05958 -.long 0x48000c44 # 0595c -.long 0x56b5801e # 05960 -.long 0x563c6e7a # 05964 -.long 0x4def7a42 # 05968 -.long 0x7ea1e52c # 0596c -.long 0x48000c30 # 05970 -.long 0x48000e34 # 05974 -.long 0x5737002a # 05978 -.long 0x52377638 # 0597c -.long 0x3af7e76c # 05980 -.long 0x7ee803a6 # 05984 -.long 0x9281fd20 # 05988 -.long 0x92a1fd24 # 0598c -.long 0x516e04a4 # 05990 -.long 0x7dc00124 # 05994 -.long 0x4c00012c # 05998 -.long 0x616b2000 # 0599c -.long 0x4e800020 # 059a0 -.long 0x563c6e7b # 059a4 -.long 0x5637967a # 059a8 -.long 0x7f9cb800 # 059ac -.long 0x3e310020 # 059b0 -.long 0x41820008 # 059b4 -.long 0x419e0008 # 059b8 -.long 0x7ea1e12e # 059bc -.long 0x2c1c007c # 059c0 -.long 0x3ac00009 # 059c4 -.long 0x52d106be # 059c8 -.long 0x3a730004 # 059cc -.long 0x408201dc # 059d0 -.long 0x48000bcc # 059d4 -.long 0x3e310020 # 059d8 -.long 0x563c6e7b # 059dc -.long 0x41820bc0 # 059e0 -.long 0x7ea1e02e # 059e4 -.long 0x3ac00008 # 059e8 -.long 0x52d106be # 059ec -.long 0x3a730004 # 059f0 -.long 0x480001b8 # 059f4 -.long 0x82a1fffc # 059f8 -.long 0xa2b50f4a # 059fc -.long 0x7eb500d0 # 05a00 -.long 0x7e53a838 # 05a04 -.long 0x4800001c # 05a08 -.long 0x82a1fffc # 05a0c -.long 0xa2b50f4a # 05a10 -.long 0x3ab5fff8 # 05a14 -.long 0x7e76a839 # 05a18 -.long 0x56730038 # 05a1c -.long 0x41820b80 # 05a20 -.long 0x3ac00010 # 05a24 -.long 0x52d106bf # 05a28 -.long 0x3a730008 # 05a2c -.long 0x3a800000 # 05a30 -.long 0x3aa00000 # 05a34 -.long 0x48000174 # 05a38 -.long 0x56100732 # 05a3c -.long 0x394afffc # 05a40 -.long 0x9201fff0 # 05a44 -.long 0x48000b58 # 05a48 - -major_0x05808_0x244: /* < outside referer */ -li r8, 0x12 # 05a4c -b major_0x02980 # 05a50 -.long 0x3adbf800 # 05a54 -.long 0x56d6aefe # 05a58 -.long 0x48000014 # 05a5c -.long 0x7ec102a6 # 05a60 -.long 0x72d6007f # 05a64 -.long 0x3ad6ffff # 05a68 -.long 0x41820b34 # 05a6c -.long 0x52d12572 # 05a70 -.long 0x7ed6b0f8 # 05a74 -.long 0x52d1d10a # 05a78 -.long 0x7e539378 # 05a7c -.long 0x48000be0 # 05a80 -.long 0x723607c0 # 05a84 -.long 0x3f910020 # 05a88 -.long 0x53910194 # 05a8c -.long 0x3a31ffc0 # 05a90 -.long 0x40820bcc # 05a94 -.long 0x48000b08 # 05a98 -.long 0x3adbf800 # 05a9c -.long 0x56d6aefe # 05aa0 -.long 0x3f9b03e0 # 05aa4 -.long 0x5391b428 # 05aa8 -.long 0x48000018 # 05aac -.long 0x7ec102a6 # 05ab0 -.long 0x72d6007f # 05ab4 -.long 0x53710428 # 05ab8 -.long 0x3ad6ffff # 05abc -.long 0x41820ae0 # 05ac0 -.long 0x7637001f # 05ac4 -.long 0x52d12572 # 05ac8 -.long 0x7ed6b0f8 # 05acc -.long 0x52d1d10a # 05ad0 -.long 0x7e539378 # 05ad4 -.long 0x40820bf0 # 05ad8 -.long 0x52312ade # 05adc -.long 0x48000be8 # 05ae0 -.long 0x723607c0 # 05ae4 -.long 0x563c6e7a # 05ae8 -.long 0x40820bb0 # 05aec -.long 0x56364ef8 # 05af0 -.long 0x7eb5b030 # 05af4 -.long 0x48000ba4 # 05af8 -.long 0x5636e67b # 05afc -.long 0x563c6e7a # 05b00 -.long 0x40820bf0 # 05b04 -.long 0x56374ef8 # 05b08 -.long 0x7eb5b830 # 05b0c -.long 0x48000be4 # 05b10 -.long 0x7ec102a6 # 05b14 -.long 0x72d6007f # 05b18 -.long 0x53710428 # 05b1c -.long 0x5371e0c6 # 05b20 -.long 0x7f9bb000 # 05b24 -.long 0x41820c58 # 05b28 -.long 0x3ad6ffff # 05b2c -.long 0x7637001f # 05b30 -.long 0x52d12572 # 05b34 -.long 0x7ed6b0f8 # 05b38 -.long 0x52d1d10a # 05b3c -.long 0x7e539378 # 05b40 -.long 0x40820b84 # 05b44 -.long 0x52312ade # 05b48 -.long 0x48000b7c # 05b4c -.long 0x3a802b20 # 05b50 -.long 0x48000cd0 # 05b54 -.long 0x5652003c # 05b58 -.long 0x3a802c20 # 05b5c -.long 0x48000cc4 # 05b60 -.long 0x5652003a # 05b64 -.long 0x3a802d20 # 05b68 -.long 0x48000cb8 # 05b6c -.long 0x3ae1fd20 # 05b70 -.long 0x3a802720 # 05b74 -.long 0x5257073e # 05b78 -.long 0x9ab70000 # 05b7c -.long 0x48000c80 # 05b80 -.long 0x3ae1fd20 # 05b84 -.long 0x3a802820 # 05b88 -.long 0x5257073e # 05b8c -.long 0xb2b70000 # 05b90 -.long 0x48000c6c # 05b94 -.long 0x3ae1fd20 # 05b98 -.long 0x3a802920 # 05b9c -.long 0x5257073e # 05ba0 -.long 0x92b70000 # 05ba4 -.long 0x48000c58 # 05ba8 - -major_0x05808_0x3a4: /* < outside referer */ -lwz r1, -0x0004( r1) # 05bac -rlwinm r25, r25, 0, 0, 21 # 05bb0 -rlwimi r25, r19, 1, 28, 30 # 05bb4 -rlwimi r25, r17, 4, 23, 27 # 05bb8 -lha r22, 0x0c00(r25) # 05bbc -addi r23, r1, 0x4e0 # 05bc0 -add r22, r22, r25 # 05bc4 -mfspr r1, 272/*sprg0*/ # 05bc8 -mtlr r22 # 05bcc -ori r15, r15, 0x4000 # 05bd0 -mtspr 275/*sprg3*/, r23 # 05bd4 -mtmsr r15 # 05bd8 -isync # 05bdc -rlwimi r25, r26, 2, 22, 29 # 05be0 -bnelr- # 05be4 -b major_0x05808_0x114 # 05be8 -.long 0x8af3fff8 # 05bec -.long 0x3a31fffe # 05bf0 -.long 0x52f4c00e # 05bf4 -.long 0xa2f3fff9 # 05bf8 -.long 0x3a31fffc # 05bfc -.long 0x52f4422e # 05c00 -.long 0x48000010 # 05c04 -.long 0x8af3fffa # 05c08 -.long 0x3a31fffe # 05c0c -.long 0x52f4442e # 05c10 -.long 0x82f3fffb # 05c14 -.long 0x3a31fff8 # 05c18 -.long 0x52f4463e # 05c1c -.long 0x52f5402e # 05c20 -.long 0x4800006c # 05c24 -.long 0x8af3fff8 # 05c28 -.long 0x3a31fffe # 05c2c -.long 0x52f4c00e # 05c30 -.long 0x82f3fff9 # 05c34 -.long 0x3a31fff8 # 05c38 -.long 0x52f4c23e # 05c3c -.long 0x52f5c00e # 05c40 -.long 0x48000030 # 05c44 -.long 0x8af3fffa # 05c48 -.long 0x3a31fffe # 05c4c -.long 0x52f4442e # 05c50 -.long 0xa2f3fffb # 05c54 -.long 0x3a31fffc # 05c58 -.long 0x52f4c63e # 05c5c -.long 0x52f5c00e # 05c60 -.long 0x48000010 # 05c64 -.long 0x8af3fffc # 05c68 -.long 0x3a31fffe # 05c6c -.long 0x52f5c00e # 05c70 -.long 0xa2f3fffd # 05c74 -.long 0x3a31fffc # 05c78 -.long 0x52f5422e # 05c7c -.long 0x48000010 # 05c80 -.long 0x8af3fffe # 05c84 -.long 0x3a31fffe # 05c88 -.long 0x52f5442e # 05c8c -.long 0x8af3ffff # 05c90 -.long 0x52f5063e # 05c94 -.long 0x4bfffc84 # 05c98 -.long 0xa2f3fff8 # 05c9c -.long 0x3a31fffc # 05ca0 -.long 0x52f4801e # 05ca4 -.long 0x48000010 # 05ca8 -.long 0x8af3fff9 # 05cac -.long 0x3a31fffe # 05cb0 -.long 0x52f4821e # 05cb4 -.long 0x82f3fffa # 05cb8 -.long 0x3a31fff8 # 05cbc -.long 0x52f4843e # 05cc0 -.long 0x52f5801e # 05cc4 -.long 0x4bfffc4c # 05cc8 -.long 0x8af3fffb # 05ccc -.long 0x3a31fffe # 05cd0 -.long 0x52f4063e # 05cd4 -.long 0x4bfffc30 # 05cd8 -.long 0x8af3fffd # 05cdc -.long 0x3a31fffe # 05ce0 -.long 0x52f5821e # 05ce4 -.long 0x4bfffc2c # 05ce8 -.long 0x8293fff8 # 05cec -.long 0x3a31fff8 # 05cf0 -.long 0x82b3fffc # 05cf4 -.long 0x4bfffc24 # 05cf8 -.long 0x8af3fff9 # 05cfc -.long 0x3a31fffe # 05d00 -.long 0x52f4821e # 05d04 -.long 0xa2f3fffa # 05d08 -.long 0x3a31fffc # 05d0c -.long 0x52f4043e # 05d10 -.long 0x82b3fffc # 05d14 -.long 0x4bfffc04 # 05d18 -.long 0x8af3fffb # 05d1c -.long 0x3a31fffe # 05d20 -.long 0x52f4063e # 05d24 -.long 0x82b3fffc # 05d28 -.long 0x4bfffbf0 # 05d2c -.long 0x4197000c # 05d30 -.long 0x82b3fffc # 05d34 -.long 0x4bfffbe4 # 05d38 -.long 0x3ae0fffc # 05d3c -.long 0x7eb79828 # 05d40 -.long 0x4bfffbd8 # 05d44 -.long 0x8293fff8 # 05d48 -.long 0x82b3fffc # 05d4c -.long 0x4bfffbcc # 05d50 -.long 0x5737002a # 05d54 -.long 0x52377638 # 05d58 -.long 0x3af72620 # 05d5c -.long 0x7ee803a6 # 05d60 -.long 0x7e579378 # 05d64 -.long 0x656b0200 # 05d68 -.long 0x4e800020 # 05d6c -.long 0x5697463e # 05d70 -.long 0x9af3fff8 # 05d74 -.long 0x3a31fffe # 05d78 -.long 0x5697c23e # 05d7c -.long 0xb2f3fff9 # 05d80 -.long 0x3a31fffc # 05d84 -.long 0x48000010 # 05d88 -.long 0x5697c23e # 05d8c -.long 0x9af3fffa # 05d90 -.long 0x3a31fffe # 05d94 -.long 0x56b7c23e # 05d98 -.long 0x5297c00e # 05d9c -.long 0x92f3fffb # 05da0 -.long 0x3a31fff8 # 05da4 -.long 0x9ab3ffff # 05da8 -.long 0x4bfffb70 # 05dac -.long 0x5697463e # 05db0 -.long 0x9af3fff8 # 05db4 -.long 0x3a31fffe # 05db8 -.long 0x56b7463e # 05dbc -.long 0x5297402e # 05dc0 -.long 0x92f3fff9 # 05dc4 -.long 0x3a31fff8 # 05dc8 -.long 0x48000030 # 05dcc -.long 0x5697c23e # 05dd0 -.long 0x9af3fffa # 05dd4 -.long 0x3a31fffe # 05dd8 -.long 0x56b7463e # 05ddc -.long 0x5297442e # 05de0 -.long 0xb2f3fffb # 05de4 -.long 0x3a31fffc # 05de8 -.long 0x48000010 # 05dec -.long 0x56b7463e # 05df0 -.long 0x9af3fffc # 05df4 -.long 0x3a31fffe # 05df8 -.long 0x56b7c23e # 05dfc -.long 0xb2f3fffd # 05e00 -.long 0x3a31fffc # 05e04 -.long 0x9ab3ffff # 05e08 -.long 0x4bfffb10 # 05e0c -.long 0x56b7c23e # 05e10 -.long 0x9af3fffe # 05e14 -.long 0x3a31fffe # 05e18 -.long 0x9ab3ffff # 05e1c -.long 0x4bfffafc # 05e20 -.long 0x5697843e # 05e24 -.long 0xb2f3fff8 # 05e28 -.long 0x3a31fffc # 05e2c -.long 0x48000010 # 05e30 -.long 0x5697843e # 05e34 -.long 0x9af3fff9 # 05e38 -.long 0x3a31fffe # 05e3c -.long 0x56b7843e # 05e40 -.long 0x5297801e # 05e44 -.long 0x92f3fffa # 05e48 -.long 0x3a31fff8 # 05e4c -.long 0xb2b3fffe # 05e50 -.long 0x4bfffac8 # 05e54 -.long 0x9a93fffb # 05e58 -.long 0x3a31fffe # 05e5c -.long 0x4bfffa94 # 05e60 -.long 0x56b7843e # 05e64 -.long 0x9af3fffd # 05e68 -.long 0x3a31fffe # 05e6c -.long 0xb2b3fffe # 05e70 -.long 0x4bfffaa8 # 05e74 -.long 0x9293fff8 # 05e78 -.long 0x3a31fff8 # 05e7c -.long 0x92b3fffc # 05e80 -.long 0x4bfffa98 # 05e84 -.long 0x5697843e # 05e88 -.long 0x9af3fff9 # 05e8c -.long 0x3a31fffe # 05e90 -.long 0xb293fffa # 05e94 -.long 0x3a31fffc # 05e98 -.long 0x92b3fffc # 05e9c -.long 0x4bfffa7c # 05ea0 -.long 0x9a93fffb # 05ea4 -.long 0x3a31fffe # 05ea8 -.long 0x92b3fffc # 05eac -.long 0x4bfffa6c # 05eb0 -.long 0x4197000c # 05eb4 -.long 0x92b3fffc # 05eb8 -.long 0x4bfffa60 # 05ebc -.long 0x3ae0fffc # 05ec0 -.long 0x7eb7992d # 05ec4 -.long 0x4c00012c # 05ec8 -.long 0x7ee00026 # 05ecc -.long 0x52ed0006 # 05ed0 -.long 0x4bfffa48 # 05ed4 -.long 0x9293fff8 # 05ed8 -.long 0x92b3fffc # 05edc -.long 0x4bfffa3c # 05ee0 -.long 0x5737002a # 05ee4 -.long 0x52377638 # 05ee8 -.long 0x3af72a20 # 05eec -.long 0x7ee803a6 # 05ef0 -.long 0x7e579378 # 05ef4 -.long 0x656b0200 # 05ef8 -.long 0x4e800020 # 05efc - - - -/*********************************************************** - - major_0x05f00 - -***********************************************************/ - -.align 8 # 05f00 - -.long 0x48000100 # 05f00 -.long 0x60000000 # 05f04 -.long 0x60000000 # 05f08 -.long 0x60000000 # 05f0c -.long 0x60000000 # 05f10 -.long 0x60000000 # 05f14 -.long 0x60000000 # 05f18 -.long 0x60000000 # 05f1c -.long 0x60000000 # 05f20 -.long 0x60000000 # 05f24 -.long 0x60000000 # 05f28 -.long 0x60000000 # 05f2c -.long 0x60000000 # 05f30 -.long 0x60000000 # 05f34 -.long 0x60000000 # 05f38 -.long 0x60000000 # 05f3c -.long 0x60000000 # 05f40 -.long 0x60000000 # 05f44 -.long 0x60000000 # 05f48 -.long 0x60000000 # 05f4c -.long 0x60000000 # 05f50 -.long 0x60000000 # 05f54 -.long 0x60000000 # 05f58 -.long 0x60000000 # 05f5c -.long 0x60000000 # 05f60 -.long 0x60000000 # 05f64 -.long 0x60000000 # 05f68 -.long 0x60000000 # 05f6c -.long 0x60000000 # 05f70 -.long 0x60000000 # 05f74 -.long 0x60000000 # 05f78 -.long 0x60000000 # 05f7c -.long 0x60000000 # 05f80 -.long 0x60000000 # 05f84 -.long 0x60000000 # 05f88 -.long 0x60000000 # 05f8c -.long 0x60000000 # 05f90 -.long 0x60000000 # 05f94 -.long 0x60000000 # 05f98 -.long 0x60000000 # 05f9c -.long 0x60000000 # 05fa0 -.long 0x60000000 # 05fa4 -.long 0x60000000 # 05fa8 -.long 0x60000000 # 05fac -.long 0x60000000 # 05fb0 -.long 0x60000000 # 05fb4 -.long 0x60000000 # 05fb8 -.long 0x60000000 # 05fbc -.long 0x60000000 # 05fc0 -.long 0x60000000 # 05fc4 -.long 0x60000000 # 05fc8 -.long 0x60000000 # 05fcc -.long 0x60000000 # 05fd0 -.long 0x60000000 # 05fd4 -.long 0x60000000 # 05fd8 -.long 0x60000000 # 05fdc -.long 0x60000000 # 05fe0 -.long 0x60000000 # 05fe4 -.long 0x60000000 # 05fe8 -.long 0x60000000 # 05fec -.long 0x60000000 # 05ff0 -.long 0x60000000 # 05ff4 -.long 0x60000000 # 05ff8 -.long 0x60000000 # 05ffc - - - -/*********************************************************** - - major_0x06000 - -************************************************************ - -Xrefs: -major_0x032c0 -major_0x06a14 -major_0x07658 - -***********************************************************/ - -.align 13 # 06000 - -.long 0x25402e54 # 06000 -.long 0x45500001 # 06004 -.long 0x07f00001 # 06008 -.long 0x07f00001 # 0600c -.long 0x07f00001 # 06010 -.long 0x07f00001 # 06014 -.long 0x07f00001 # 06018 -.long 0x07f00001 # 0601c -.long 0x07f00001 # 06020 -.long 0x07f00001 # 06024 -.long 0x07f00001 # 06028 -.long 0x07f00001 # 0602c -.long 0x44303954 # 06030 -.long 0x24603954 # 06034 -.long 0x41303757 # 06038 -.long 0x07f00001 # 0603c -.long 0x07f00001 # 06040 -.long 0x07f00001 # 06044 -.long 0x07f00001 # 06048 -.long 0x07f00001 # 0604c -.long 0x07f00001 # 06050 -.long 0x07f00001 # 06054 -.long 0x07f00001 # 06058 -.long 0x07f00001 # 0605c -.long 0x07f00001 # 06060 -.long 0x07f00001 # 06064 -.long 0x07f00001 # 06068 -.long 0x07f00001 # 0606c -.long 0x44303a54 # 06070 -.long 0x45b30001 # 06074 -.long 0x41302957 # 06078 -.long 0x41f20001 # 0607c -.long 0x44303954 # 06080 -.long 0x07f00001 # 06084 -.long 0x41303757 # 06088 -.long 0x07f00001 # 0608c -.long 0x268bc5bf # 06090 -.long 0x24603954 # 06094 -.long 0x07f00001 # 06098 -.long 0x07f00001 # 0609c -.long 0x260bacb9 # 060a0 -.long 0x260fa7b9 # 060a4 -.long 0x224298a1 # 060a8 -.long 0x224e95a1 # 060ac -.long 0x07f00001 # 060b0 -.long 0x07f00001 # 060b4 -.long 0x07f00001 # 060b8 -.long 0x07f00001 # 060bc -.long 0x44303a54 # 060c0 -.long 0x07f00001 # 060c4 -.long 0x41302957 # 060c8 -.long 0x07f00001 # 060cc -.long 0x07f00001 # 060d0 -.long 0x24603a57 # 060d4 -.long 0x07f00001 # 060d8 -.long 0x07f00001 # 060dc -.long 0x07f00001 # 060e0 -.long 0x07f00001 # 060e4 -.long 0x07f00001 # 060e8 -.long 0x07f00001 # 060ec -.long 0x07f00001 # 060f0 -.long 0x07f00001 # 060f4 -.long 0x07f00001 # 060f8 -.long 0x07f00001 # 060fc -.long 0x07f00001 # 06100 -.long 0x0fe23a8f # 06104 -.long 0x21602c57 # 06108 -.long 0x41700001 # 0610c -.long 0x0fe23a8f # 06110 -.long 0x07f00001 # 06114 -.long 0x07f00001 # 06118 -.long 0x07f00001 # 0611c -.long 0x24a23a59 # 06120 -.long 0x07f00001 # 06124 -.long 0x21202257 # 06128 -.long 0x07f00001 # 0612c -.long 0x14923a58 # 06130 -.long 0x07f00001 # 06134 -.long 0x11102557 # 06138 -.long 0x0fe23a8f # 0613c -.long 0x07f00001 # 06140 -.long 0x07f00001 # 06144 -.long 0x07f00001 # 06148 -.long 0x0fe23a8f # 0614c -.long 0x07f03993 # 06150 -.long 0x07f00001 # 06154 -.long 0x03f03793 # 06158 -.long 0x07f00001 # 0615c -.long 0x07f00001 # 06160 -.long 0x07f00001 # 06164 -.long 0x07f00001 # 06168 -.long 0x07f00001 # 0616c -.long 0x07f00001 # 06170 -.long 0x07f00001 # 06174 -.long 0x07f00001 # 06178 -.long 0x43027e83 # 0617c -.long 0x0f5039dc # 06180 -.long 0x277035e6 # 06184 -.long 0x0b90d457 # 06188 -.long 0x23b0d957 # 0618c -.long 0x14103954 # 06190 -.long 0x14503953 # 06194 -.long 0x11103757 # 06198 -.long 0x25a33a69 # 0619c -.long 0x24e0395d # 061a0 -.long 0x44f0395e # 061a4 -.long 0x21200257 # 061a8 -.long 0x41300557 # 061ac -.long 0x07f00001 # 061b0 -.long 0x07f00001 # 061b4 -.long 0x07f00001 # 061b8 -.long 0x21200557 # 061bc -.long 0x176033e1 # 061c0 -.long 0x87403057 # 061c4 -.long 0x23a0d657 # 061c8 -.long 0x83803057 # 061cc -.long 0x14103a54 # 061d0 -.long 0x87403057 # 061d4 -.long 0x11102957 # 061d8 -.long 0x83803057 # 061dc -.long 0x24e03a5d # 061e0 -.long 0x44f03a5e # 061e4 -.long 0x21200357 # 061e8 -.long 0x41300657 # 061ec -.long 0x07f00001 # 061f0 -.long 0x07f00001 # 061f4 -.long 0x07f00001 # 061f8 -.long 0x07f00001 # 061fc -.long 0x25402e54 # 06200 -.long 0x45500001 # 06204 -.long 0x07f00001 # 06208 -.long 0x07f00001 # 0620c -.long 0x07f00001 # 06210 -.long 0x07f00001 # 06214 -.long 0x07f00001 # 06218 -.long 0x07f00001 # 0621c -.long 0x07f00001 # 06220 -.long 0x07f00001 # 06224 -.long 0x07f00001 # 06228 -.long 0x07f00001 # 0622c -.long 0x44303954 # 06230 -.long 0x24603954 # 06234 -.long 0x41303757 # 06238 -.long 0x07f00001 # 0623c -.long 0x07f00001 # 06240 -.long 0x07f00001 # 06244 -.long 0x07f00001 # 06248 -.long 0x07f00001 # 0624c -.long 0x07f00001 # 06250 -.long 0x07f00001 # 06254 -.long 0x07f00001 # 06258 -.long 0x07f00001 # 0625c -.long 0x07f00001 # 06260 -.long 0x07f00001 # 06264 -.long 0x07f00001 # 06268 -.long 0x07f00001 # 0626c -.long 0x44303a54 # 06270 -.long 0x45b30001 # 06274 -.long 0x41302957 # 06278 -.long 0x41f20001 # 0627c -.long 0x44303954 # 06280 -.long 0x07f00001 # 06284 -.long 0x41303757 # 06288 -.long 0x07f00001 # 0628c -.long 0x268bc5bf # 06290 -.long 0x24603954 # 06294 -.long 0x07f00001 # 06298 -.long 0x07f00001 # 0629c -.long 0x260bacb9 # 062a0 -.long 0x260fa7b9 # 062a4 -.long 0x224298a1 # 062a8 -.long 0x224e95a1 # 062ac -.long 0x07f00001 # 062b0 -.long 0x07f00001 # 062b4 -.long 0x07f00001 # 062b8 -.long 0x07f00001 # 062bc -.long 0x44303a54 # 062c0 -.long 0x07f00001 # 062c4 -.long 0x41302957 # 062c8 -.long 0x07f00001 # 062cc -.long 0x07f00001 # 062d0 -.long 0x24603a57 # 062d4 -.long 0x07f00001 # 062d8 -.long 0x07f00001 # 062dc -.long 0x07f00001 # 062e0 -.long 0x07f00001 # 062e4 -.long 0x07f00001 # 062e8 -.long 0x07f00001 # 062ec -.long 0x07f00001 # 062f0 -.long 0x07f00001 # 062f4 -.long 0x07f00001 # 062f8 -.long 0x07f00001 # 062fc -.long 0x07f00001 # 06300 -.long 0x0fe23a8f # 06304 -.long 0x21602c57 # 06308 -.long 0x41700001 # 0630c -.long 0x0fe23a8f # 06310 -.long 0x07f00001 # 06314 -.long 0x07f00001 # 06318 -.long 0x07f00001 # 0631c -.long 0x24a23a59 # 06320 -.long 0x07f00001 # 06324 -.long 0x21202257 # 06328 -.long 0x07f00001 # 0632c -.long 0x14923a58 # 06330 -.long 0x07f00001 # 06334 -.long 0x11102557 # 06338 -.long 0x0fe23a8f # 0633c -.long 0x0fe23a8f # 06340 -.long 0x07f00001 # 06344 -.long 0x07f00001 # 06348 -.long 0x0fe23a8f # 0634c -.long 0x07f03993 # 06350 -.long 0x07f00001 # 06354 -.long 0x03f03793 # 06358 -.long 0x07f00001 # 0635c -.long 0x07f00001 # 06360 -.long 0x07f00001 # 06364 -.long 0x07f00001 # 06368 -.long 0x07f00001 # 0636c -.long 0x07f00001 # 06370 -.long 0x07f00001 # 06374 -.long 0x07f00001 # 06378 -.long 0x43027e83 # 0637c -.long 0x24203954 # 06380 -.long 0x0c003954 # 06384 -.long 0x21203757 # 06388 -.long 0x09003757 # 0638c -.long 0x14103954 # 06390 -.long 0x14503953 # 06394 -.long 0x11103757 # 06398 -.long 0x25a33a69 # 0639c -.long 0x24e0395d # 063a0 -.long 0x44f0395e # 063a4 -.long 0x21200257 # 063a8 -.long 0x41300557 # 063ac -.long 0x07f00001 # 063b0 -.long 0x07f00001 # 063b4 -.long 0x07f00001 # 063b8 -.long 0x21200557 # 063bc -.long 0x24203a54 # 063c0 -.long 0x0c003a54 # 063c4 -.long 0x21202957 # 063c8 -.long 0x09002957 # 063cc -.long 0x14103a54 # 063d0 -.long 0x14503a53 # 063d4 -.long 0x11102957 # 063d8 -.long 0x21e22976 # 063dc -.long 0x24e03a5d # 063e0 -.long 0x44f03a5e # 063e4 -.long 0x21200357 # 063e8 -.long 0x41300657 # 063ec -.long 0x07f00001 # 063f0 -.long 0x07f00001 # 063f4 -.long 0x07f00001 # 063f8 -.long 0x07f00001 # 063fc -.long 0x06e406e2 # 06400 -.long 0x06e006de # 06404 -.long 0x06dc06da # 06408 -.long 0x06d806d6 # 0640c -.long 0x05440542 # 06410 -.long 0x0540053e # 06414 -.long 0x053c053a # 06418 -.long 0x05380536 # 0641c -.long 0x05fc05fa # 06420 -.long 0x05f805f6 # 06424 -.long 0x05f405f2 # 06428 -.long 0x05f005ee # 0642c -.long 0x0460045e # 06430 -.long 0x045c045a # 06434 -.long 0x04580456 # 06438 -.long 0x04540452 # 0643c -.long 0x063005ce # 06440 -.long 0x062c05ca # 06444 -.long 0x062805c6 # 06448 -.long 0x062405c2 # 0644c -.long 0x00c40432 # 06450 -.long 0x00c0042e # 06454 -.long 0x00bc042a # 06458 -.long 0x00b80426 # 0645c -.long 0x0604059a # 06460 -.long 0x06000596 # 06464 -.long 0x05fc0592 # 06468 -.long 0x05f8058e # 0646c -.long 0x046c0402 # 06470 -.long 0x046803fe # 06474 -.long 0x046403fa # 06478 -.long 0x046003f6 # 0647c -.long 0x0634056e # 06480 -.long 0x0070056a # 06484 -.long 0x062c0566 # 06488 -.long 0x00680562 # 0648c -.long 0x04a003d6 # 06490 -.long 0x007403d2 # 06494 -.long 0x049803ce # 06498 -.long 0x006c03ca # 0649c -.long 0x060404f6 # 064a0 -.long 0x05b40536 # 064a4 -.long 0x05fc04ee # 064a8 -.long 0x05ac052e # 064ac -.long 0x046c0362 # 064b0 -.long 0x0418039e # 064b4 -.long 0x0464035a # 064b8 -.long 0x04100396 # 064bc -.long 0x05d404ca # 064c0 -.long 0x057c050a # 064c4 -.long 0x05cc04c2 # 064c8 -.long 0x05740502 # 064cc -.long 0x04380336 # 064d0 -.long 0x03e40372 # 064d4 -.long 0x0430032e # 064d8 -.long 0x03dc036a # 064dc -.long 0x05a8049a # 064e0 -.long 0x055004d6 # 064e4 -.long 0x05a00492 # 064e8 -.long 0x054804ce # 064ec -.long 0x040c0306 # 064f0 -.long 0x03b8033e # 064f4 -.long 0x040402fe # 064f8 -.long 0x03b00336 # 064fc -.long 0x05d8046e # 06500 -.long 0x052004aa # 06504 -.long 0x05700466 # 06508 -.long 0x051804a2 # 0650c -.long 0x043802da # 06510 -.long 0x03880312 # 06514 -.long 0x03d402d2 # 06518 -.long 0x0380030a # 0651c -.long 0x01540154 # 06520 -.long 0x01540154 # 06524 -.long 0x01010153 # 06528 -.long 0x01540101 # 0652c -.long 0x01010358 # 06530 -.long 0x03590101 # 06534 -.long 0x01010101 # 06538 -.long 0x015d015e # 0653c -.long 0x01570157 # 06540 -.long 0x01570157 # 06544 -.long 0x01540101 # 06548 -.long 0x01570101 # 0654c -.long 0x01010101 # 06550 -.long 0x03690301 # 06554 -.long 0x01010101 # 06558 -.long 0x03760301 # 0655c -.long 0x03b903b9 # 06560 -.long 0x03b903b9 # 06564 -.long 0x03a103a1 # 06568 -.long 0x03a103a1 # 0656c -.long 0x03bf03bf # 06570 -.long 0x03bf03bf # 06574 -.long 0x03bf03bf # 06578 -.long 0x03bf03bf # 0657c -.long 0x03830101 # 06580 -.long 0x01010101 # 06584 -.long 0x015701dc # 06588 -.long 0x01e101e6 # 0658c -.long 0x01570157 # 06590 -.long 0x01570157 # 06594 -.long 0x01010101 # 06598 -.long 0x038f0193 # 0659c - -major_0x06000_0x5a0: /* < outside referer */ -li r0, -0x03 # 065a0 -sc # 065a4 -andi. r23, r16, 0x20 # 065a8 -addi r10, r10, 0x04 # 065ac -mfspr r1, 272/*sprg0*/ # 065b0 -mtspr 26/*srr0*/, r10 # 065b4 -mtspr 27/*srr1*/, r11 # 065b8 -bne- major_0x06000_0x630 # 065bc -mtlr r12 # 065c0 -bns- cr3, major_0x06000_0x5fc # 065c4 - -major_0x06000_0x5c8: /* < outside referer */ -mtcr r13 # 065c8 -lmw r2, 0x0008( r1) # 065cc -lwz r0, 0x0000( r1) # 065d0 -lwz r1, 0x0004( r1) # 065d4 -rfi # 065d8 -.long 0 # 065dc -.long 0 # 065e0 -.long 0 # 065e4 -.long 0 # 065e8 -.long 0 # 065ec -.long 0 # 065f0 -.long 0 # 065f4 -.long 0 # 065f8 - -major_0x06000_0x5fc: -mtcr r13 # 065fc -lmw r10, 0x0028( r1) # 06600 -lwz r0, 0x0000( r1) # 06604 -lwz r1, 0x0004( r1) # 06608 -rfi # 0660c -.long 0 # 06610 -.long 0 # 06614 -.long 0 # 06618 -.long 0 # 0661c -.long 0 # 06620 -.long 0 # 06624 -.long 0 # 06628 -.long 0 # 0662c - -major_0x06000_0x630: /* < outside referer */ -mfspr r24, 275/*sprg3*/ # 06630 -mtspr 274/*sprg2*/, r12 # 06634 -rlwinm r16, r16, 0, 27, 25 # 06638 -lwz r12, 0x0034(r24) # 0663c -stw r16, -0x0010( r1) # 06640 -mtcr r13 # 06644 -mtlr r12 # 06648 -lmw r2, 0x0008( r1) # 0664c -lwz r0, 0x0000( r1) # 06650 -lwz r1, 0x0004( r1) # 06654 -mtspr 273/*sprg1*/, r1 # 06658 -blrl # 0665c -andi. r23, r17, 0x7c0 # 06660 -rlwinm r28, r17, 13, 25, 29 # 06664 -lwzx r21, r1, r28 # 06668 -li r22, 0x08 # 0666c -rlwimi r17, r22, 0, 26, 31 # 06670 -addi r19, r19, 0x04 # 06674 -bne+ major_0x05808_0x3a4 # 06678 -rlwinm r22, r17, 9, 27, 28 # 0667c -srw r21, r21, r22 # 06680 -rlwinm r22, r17, 6, 30, 31 # 06684 -neg r22, r22 # 06688 -add r19, r19, r22 # 0668c -addi r22, r22, 0x04 # 06690 -rlwimi. r17, r22, 1, 26, 30 # 06694 -b major_0x05808_0x3a4 # 06698 -.long 0x5637967a # 0669c -.long 0x7f9cb800 # 066a0 -.long 0x5637be7a # 066a4 -.long 0x7f1cb800 # 066a8 -.long 0x419e000c # 066ac -.long 0x419a0008 # 066b0 -.long 0x7ea1e12e # 066b4 -.long 0x3f910020 # 066b8 -.long 0x53910194 # 066bc -.long 0x3a31ffc0 # 066c0 -.long 0x4182fedc # 066c4 -.long 0x723707c0 # 066c8 -.long 0x3ac00009 # 066cc -.long 0x52d106be # 066d0 -.long 0x3a730004 # 066d4 -.long 0x4082f4d4 # 066d8 -.long 0x563637be # 066dc -.long 0x7ed600d0 # 066e0 -.long 0x7e73b214 # 066e4 -.long 0x3ad60004 # 066e8 -.long 0x52d10ebd # 066ec -.long 0x4bfff4bc # 066f0 -.long 0x5637967a # 066f4 -.long 0x7f9cb800 # 066f8 -.long 0x5637be7a # 066fc -.long 0x7f1cb800 # 06700 -.long 0x419e000c # 06704 -.long 0x419a0008 # 06708 -.long 0x7ea1e12e # 0670c -.long 0x3f910020 # 06710 -.long 0x53910194 # 06714 -.long 0x3a31ffc0 # 06718 -.long 0x7ed6b0f8 # 0671c -.long 0x523637be # 06720 -.long 0x3b800001 # 06724 -.long 0x7ee102a6 # 06728 -.long 0x56f7c63e # 0672c -.long 0x56b4463e # 06730 -.long 0x7f94b800 # 06734 -.long 0x7ed6e215 # 06738 -.long 0x419e0044 # 0673c -.long 0x41820040 # 06740 -.long 0x56b4863e # 06744 -.long 0x7f94b800 # 06748 -.long 0x7ed6e215 # 0674c -.long 0x419e0030 # 06750 -.long 0x4182002c # 06754 -.long 0x56b4c63e # 06758 -.long 0x7f94b800 # 0675c -.long 0x7ed6e215 # 06760 -.long 0x419e001c # 06764 -.long 0x41820018 # 06768 -.long 0x56b4063e # 0676c -.long 0x7f94b800 # 06770 -.long 0x7ed6e215 # 06774 -.long 0x419e0008 # 06778 -.long 0x4082ff4c # 0677c -.long 0x563c00c7 # 06780 -.long 0x7ee102a6 # 06784 -.long 0x7ed6ba14 # 06788 -.long 0x52d7067e # 0678c -.long 0x7ee103a6 # 06790 -.long 0x4182fe0c # 06794 -.long 0x7ee00026 # 06798 -.long 0x56f707be # 0679c -.long 0x52ede006 # 067a0 -.long 0x4bfffdfc # 067a4 -.long 0x56b40000 # 067a8 -.long 0x7e95aa79 # 067ac -.long 0x4182f1c8 # 067b0 -.long 0x56b78471 # 067b4 -.long 0x3af70080 # 067b8 -.long 0x52b4e97e # 067bc -.long 0x7ef70734 # 067c0 -.long 0x52b40042 # 067c4 -.long 0x56b5e804 # 067c8 -.long 0x3af7bf80 # 067cc -.long 0x52f40088 # 067d0 -.long 0x4082f1a4 # 067d4 -.long 0x56b5653e # 067d8 -.long 0x52956026 # 067dc -.long 0x7eb70034 # 067e0 -.long 0x7eb5b830 # 067e4 -.long 0x7ef700d0 # 067e8 -.long 0x52b4ab3e # 067ec -.long 0x3af70380 # 067f0 -.long 0x56b5a814 # 067f4 -.long 0x52f4a056 # 067f8 -.long 0x4bfff17c # 067fc -.long 0x5735002a # 06800 -.long 0x52357638 # 06804 -.long 0x516e018c # 06808 -.long 0x7eb5a214 # 0680c -.long 0x7dc00124 # 06810 -.long 0x7ea803a6 # 06814 -.long 0x4c00012c # 06818 -.long 0x656b0200 # 0681c -.long 0x4e800020 # 06820 -.long 0x5733002a # 06824 -.long 0x52337638 # 06828 -.long 0x7e73a214 # 0682c -.long 0x7e6803a6 # 06830 -.long 0x516e018c # 06834 -.long 0x3ae1fd20 # 06838 -.long 0x7dc00124 # 0683c -.long 0x5257073e # 06840 -.long 0x4c00012c # 06844 -.long 0x4e800020 # 06848 -.long 0x656b0200 # 0684c -.long 0x8ab70000 # 06850 -.long 0x4bfff090 # 06854 -.long 0x656b0200 # 06858 -.long 0xa2b70000 # 0685c -.long 0x4bfff084 # 06860 -.long 0x656b0200 # 06864 -.long 0x82b70000 # 06868 -.long 0x4bfff078 # 0686c - - - -/*********************************************************** - - major_0x06870 - -************************************************************ - -Mess with some whacko undocumented SPRs. QEMU complains. Called by setup. Boots fine if clobbered? Temporarily overwrites a KDP vector with a dummy handler. Knowing what vec[7] does will help. - -************************************************************ - -Xrefs: -setup - -***********************************************************/ - -.align 4 # 06870 - -major_0x06870: /* < outside referer */ -li r23, 0x00 # 06870 -lwz r21, 0x064c( r1) # 06874 -lwz r20, 0x037c( r1) # 06878 -lis r18, return_to_kern_from_dummy_interrupt@h -ori r18, r18, return_to_kern_from_dummy_interrupt@l -add r21, r18, r21 # 06884 -stw r21, 0x037c( r1) # 06888 -li r18, 0x00 # 0688c -mtspr 0x3b8, r18 # 06890 -not r19, r18 # 06894 -mfspr r19, 0x3b8 # 06898 -xor r17, r18, r19 # 0689c -mtspr 0x3b9, r18 # 068a0 -not r19, r18 # 068a4 -mfspr r19, 0x3b9 # 068a8 -xor r19, r18, r19 # 068ac -or r17, r17, r19 # 068b0 -mtspr 0x3ba, r18 # 068b4 -not r19, r18 # 068b8 -mfspr r19, 0x3ba # 068bc -xor r19, r18, r19 # 068c0 -or r17, r17, r19 # 068c4 -mtspr 0x3bb, r18 # 068c8 -not r19, r18 # 068cc -mfspr r19, 0x3bb # 068d0 -xor r19, r18, r19 # 068d4 -or. r17, r17, r19 # 068d8 -bne- major_0x06870_0x74 # 068dc -ori r23, r23, 0x01 # 068e0 - -major_0x06870_0x74: -mr. r23, r23 # 068e4 -beq- major_0x06870_0x10c # 068e8 -mtspr 0x3bc, r18 # 068ec -not r19, r18 # 068f0 -mfspr r19, 0x3bc # 068f4 -xor r17, r18, r19 # 068f8 -mtspr 0x3bd, r18 # 068fc -not r19, r18 # 06900 -mfspr r19, 0x3bd # 06904 -xor r19, r18, r19 # 06908 -or r17, r17, r19 # 0690c -mtspr 0x3be, r18 # 06910 -not r19, r18 # 06914 -mfspr r19, 0x3be # 06918 -xor r19, r18, r19 # 0691c -or. r17, r17, r19 # 06920 -bne- major_0x06870_0xbc # 06924 -ori r23, r23, 0x02 # 06928 - -major_0x06870_0xbc: -li r18, -0x5560 # 0692c -mtspr 0x3bf, r18 # 06930 -not r19, r18 # 06934 -mfspr r19, 0x3bf # 06938 -xor. r17, r18, r19 # 0693c -beq- major_0x06870_0xd8 # 06940 -ori r23, r23, 0x04 # 06944 - -major_0x06870_0xd8: -li r18, 0x00 # 06948 -mtspr 0x3b0, r18 # 0694c -not r19, r18 # 06950 -mfspr r19, 0x3b0 # 06954 -xor r17, r18, r19 # 06958 -li r18, 0x00 # 0695c -mtspr 0x3b7, r18 # 06960 -not r19, r18 # 06964 -mfspr r19, 0x3b7 # 06968 -xor r19, r18, r19 # 0696c -or. r17, r17, r19 # 06970 -bne- major_0x06870_0x10c # 06974 -ori r23, r23, 0x08 # 06978 - -major_0x06870_0x10c: -stw r20, 0x037c( r1) # 0697c -mr. r23, r23 # 06980 -stw r23, 0x05c0( r1) # 06984 -li r23, 0x00 # 06988 -oris r23, r23, 0x02 # 0698c -oris r23, r23, 0x01 # 06990 -beq- major_0x06870_0x12c # 06994 -ori r23, r23, 0x2000 # 06998 - -major_0x06870_0x12c: -stw r23, 0x05b8( r1) # 0699c -lis r20, -0x7fa8 # 069a0 -ori r20, r20, 0x7ff3 # 069a4 -lis r21, -0x29da # 069a8 -ori r21, r21, 0x11e3 # 069ac -lwz r19, 0x0f2c( r1) # 069b0 -cntlzw r23, r19 # 069b4 -slw r19, r19, r23 # 069b8 -cmpw cr1, r20, r19 # 069bc -addi r23, r23, 0x02 # 069c0 -xor. r24, r24, r24 # 069c4 -bge- cr1, major_0x06870_0x180 # 069c8 -addi r23, r23, -0x01 # 069cc - -major_0x06870_0x160: -cmpwi cr1, r20, 0x00 # 069d0 -slwi r20, r20, 1 # 069d4 -rlwimi r20, r21, 1, 31, 31 # 069d8 -cmplw cr2, r20, r19 # 069dc -rlwinm. r24, r24, 1, 0, 30 # 069e0 -slwi r21, r21, 1 # 069e4 -blt- cr1, major_0x06870_0x180 # 069e8 -blt- cr2, major_0x06870_0x188 # 069ec - -major_0x06870_0x180: -subf r20, r19, r20 # 069f0 -ori r24, r24, 0x01 # 069f4 - -major_0x06870_0x188: -bge+ major_0x06870_0x160 # 069f8 -stw r24, 0x05bc( r1) # 069fc -stb r23, 0x05b8( r1) # 06a00 -li r21, 0x20 # 06a04 -subf r21, r23, r21 # 06a08 -stb r21, 0x05bb( r1) # 06a0c -blr # 06a10 - - - -/*********************************************************** - - major_0x06a14 - -************************************************************ - -Xrefs: -major_0x04700 - -***********************************************************/ - -major_0x06a14: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 06a14 -lwz r8, 0x0104( r6) # 06a18 -stw r8, 0x0000( r1) # 06a1c -stw r2, 0x0008( r1) # 06a20 -stw r3, 0x000c( r1) # 06a24 -stw r4, 0x0010( r1) # 06a28 -stw r5, 0x0014( r1) # 06a2c -stmw r14, 0x0038( r1) # 06a30 -mr r16, r7 # 06a34 -lwz r7, 0x013c( r6) # 06a38 -stw r7, 0x001c( r1) # 06a3c -lwz r8, 0x0144( r6) # 06a40 -stw r8, 0x0020( r1) # 06a44 -lwz r9, 0x014c( r6) # 06a48 -stw r9, 0x0024( r1) # 06a4c -lwz r23, 0x0154( r6) # 06a50 -stw r23, 0x0028( r1) # 06a54 -lwz r23, 0x015c( r6) # 06a58 -stw r23, 0x002c( r1) # 06a5c -lwz r23, 0x0164( r6) # 06a60 -stw r23, 0x0030( r1) # 06a64 -lwz r23, 0x016c( r6) # 06a68 -stw r23, 0x0034( r1) # 06a6c -lwz r1, -0x0004( r1) # 06a70 -addi r22, r6, 0xc4 # 06a74 -lwz r23, 0x0ea0( r1) # 06a78 -lwz r25, 0x0650( r1) # 06a7c -addi r23, r23, 0x01 # 06a80 -stw r23, 0x0ea0( r1) # 06a84 -mfspr r24, 275/*sprg3*/ # 06a88 -addi r23, r1, 0x4e0 # 06a8c -mfmsr r14 # 06a90 -ori r15, r14, 0x10 # 06a94 -mtspr 275/*sprg3*/, r23 # 06a98 -mtmsr r15 # 06a9c -isync # 06aa0 -lwz r27, 0x0000(r10) # 06aa4 -mtmsr r14 # 06aa8 -isync # 06aac -mtspr 275/*sprg3*/, r24 # 06ab0 -srwi r23, r27, 26 # 06ab4 -cmpwi cr6, r23, 0x09 # 06ab8 -cmpwi r23, 0x16 # 06abc -cmpwi cr1, r23, 0x1f # 06ac0 -lwz r20, 0x05b8( r1) # 06ac4 -rlwinm r21, r16, 15, 14, 14 # 06ac8 -neg r21, r21 # 06acc -rlwimi r21, r16, 14, 16, 16 # 06ad0 -or r21, r21, r20 # 06ad4 -rlwimi r21, r27, 0, 21, 31 # 06ad8 -rlwimi r16, r16, 27, 26, 26 # 06adc -mfspr r1, 272/*sprg0*/ # 06ae0 -rlwinm r17, r27, 13, 25, 29 # 06ae4 -rlwinm r18, r27, 18, 25, 29 # 06ae8 -beq- cr6, major_0x06a14_0x2b4 # 06aec -mtcrf 0x3f, r21 # 06af0 -rlwinm r19, r27, 23, 25, 29 # 06af4 -beq- major_0x06a14_0x9bc # 06af8 -bne- cr1, major_0x06a14_0x110 # 06afc -rlwinm r21, r27, 2, 24, 28 # 06b00 -add r21, r21, r25 # 06b04 -lwz r20, 0x1374(r21) # 06b08 -rlwinm r23, r27, 26, 27, 31 # 06b0c -lwz r21, 0x1378(r21) # 06b10 -rotlw. r20, r20, r23 # 06b14 -add r21, r21, r25 # 06b18 -mtlr r21 # 06b1c -bltlr- # 06b20 - -major_0x06a14_0x110: -ble- cr1, major_0x06a14_0x124 # 06b24 -lis r20, 0x5556 # 06b28 -ori r20, r20, 0x5500 # 06b2c -rotlw. r20, r20, r23 # 06b30 -blt- major_0x06a14_0xa04 # 06b34 - -major_0x06a14_0x124: -mtcrf 0x70, r11 # 06b38 -li r8, 0x04 # 06b3c -ble- cr3, major_0x06a14_0x140 # 06b40 -mtcrf 0x0f, r11 # 06b44 -li r8, 0x04 # 06b48 -ble- cr4, major_0x06a14_0x140 # 06b4c -li r8, 0x05 # 06b50 - -major_0x06a14_0x140: -lwz r6, -0x0004( r1) # 06b54 -lwz r9, 0x0ea0( r6) # 06b58 -lmw r14, 0x0038( r1) # 06b5c -addi r9, r9, -0x01 # 06b60 -stw r9, 0x0ea0( r6) # 06b64 -lwz r6, -0x0014( r1) # 06b68 -lwz r7, -0x0010( r1) # 06b6c -b major_0x02980_0x134 # 06b70 -.long 0 # 06b74 -.long 0x00001338 # 06b78 -.long 0 # 06b7c -.long 0x00001338 # 06b80 -.long 0 # 06b84 -.long 0x00001338 # 06b88 -.long 0 # 06b8c -.long 0x00001338 # 06b90 -.long 0 # 06b94 -.long 0x00001338 # 06b98 -.long 0 # 06b9c -.long 0x00001338 # 06ba0 -.long 0 # 06ba4 -.long 0x00001338 # 06ba8 -.long 0 # 06bac -.long 0x00001338 # 06bb0 -.long 0x00910091 # 06bb4 -.long 0x0000148c # 06bb8 -.long 0 # 06bbc -.long 0x00001338 # 06bc0 -.long 0 # 06bc4 -.long 0x00001338 # 06bc8 -.long 0x10301030 # 06bcc -.long 0x0000151c # 06bd0 -.long 0 # 06bd4 -.long 0x00001338 # 06bd8 -.long 0 # 06bdc -.long 0x00001338 # 06be0 -.long 0 # 06be4 -.long 0x00001338 # 06be8 -.long 0 # 06bec -.long 0x00001338 # 06bf0 -.long 0 # 06bf4 -.long 0x00001338 # 06bf8 -.long 0 # 06bfc -.long 0x00001338 # 06c00 -.long 0 # 06c04 -.long 0x00001338 # 06c08 -.long 0x00328000 # 06c0c -.long 0x000016d0 # 06c10 -.long 0 # 06c14 -.long 0x00001338 # 06c18 -.long 0x0080a000 # 06c1c -.long 0x00001c18 # 06c20 -.long 0 # 06c24 -.long 0x00001338 # 06c28 -.long 0x55545502 # 06c2c -.long 0x00001c20 # 06c30 -.long 0x0f000f0c # 06c34 -.long 0x00001ad0 # 06c38 -.long 0x0a008a08 # 06c3c -.long 0x00001aa8 # 06c40 -.long 0 # 06c44 -.long 0x00001338 # 06c48 -.long 0 # 06c4c -.long 0x00001338 # 06c50 -.long 0 # 06c54 -.long 0x00001338 # 06c58 -.long 0x80008000 # 06c5c -.long 0x00001b8c # 06c60 -.long 0 # 06c64 -.long 0x00001338 # 06c68 -.long 0 # 06c6c -.long 0x00001338 # 06c70 -.long 0x92960000 # 06c74 -.long 0x409f000c # 06c78 -.long 0x7ee00026 # 06c7c -.long 0x52ed0006 # 06c80 - -major_0x06a14_0x270: -stwx r21, r1, r17 # 06c84 -b major_0x06000_0x5a0 # 06c88 -.long 0x408bfeac # 06c8c -.long 0x7e41902e # 06c90 -.long 0x40980058 # 06c94 -.long 0x41950018 # 06c98 -.long 0x7e559379 # 06c9c -.long 0x4ef70182 # 06ca0 -.long 0x4097ffd4 # 06ca4 -.long 0x7eb200d1 # 06ca8 -.long 0x4bffffcc # 06cac -.long 0x3aa00000 # 06cb0 -.long 0x7eb2ae15 # 06cb4 -.long 0x4ef70182 # 06cb8 -.long 0x4097ffbc # 06cbc -.long 0x7eb204d1 # 06cc0 -.long 0x4bffffb4 # 06cc4 - -major_0x06a14_0x2b4: -mtcrf 0x3f, r21 # 06cc8 -bns+ cr2, major_0x06a14_0x124 # 06ccc -lwzx r18, r1, r18 # 06cd0 -extsh r19, r27 # 06cd4 -cmpw cr1, r19, r18 # 06cd8 -subf r21, r21, r21 # 06cdc -blt+ cr1, major_0x06a14_0x270 # 06ce0 -subf r21, r18, r19 # 06ce4 -b major_0x06a14_0x270 # 06ce8 -.long 0x7e61982e # 06cec -.long 0x41950018 # 06cf0 -.long 0x7c939000 # 06cf4 -.long 0x7eb5a851 # 06cf8 -.long 0x4184ff7c # 06cfc -.long 0x7eb29851 # 06d00 -.long 0x4bffff74 # 06d04 -.long 0x7c939000 # 06d08 -.long 0x7eb5ac51 # 06d0c -.long 0x4184ff68 # 06d10 -.long 0x7eb29c51 # 06d14 -.long 0x4bffff60 # 06d18 -.long 0x4088fe1c # 06d1c -.long 0x7e61982e # 06d20 -.long 0x7e41902e # 06d24 -.long 0x40960190 # 06d28 -.long 0x2c930000 # 06d2c -.long 0x41990018 # 06d30 -.long 0x83160000 # 06d34 -.long 0x57150ffe # 06d38 -.long 0x7eb59215 # 06d3c -.long 0x40820050 # 06d40 -.long 0x7f12c378 # 06d44 -.long 0x2c13ffff # 06d48 -.long 0x41950028 # 06d4c -.long 0x41820018 # 06d50 -.long 0x4186002c # 06d54 -.long 0x7eb29bd6 # 06d58 -.long 0x7e9599d6 # 06d5c -.long 0x7e949051 # 06d60 -.long 0x4bffff10 # 06d64 -.long 0x7eb200d0 # 06d68 -.long 0x7e929051 # 06d6c -.long 0x4bffff04 # 06d70 -.long 0x7eb29fd6 # 06d74 -.long 0x4182fff0 # 06d78 -.long 0x4086ffe0 # 06d7c -.long 0x565717bc # 06d80 -.long 0x3ab7ffff # 06d84 -.long 0x7e549379 # 06d88 -.long 0x4bfffee8 # 06d8c -.long 0x7f4102a6 # 06d90 -.long 0x41860104 # 06d94 -.long 0x2c130000 # 06d98 -.long 0x2c920000 # 06d9c -.long 0x4ce02182 # 06da0 -.long 0x40800008 # 06da4 -.long 0x7e7300d0 # 06da8 -.long 0x4084000c # 06dac -.long 0x23180000 # 06db0 -.long 0x7e520190 # 06db4 -.long 0x7c129840 # 06db8 -.long 0x408000dc # 06dbc -.long 0x7e750034 # 06dc0 -.long 0x7e52c278 # 06dc4 -.long 0x7e73a830 # 06dc8 -.long 0x5e52a83e # 06dcc -.long 0x7f18a830 # 06dd0 -.long 0x7e52c278 # 06dd4 -.long 0x5677843e # 06dd8 -.long 0x7e92bb96 # 06ddc -.long 0x7ef4b9d6 # 06de0 -.long 0x7e579050 # 06de4 -.long 0x5652801e # 06de8 -.long 0x5312843e # 06dec -.long 0x5718801e # 06df0 -.long 0x5677043e # 06df4 -.long 0x7ef4b9d6 # 06df8 -.long 0x7e579010 # 06dfc -.long 0x7ef7b911 # 06e00 -.long 0x7f18a214 # 06e04 -.long 0x40800014 # 06e08 -.long 0x7e529814 # 06e0c -.long 0x7ef70195 # 06e10 -.long 0x3b18ffff # 06e14 -.long 0x4180fff4 # 06e18 -.long 0x5677843e # 06e1c -.long 0x7e92bb96 # 06e20 -.long 0x7ef4b9d6 # 06e24 -.long 0x7e579050 # 06e28 -.long 0x5652801e # 06e2c -.long 0x5312843e # 06e30 -.long 0x5718801e # 06e34 -.long 0x5677043e # 06e38 -.long 0x7ef4b9d6 # 06e3c -.long 0x7e579010 # 06e40 -.long 0x7ef7b911 # 06e44 -.long 0x7f18a214 # 06e48 -.long 0x40800014 # 06e4c -.long 0x7e529814 # 06e50 -.long 0x7ef70195 # 06e54 -.long 0x3b18ffff # 06e58 -.long 0x4180fff4 # 06e5c -.long 0x7e54ac30 # 06e60 -.long 0x7f15c379 # 06e64 -.long 0x40840008 # 06e68 -.long 0x7e9400d0 # 06e6c -.long 0x40870008 # 06e70 -.long 0x7eb500d1 # 06e74 -.long 0x40950014 # 06e78 -.long 0x4c003982 # 06e7c -.long 0x575a0080 # 06e80 -.long 0x40800008 # 06e84 -.long 0x675ac000 # 06e88 -.long 0x7f4103a6 # 06e8c -.long 0x7e94a379 # 06e90 -.long 0x4bfffde0 # 06e94 -.long 0x40950008 # 06e98 -.long 0x675ac000 # 06e9c -.long 0x7f4103a6 # 06ea0 -.long 0x7e5590f8 # 06ea4 -.long 0x56570ffe # 06ea8 -.long 0x7f14c379 # 06eac -.long 0x7eb7aa14 # 06eb0 -.long 0x4bfffdc0 # 06eb4 -.long 0x7eb29896 # 06eb8 -.long 0x4195000c # 06ebc -.long 0x7e9299d7 # 06ec0 -.long 0x4bfffdb0 # 06ec4 -.long 0x7e929dd7 # 06ec8 -.long 0x4bfffda8 # 06ecc -.long 0x41990208 # 06ed0 -.long 0x41950390 # 06ed4 -.long 0x2c120040 # 06ed8 -.long 0x2c920000 # 06edc -.long 0x2f120004 # 06ee0 -.long 0x41970254 # 06ee4 -.long 0x40800110 # 06ee8 -.long 0x4c000182 # 06eec -.long 0x41860044 # 06ef0 -.long 0x419a004c # 06ef4 -.long 0x2c920014 # 06ef8 -.long 0x2f120018 # 06efc -.long 0x41860050 # 06f00 -.long 0x419a00c4 # 06f04 -.long 0x2c920020 # 06f08 -.long 0x2f120024 # 06f0c -.long 0x418600c4 # 06f10 -.long 0x419a00d4 # 06f14 -.long 0x2f120010 # 06f18 -.long 0x7e41902e # 06f1c -.long 0x7e61982e # 06f20 -.long 0x7eb29a15 # 06f24 -.long 0x419a0028 # 06f28 -.long 0x408efc0c # 06f2c -.long 0x48000424 # 06f30 -.long 0x4088fc04 # 06f34 -.long 0x82b60000 # 06f38 -.long 0x4bfffd3c # 06f3c -.long 0x408efbf8 # 06f40 -.long 0x7da80120 # 06f44 -.long 0x7ea102a7 # 06f48 -.long 0x4bfffd2c # 06f4c -.long 0x4089fbe8 # 06f50 -.long 0x82c1fffc # 06f54 -.long 0x7e8d42e6 # 06f58 -.long 0x7eac42e6 # 06f5c -.long 0x7eed42e6 # 06f60 -.long 0x7c97a040 # 06f64 -.long 0x40a6fff0 # 06f68 -.long 0x82f605bc # 06f6c -.long 0x8a5605b8 # 06f70 -.long 0x8a7605bb # 06f74 -.long 0x7ed4b9d6 # 06f78 -.long 0x7f15b816 # 06f7c -.long 0x7ed6c214 # 06f80 -.long 0x409a0024 # 06f84 -.long 0x7c96c040 # 06f88 -.long 0x7ed69c30 # 06f8c -.long 0x7eb4b816 # 06f90 -.long 0x40a40008 # 06f94 -.long 0x3ab50001 # 06f98 -.long 0x7eb59030 # 06f9c -.long 0x7eb5b214 # 06fa0 -.long 0x4bfffcd4 # 06fa4 -.long 0x7eb5b9d6 # 06fa8 -.long 0x7eb59c30 # 06fac -.long 0x7ed69030 # 06fb0 -.long 0x7eb5b214 # 06fb4 -.long 0x3ee03b9a # 06fb8 -.long 0x62f7ca00 # 06fbc -.long 0x7eb5b816 # 06fc0 -.long 0x4bfffcb4 # 06fc4 -.long 0x408afb70 # 06fc8 -.long 0x7eb602a6 # 06fcc -.long 0x4bfffca8 # 06fd0 -.long 0x408efb64 # 06fd4 -.long 0x7da80120 # 06fd8 -.long 0x7d8803a6 # 06fdc -.long 0x7ea802a7 # 06fe0 -.long 0x4bfffc94 # 06fe4 -.long 0x408efb50 # 06fe8 -.long 0x7da80120 # 06fec -.long 0x7ea902a7 # 06ff0 -.long 0x4bfffc84 # 06ff4 -.long 0x82e1fffc # 06ff8 -.long 0x7da80120 # 06ffc -.long 0x82f705c0 # 07000 -.long 0x5773adbe # 07004 -.long 0x289303e8 # 07008 -.long 0x41860070 # 0700c -.long 0x56f7a216 # 07010 -.long 0x4092fb30 # 07014 -.long 0x7ee20120 # 07018 -.long 0x2893031d # 0701c -.long 0x41860078 # 07020 -.long 0x2893033d # 07024 -.long 0x41860078 # 07028 -.long 0x2893035d # 0702c -.long 0x41860078 # 07030 -.long 0x2893037d # 07034 -.long 0x41860078 # 07038 -.long 0x4189000c # 0703c -.long 0x289303fd # 07040 -.long 0x4186008c # 07044 -.long 0x408afafc # 07048 -.long 0x2893039d # 0704c -.long 0x41860068 # 07050 -.long 0x289303bd # 07054 -.long 0x41860068 # 07058 -.long 0x289303dd # 0705c -.long 0x41860068 # 07060 -.long 0x4088fae0 # 07064 -.long 0x2893021d # 07068 -.long 0x4186001c # 0706c -.long 0x289302fd # 07070 -.long 0x4186001c # 07074 -.long 0x4bfffacc # 07078 -.long 0x4091fac8 # 0707c -.long 0x7ebf42a7 # 07080 -.long 0x4bfffbf4 # 07084 -.long 0x7eb0eaa7 # 07088 -.long 0x4bfffbec # 0708c -.long 0x7eb7eaa7 # 07090 -.long 0x4bfffbe4 # 07094 -.long 0x7eb8eaa7 # 07098 -.long 0x4bfffbdc # 0709c -.long 0x7eb9eaa7 # 070a0 -.long 0x4bfffbd4 # 070a4 -.long 0x7ebaeaa7 # 070a8 -.long 0x4bfffbcc # 070ac -.long 0x7ebbeaa7 # 070b0 -.long 0x4bfffbc4 # 070b4 -.long 0x7ebceaa7 # 070b8 -.long 0x4bfffbbc # 070bc -.long 0x7ebdeaa7 # 070c0 -.long 0x4bfffbb4 # 070c4 -.long 0x7ebeeaa7 # 070c8 -.long 0x4bfffbac # 070cc -.long 0x7ebfeaa7 # 070d0 -.long 0x4bfffba4 # 070d4 -.long 0x5777adbe # 070d8 -.long 0x28970188 # 070dc -.long 0x2b1701a8 # 070e0 -.long 0x4c46d382 # 070e4 -.long 0x4082fa50 # 070e8 -.long 0x7e8402a6 # 070ec -.long 0x7ea502a6 # 070f0 -.long 0x7ee402a6 # 070f4 -.long 0x7ef7a279 # 070f8 -.long 0x3ee03b9a # 070fc -.long 0x62f7ca00 # 07100 -.long 0x40a2ffe8 # 07104 -.long 0x7f0002a6 # 07108 -.long 0x4def7a42 # 0710c -.long 0x7e74b9d6 # 07110 -.long 0x7f0003a6 # 07114 -.long 0x7eb59a14 # 07118 -.long 0x4186fb68 # 0711c -.long 0x7c159840 # 07120 -.long 0x7eb4b816 # 07124 -.long 0x7f0003a6 # 07128 -.long 0x4080fb58 # 0712c -.long 0x3ab50001 # 07130 -.long 0x4bfffb50 # 07134 -.long 0x7e21882e # 07138 -.long 0x4080005c # 0713c -.long 0x7e318b79 # 07140 -.long 0x41860020 # 07144 -.long 0x408ef9f0 # 07148 -.long 0x419a0024 # 0714c -.long 0x2c920020 # 07150 -.long 0x2f120024 # 07154 -.long 0x41860024 # 07158 -.long 0x419a0030 # 0715c -.long 0x480001f4 # 07160 -.long 0x4088f9d4 # 07164 -.long 0x92360000 # 07168 -.long 0x480001e8 # 0716c -.long 0x7da80120 # 07170 -.long 0x7e2103a7 # 07174 -.long 0x480001dc # 07178 -.long 0x7da80120 # 0717c -.long 0x7e2c8b78 # 07180 -.long 0x7e2803a7 # 07184 -.long 0x480001cc # 07188 -.long 0x7da80120 # 0718c -.long 0x7e2903a7 # 07190 -.long 0x480001c0 # 07194 -.long 0x82e1fffc # 07198 -.long 0x4092f9a8 # 0719c -.long 0x82f705c0 # 071a0 -.long 0x7da80120 # 071a4 -.long 0x56f7a216 # 071a8 -.long 0x5773adbe # 071ac -.long 0x7ee20120 # 071b0 -.long 0x2893031d # 071b4 -.long 0x4186006c # 071b8 -.long 0x2893033d # 071bc -.long 0x4186006c # 071c0 -.long 0x2893035d # 071c4 -.long 0x4186006c # 071c8 -.long 0x2893037d # 071cc -.long 0x4186006c # 071d0 -.long 0x4189000c # 071d4 -.long 0x289303fd # 071d8 -.long 0x41860080 # 071dc -.long 0x408af964 # 071e0 -.long 0x2893039d # 071e4 -.long 0x4186005c # 071e8 -.long 0x289303bd # 071ec -.long 0x4186005c # 071f0 -.long 0x289303dd # 071f4 -.long 0x4186005c # 071f8 -.long 0x4088f948 # 071fc -.long 0x2893021d # 07200 -.long 0x41860010 # 07204 -.long 0x289302fd # 07208 -.long 0x41860010 # 0720c -.long 0x4bfff934 # 07210 -.long 0x7e30eba7 # 07214 -.long 0x4800013c # 07218 -.long 0x7e37eba7 # 0721c -.long 0x48000134 # 07220 -.long 0x7e38eba7 # 07224 -.long 0x4800012c # 07228 -.long 0x7e39eba7 # 0722c -.long 0x48000124 # 07230 -.long 0x7e3aeba7 # 07234 -.long 0x4800011c # 07238 -.long 0x7e3beba7 # 0723c -.long 0x48000114 # 07240 -.long 0x7e3ceba7 # 07244 -.long 0x4800010c # 07248 -.long 0x7e3deba7 # 0724c -.long 0x48000104 # 07250 -.long 0x7e3eeba7 # 07254 -.long 0x480000fc # 07258 -.long 0x7e3feba7 # 0725c -.long 0x480000f4 # 07260 -.long 0x82e1fffc # 07264 -.long 0x408cf8d0 # 07268 -.long 0x5772873f # 0726c -.long 0x5775873c # 07270 -.long 0x2c95000a # 07274 -.long 0x3a521a98 # 07278 -.long 0x7e5990ae # 0727c -.long 0x3ab70f20 # 07280 -.long 0x4186000c # 07284 -.long 0x7eb5922e # 07288 -.long 0x4bfff9ec # 0728c -.long 0x7eb5902e # 07290 -.long 0x4bfff9e4 # 07294 -.long 0x24242424 # 07298 -.long 0x26282a20 # 0729c -.long 0x2c2e1814 # 072a0 -.long 0x22242424 # 072a4 -.long 0x7e61982e # 072a8 -.long 0x567306fe # 072ac -.long 0x4197006c # 072b0 -.long 0x408bf884 # 072b4 -.long 0x7e21882e # 072b8 -.long 0x3ee08000 # 072bc -.long 0x7ea1902e # 072c0 -.long 0x7ef79c30 # 072c4 -.long 0x7e319c30 # 072c8 -.long 0x4800013c # 072cc -.long 0x41990048 # 072d0 -.long 0x7e61982e # 072d4 -.long 0x567306be # 072d8 -.long 0x40980040 # 072dc -.long 0x2c13001f # 072e0 -.long 0x4ef7b842 # 072e4 -.long 0x40810034 # 072e8 -.long 0x4088f84c # 072ec -.long 0x82960000 # 072f0 -.long 0x3ae0ffff # 072f4 -.long 0x567306fe # 072f8 -.long 0x41950010 # 072fc -.long 0x7ef79830 # 07300 -.long 0x7e95b839 # 07304 -.long 0x48000048 # 07308 -.long 0x7ef79c30 # 0730c -.long 0x7e95b839 # 07310 -.long 0x4800003c # 07314 -.long 0x5773aefe # 07318 -.long 0x4088f81c # 0731c -.long 0x7e21882e # 07320 -.long 0x41950040 # 07324 -.long 0x7e359831 # 07328 -.long 0x5e34983e # 0732c -.long 0x4098001c # 07330 -.long 0x3ae0ffff # 07334 -.long 0x7ef79830 # 07338 -.long 0x82760000 # 0733c -.long 0x7e77b878 # 07340 -.long 0x7eb5bb79 # 07344 -.long 0x40970008 # 07348 -.long 0x92960000 # 0734c - -major_0x06a14_0x93c: -stwx r21, r1, r18 # 07350 -bns+ cr7, major_0x06000_0x5a0 # 07354 -mfcr r23 # 07358 -rlwimi r13, r23, 0, 0, 3 # 0735c -b major_0x06000_0x5a0 # 07360 -.long 0x7e9300d0 # 07364 -.long 0x5e34a03e # 07368 -.long 0x41960018 # 0736c -.long 0x7e359c31 # 07370 -.long 0x4098ffd8 # 07374 -.long 0x3ae0ffff # 07378 -.long 0x7ef79c30 # 0737c -.long 0x4bffffbc # 07380 -.long 0x7e359e31 # 07384 -.long 0x4bffffc4 # 07388 -.long 0x408bf7ac # 0738c -.long 0x7e61982e # 07390 -.long 0x7e21882e # 07394 -.long 0x41950024 # 07398 -.long 0x3aa0ffff # 0739c -.long 0x7e719850 # 073a0 -.long 0x7e7398f8 # 073a4 -.long 0x567306fe # 073a8 -.long 0x7e3100d0 # 073ac -.long 0x7eb59830 # 073b0 -.long 0x5eb5883f # 073b4 -.long 0x4bffff98 # 073b8 -.long 0x7ea1902e # 073bc -.long 0x7e319838 # 073c0 -.long 0x7eb59878 # 073c4 -.long 0x7eb58b79 # 073c8 -.long 0x4bffff84 # 073cc - -major_0x06a14_0x9bc: -bns+ cr2, major_0x06a14_0x124 # 073d0 -lwzx r17, r1, r17 # 073d4 -rlwinm r20, r27, 26, 27, 31 # 073d8 -lwzx r19, r1, r19 # 073dc -rlwinm r21, r27, 31, 27, 31 # 073e0 -li r23, -0x01 # 073e4 -subf r21, r20, r21 # 073e8 -not r21, r21 # 073ec -clrlwi r21, r21, 0x1b # 073f0 -neg r20, r20 # 073f4 -slw r23, r23, r21 # 073f8 -lwzx r21, r1, r18 # 073fc -rotlw r23, r23, r20 # 07400 -rotlw r17, r17, r19 # 07404 -and r17, r17, r23 # 07408 -andc r21, r21, r23 # 0740c -or. r21, r21, r17 # 07410 -b major_0x06a14_0x93c # 07414 - -major_0x06a14_0xa04: -ble+ cr3, major_0x06a14_0x124 # 07418 -b major_0x032c0_0x64 # 0741c -.long 0x4199fff8 # 07420 -.long 0x4090f714 # 07424 -.long 0x4bffbefc # 07428 - - - -/*********************************************************** - - major_0x0742c - -***********************************************************/ - -.long 0x48000014 # 0742c -.long 0x60000000 # 07430 -.long 0x60000000 # 07434 -.long 0x60000000 # 07438 -.long 0x60000000 # 0743c - - - -/*********************************************************** - - major_0x07440 - -************************************************************ - -Xrefs: -"lisori_caller" - -***********************************************************/ - -.align 6 # 07440 - -major_0x07440: /* < outside referer */ -# r6 = saved at *(ewa + 0x18) -# sprg1 = saved at *(ewa + 4) -# rN (0,7,8,9,10,11,12,13, not r1) = saved at *(*(ewa - 0x14) + 0x104 + 8*N) -bl int_prepare # 07440 -# r0 = 0 -# r1 = *(ewa - 4) -# r6 = kdp -# r7 = *(ewa - 0x10) # flags? -# r8 = ewa -# r10 = srr0 -# r11 = srr1 -# r12 = sprg2 -# r13 = cr - -mfspr r1, 272/*sprg0*/ # 07444 -lwz r8, 0x0104( r6) # 07448 -stw r8, 0x0000( r1) # 0744c -stw r2, 0x0008( r1) # 07450 -stw r3, 0x000c( r1) # 07454 -stw r4, 0x0010( r1) # 07458 -stw r5, 0x0014( r1) # 0745c -stmw r14, 0x0038( r1) # 07460 -mr r16, r7 # 07464 -lwz r7, 0x013c( r6) # 07468 -stw r7, 0x001c( r1) # 0746c -lwz r8, 0x0144( r6) # 07470 -stw r8, 0x0020( r1) # 07474 -lwz r9, 0x014c( r6) # 07478 -stw r9, 0x0024( r1) # 0747c -lwz r23, 0x0154( r6) # 07480 -stw r23, 0x0028( r1) # 07484 -lwz r23, 0x015c( r6) # 07488 -stw r23, 0x002c( r1) # 0748c -lwz r23, 0x0164( r6) # 07490 -stw r23, 0x0030( r1) # 07494 -lwz r23, 0x016c( r6) # 07498 -stw r23, 0x0034( r1) # 0749c -lwz r1, -0x0004( r1) # 074a0 -addi r22, r6, 0xc4 # 074a4 -mfspr r24, 275/*sprg3*/ # 074a8 -addi r23, r1, 0x4e0 # 074ac -mfmsr r14 # 074b0 -oris r14, r14, 0x200 # 074b4 -ori r15, r14, 0x10 # 074b8 -mtspr 275/*sprg3*/, r23 # 074bc -mtmsr r15 # 074c0 -isync # 074c4 -lwz r27, 0x0000(r10) # 074c8 -mtmsr r14 # 074cc -isync # 074d0 -mtspr 275/*sprg3*/, r24 # 074d4 -lwz r24, 0x00d8( r6) # 074d8 -addi r24, r24, 0x00 # 074dc -li r8, 0x00 # 074e0 -stvx v0, r24, r8 # 074e4 -li r9, 0x10 # 074e8 -stvx v1, r24, r9 # 074ec -li r8, 0x20 # 074f0 -stvx v2, r24, r8 # 074f4 -li r9, 0x30 # 074f8 -stvx v3, r24, r9 # 074fc -li r8, 0x40 # 07500 -stvx v4, r24, r8 # 07504 -li r9, 0x50 # 07508 -stvx v5, r24, r9 # 0750c -li r8, 0x60 # 07510 -stvx v6, r24, r8 # 07514 -li r9, 0x70 # 07518 -stvx v7, r24, r9 # 0751c -li r8, 0x80 # 07520 -stvx v8, r24, r8 # 07524 -li r9, 0x90 # 07528 -stvx v9, r24, r9 # 0752c -li r8, 160 # 07530 -stvx v10, r24, r8 # 07534 -li r9, 0xb0 # 07538 -stvx v11, r24, r9 # 0753c -li r8, 0xc0 # 07540 -stvx v12, r24, r8 # 07544 -li r9, 0xd0 # 07548 -stvx v13, r24, r9 # 0754c -li r8, 0xe0 # 07550 -stvx v14, r24, r8 # 07554 -li r9, 240 # 07558 -stvx v15, r24, r9 # 0755c -li r8, 0x100 # 07560 -stvx v16, r24, r8 # 07564 -li r9, 0x110 # 07568 -stvx v17, r24, r9 # 0756c -li r8, 0x120 # 07570 -stvx v18, r24, r8 # 07574 -li r9, 0x130 # 07578 -stvx v19, r24, r9 # 0757c -li r8, 320 # 07580 -stvx v20, r24, r8 # 07584 -li r9, 0x150 # 07588 -stvx v21, r24, r9 # 0758c -li r8, 0x160 # 07590 -stvx v22, r24, r8 # 07594 -li r9, 0x170 # 07598 -stvx v23, r24, r9 # 0759c -li r8, 0x180 # 075a0 -stvx v24, r24, r8 # 075a4 -li r9, 400 # 075a8 -stvx v25, r24, r9 # 075ac -li r8, 0x1a0 # 075b0 -stvx v26, r24, r8 # 075b4 -li r9, 0x1b0 # 075b8 -stvx v27, r24, r9 # 075bc -li r8, 0x1c0 # 075c0 -stvx v28, r24, r8 # 075c4 -li r9, 0x1d0 # 075c8 -stvx v29, r24, r9 # 075cc -li r8, 480 # 075d0 -stvx v30, r24, r8 # 075d4 -li r9, 0x1f0 # 075d8 -stvx v31, r24, r9 # 075dc -lwz r23, 0x0ed8( r1) # 075e0 -lwz r25, 0x0650( r1) # 075e4 -addi r23, r23, 0x01 # 075e8 -stw r23, 0x0ed8( r1) # 075ec -rlwinm. r8, r27, 26, 0, 0 # 075f0 -rlwinm r9, r27, 24, 30, 31 # 075f4 -cmpwi cr1, r9, 0x03 # 075f8 -cmpwi cr2, r9, 0x00 # 075fc -rlwinm r17, r27, 15, 23, 27 # 07600 -rlwinm r18, r27, 20, 23, 27 # 07604 -rlwinm r19, r27, 25, 23, 27 # 07608 -blt- major_0x07658_0x180 # 0760c -beq- cr2, major_0x07658_0x224 # 07610 -bgt- cr1, major_0x07658_0x60 # 07614 -lvx v3, r24, r19 # 07618 -vspltisw v31, 0x00 # 0761c -vspltisw v29, 0x01 # 07620 -vcfux v29, v29, 0x00 # 07624 -vspltisw v30, -0x01 # 07628 -vspltisw v22, 0x09 # 0762c -vsrw v28, v30, v22 # 07630 -vslw v27, v30, v30 # 07634 -vnor v26, v28, v27 # 07638 -vsraw v24, v3, v30 # 0763c -vand v23, v3, v28 # 07640 -vcmpequw v23, v23, v31 # 07644 -vand v22, v3, v26 # 07648 -vcmpequw v22, v22, v31 # 0764c -vandc v25, v22, v23 # 07650 -lwz r9, 0x064c( r1) # 07654 - - - -/*********************************************************** - - major_0x07658 - -************************************************************ - -Xrefs: -"lisori_caller" -major_0x07440 -major_0x07980 -major_0x07ac0 -major_0x07d10 - -***********************************************************/ - -.align 3 # 07658 - -lis r8, major_0x07658_0x1c@h # 07658 -ori r8, r8, major_0x07658_0x1c@l # 0765c -add r9, r9, r8 # 07660 -rlwinm r8, r27, 28, 26, 29 # 07664 -add r9, r9, r8 # 07668 -mtlr r9 # 0766c -blr # 07670 - -major_0x07658_0x1c: -b panic # 07674 -b panic # 07678 -b panic # 0767c -b panic # 07680 -b major_0x07ac0_0x14c # 07684 -b major_0x07ac0_0x100 # 07688 -b major_0x07ac0_0x24c # 0768c -b major_0x07ac0_0x220 # 07690 -b major_0x07658_0x2b8 # 07694 -b major_0x07658_0x2c8 # 07698 -b major_0x07658_0x2d8 # 0769c -b major_0x07658_0x2e8 # 076a0 -b panic # 076a4 -b panic # 076a8 -b major_0x07658_0x2fc # 076ac -b major_0x07980_0x100 # 076b0 - -major_0x07658_0x5c: /* < outside referer */ -stvx v1, r24, r17 # 076b4 - -major_0x07658_0x60: /* < outside referer */ -li r8, 0x00 # 076b8 -lvx v0, r24, r8 # 076bc -li r8, 0x10 # 076c0 -lvx v1, r24, r8 # 076c4 -li r8, 0x20 # 076c8 -lvx v2, r24, r8 # 076cc -li r8, 0x30 # 076d0 -lvx v3, r24, r8 # 076d4 -li r8, 0x40 # 076d8 -lvx v4, r24, r8 # 076dc -li r8, 0x50 # 076e0 -lvx v5, r24, r8 # 076e4 -li r8, 0x60 # 076e8 -lvx v6, r24, r8 # 076ec -li r8, 0x70 # 076f0 -lvx v7, r24, r8 # 076f4 -li r8, 0x80 # 076f8 -lvx v8, r24, r8 # 076fc -li r8, 0x90 # 07700 -lvx v9, r24, r8 # 07704 -li r8, 160 # 07708 -lvx v10, r24, r8 # 0770c -li r8, 0xb0 # 07710 -lvx v11, r24, r8 # 07714 -li r8, 0xc0 # 07718 -lvx v12, r24, r8 # 0771c -li r8, 0xd0 # 07720 -lvx v13, r24, r8 # 07724 -li r8, 0xe0 # 07728 -lvx v14, r24, r8 # 0772c -li r8, 240 # 07730 -lvx v15, r24, r8 # 07734 -li r8, 0x100 # 07738 -lvx v16, r24, r8 # 0773c -li r8, 0x110 # 07740 -lvx v17, r24, r8 # 07744 -li r8, 0x120 # 07748 -lvx v18, r24, r8 # 0774c -li r8, 0x130 # 07750 -lvx v19, r24, r8 # 07754 -li r8, 320 # 07758 -lvx v20, r24, r8 # 0775c -li r8, 0x150 # 07760 -lvx v21, r24, r8 # 07764 -li r8, 0x160 # 07768 -lvx v22, r24, r8 # 0776c -li r8, 0x170 # 07770 -lvx v23, r24, r8 # 07774 -li r8, 0x180 # 07778 -lvx v24, r24, r8 # 0777c -li r8, 400 # 07780 -lvx v25, r24, r8 # 07784 -li r8, 0x1a0 # 07788 -lvx v26, r24, r8 # 0778c -li r8, 0x1b0 # 07790 -lvx v27, r24, r8 # 07794 -li r8, 0x1c0 # 07798 -lvx v28, r24, r8 # 0779c -li r8, 0x1d0 # 077a0 -lvx v29, r24, r8 # 077a4 -li r8, 480 # 077a8 -lvx v30, r24, r8 # 077ac -li r8, 0x1f0 # 077b0 -lvx v31, r24, r8 # 077b4 -andi. r23, r16, 0x20 # 077b8 -addi r10, r10, 0x04 # 077bc -mfspr r1, 272/*sprg0*/ # 077c0 -mtspr 26/*srr0*/, r10 # 077c4 -mtspr 27/*srr1*/, r11 # 077c8 -bne+ major_0x06000_0x630 # 077cc -mtlr r12 # 077d0 -b major_0x06000_0x5c8 # 077d4 - -major_0x07658_0x180: /* < outside referer */ -rlwinm r22, r27, 30, 23, 27 # 077d8 -mfmsr r14 # 077dc -ori r15, r14, 0x2000 # 077e0 -mtmsr r15 # 077e4 -isync # 077e8 -rlwinm. r8, r11, 0, 18, 18 # 077ec -beq- major_0x07658_0x1b4 # 077f0 -stfd f0, 0x0200( r6) # 077f4 -mffs f0 # 077f8 -stfd f1, 0x0208( r6) # 077fc -stfd f2, 0x0210( r6) # 07800 -stfd f3, 0x0218( r6) # 07804 -stfd f0, 0x00e0( r6) # 07808 - -major_0x07658_0x1b4: -.long 0xff80010c # 0780c -crmove r30, r2 # 07810 -rlwinm. r9, r27, 31, 0, 0 # 07814 -li r8, 0x03 # 07818 -crmove r26, r0 # 0781c - -major_0x07658_0x1c8: -lfsx f0, r24, r18 # 07820 -addic. r8, r8, -0x01 # 07824 -lfsx f1, r24, r19 # 07828 -lfsx f2, r24, r22 # 0782c -bne- cr6, major_0x07658_0x1f0 # 07830 -fnmsubs f3, f0, f2, f1 # 07834 -stfsx f3, r24, r17 # 07838 -addi r24, r24, 0x04 # 0783c -bge+ major_0x07658_0x1c8 # 07840 -b major_0x07658_0x200 # 07844 - -major_0x07658_0x1f0: -fmadds f3, f0, f2, f1 # 07848 -stfsx f3, r24, r17 # 0784c -addi r24, r24, 0x04 # 07850 -bge+ major_0x07658_0x1c8 # 07854 - -major_0x07658_0x200: -addi r24, r24, -0x10 # 07858 -beq+ cr7, major_0x07658_0x60 # 0785c -lfd f0, 0x00e0( r6) # 07860 -mtfsf 0xff, f0 # 07864 -lfd f0, 0x0200( r6) # 07868 -lfd f1, 0x0208( r6) # 0786c -lfd f2, 0x0210( r6) # 07870 -lfd f3, 0x0218( r6) # 07874 -b major_0x07658_0x60 # 07878 - -major_0x07658_0x224: /* < outside referer */ -mfmsr r14 # 0787c -ori r15, r14, 0x2000 # 07880 -mtmsr r15 # 07884 -isync # 07888 -rlwinm. r8, r11, 0, 18, 18 # 0788c -beq- major_0x07658_0x250 # 07890 -stfd f0, 0x0200( r6) # 07894 -mffs f0 # 07898 -stfd f1, 0x0208( r6) # 0789c -stfd f3, 0x0218( r6) # 078a0 -stfd f0, 0x00e0( r6) # 078a4 - -major_0x07658_0x250: -.long 0xff80010c # 078a8 -crmove r30, r2 # 078ac -rlwinm. r9, r27, 25, 0, 0 # 078b0 -li r8, 0x03 # 078b4 -crmove r26, r0 # 078b8 - -major_0x07658_0x264: -lfsx f0, r24, r18 # 078bc -addic. r8, r8, -0x01 # 078c0 -lfsx f1, r24, r19 # 078c4 -bne- cr6, major_0x07658_0x288 # 078c8 -fsubs f3, f0, f1 # 078cc -stfsx f3, r24, r17 # 078d0 -addi r24, r24, 0x04 # 078d4 -bge+ major_0x07658_0x264 # 078d8 -b major_0x07658_0x298 # 078dc - -major_0x07658_0x288: -fadds f3, f0, f1 # 078e0 -stfsx f3, r24, r17 # 078e4 -addi r24, r24, 0x04 # 078e8 -bge+ major_0x07658_0x264 # 078ec - -major_0x07658_0x298: -addi r24, r24, -0x10 # 078f0 -beq+ cr7, major_0x07658_0x60 # 078f4 -lfd f0, 0x00e0( r6) # 078f8 -mtfsf 0xff, f0 # 078fc -lfd f0, 0x0200( r6) # 07900 -lfd f1, 0x0208( r6) # 07904 -lfd f3, 0x0218( r6) # 07908 -b major_0x07658_0x60 # 0790c - -major_0x07658_0x2b8: -vsel v22, v31, v27, v24 # 07910 -vsel v23, v3, v22, v25 # 07914 -vrfin v1, v23 # 07918 -b major_0x07658_0x5c # 0791c - -major_0x07658_0x2c8: -vsel v22, v31, v27, v24 # 07920 -vsel v23, v3, v22, v25 # 07924 -vrfiz v1, v23 # 07928 -b major_0x07658_0x5c # 0792c - -major_0x07658_0x2d8: -vsel v22, v29, v27, v24 # 07930 -vsel v23, v3, v22, v25 # 07934 -vrfip v1, v23 # 07938 -b major_0x07658_0x5c # 0793c - -major_0x07658_0x2e8: -vor v29, v29, v27 # 07940 -vsel v22, v31, v29, v24 # 07944 -vsel v23, v3, v22, v25 # 07948 -vrfim v1, v23 # 0794c -b major_0x07658_0x5c # 07950 - -major_0x07658_0x2fc: -vsel v23, v3, v31, v25 # 07954 -lwz r9, 0x064c( r1) # 07958 - - - -/*********************************************************** - - major_0x0795c - -************************************************************ - -Xrefs: -major_0x07658 - -***********************************************************/ - -lis r8, major_0x07980@h # 0795c -ori r8, r8, major_0x07980@l # 07960 -add r8, r8, r9 # 07964 -srwi r9, r18, 1 # 07968 -add r8, r8, r9 # 0796c -mtlr r8 # 07970 -blr # 07974 - - - -/*********************************************************** - - major_0x07978 - -***********************************************************/ - -.align 3 # 07978 - -.long 0x60000000 # 07978 -.long 0x60000000 # 0797c - - - -/*********************************************************** - - major_0x07980 - -************************************************************ - -Xrefs: -"lisori_caller" -major_0x07658 - -***********************************************************/ - -.align 7 # 07980 - -major_0x07980: /* < outside referer */ -vctuxs v1, v23, 0x00 # 07980 -b major_0x07658_0x5c # 07984 -.long 0x1021bb8a # 07988 -.long 0x4bfffd28 # 0798c -.long 0x1022bb8a # 07990 -.long 0x4bfffd20 # 07994 -.long 0x1023bb8a # 07998 -.long 0x4bfffd18 # 0799c -.long 0x1024bb8a # 079a0 -.long 0x4bfffd10 # 079a4 -.long 0x1025bb8a # 079a8 -.long 0x4bfffd08 # 079ac -.long 0x1026bb8a # 079b0 -.long 0x4bfffd00 # 079b4 -.long 0x1027bb8a # 079b8 -.long 0x4bfffcf8 # 079bc -.long 0x1028bb8a # 079c0 -.long 0x4bfffcf0 # 079c4 -.long 0x1029bb8a # 079c8 -.long 0x4bfffce8 # 079cc -.long 0x102abb8a # 079d0 -.long 0x4bfffce0 # 079d4 -.long 0x102bbb8a # 079d8 -.long 0x4bfffcd8 # 079dc -.long 0x102cbb8a # 079e0 -.long 0x4bfffcd0 # 079e4 -.long 0x102dbb8a # 079e8 -.long 0x4bfffcc8 # 079ec -.long 0x102ebb8a # 079f0 -.long 0x4bfffcc0 # 079f4 -.long 0x102fbb8a # 079f8 -.long 0x4bfffcb8 # 079fc -.long 0x1030bb8a # 07a00 -.long 0x4bfffcb0 # 07a04 -.long 0x1031bb8a # 07a08 -.long 0x4bfffca8 # 07a0c -.long 0x1032bb8a # 07a10 -.long 0x4bfffca0 # 07a14 -.long 0x1033bb8a # 07a18 -.long 0x4bfffc98 # 07a1c -.long 0x1034bb8a # 07a20 -.long 0x4bfffc90 # 07a24 -.long 0x1035bb8a # 07a28 -.long 0x4bfffc88 # 07a2c -.long 0x1036bb8a # 07a30 -.long 0x4bfffc80 # 07a34 -.long 0x1037bb8a # 07a38 -.long 0x4bfffc78 # 07a3c -.long 0x1038bb8a # 07a40 -.long 0x4bfffc70 # 07a44 -.long 0x1039bb8a # 07a48 -.long 0x4bfffc68 # 07a4c -.long 0x103abb8a # 07a50 -.long 0x4bfffc60 # 07a54 -.long 0x103bbb8a # 07a58 -.long 0x4bfffc58 # 07a5c -.long 0x103cbb8a # 07a60 -.long 0x4bfffc50 # 07a64 -.long 0x103dbb8a # 07a68 -.long 0x4bfffc48 # 07a6c -.long 0x103ebb8a # 07a70 -.long 0x4bfffc40 # 07a74 -.long 0x103fbb8a # 07a78 -.long 0x4bfffc38 # 07a7c - -major_0x07980_0x100: /* < outside referer */ -vsel v23, v3, v31, v25 # 07a80 -lwz r9, 0x064c( r1) # 07a84 - - - -/*********************************************************** - - major_0x07a88 - -************************************************************ - -Xrefs: -major_0x07980 - -***********************************************************/ - -.align 3 # 07a88 - -lis r8, major_0x07ac0@h # 07a88 -ori r8, r8, major_0x07ac0@l # 07a8c -add r8, r8, r9 # 07a90 -srwi r9, r18, 1 # 07a94 -add r8, r8, r9 # 07a98 -mtlr r8 # 07a9c -blr # 07aa0 - - - -/*********************************************************** - - major_0x07aa4 - -***********************************************************/ - -.long 0x4800001c # 07aa4 -.long 0x60000000 # 07aa8 -.long 0x60000000 # 07aac -.long 0x60000000 # 07ab0 -.long 0x60000000 # 07ab4 -.long 0x60000000 # 07ab8 -.long 0x60000000 # 07abc - - - -/*********************************************************** - - major_0x07ac0 - -************************************************************ - -Xrefs: -"lisori_caller" -major_0x07658 - -***********************************************************/ - -.align 6 # 07ac0 - -major_0x07ac0: /* < outside referer */ -vctsxs v1, v23, 0x00 # 07ac0 -b major_0x07658_0x5c # 07ac4 -.long 0x1021bbca # 07ac8 -.long 0x4bfffbe8 # 07acc -.long 0x1022bbca # 07ad0 -.long 0x4bfffbe0 # 07ad4 -.long 0x1023bbca # 07ad8 -.long 0x4bfffbd8 # 07adc -.long 0x1024bbca # 07ae0 -.long 0x4bfffbd0 # 07ae4 -.long 0x1025bbca # 07ae8 -.long 0x4bfffbc8 # 07aec -.long 0x1026bbca # 07af0 -.long 0x4bfffbc0 # 07af4 -.long 0x1027bbca # 07af8 -.long 0x4bfffbb8 # 07afc -.long 0x1028bbca # 07b00 -.long 0x4bfffbb0 # 07b04 -.long 0x1029bbca # 07b08 -.long 0x4bfffba8 # 07b0c -.long 0x102abbca # 07b10 -.long 0x4bfffba0 # 07b14 -.long 0x102bbbca # 07b18 -.long 0x4bfffb98 # 07b1c -.long 0x102cbbca # 07b20 -.long 0x4bfffb90 # 07b24 -.long 0x102dbbca # 07b28 -.long 0x4bfffb88 # 07b2c -.long 0x102ebbca # 07b30 -.long 0x4bfffb80 # 07b34 -.long 0x102fbbca # 07b38 -.long 0x4bfffb78 # 07b3c -.long 0x1030bbca # 07b40 -.long 0x4bfffb70 # 07b44 -.long 0x1031bbca # 07b48 -.long 0x4bfffb68 # 07b4c -.long 0x1032bbca # 07b50 -.long 0x4bfffb60 # 07b54 -.long 0x1033bbca # 07b58 -.long 0x4bfffb58 # 07b5c -.long 0x1034bbca # 07b60 -.long 0x4bfffb50 # 07b64 -.long 0x1035bbca # 07b68 -.long 0x4bfffb48 # 07b6c -.long 0x1036bbca # 07b70 -.long 0x4bfffb40 # 07b74 -.long 0x1037bbca # 07b78 -.long 0x4bfffb38 # 07b7c -.long 0x1038bbca # 07b80 -.long 0x4bfffb30 # 07b84 -.long 0x1039bbca # 07b88 -.long 0x4bfffb28 # 07b8c -.long 0x103abbca # 07b90 -.long 0x4bfffb20 # 07b94 -.long 0x103bbbca # 07b98 -.long 0x4bfffb18 # 07b9c -.long 0x103cbbca # 07ba0 -.long 0x4bfffb10 # 07ba4 -.long 0x103dbbca # 07ba8 -.long 0x4bfffb08 # 07bac -.long 0x103ebbca # 07bb0 -.long 0x4bfffb00 # 07bb4 -.long 0x103fbbca # 07bb8 -.long 0x4bfffaf8 # 07bbc - -major_0x07ac0_0x100: /* < outside referer */ -bl major_0x07d80_0x20 # 07bc0 -vspltisw v19, 0x01 # 07bc4 -vadduwm v22, v22, v19 # 07bc8 -vspltisw v23, -0x07 # 07bcc -vsrw v21, v23, v23 # 07bd0 -vsubuwm v23, v21, v22 # 07bd4 -vspltisw v21, -0x09 # 07bd8 -vslw v23, v23, v21 # 07bdc -vrsqrtefp v19, v23 # 07be0 -vslw v20, v3, v22 # 07be4 -vor v23, v29, v27 # 07be8 -vsel v23, v31, v23, v24 # 07bec -vsel v21, v3, v23, v25 # 07bf0 -vandc v25, v25, v24 # 07bf4 -vrsqrtefp v20, v20 # 07bf8 -vrsqrtefp v21, v21 # 07bfc -vmaddfp v1, v20, v19, v27 # 07c00 -vsel v1, v21, v1, v25 # 07c04 -b major_0x07658_0x5c # 07c08 - -major_0x07ac0_0x14c: /* < outside referer */ -bl major_0x07d80_0x20 # 07c0c -vspltisw v19, 0x01 # 07c10 -vadduwm v22, v22, v19 # 07c14 -vslw v20, v3, v22 # 07c18 -vsel v20, v31, v20, v25 # 07c1c -vrefp v20, v20 # 07c20 -vspltisw v21, -0x09 # 07c24 -vandc v23, v20, v27 # 07c28 -vsrw v23, v23, v21 # 07c2c -mfvscr v29 # 07c30 -vsrw v19, v30, v19 # 07c34 -vsrw v19, v19, v21 # 07c38 -vaddubs v23, v22, v23 # 07c3c -mtvscr v29 # 07c40 -vcmpequw v22, v23, v19 # 07c44 -vslw v23, v23, v21 # 07c48 -vsel v23, v20, v23, v26 # 07c4c -vand v22, v22, v28 # 07c50 -vsel v23, v23, v31, v22 # 07c54 -vsel v20, v31, v27, v24 # 07c58 -vsel v1, v23, v30, v20 # 07c5c -vspltisw v19, 0x01 # 07c60 -vslw v22, v3, v19 # 07c64 -vspltisw v23, -0x04 # 07c68 -vsraw v22, v22, v21 # 07c6c -vsraw v22, v22, v19 # 07c70 -vcmpgtuw v23, v22, v23 # 07c74 -vcmpequw v19, v22, v30 # 07c78 -vandc v23, v23, v19 # 07c7c -vspltisw v19, 0x02 # 07c80 -vsubuwm v22, v22, v19 # 07c84 -vslw v22, v22, v21 # 07c88 -vsel v22, v3, v22, v26 # 07c8c -vsel v22, v31, v22, v23 # 07c90 -vrefp v22, v22 # 07c94 -vspltisw v19, 0x01 # 07c98 -vandc v22, v22, v27 # 07c9c -vslw v29, v19, v21 # 07ca0 -vor v28, v28, v29 # 07ca4 -vcmpgtuw v28, v22, v28 # 07ca8 -vsrw v29, v29, v19 # 07cac -vsel v22, v22, v31, v26 # 07cb0 -vsrw v22, v22, v19 # 07cb4 -vor v22, v22, v29 # 07cb8 -vsel v19, v19, v31, v28 # 07cbc -vsrw v22, v22, v19 # 07cc0 -vor v22, v22, v20 # 07cc4 -vsel v1, v1, v22, v23 # 07cc8 -vor v25, v25, v23 # 07ccc -vsel v23, v3, v31, v25 # 07cd0 -vrefp v23, v23 # 07cd4 -vsel v1, v23, v1, v25 # 07cd8 -b major_0x07658_0x5c # 07cdc - -major_0x07ac0_0x220: /* < outside referer */ -bl major_0x07d80_0x20 # 07ce0 -vspltisw v19, 0x01 # 07ce4 -vadduwm v22, v22, v19 # 07ce8 -vslw v20, v3, v22 # 07cec -vsel v23, v3, v20, v25 # 07cf0 -vlogefp v23, v23 # 07cf4 -vsubsws v22, v31, v22 # 07cf8 -vcfsx v22, v22, 0x00 # 07cfc -vaddfp v1, v22, v23 # 07d00 -vsel v1, v23, v1, v25 # 07d04 -b major_0x07658_0x5c # 07d08 - -major_0x07ac0_0x24c: /* < outside referer */ -lwz r9, 0x064c( r1) # 07d0c - - - -/*********************************************************** - - major_0x07d10 - -************************************************************ - -Xrefs: -major_0x07ac0 - -***********************************************************/ - -.align 4 # 07d10 - -lis r8, major_0x07d80_0x10@h # 07d10 -ori r8, r8, major_0x07d80_0x10@l # 07d14 -add r8, r8, r9 # 07d18 -lvx v23, r0, r8 # 07d1c -vspltw v21, v23, 0x03 # 07d20 -vspltw v20, v23, 0x00 # 07d24 -vcmpgefp v21, v3, v21 # 07d28 -vcmpgtfp v20, v3, v20 # 07d2c -vspltw v19, v23, 0x02 # 07d30 -vandc v22, v21, v20 # 07d34 -vsel v29, v31, v3, v22 # 07d38 -vaddfp v29, v29, v19 # 07d3c -vsel v19, v3, v29, v22 # 07d40 -vexptefp v1, v19 # 07d44 -vspltisw v25, -0x09 # 07d48 -vspltw v23, v23, 0x01 # 07d4c -vsrw v19, v1, v25 # 07d50 -vspltisw v29, 0x01 # 07d54 -vsubuwm v19, v23, v19 # 07d58 -vslw v26, v29, v25 # 07d5c -vsel v28, v31, v1, v28 # 07d60 -vor v28, v28, v26 # 07d64 -vsrw v28, v28, v19 # 07d68 -vsel v1, v1, v28, v22 # 07d6c -b major_0x07658_0x5c # 07d70 - - - -/*********************************************************** - - major_0x07d74 - -***********************************************************/ - -.long 0x4800000c # 07d74 -.long 0x60000000 # 07d78 -.long 0x60000000 # 07d7c - - - -/*********************************************************** - - major_0x07d80 - -************************************************************ - -Xrefs: -major_0x07ac0 - -***********************************************************/ - -.align 7 # 07d80 - -major_0x07d80: /* < outside referer */ -.long 0x17030202 # 07d80 -.long 0x01010101 # 07d84 -.long 0 # 07d88 -.long 0 # 07d8c - -major_0x07d80_0x10: /* < outside referer */ -.long 0xc2fc0004 # 07d90 -.long 0x00000041 # 07d94 -.long 0x42800000 # 07d98 -.long 0xc3150001 # 07d9c - -major_0x07d80_0x20: /* < outside referer */ -vspltisw v23, 0x09 # 07da0 -vslw v19, v3, v23 # 07da4 -lwz r9, 0x064c( r1) # 07da8 - - - -/*********************************************************** - - major_0x07dac - -************************************************************ - -Xrefs: -major_0x07d80 - -***********************************************************/ - -lis r8, major_0x07d80@h # 07dac -ori r8, r8, major_0x07d80@l # 07db0 -add r8, r8, r9 # 07db4 -lvx v23, r0, r8 # 07db8 -vperm v22, v23, v23, v19 # 07dbc -vspltisw v21, 0x04 # 07dc0 -vsrw v21, v19, v21 # 07dc4 -vperm v21, v23, v23, v21 # 07dc8 -li r8, 0x00 # 07dcc -lvsl v20, r8, r8 # 07dd0 -vspltisw v23, 0x03 # 07dd4 -vslw v20, v20, v23 # 07dd8 -vspltisb v23, 0x04 # 07ddc -vaddubm v19, v20, v23 # 07de0 -vspltw v20, v20, 0x00 # 07de4 -vspltw v19, v19, 0x00 # 07de8 -vaddubm v21, v21, v20 # 07dec -vaddubm v22, v22, v19 # 07df0 -vminub v22, v22, v21 # 07df4 -vsldoi v21, v22, v22, 0x02 # 07df8 -vminub v22, v22, v21 # 07dfc -vsldoi v21, v22, v22, 0x01 # 07e00 -vminub v22, v22, v21 # 07e04 -vspltisw v21, -0x08 # 07e08 -vsrw v22, v22, v21 # 07e0c -blr # 07e10 - - - -/*********************************************************** - - major_0x07e14 - -***********************************************************/ - -.long 0x4800000c # 07e14 -.long 0x60000000 # 07e18 -.long 0x60000000 # 07e1c - - - -/*********************************************************** - - major_0x07e20 - -***********************************************************/ - -.align 5 # 07e20 - -.long 0x7c00b8ce # 07e20 -.long 0x4bffdaf8 # 07e24 -.long 0x7c20b8ce # 07e28 -.long 0x4bffdaf0 # 07e2c -.long 0x7c40b8ce # 07e30 -.long 0x4bffdae8 # 07e34 -.long 0x7c60b8ce # 07e38 -.long 0x4bffdae0 # 07e3c -.long 0x7c80b8ce # 07e40 -.long 0x4bffdad8 # 07e44 -.long 0x7ca0b8ce # 07e48 -.long 0x4bffdad0 # 07e4c -.long 0x7cc0b8ce # 07e50 -.long 0x4bffdac8 # 07e54 -.long 0x7ce0b8ce # 07e58 -.long 0x4bffdac0 # 07e5c -.long 0x7d00b8ce # 07e60 -.long 0x4bffdab8 # 07e64 -.long 0x7d20b8ce # 07e68 -.long 0x4bffdab0 # 07e6c -.long 0x7d40b8ce # 07e70 -.long 0x4bffdaa8 # 07e74 -.long 0x7d60b8ce # 07e78 -.long 0x4bffdaa0 # 07e7c -.long 0x7d80b8ce # 07e80 -.long 0x4bffda98 # 07e84 -.long 0x7da0b8ce # 07e88 -.long 0x4bffda90 # 07e8c -.long 0x7dc0b8ce # 07e90 -.long 0x4bffda88 # 07e94 -.long 0x7de0b8ce # 07e98 -.long 0x4bffda80 # 07e9c -.long 0x7e00b8ce # 07ea0 -.long 0x4bffda78 # 07ea4 -.long 0x7e20b8ce # 07ea8 -.long 0x4bffda70 # 07eac -.long 0x7e40b8ce # 07eb0 -.long 0x4bffda68 # 07eb4 -.long 0x7e60b8ce # 07eb8 -.long 0x4bffda60 # 07ebc -.long 0x7e80b8ce # 07ec0 -.long 0x4bffda58 # 07ec4 -.long 0x7ea0b8ce # 07ec8 -.long 0x4bffda50 # 07ecc -.long 0x7ec0b8ce # 07ed0 -.long 0x4bffda48 # 07ed4 -.long 0x7ee0b8ce # 07ed8 -.long 0x4bffda40 # 07edc -.long 0x7f00b8ce # 07ee0 -.long 0x4bffda38 # 07ee4 -.long 0x7f20b8ce # 07ee8 -.long 0x4bffda30 # 07eec -.long 0x7f40b8ce # 07ef0 -.long 0x4bffda28 # 07ef4 -.long 0x7f60b8ce # 07ef8 -.long 0x4bffda20 # 07efc -.long 0x7f80b8ce # 07f00 -.long 0x4bffda18 # 07f04 -.long 0x7fa0b8ce # 07f08 -.long 0x4bffda10 # 07f0c -.long 0x7fc0b8ce # 07f10 -.long 0x4bffda08 # 07f14 -.long 0x7fe0b8ce # 07f18 -.long 0x4bffda00 # 07f1c -.long 0x7c00b80e # 07f20 -.long 0x4bffe67c # 07f24 -.long 0x7c20b80e # 07f28 -.long 0x4bffe674 # 07f2c -.long 0x7c40b80e # 07f30 -.long 0x4bffe66c # 07f34 -.long 0x7c60b80e # 07f38 -.long 0x4bffe664 # 07f3c -.long 0x7c80b80e # 07f40 -.long 0x4bffe65c # 07f44 -.long 0x7ca0b80e # 07f48 -.long 0x4bffe654 # 07f4c -.long 0x7cc0b80e # 07f50 -.long 0x4bffe64c # 07f54 -.long 0x7ce0b80e # 07f58 -.long 0x4bffe644 # 07f5c -.long 0x7d00b80e # 07f60 -.long 0x4bffe63c # 07f64 -.long 0x7d20b80e # 07f68 -.long 0x4bffe634 # 07f6c -.long 0x7d40b80e # 07f70 -.long 0x4bffe62c # 07f74 -.long 0x7d60b80e # 07f78 -.long 0x4bffe624 # 07f7c -.long 0x7d80b80e # 07f80 -.long 0x4bffe61c # 07f84 -.long 0x7da0b80e # 07f88 -.long 0x4bffe614 # 07f8c -.long 0x7dc0b80e # 07f90 -.long 0x4bffe60c # 07f94 -.long 0x7de0b80e # 07f98 -.long 0x4bffe604 # 07f9c -.long 0x7e00b80e # 07fa0 -.long 0x4bffe5fc # 07fa4 -.long 0x7e20b80e # 07fa8 -.long 0x4bffe5f4 # 07fac -.long 0x7e40b80e # 07fb0 -.long 0x4bffe5ec # 07fb4 -.long 0x7e60b80e # 07fb8 -.long 0x4bffe5e4 # 07fbc -.long 0x7e80b80e # 07fc0 -.long 0x4bffe5dc # 07fc4 -.long 0x7ea0b80e # 07fc8 -.long 0x4bffe5d4 # 07fcc -.long 0x7ec0b80e # 07fd0 -.long 0x4bffe5cc # 07fd4 -.long 0x7ee0b80e # 07fd8 -.long 0x4bffe5c4 # 07fdc -.long 0x7f00b80e # 07fe0 -.long 0x4bffe5bc # 07fe4 -.long 0x7f20b80e # 07fe8 -.long 0x4bffe5b4 # 07fec -.long 0x7f40b80e # 07ff0 -.long 0x4bffe5ac # 07ff4 -.long 0x7f60b80e # 07ff8 -.long 0x4bffe5a4 # 07ffc -.long 0x7f80b80e # 08000 -.long 0x4bffe59c # 08004 -.long 0x7fa0b80e # 08008 -.long 0x4bffe594 # 0800c -.long 0x7fc0b80e # 08010 -.long 0x4bffe58c # 08014 -.long 0x7fe0b80e # 08018 -.long 0x4bffe584 # 0801c -.long 0x7c00b84e # 08020 -.long 0x4bffe57c # 08024 -.long 0x7c20b84e # 08028 -.long 0x4bffe574 # 0802c -.long 0x7c40b84e # 08030 -.long 0x4bffe56c # 08034 -.long 0x7c60b84e # 08038 -.long 0x4bffe564 # 0803c -.long 0x7c80b84e # 08040 -.long 0x4bffe55c # 08044 -.long 0x7ca0b84e # 08048 -.long 0x4bffe554 # 0804c -.long 0x7cc0b84e # 08050 -.long 0x4bffe54c # 08054 -.long 0x7ce0b84e # 08058 -.long 0x4bffe544 # 0805c -.long 0x7d00b84e # 08060 -.long 0x4bffe53c # 08064 -.long 0x7d20b84e # 08068 -.long 0x4bffe534 # 0806c -.long 0x7d40b84e # 08070 -.long 0x4bffe52c # 08074 -.long 0x7d60b84e # 08078 -.long 0x4bffe524 # 0807c -.long 0x7d80b84e # 08080 -.long 0x4bffe51c # 08084 -.long 0x7da0b84e # 08088 -.long 0x4bffe514 # 0808c -.long 0x7dc0b84e # 08090 -.long 0x4bffe50c # 08094 -.long 0x7de0b84e # 08098 -.long 0x4bffe504 # 0809c -.long 0x7e00b84e # 080a0 -.long 0x4bffe4fc # 080a4 -.long 0x7e20b84e # 080a8 -.long 0x4bffe4f4 # 080ac -.long 0x7e40b84e # 080b0 -.long 0x4bffe4ec # 080b4 -.long 0x7e60b84e # 080b8 -.long 0x4bffe4e4 # 080bc -.long 0x7e80b84e # 080c0 -.long 0x4bffe4dc # 080c4 -.long 0x7ea0b84e # 080c8 -.long 0x4bffe4d4 # 080cc -.long 0x7ec0b84e # 080d0 -.long 0x4bffe4cc # 080d4 -.long 0x7ee0b84e # 080d8 -.long 0x4bffe4c4 # 080dc -.long 0x7f00b84e # 080e0 -.long 0x4bffe4bc # 080e4 -.long 0x7f20b84e # 080e8 -.long 0x4bffe4b4 # 080ec -.long 0x7f40b84e # 080f0 -.long 0x4bffe4ac # 080f4 -.long 0x7f60b84e # 080f8 -.long 0x4bffe4a4 # 080fc -.long 0x7f80b84e # 08100 -.long 0x4bffe49c # 08104 -.long 0x7fa0b84e # 08108 -.long 0x4bffe494 # 0810c -.long 0x7fc0b84e # 08110 -.long 0x4bffe48c # 08114 -.long 0x7fe0b84e # 08118 -.long 0x4bffe484 # 0811c -.long 0x7c00b88e # 08120 -.long 0x4bffe47c # 08124 -.long 0x7c20b88e # 08128 -.long 0x4bffe474 # 0812c -.long 0x7c40b88e # 08130 -.long 0x4bffe46c # 08134 -.long 0x7c60b88e # 08138 -.long 0x4bffe464 # 0813c -.long 0x7c80b88e # 08140 -.long 0x4bffe45c # 08144 -.long 0x7ca0b88e # 08148 -.long 0x4bffe454 # 0814c -.long 0x7cc0b88e # 08150 -.long 0x4bffe44c # 08154 -.long 0x7ce0b88e # 08158 -.long 0x4bffe444 # 0815c -.long 0x7d00b88e # 08160 -.long 0x4bffe43c # 08164 -.long 0x7d20b88e # 08168 -.long 0x4bffe434 # 0816c -.long 0x7d40b88e # 08170 -.long 0x4bffe42c # 08174 -.long 0x7d60b88e # 08178 -.long 0x4bffe424 # 0817c -.long 0x7d80b88e # 08180 -.long 0x4bffe41c # 08184 -.long 0x7da0b88e # 08188 -.long 0x4bffe414 # 0818c -.long 0x7dc0b88e # 08190 -.long 0x4bffe40c # 08194 -.long 0x7de0b88e # 08198 -.long 0x4bffe404 # 0819c -.long 0x7e00b88e # 081a0 -.long 0x4bffe3fc # 081a4 -.long 0x7e20b88e # 081a8 -.long 0x4bffe3f4 # 081ac -.long 0x7e40b88e # 081b0 -.long 0x4bffe3ec # 081b4 -.long 0x7e60b88e # 081b8 -.long 0x4bffe3e4 # 081bc -.long 0x7e80b88e # 081c0 -.long 0x4bffe3dc # 081c4 -.long 0x7ea0b88e # 081c8 -.long 0x4bffe3d4 # 081cc -.long 0x7ec0b88e # 081d0 -.long 0x4bffe3cc # 081d4 -.long 0x7ee0b88e # 081d8 -.long 0x4bffe3c4 # 081dc -.long 0x7f00b88e # 081e0 -.long 0x4bffe3bc # 081e4 -.long 0x7f20b88e # 081e8 -.long 0x4bffe3b4 # 081ec -.long 0x7f40b88e # 081f0 -.long 0x4bffe3ac # 081f4 -.long 0x7f60b88e # 081f8 -.long 0x4bffe3a4 # 081fc -.long 0x7f80b88e # 08200 -.long 0x4bffe39c # 08204 -.long 0x7fa0b88e # 08208 -.long 0x4bffe394 # 0820c -.long 0x7fc0b88e # 08210 -.long 0x4bffe38c # 08214 -.long 0x7fe0b88e # 08218 -.long 0x4bffe384 # 0821c -.long 0x7c00b9ce # 08220 -.long 0x4bffd6f8 # 08224 -.long 0x7c20b9ce # 08228 -.long 0x4bffd6f0 # 0822c -.long 0x7c40b9ce # 08230 -.long 0x4bffd6e8 # 08234 -.long 0x7c60b9ce # 08238 -.long 0x4bffd6e0 # 0823c -.long 0x7c80b9ce # 08240 -.long 0x4bffd6d8 # 08244 -.long 0x7ca0b9ce # 08248 -.long 0x4bffd6d0 # 0824c -.long 0x7cc0b9ce # 08250 -.long 0x4bffd6c8 # 08254 -.long 0x7ce0b9ce # 08258 -.long 0x4bffd6c0 # 0825c -.long 0x7d00b9ce # 08260 -.long 0x4bffd6b8 # 08264 -.long 0x7d20b9ce # 08268 -.long 0x4bffd6b0 # 0826c -.long 0x7d40b9ce # 08270 -.long 0x4bffd6a8 # 08274 -.long 0x7d60b9ce # 08278 -.long 0x4bffd6a0 # 0827c -.long 0x7d80b9ce # 08280 -.long 0x4bffd698 # 08284 -.long 0x7da0b9ce # 08288 -.long 0x4bffd690 # 0828c -.long 0x7dc0b9ce # 08290 -.long 0x4bffd688 # 08294 -.long 0x7de0b9ce # 08298 -.long 0x4bffd680 # 0829c -.long 0x7e00b9ce # 082a0 -.long 0x4bffd678 # 082a4 -.long 0x7e20b9ce # 082a8 -.long 0x4bffd670 # 082ac -.long 0x7e40b9ce # 082b0 -.long 0x4bffd668 # 082b4 -.long 0x7e60b9ce # 082b8 -.long 0x4bffd660 # 082bc -.long 0x7e80b9ce # 082c0 -.long 0x4bffd658 # 082c4 -.long 0x7ea0b9ce # 082c8 -.long 0x4bffd650 # 082cc -.long 0x7ec0b9ce # 082d0 -.long 0x4bffd648 # 082d4 -.long 0x7ee0b9ce # 082d8 -.long 0x4bffd640 # 082dc -.long 0x7f00b9ce # 082e0 -.long 0x4bffd638 # 082e4 -.long 0x7f20b9ce # 082e8 -.long 0x4bffd630 # 082ec -.long 0x7f40b9ce # 082f0 -.long 0x4bffd628 # 082f4 -.long 0x7f60b9ce # 082f8 -.long 0x4bffd620 # 082fc -.long 0x7f80b9ce # 08300 -.long 0x4bffd618 # 08304 -.long 0x7fa0b9ce # 08308 -.long 0x4bffd610 # 0830c -.long 0x7fc0b9ce # 08310 -.long 0x4bffd608 # 08314 -.long 0x7fe0b9ce # 08318 -.long 0x4bffd600 # 0831c -.long 0x7c00b90e # 08320 -.long 0x4bffe528 # 08324 -.long 0x7c20b90e # 08328 -.long 0x4bffe520 # 0832c -.long 0x7c40b90e # 08330 -.long 0x4bffe518 # 08334 -.long 0x7c60b90e # 08338 -.long 0x4bffe510 # 0833c -.long 0x7c80b90e # 08340 -.long 0x4bffe508 # 08344 -.long 0x7ca0b90e # 08348 -.long 0x4bffe500 # 0834c -.long 0x7cc0b90e # 08350 -.long 0x4bffe4f8 # 08354 -.long 0x7ce0b90e # 08358 -.long 0x4bffe4f0 # 0835c -.long 0x7d00b90e # 08360 -.long 0x4bffe4e8 # 08364 -.long 0x7d20b90e # 08368 -.long 0x4bffe4e0 # 0836c -.long 0x7d40b90e # 08370 -.long 0x4bffe4d8 # 08374 -.long 0x7d60b90e # 08378 -.long 0x4bffe4d0 # 0837c -.long 0x7d80b90e # 08380 -.long 0x4bffe4c8 # 08384 -.long 0x7da0b90e # 08388 -.long 0x4bffe4c0 # 0838c -.long 0x7dc0b90e # 08390 -.long 0x4bffe4b8 # 08394 -.long 0x7de0b90e # 08398 -.long 0x4bffe4b0 # 0839c -.long 0x7e00b90e # 083a0 -.long 0x4bffe4a8 # 083a4 -.long 0x7e20b90e # 083a8 -.long 0x4bffe4a0 # 083ac -.long 0x7e40b90e # 083b0 -.long 0x4bffe498 # 083b4 -.long 0x7e60b90e # 083b8 -.long 0x4bffe490 # 083bc -.long 0x7e80b90e # 083c0 -.long 0x4bffe488 # 083c4 -.long 0x7ea0b90e # 083c8 -.long 0x4bffe480 # 083cc -.long 0x7ec0b90e # 083d0 -.long 0x4bffe478 # 083d4 -.long 0x7ee0b90e # 083d8 -.long 0x4bffe470 # 083dc -.long 0x7f00b90e # 083e0 -.long 0x4bffe468 # 083e4 -.long 0x7f20b90e # 083e8 -.long 0x4bffe460 # 083ec -.long 0x7f40b90e # 083f0 -.long 0x4bffe458 # 083f4 -.long 0x7f60b90e # 083f8 -.long 0x4bffe450 # 083fc -.long 0x7f80b90e # 08400 -.long 0x4bffe448 # 08404 -.long 0x7fa0b90e # 08408 -.long 0x4bffe440 # 0840c -.long 0x7fc0b90e # 08410 -.long 0x4bffe438 # 08414 -.long 0x7fe0b90e # 08418 -.long 0x4bffe430 # 0841c -.long 0x7c00b94e # 08420 -.long 0x4bffe434 # 08424 -.long 0x7c20b94e # 08428 -.long 0x4bffe42c # 0842c -.long 0x7c40b94e # 08430 -.long 0x4bffe424 # 08434 -.long 0x7c60b94e # 08438 -.long 0x4bffe41c # 0843c -.long 0x7c80b94e # 08440 -.long 0x4bffe414 # 08444 -.long 0x7ca0b94e # 08448 -.long 0x4bffe40c # 0844c -.long 0x7cc0b94e # 08450 -.long 0x4bffe404 # 08454 -.long 0x7ce0b94e # 08458 -.long 0x4bffe3fc # 0845c -.long 0x7d00b94e # 08460 -.long 0x4bffe3f4 # 08464 -.long 0x7d20b94e # 08468 -.long 0x4bffe3ec # 0846c -.long 0x7d40b94e # 08470 -.long 0x4bffe3e4 # 08474 -.long 0x7d60b94e # 08478 -.long 0x4bffe3dc # 0847c -.long 0x7d80b94e # 08480 -.long 0x4bffe3d4 # 08484 -.long 0x7da0b94e # 08488 -.long 0x4bffe3cc # 0848c -.long 0x7dc0b94e # 08490 -.long 0x4bffe3c4 # 08494 -.long 0x7de0b94e # 08498 -.long 0x4bffe3bc # 0849c -.long 0x7e00b94e # 084a0 -.long 0x4bffe3b4 # 084a4 -.long 0x7e20b94e # 084a8 -.long 0x4bffe3ac # 084ac -.long 0x7e40b94e # 084b0 -.long 0x4bffe3a4 # 084b4 -.long 0x7e60b94e # 084b8 -.long 0x4bffe39c # 084bc -.long 0x7e80b94e # 084c0 -.long 0x4bffe394 # 084c4 -.long 0x7ea0b94e # 084c8 -.long 0x4bffe38c # 084cc -.long 0x7ec0b94e # 084d0 -.long 0x4bffe384 # 084d4 -.long 0x7ee0b94e # 084d8 -.long 0x4bffe37c # 084dc -.long 0x7f00b94e # 084e0 -.long 0x4bffe374 # 084e4 -.long 0x7f20b94e # 084e8 -.long 0x4bffe36c # 084ec -.long 0x7f40b94e # 084f0 -.long 0x4bffe364 # 084f4 -.long 0x7f60b94e # 084f8 -.long 0x4bffe35c # 084fc -.long 0x7f80b94e # 08500 -.long 0x4bffe354 # 08504 -.long 0x7fa0b94e # 08508 -.long 0x4bffe34c # 0850c -.long 0x7fc0b94e # 08510 -.long 0x4bffe344 # 08514 -.long 0x7fe0b94e # 08518 -.long 0x4bffe33c # 0851c -.long 0x7c00b98e # 08520 -.long 0x4bffe340 # 08524 -.long 0x7c20b98e # 08528 -.long 0x4bffe338 # 0852c -.long 0x7c40b98e # 08530 -.long 0x4bffe330 # 08534 -.long 0x7c60b98e # 08538 -.long 0x4bffe328 # 0853c -.long 0x7c80b98e # 08540 -.long 0x4bffe320 # 08544 -.long 0x7ca0b98e # 08548 -.long 0x4bffe318 # 0854c -.long 0x7cc0b98e # 08550 -.long 0x4bffe310 # 08554 -.long 0x7ce0b98e # 08558 -.long 0x4bffe308 # 0855c -.long 0x7d00b98e # 08560 -.long 0x4bffe300 # 08564 -.long 0x7d20b98e # 08568 -.long 0x4bffe2f8 # 0856c -.long 0x7d40b98e # 08570 -.long 0x4bffe2f0 # 08574 -.long 0x7d60b98e # 08578 -.long 0x4bffe2e8 # 0857c -.long 0x7d80b98e # 08580 -.long 0x4bffe2e0 # 08584 -.long 0x7da0b98e # 08588 -.long 0x4bffe2d8 # 0858c -.long 0x7dc0b98e # 08590 -.long 0x4bffe2d0 # 08594 -.long 0x7de0b98e # 08598 -.long 0x4bffe2c8 # 0859c -.long 0x7e00b98e # 085a0 -.long 0x4bffe2c0 # 085a4 -.long 0x7e20b98e # 085a8 -.long 0x4bffe2b8 # 085ac -.long 0x7e40b98e # 085b0 -.long 0x4bffe2b0 # 085b4 -.long 0x7e60b98e # 085b8 -.long 0x4bffe2a8 # 085bc -.long 0x7e80b98e # 085c0 -.long 0x4bffe2a0 # 085c4 -.long 0x7ea0b98e # 085c8 -.long 0x4bffe298 # 085cc -.long 0x7ec0b98e # 085d0 -.long 0x4bffe290 # 085d4 -.long 0x7ee0b98e # 085d8 -.long 0x4bffe288 # 085dc -.long 0x7f00b98e # 085e0 -.long 0x4bffe280 # 085e4 -.long 0x7f20b98e # 085e8 -.long 0x4bffe278 # 085ec -.long 0x7f40b98e # 085f0 -.long 0x4bffe270 # 085f4 -.long 0x7f60b98e # 085f8 -.long 0x4bffe268 # 085fc -.long 0x7f80b98e # 08600 -.long 0x4bffe260 # 08604 -.long 0x7fa0b98e # 08608 -.long 0x4bffe258 # 0860c -.long 0x7fc0b98e # 08610 -.long 0x4bffe250 # 08614 -.long 0x7fe0b98e # 08618 -.long 0x4bffe248 # 0861c - - - -/*********************************************************** - - panic_wrapper_0x08620 - -************************************************************ - -Xrefs: -major_0x08794 - -***********************************************************/ - -.align 5 # 08620 - -panic_wrapper_0x08620: /* < outside referer */ -b panic # 08620 - - - -/*********************************************************** - - major_0x08624 - -***********************************************************/ - -.long 0x4800001c # 08624 -.long 0x60000000 # 08628 -.long 0x60000000 # 0862c -.long 0x60000000 # 08630 -.long 0x60000000 # 08634 -.long 0x60000000 # 08638 -.long 0x60000000 # 0863c - - - -/*********************************************************** - - major_0x08640 - -************************************************************ - -Xrefs: -"lisori_caller" - -***********************************************************/ - -.align 6 # 08640 - -major_0x08640: /* < outside referer */ -mr r8, r8 # 08640 -mr r9, r9 # 08644 -addi r8, r1, -0xb90 # 08648 - -# r8 = lock -bl lock # 0864c -mr r8, r8 # 08650 -mr r9, r9 # 08654 -mfspr r8, 272/*sprg0*/ # 08658 -stw r7, -0x0010( r8) # 0865c -lwz r6, 0x0018( r8) # 08660 -stw r14, 0x0038( r8) # 08664 -stw r15, 0x003c( r8) # 08668 -stw r16, 0x0040( r8) # 0866c -mfspr r9, 287/*pvr*/ # 08670 -srwi r9, r9, 16 # 08674 -cmpwi cr2, r9, 0x09 # 08678 -beq- major_0x08640_0x44 # 0867c -cmpwi cr2, r9, 0x0a # 08680 - -major_0x08640_0x44: -lwz r7, 0x0ee8( r1) # 08684 -rlwinm r8, r3, 2, 20, 29 # 08688 -cmplwi r7, 0x00 # 0868c -beq- major_0x08640_0x60 # 08690 -lwzx r9, r7, r8 # 08694 -addi r9, r9, 0x01 # 08698 -stwx r9, r7, r8 # 0869c - -major_0x08640_0x60: -lwz r7, 0x064c( r1) # 086a0 -b major_0x08640_0x138 # 086a4 - -major_0x08640_0x68: /* < outside referer */ -.long 0x000088bc # 086a8 -.long 0x000087c4 # 086ac -.long 0x000087fc # 086b0 -.long 0x00008e44 # 086b4 -.long 0x00008e7c # 086b8 -.long 0x00008e2c # 086bc -.long 0x00009630 # 086c0 -.long 0x000094ac # 086c4 -.long 0x000093a0 # 086c8 -.long 0x0000941c # 086cc -.long 0x00008ca0 # 086d0 -.long 0x00008784 # 086d4 -.long 0x00008c14 # 086d8 -.long 0x00008794 # 086dc -.long 0x00008790 # 086e0 -.long 0x0000878c # 086e4 -.long 0x00008788 # 086e8 -.long 0x00008f1c # 086ec -.long 0x00009218 # 086f0 -.long 0x00008cbc # 086f4 -.long 0x00009530 # 086f8 -.long 0x000094f4 # 086fc -.long 0x00008e58 # 08700 -.long 0x00009428 # 08704 -.long 0x00009014 # 08708 -.long 0x00009620 # 0870c - -major_0x08640_0xd0: /* < outside referer */ -.long 0x000087c4 # 08710 -.long 0x000087c4 # 08714 -.long 0x000087fc # 08718 -.long 0x00008e44 # 0871c -.long 0x000087a8 # 08720 -.long 0x000087a4 # 08724 -.long 0x000087a0 # 08728 -.long 0x000094ac # 0872c -.long 0x000093a0 # 08730 -.long 0x00008794 # 08734 -.long 0x00008ca0 # 08738 -.long 0x0000878c # 0873c -.long 0x00008788 # 08740 -.long 0x00008794 # 08744 -.long 0x00008790 # 08748 -.long 0x0000878c # 0874c -.long 0x00008788 # 08750 -.long 0x00008f1c # 08754 -.long 0x00009218 # 08758 -.long 0x00008cbc # 0875c -.long 0x00009530 # 08760 -.long 0x00008764 # 08764 -.long 0x00008760 # 08768 -.long 0x0000875c # 0876c -.long 0x00009014 # 08770 -.long 0x00008754 # 08774 - -major_0x08640_0x138: -lwz r9, 0x06b4( r1) # 08778 -cmplwi r3, 0x1a # 0877c -cmpwi cr1, r9, 0x00 # 08780 -rlwimi r7, r3, 2, 23, 29 # 08784 - - - -/*********************************************************** - - major_0x08788 - -************************************************************ - -Xrefs: -major_0x08640 - -***********************************************************/ - -.align 3 # 08788 - -lis r8, major_0x08640_0x68@h # 08788 -ori r8, r8, major_0x08640_0x68@l # 0878c -bne- cr1, major_0x08794_0x8 # 08790 - - - -/*********************************************************** - - major_0x08794 - -************************************************************ - -Xrefs: -"temp" -major_0x08788 -major_0x0b144 - -***********************************************************/ - -lis r8, major_0x08640_0xd0@h # 08794 -ori r8, r8, major_0x08640_0xd0@l # 08798 - -major_0x08794_0x8: /* < outside referer */ -lwzx r8, r8, r7 # 0879c -lwz r9, 0x06a8( r1) # 087a0 -add r8, r8, r7 # 087a4 -mtlr r8 # 087a8 -bltlr- # 087ac - -major_0x08794_0x1c: -li r3, -0x01 # 087b0 -b major_0x08794_0x34 # 087b4 -.long 0x4bfffff8 # 087b8 -.long 0x38600000 # 087bc -.long 0x48000008 # 087c0 - -major_0x08794_0x30: -li r3, 0x01 # 087c4 - -major_0x08794_0x34: -mfspr r8, 272/*sprg0*/ # 087c8 -lwz r14, 0x0038( r8) # 087cc -lwz r15, 0x003c( r8) # 087d0 -lwz r16, 0x0040( r8) # 087d4 -lwz r7, -0x0010( r8) # 087d8 -lwz r6, -0x0014( r8) # 087dc -sync # 087e0 -lwz r8, -0x0b90( r1) # 087e4 -cmpwi cr1, r8, 0x00 # 087e8 -li r8, 0x00 # 087ec -bne+ cr1, major_0x08794_0x68 # 087f0 -mflr r8 # 087f4 -bl panic # 087f8 - -major_0x08794_0x68: -stw r8, -0x0b90( r1) # 087fc -b skeleton_key # 08800 -mfspr r8, 272/*sprg0*/ # 08804 -stmw r29, 0x0074( r8) # 08808 -lwz r29, 0x05a8( r1) # 0880c -lwz r30, 0x064c( r1) # 08810 -lwz r31, 0x05a4( r1) # 08814 -subf r30, r30, r29 # 08818 -cmpwi r31, 0x00 # 0881c -add r30, r30, r31 # 08820 -beq- major_0x08794_0x11c # 08824 -li r8, 0x00 # 08828 -stw r8, 0x05a4( r1) # 0882c -bl 1f # 08830 -.ascii "Protecting the nanokernel: " # 08834 -.short 0 # 0884f -.align 2 # 08851 -1: mflr r8 # 08854 -bl print_string # 08858 -mr r8, r31 # 0885c -bl print_word_hex # 08860 -mr r8, r30 # 08864 -bl print_word_hex # 08868 -bl 1f # 0886c -.ascii "^n" # 08870 -.short 0 # 08872 -.align 2 # 08874 -1: mflr r8 # 08874 -bl print_string # 08878 -addi r29, r1, 0x1000 # 0887c - -major_0x08794_0xec: -srwi r4, r31, 12 # 08880 -lwz r9, 0x06a8( r1) # 08884 -bl major_0x08794_0x1268 # 08888 -bge- cr4, major_0x08794_0x11c # 0888c -bltl- cr5, major_0x08794_0x134c # 08890 -bgel- cr5, major_0x08794_0x13e0 # 08894 -ori r16, r16, 0x400 # 08898 -rlwimi r9, r29, 0, 0, 19 # 0889c -bl major_0x08794_0x13ac # 088a0 -addi r31, r31, 0x1000 # 088a4 -cmplw r31, r30 # 088a8 -ble+ major_0x08794_0xec # 088ac - -major_0x08794_0x11c: -mfspr r8, 272/*sprg0*/ # 088b0 -lmw r29, 0x0074( r8) # 088b4 -b major_0x08794_0x30 # 088b8 -.long 0x48000015 # 088bc -.long 0x4c656761 # 088c0 -.long 0x63792056 # 088c4 -.long 0x4d496e69 # 088c8 -.long 0x74200000 # 088cc -.long 0x7d0802a6 # 088d0 -.long 0x4800db0d # 088d4 -.long 0x7c882378 # 088d8 -.long 0x4800de35 # 088dc -.long 0x7ca82b78 # 088e0 -.long 0x4800de2d # 088e4 -.long 0x48000009 # 088e8 -.long 0x5e6e0000 # 088ec -.long 0x7d0802a6 # 088f0 -.long 0x4800daed # 088f4 -.long 0x80e106b0 # 088f8 -.long 0x810106c0 # 088fc -.long 0x7c074000 # 08900 -.long 0x4082fec0 # 08904 -.long 0x908106a8 # 08908 -.long 0x90a106b0 # 0890c -.long 0x80c105e8 # 08910 -.long 0x38a00000 # 08914 -.long 0x38800000 # 08918 -.long 0x81060000 # 0891c -.long 0x38c60008 # 08920 -.long 0xa0680000 # 08924 -.long 0xa0e80002 # 08928 -.long 0x81080004 # 0892c -.long 0x38e70001 # 08930 -.long 0x2c830000 # 08934 -.long 0x71030c00 # 08938 -.long 0x2c030c00 # 0893c -.long 0x4082008c # 08940 -.long 0x4086fcdd # 08944 -.long 0x550fb03a # 08948 -.long 0x386106c0 # 0894c -.long 0x50a3173a # 08950 -.long 0x91e30000 # 08954 -.long 0x54a3801e # 08958 -.long 0x7c032000 # 0895c -.long 0x4082fcc1 # 08960 -.long 0x820f0000 # 08964 -.long 0x38e7ffff # 08968 -.long 0x72030001 # 0896c -.long 0x4182fcb1 # 08970 -.long 0x72030800 # 08974 -.long 0x41820044 # 08978 -.long 0x81c106a4 # 0897c -.long 0x5603ba78 # 08980 -.long 0x7d0e186e # 08984 -.long 0x812e0004 # 08988 -.long 0x75038000 # 0898c -.long 0x4182fc91 # 08990 -.long 0x71230003 # 08994 -.long 0x2c030000 # 08998 -.long 0x4182fc85 # 0899c -.long 0x56038dbe # 089a0 -.long 0x5103542a # 089a4 -.long 0x5103ab1e # 089a8 -.long 0x7c032000 # 089ac -.long 0x4082fc71 # 089b0 -.long 0x4800112d # 089b4 -.long 0x48001189 # 089b8 -.long 0x2c070000 # 089bc -.long 0x39ef0004 # 089c0 -.long 0x38840001 # 089c4 -.long 0x4082ff9c # 089c8 -.long 0x80e106b4 # 089cc -.long 0x38a50001 # 089d0 -.long 0x38e7ffff # 089d4 -.long 0x54e7843e # 089d8 -.long 0x7c053800 # 089dc -.long 0x4081ff3c # 089e0 -.long 0x80e106ac # 089e4 -.long 0x7c043800 # 089e8 -.long 0x4082fc35 # 089ec -.long 0x80a106b0 # 089f0 -.long 0x808106a8 # 089f4 -.long 0x70a70fff # 089f8 -.long 0x38600002 # 089fc -.long 0x40820230 # 08a00 -.long 0x80e106b4 # 08a04 -.long 0x7c072040 # 08a08 -.long 0x38600003 # 08a0c -.long 0x41800220 # 08a10 -.long 0x38e403ff # 08a14 -.long 0x54e6b2be # 08a18 -.long 0x54a8a33e # 08a1c -.long 0x7d083214 # 08a20 -.long 0x812106ac # 08a24 -.long 0x7c084840 # 08a28 -.long 0x38600004 # 08a2c -.long 0x41810200 # 08a30 -.long 0x7c044840 # 08a34 -.long 0x38600005 # 08a38 -.long 0x418001f4 # 08a3c -.long 0x54a7a33e # 08a40 -.long 0x48001259 # 08a44 -.long 0x912106b0 # 08a48 -.long 0x7d2f4b78 # 08a4c -.long 0x54a7a33e # 08a50 -.long 0x7ce73214 # 08a54 -.long 0x38e7ffff # 08a58 -.long 0x48001241 # 08a5c -.long 0x7d2f4850 # 08a60 -.long 0x5529a33e # 08a64 -.long 0x39290001 # 08a68 -.long 0x7c093000 # 08a6c -.long 0x38600006 # 08a70 -.long 0x408201bc # 08a74 -.long 0x908106a8 # 08a78 -.long 0x8101ffe0 # 08a7c -.long 0x54876026 # 08a80 -.long 0x90e80dc8 # 08a84 -.long 0x5487103a # 08a88 -.long 0x39000000 # 08a8c -.long 0x38e7fffc # 08a90 -.long 0x2c070000 # 08a94 -.long 0x7d0f392e # 08a98 -.long 0x4082fff4 # 08a9c -.long 0x80e106ac # 08aa0 -.long 0x54e6103a # 08aa4 -.long 0x38c6fffc # 08aa8 -.long 0x54c7f0be # 08aac -.long 0x480011ed # 08ab0 -.long 0x2c060000 # 08ab4 -.long 0x61300021 # 08ab8 -.long 0x7e0f312e # 08abc -.long 0x4082ffe8 # 08ac0 -.long 0x81e106b0 # 08ac4 -.long 0x54a7b2be # 08ac8 -.long 0x7def3a14 # 08acc -.long 0x80a106a8 # 08ad0 -.long 0x820f0000 # 08ad4 -.long 0x72070001 # 08ad8 -.long 0x4182fb45 # 08adc -.long 0x62100404 # 08ae0 -.long 0x920f0000 # 08ae4 -.long 0x38a5fc00 # 08ae8 -.long 0x2c050000 # 08aec -.long 0x39ef0004 # 08af0 -.long 0x4181ffe0 # 08af4 -.long 0x812106b4 # 08af8 -.long 0x80c105e8 # 08afc -.long 0x3929ffff # 08b00 -.long 0x39000a00 # 08b04 -.long 0x6107ffff # 08b08 -.long 0x2809ffff # 08b0c -.long 0x80660000 # 08b10 -.long 0x38c60008 # 08b14 -.long 0x90e30000 # 08b18 -.long 0x91030004 # 08b1c -.long 0x90e30008 # 08b20 -.long 0x9103000c # 08b24 -.long 0x3d29ffff # 08b28 -.long 0x4181ffe0 # 08b2c -.long 0xb1230002 # 08b30 -.long 0xb123000a # 08b34 -.long 0x80c105e8 # 08b38 -.long 0x812106a8 # 08b3c -.long 0x81e106b0 # 08b40 -.long 0x81060000 # 08b44 -.long 0x3ce00001 # 08b48 -.long 0x5523843f # 08b4c -.long 0x40820008 # 08b50 -.long 0x7d274b78 # 08b54 -.long 0x7d274851 # 08b58 -.long 0x38e7ffff # 08b5c -.long 0x90e80000 # 08b60 -.long 0x55e755a6 # 08b64 -.long 0x60e70c00 # 08b68 -.long 0x90e80004 # 08b6c -.long 0x3def0004 # 08b70 -.long 0x38c60008 # 08b74 -.long 0x4082ffcc # 08b78 -.long 0x7d3042a6 # 08b7c -.long 0x80c9ffec # 08b80 -.long 0x4800ad29 # 08b84 -.long 0x8109ffe4 # 08b88 -.long 0x39200000 # 08b8c -.long 0x4800785d # 08b90 -.long 0x82080024 # 08b94 -.long 0x2c100000 # 08b98 -.long 0x4082fa84 # 08b9c -.long 0x3a000000 # 08ba0 -.long 0x9208003c # 08ba4 -.long 0x820106b0 # 08ba8 -.long 0x92080040 # 08bac -.long 0x820106a8 # 08bb0 -.long 0x56106026 # 08bb4 -.long 0x9208002c # 08bb8 -.long 0x3a10ffff # 08bbc -.long 0x92080028 # 08bc0 -.long 0x7d114378 # 08bc4 -.long 0x48000019 # 08bc8 -.long 0x41646a75 # 08bcc -.long 0x7374696e # 08bd0 -.long 0x67206172 # 08bd4 -.long 0x65612000 # 08bd8 -.long 0 # 08bdc -.long 0x7d0802a6 # 08be0 -.long 0x4800d7fd # 08be4 -.long 0x81110000 # 08be8 -.long 0x7d084378 # 08bec -.long 0x4800db21 # 08bf0 -.long 0x48000011 # 08bf4 -.long 0x746f2073 # 08bf8 -.long 0x697a6520 # 08bfc -.long 0 # 08c00 -.long 0x7d0802a6 # 08c04 -.long 0x4800d7d9 # 08c08 -.long 0x8111002c # 08c0c -.long 0x7d084378 # 08c10 -.long 0x4800dafd # 08c14 -.long 0x48000009 # 08c18 -.long 0x5e6e0000 # 08c1c -.long 0x7d0802a6 # 08c20 -.long 0x4800d7bd # 08c24 -.long 0x4800acf5 # 08c28 -.long 0x4bfffb90 # 08c2c -.long 0x80e106ac # 08c30 -.long 0x810106c0 # 08c34 -.long 0x90e106a8 # 08c38 -.long 0x910106b0 # 08c3c -.long 0x4bfffb88 # 08c40 -.long 0x48000db9 # 08c44 -.long 0x4090fb68 # 08c48 -.long 0x4195fb64 # 08c4c -.long 0x409ffb60 # 08c50 -.long 0x4199fb5c # 08c54 -.long 0x409afb58 # 08c58 -.long 0x41940e85 # 08c5c -.long 0x41940ee1 # 08c60 -.long 0x7de67b78 # 08c64 -.long 0x7ca42b78 # 08c68 -.long 0x7e058378 # 08c6c -.long 0x812106a8 # 08c70 -.long 0x48000d89 # 08c74 -.long 0x4090fb38 # 08c78 -.long 0x4195fb34 # 08c7c -.long 0x409ffb30 # 08c80 -.long 0x4199fb2c # 08c84 -.long 0x409afb28 # 08c88 -.long 0x41940e55 # 08c8c -.long 0x41940eb1 # 08c90 -.long 0x90af0000 # 08c94 -.long 0x92060000 # 08c98 -.long 0x54a40026 # 08c9c -.long 0x56050026 # 08ca0 -.long 0x39201000 # 08ca4 -.long 0x38c00004 # 08ca8 -.long 0x7d264851 # 08cac -.long 0x7ce4482e # 08cb0 -.long 0x7d05482e # 08cb4 -.long 0x7ce5492e # 08cb8 -.long 0x7d04492e # 08cbc -.long 0x4082ffec # 08cc0 -.long 0x4bfffb04 # 08cc4 -.long 0x40860030 # 08cc8 -.long 0x7d3042a6 # 08ccc -.long 0x80c9ffec # 08cd0 -.long 0x4800abd9 # 08cd4 -.long 0x549d6026 # 08cd8 -.long 0x480000ad # 08cdc -.long 0x41800010 # 08ce0 -.long 0x409f014c # 08ce4 -.long 0x5623a33e # 08ce8 -.long 0x4800014c # 08cec -.long 0x4800ac2d # 08cf0 -.long 0x812106a8 # 08cf4 -.long 0x48000d05 # 08cf8 -.long 0x409ffab4 # 08cfc -.long 0x5523a33e # 08d00 -.long 0x4bfffac4 # 08d04 -.long 0x40860050 # 08d08 -.long 0x7d3042a6 # 08d0c -.long 0x80c9ffec # 08d10 -.long 0x4800ab99 # 08d14 -.long 0x549d6026 # 08d18 -.long 0x4800006d # 08d1c -.long 0x41800030 # 08d20 -.long 0x807e0000 # 08d24 -.long 0x4182001c # 08d28 -.long 0x409f0018 # 08d2c -.long 0x40940014 # 08d30 -.long 0x480097f5 # 08d34 -.long 0x48009845 # 08d38 -.long 0x807e0000 # 08d3c -.long 0x52230026 # 08d40 -.long 0x3a000882 # 08d44 -.long 0x7c638078 # 08d48 -.long 0x480000ec # 08d4c -.long 0x4800abcd # 08d50 -.long 0x812106a8 # 08d54 -.long 0x48000ca5 # 08d58 -.long 0x7e038378 # 08d5c -.long 0x409f001c # 08d60 -.long 0x51230026 # 08d64 -.long 0x40940014 # 08d68 -.long 0x48000d75 # 08d6c -.long 0x48000dbd # 08d70 -.long 0x7e038378 # 08d74 -.long 0x51230026 # 08d78 -.long 0x39000882 # 08d7c -.long 0x7c634078 # 08d80 -.long 0x4bfffa44 # 08d84 -.long 0x7f9042a6 # 08d88 -.long 0x7f6802a6 # 08d8c -.long 0x7fa9eb78 # 08d90 -.long 0x811cffe4 # 08d94 -.long 0x48007655 # 08d98 -.long 0x7d1f4378 # 08d9c -.long 0x821f0024 # 08da0 -.long 0x823f0028 # 08da4 -.long 0x825f0020 # 08da8 -.long 0x7c1d8040 # 08dac -.long 0x7c9d8840 # 08db0 -.long 0x41800048 # 08db4 -.long 0x41850044 # 08db8 -.long 0x56480421 # 08dbc -.long 0x827f0070 # 08dc0 -.long 0x41820050 # 08dc4 -.long 0x823f0038 # 08dc8 -.long 0x56730026 # 08dcc -.long 0x2c110000 # 08dd0 -.long 0x7e50e850 # 08dd4 -.long 0x41820024 # 08dd8 -.long 0x7f6803a6 # 08ddc -.long 0x4c000182 # 08de0 -.long 0x4c421242 # 08de4 -.long 0x7e329a14 # 08de8 -.long 0x3bdf0074 # 08dec -.long 0x4ffffa42 # 08df0 -.long 0x52320026 # 08df4 -.long 0x4e800020 # 08df8 -.long 0x7f6803a6 # 08dfc -.long 0x57a8273e # 08e00 -.long 0x2c080007 # 08e04 -.long 0x41820028 # 08e08 -.long 0x4c000242 # 08e0c -.long 0x4e800020 # 08e10 -.long 0x7fa8eb78 # 08e14 -.long 0x48009615 # 08e18 -.long 0x480096dd # 08e1c -.long 0x7f6803a6 # 08e20 -.long 0x4c000182 # 08e24 -.long 0x4c421182 # 08e28 -.long 0x4e800020 # 08e2c -.long 0x4800aaed # 08e30 -.long 0x4bfff97c # 08e34 -.long 0x4800aae5 # 08e38 -.long 0x4bfff98c # 08e3c -.long 0x48000bbd # 08e40 -.long 0x419ff980 # 08e44 -.long 0x560387fe # 08e48 -.long 0x4bfff97c # 08e4c -.long 0x40860030 # 08e50 -.long 0x7d3042a6 # 08e54 -.long 0x80c9ffec # 08e58 -.long 0x4800aa51 # 08e5c -.long 0x549d6026 # 08e60 -.long 0x4bffff25 # 08e64 -.long 0x41800010 # 08e68 -.long 0x821e0000 # 08e6c -.long 0x56030ffe # 08e70 -.long 0x4bffffc4 # 08e74 -.long 0x4800aaa5 # 08e78 -.long 0x812106a8 # 08e7c -.long 0x48000b7d # 08e80 -.long 0x560307fe # 08e84 -.long 0x4bfff940 # 08e88 -.long 0x48000b71 # 08e8c -.long 0x5603e7fe # 08e90 -.long 0x68630001 # 08e94 -.long 0x4094f930 # 08e98 -.long 0x48000c45 # 08e9c -.long 0x48000c8d # 08ea0 -.long 0x5603e7fe # 08ea4 -.long 0x68630001 # 08ea8 -.long 0x4bfff91c # 08eac -.long 0x5529103b # 08eb0 -.long 0x81e106b0 # 08eb4 -.long 0x81c106a4 # 08eb8 -.long 0x7def4a14 # 08ebc -.long 0x5524f0be # 08ec0 -.long 0x38a00100 # 08ec4 -.long 0x38c00008 # 08ec8 -.long 0x860ffffc # 08ecc -.long 0x3884ffff # 08ed0 -.long 0x7e007120 # 08ed4 -.long 0x2c040000 # 08ed8 -.long 0x5607ba78 # 08edc -.long 0x409f002c # 08ee0 -.long 0x4094001c # 08ee4 -.long 0x7dce3a14 # 08ee8 -.long 0x810e0000 # 08eec -.long 0x48000bf1 # 08ef0 -.long 0x7d292878 # 08ef4 -.long 0x48000c49 # 08ef8 -.long 0x7dc77050 # 08efc -.long 0x521035ac # 08f00 -.long 0x7e103078 # 08f04 -.long 0x920f0000 # 08f08 -.long 0x4082ffc0 # 08f0c -.long 0x4bfff8b8 # 08f10 -.long 0x7f8802a6 # 08f14 -.long 0x7d1d4378 # 08f18 -.long 0x7d3e4b78 # 08f1c -.long 0x7e5042a6 # 08f20 -.long 0x54896026 # 08f24 -.long 0x8112ffe4 # 08f28 -.long 0x480074c1 # 08f2c -.long 0x82280020 # 08f30 -.long 0x82080024 # 08f34 -.long 0x56320421 # 08f38 -.long 0x7c904840 # 08f3c -.long 0x4182f6e0 # 08f40 -.long 0x4185f6dc # 08f44 -.long 0x3a00ffff # 08f48 -.long 0x7f8803a6 # 08f4c -.long 0x92080038 # 08f50 -.long 0x7fa8eb78 # 08f54 -.long 0x7fc9f378 # 08f58 -.long 0x4e800020 # 08f5c -.long 0x40860004 # 08f60 -.long 0x48000a99 # 08f64 -.long 0x56070674 # 08f68 -.long 0x2c070020 # 08f6c -.long 0x409ff840 # 08f70 -.long 0x4182f854 # 08f74 -.long 0x40900028 # 08f78 -.long 0x41940b65 # 08f7c -.long 0x40940bf5 # 08f80 -.long 0x561006f0 # 08f84 -.long 0x552906f0 # 08f88 -.long 0x80e10688 # 08f8c -.long 0x50e906f8 # 08f90 -.long 0x62100020 # 08f94 -.long 0x48000b91 # 08f98 -.long 0x4bfff82c # 08f9c -.long 0x5487873e # 08fa0 -.long 0x2c070008 # 08fa4 -.long 0x4180f808 # 08fa8 -.long 0x4099f804 # 08fac -.long 0x48000025 # 08fb0 -.long 0x564d4d61 # 08fb4 -.long 0x6b655061 # 08fb8 -.long 0x67654361 # 08fbc -.long 0x63686561 # 08fc0 -.long 0x626c6520 # 08fc4 -.long 0x666f7220 # 08fc8 -.long 0x492f4f20 # 08fcc -.long 0 # 08fd0 -.long 0x7d0802a6 # 08fd4 -.long 0x4800d409 # 08fd8 -.long 0x7c882378 # 08fdc -.long 0x4800d731 # 08fe0 -.long 0x48000009 # 08fe4 -.long 0x5e6e0000 # 08fe8 -.long 0x7d0802a6 # 08fec -.long 0x4800d3f1 # 08ff0 -.long 0x7cd042a6 # 08ff4 -.long 0x80c6ffec # 08ff8 -.long 0x4800a8b1 # 08ffc -.long 0x4bffff15 # 09000 -.long 0x4800a919 # 09004 -.long 0x80af000c # 09008 -.long 0x70a60e01 # 0900c -.long 0x2c060a01 # 09010 -.long 0x41820038 # 09014 -.long 0x39effff8 # 09018 -.long 0x80af0004 # 0901c -.long 0xa0cf0000 # 09020 -.long 0x70a50c00 # 09024 -.long 0xa0af0002 # 09028 -.long 0x4082f784 # 0902c -.long 0x38a50001 # 09030 -.long 0x7cc62a14 # 09034 -.long 0x7cc62278 # 09038 -.long 0x70c6ffff # 0903c -.long 0x4082f770 # 09040 -.long 0xb0af0002 # 09044 -.long 0x4800013c # 09048 -.long 0x80af0000 # 0904c -.long 0x80cf0004 # 09050 -.long 0x90af0008 # 09054 -.long 0x90cf000c # 09058 -.long 0x5485801e # 0905c -.long 0x90af0000 # 09060 -.long 0x54856026 # 09064 -.long 0x60a50012 # 09068 -.long 0x90af0004 # 0906c -.long 0x48000114 # 09070 -.long 0x40860004 # 09074 -.long 0x48000985 # 09078 -.long 0x56070675 # 0907c -.long 0x409ff730 # 09080 -.long 0x4182f744 # 09084 -.long 0x40900028 # 09088 -.long 0x41940a55 # 0908c -.long 0x40940ae5 # 09090 -.long 0x561006f0 # 09094 -.long 0x552906f0 # 09098 -.long 0x80e10688 # 0909c -.long 0x50e906f8 # 090a0 -.long 0x61290040 # 090a4 -.long 0x48000a81 # 090a8 -.long 0x480001f0 # 090ac -.long 0x5487873e # 090b0 -.long 0x2c070008 # 090b4 -.long 0x4180f6f8 # 090b8 -.long 0x4099f6f4 # 090bc -.long 0x48000029 # 090c0 -.long 0x564d4d61 # 090c4 -.long 0x6b655061 # 090c8 -.long 0x67655772 # 090cc -.long 0x69746554 # 090d0 -.long 0x68726f75 # 090d4 -.long 0x67682066 # 090d8 -.long 0x6f722049 # 090dc -.long 0x2f4f2000 # 090e0 -.long 0 # 090e4 -.long 0x7d0802a6 # 090e8 -.long 0x4800d2f5 # 090ec -.long 0x7c882378 # 090f0 -.long 0x4800d61d # 090f4 -.long 0x48000009 # 090f8 -.long 0x5e6e0000 # 090fc -.long 0x7d0802a6 # 09100 -.long 0x4800d2dd # 09104 -.long 0x7cd042a6 # 09108 -.long 0x80c6ffec # 0910c -.long 0x4800a79d # 09110 -.long 0x4bfffe01 # 09114 -.long 0x4800a805 # 09118 -.long 0x80af000c # 0911c -.long 0x70a60e01 # 09120 -.long 0x2c060a01 # 09124 -.long 0x41820038 # 09128 -.long 0x39effff8 # 0912c -.long 0x80af0004 # 09130 -.long 0xa0cf0000 # 09134 -.long 0x70a50c00 # 09138 -.long 0xa0af0002 # 0913c -.long 0x4082f670 # 09140 -.long 0x38a50001 # 09144 -.long 0x7cc62a14 # 09148 -.long 0x7cc62278 # 0914c -.long 0x70c6ffff # 09150 -.long 0x4082f65c # 09154 -.long 0xb0af0002 # 09158 -.long 0x48000028 # 0915c -.long 0x80af0000 # 09160 -.long 0x80cf0004 # 09164 -.long 0x90af0008 # 09168 -.long 0x90cf000c # 0916c -.long 0x5485801e # 09170 -.long 0x90af0000 # 09174 -.long 0x54856026 # 09178 -.long 0x60a50052 # 0917c -.long 0x90af0004 # 09180 -.long 0x81e106a0 # 09184 -.long 0x81c106a4 # 09188 -.long 0x54866026 # 0918c -.long 0x7cc03526 # 09190 -.long 0x54c83828 # 09194 -.long 0x7cc62278 # 09198 -.long 0x54c73032 # 0919c -.long 0x7def3838 # 091a0 -.long 0x5088b6be # 091a4 -.long 0x4c421242 # 091a8 -.long 0x65088000 # 091ac -.long 0x7cee786e # 091b0 -.long 0x81ee0008 # 091b4 -.long 0x80ce0010 # 091b8 -.long 0x80ae0018 # 091bc -.long 0x7c874040 # 091c0 -.long 0x7d0f4040 # 091c4 -.long 0x7d864040 # 091c8 -.long 0x7e054040 # 091cc -.long 0x4186007c # 091d0 -.long 0x418a0074 # 091d4 -.long 0x418e006c # 091d8 -.long 0x41920064 # 091dc -.long 0x84ee0020 # 091e0 -.long 0x81ee0008 # 091e4 -.long 0x80ce0010 # 091e8 -.long 0x80ae0018 # 091ec -.long 0x7c874040 # 091f0 -.long 0x7d0f4040 # 091f4 -.long 0x7d864040 # 091f8 -.long 0x7e054040 # 091fc -.long 0x4186004c # 09200 -.long 0x418a0044 # 09204 -.long 0x418e003c # 09208 -.long 0x41920034 # 0920c -.long 0x4c421042 # 09210 -.long 0x81e106a0 # 09214 -.long 0x81c106a4 # 09218 -.long 0x54866026 # 0921c -.long 0x7cc03526 # 09220 -.long 0x7cc62278 # 09224 -.long 0x7cc630f8 # 09228 -.long 0x54c73032 # 0922c -.long 0x7def3838 # 09230 -.long 0x69080040 # 09234 -.long 0x4082ff78 # 09238 -.long 0x4bfff58c # 0923c -.long 0x39ce0008 # 09240 -.long 0x39ce0008 # 09244 -.long 0x39ce0008 # 09248 -.long 0x48000895 # 0924c -.long 0x39000000 # 09250 -.long 0x39200000 # 09254 -.long 0x480008d5 # 09258 -.long 0x4bfff56c # 0925c -.long 0x40860004 # 09260 -.long 0x48000799 # 09264 -.long 0x56070674 # 09268 -.long 0x2c070060 # 0926c -.long 0x409ff540 # 09270 -.long 0x4182f554 # 09274 -.long 0x40900060 # 09278 -.long 0x41940865 # 0927c -.long 0x409408f5 # 09280 -.long 0x552906f0 # 09284 -.long 0x80e10688 # 09288 -.long 0x50e906f8 # 0928c -.long 0x62100060 # 09290 -.long 0x61290020 # 09294 -.long 0x48000891 # 09298 -.long 0x55240026 # 0929c -.long 0xa1010f4a # 092a0 -.long 0x7ca44214 # 092a4 -.long 0x38e01000 # 092a8 -.long 0x5508083c # 092ac -.long 0x7ce83851 # 092b0 -.long 0x7c0720ac # 092b4 -.long 0x7c0728ac # 092b8 -.long 0x7c0004ac # 092bc -.long 0x7c0727ac # 092c0 -.long 0x7c072fac # 092c4 -.long 0x4082ffe8 # 092c8 -.long 0x7c0004ac # 092cc -.long 0x4c00012c # 092d0 -.long 0x4bfff4f4 # 092d4 -.long 0x5487873e # 092d8 -.long 0x2c070008 # 092dc -.long 0x4180f4d0 # 092e0 -.long 0x4199f4cc # 092e4 -.long 0x48000029 # 092e8 -.long 0x564d4d61 # 092ec -.long 0x6b655061 # 092f0 -.long 0x67654e6f # 092f4 -.long 0x6e436163 # 092f8 -.long 0x68656162 # 092fc -.long 0x6c652066 # 09300 -.long 0x6f722049 # 09304 -.long 0x2f4f2000 # 09308 -.long 0 # 0930c -.long 0x7d0802a6 # 09310 -.long 0x4800d0cd # 09314 -.long 0x7c882378 # 09318 -.long 0x4800d3f5 # 0931c -.long 0x48000009 # 09320 -.long 0x5e6e0000 # 09324 -.long 0x7d0802a6 # 09328 -.long 0x4800d0b5 # 0932c -.long 0x7cd042a6 # 09330 -.long 0x80c6ffec # 09334 -.long 0x4800a575 # 09338 -.long 0x4bfffbd9 # 0933c -.long 0x4800a5dd # 09340 -.long 0x80af0004 # 09344 -.long 0x54a6a33e # 09348 -.long 0x7c062000 # 0934c -.long 0x4082f460 # 09350 -.long 0x3ce00000 # 09354 -.long 0x3d000000 # 09358 -.long 0x3d200000 # 0935c -.long 0x54a6a33e # 09360 -.long 0xa10f0002 # 09364 -.long 0xa0ef0000 # 09368 -.long 0x38c60001 # 0936c -.long 0x2c080000 # 09370 -.long 0x41820020 # 09374 -.long 0x38e70001 # 09378 -.long 0x3908ffff # 0937c -.long 0x50c56026 # 09380 -.long 0xb0ef0000 # 09384 -.long 0xb10f0002 # 09388 -.long 0x90af0004 # 0938c -.long 0x4bfffdf4 # 09390 -.long 0x3cc00000 # 09394 -.long 0x80ef0008 # 09398 -.long 0x810f000c # 0939c -.long 0x3ca00000 # 093a0 -.long 0x60c60a01 # 093a4 -.long 0x90ef0000 # 093a8 -.long 0x910f0004 # 093ac -.long 0x90af0008 # 093b0 -.long 0x90cf000c # 093b4 -.long 0x7c0078ac # 093b8 -.long 0x4bfffdc8 # 093bc -.long 0x40860058 # 093c0 -.long 0x7d3042a6 # 093c4 -.long 0x80c9ffec # 093c8 -.long 0x4800a4e1 # 093cc -.long 0x549d6026 # 093d0 -.long 0x4bfff9b5 # 093d4 -.long 0x41800038 # 093d8 -.long 0x4182fa54 # 093dc -.long 0x409f0010 # 093e0 -.long 0x4094000c # 093e4 -.long 0x48009141 # 093e8 -.long 0x480091a5 # 093ec -.long 0x825e0000 # 093f0 -.long 0x5652003c # 093f4 -.long 0x925e0000 # 093f8 -.long 0x825f0068 # 093fc -.long 0x823f0038 # 09400 -.long 0x7e328850 # 09404 -.long 0x923f0038 # 09408 -.long 0x4bfffa2c # 0940c -.long 0x4800a50d # 09410 -.long 0x812106a8 # 09414 -.long 0x480005e5 # 09418 -.long 0x4090f394 # 0941c -.long 0x4195f390 # 09420 -.long 0x419406bd # 09424 -.long 0x41940719 # 09428 -.long 0x50b083de # 0942c -.long 0x38e00001 # 09430 -.long 0x7e103878 # 09434 -.long 0x920f0000 # 09438 -.long 0x4bfff38c # 0943c -.long 0x480005bd # 09440 -.long 0x4090f36c # 09444 -.long 0x409ff368 # 09448 -.long 0x41940695 # 0944c -.long 0x418a001c # 09450 -.long 0x40940721 # 09454 -.long 0x38e00180 # 09458 -.long 0x7d293878 # 0945c -.long 0x62100100 # 09460 -.long 0x480006c5 # 09464 -.long 0x4bfff360 # 09468 -.long 0x40940709 # 0946c -.long 0x62100100 # 09470 -.long 0x38e00018 # 09474 -.long 0x7e103878 # 09478 -.long 0x480006c5 # 0947c -.long 0x4bfff348 # 09480 -.long 0x7c044840 # 09484 -.long 0x7c854840 # 09488 -.long 0x7ce42a14 # 0948c -.long 0x7d074840 # 09490 -.long 0x4080f31c # 09494 -.long 0x4185f318 # 09498 -.long 0x4189f314 # 0949c -.long 0x81e106b0 # 094a0 -.long 0x54e8103a # 094a4 -.long 0x38e00001 # 094a8 -.long 0x3908fffc # 094ac -.long 0x7ca72851 # 094b0 -.long 0x7e0f402e # 094b4 -.long 0x4180f310 # 094b8 -.long 0x50d03e30 # 094bc -.long 0x7e0f412e # 094c0 -.long 0x4bffffe8 # 094c4 -.long 0x40860058 # 094c8 -.long 0x7d3042a6 # 094cc -.long 0x80c9ffec # 094d0 -.long 0x4800a3d9 # 094d4 -.long 0x549d6026 # 094d8 -.long 0x54ba6026 # 094dc -.long 0x4bfff8a9 # 094e0 -.long 0x41800034 # 094e4 -.long 0x4182f948 # 094e8 -.long 0x419ff944 # 094ec -.long 0x4194f131 # 094f0 -.long 0x821e0000 # 094f4 -.long 0x50b06026 # 094f8 -.long 0x62100001 # 094fc -.long 0x921e0000 # 09500 -.long 0x825f0068 # 09504 -.long 0x823f0038 # 09508 -.long 0x7e319214 # 0950c -.long 0x923f0038 # 09510 -.long 0x4bfff924 # 09514 -.long 0x4800a405 # 09518 -.long 0x812106a8 # 0951c -.long 0x480004dd # 09520 -.long 0x4090f28c # 09524 -.long 0x419ff288 # 09528 -.long 0x4194f0f5 # 0952c -.long 0x50b06026 # 09530 -.long 0x62100001 # 09534 -.long 0x920f0000 # 09538 -.long 0x48000639 # 0953c -.long 0x480005e9 # 09540 -.long 0x4bfff284 # 09544 -.long 0x5484a33e # 09548 -.long 0x7c044840 # 0954c -.long 0x38604000 # 09550 -.long 0x4080f274 # 09554 -.long 0x480004a5 # 09558 -.long 0x38600400 # 0955c -.long 0x409ff268 # 09560 -.long 0x38600000 # 09564 -.long 0x60638000 # 09568 -.long 0x409df25c # 0956c -.long 0x2c060000 # 09570 -.long 0x4182f254 # 09574 -.long 0x38600800 # 09578 -.long 0x4bfff24c # 0957c -.long 0x40860064 # 09580 -.long 0x7d3042a6 # 09584 -.long 0x80c9ffec # 09588 -.long 0x4800a321 # 0958c -.long 0x7c9a2378 # 09590 -.long 0x54bd6026 # 09594 -.long 0x4bfff7f1 # 09598 -.long 0x41800040 # 0959c -.long 0x4182f890 # 095a0 -.long 0x409f0010 # 095a4 -.long 0x4094000c # 095a8 -.long 0x48008f7d # 095ac -.long 0x48008fe1 # 095b0 -.long 0x825e0000 # 095b4 -.long 0x7e48d278 # 095b8 -.long 0x38600461 # 095bc -.long 0x5243c77a # 095c0 -.long 0x7c634039 # 095c4 -.long 0x4082f868 # 095c8 -.long 0x7108011c # 095cc -.long 0x7e524278 # 095d0 -.long 0x925e0000 # 095d4 -.long 0x4bfff860 # 095d8 -.long 0x4800a341 # 095dc -.long 0x812106a8 # 095e0 -.long 0x7c862378 # 095e4 -.long 0x7ca42b78 # 095e8 -.long 0x48000411 # 095ec -.long 0x4090f1c0 # 095f0 -.long 0x7e073278 # 095f4 -.long 0x38600461 # 095f8 -.long 0x5203c77a # 095fc -.long 0x7c633839 # 09600 -.long 0x4082f1ac # 09604 -.long 0x70e7011c # 09608 -.long 0x7e103a78 # 0960c -.long 0x920f0000 # 09610 -.long 0x4094f1b4 # 09614 -.long 0x480004c9 # 09618 -.long 0x820f0000 # 0961c -.long 0x408a0014 # 09620 -.long 0x72070008 # 09624 -.long 0x4082000c # 09628 -.long 0x48000515 # 0962c -.long 0x4bfff198 # 09630 -.long 0x52092dee # 09634 -.long 0x52091e30 # 09638 -.long 0x5209f7fe # 0963c -.long 0x480004ed # 09640 -.long 0x4bfff184 # 09644 -.long 0x480003b5 # 09648 -.long 0x409ff170 # 0964c -.long 0x4090f160 # 09650 -.long 0x4194048d # 09654 -.long 0x419c0024 # 09658 -.long 0x409b0020 # 0965c -.long 0x6a100010 # 09660 -.long 0x62100100 # 09664 -.long 0x920f0000 # 09668 -.long 0x4094f158 # 0966c -.long 0x69290080 # 09670 -.long 0x480004b9 # 09674 -.long 0x4bfff14c # 09678 -.long 0x419404b1 # 0967c -.long 0x4bfff13c # 09680 -.long 0x80e106b0 # 09684 -.long 0x810106c0 # 09688 -.long 0x2f050000 # 0968c -.long 0x7f874000 # 09690 -.long 0x7c873378 # 09694 -.long 0x54e70017 # 09698 -.long 0x4099f114 # 0969c -.long 0x812106a8 # 096a0 -.long 0x409ef10c # 096a4 -.long 0x7c872378 # 096a8 -.long 0x4082f104 # 096ac -.long 0x7d244b78 # 096b0 -.long 0x54c66026 # 096b4 -.long 0x8121fbf8 # 096b8 -.long 0x4dce7182 # 096bc -.long 0x2f060000 # 096c0 -.long 0x7f892840 # 096c4 -.long 0x409a0028 # 096c8 -.long 0x419c0024 # 096cc -.long 0x8121fbf4 # 096d0 -.long 0x7c854850 # 096d4 -.long 0x5484103a # 096d8 -.long 0x81e106b0 # 096dc -.long 0x7def2214 # 096e0 -.long 0x5484f0be # 096e4 -.long 0x4dce7242 # 096e8 -.long 0x48000058 # 096ec -.long 0x812106a8 # 096f0 -.long 0x38a5ffff # 096f4 -.long 0x3884ffff # 096f8 -.long 0x48000301 # 096fc -.long 0x419403e1 # 09700 -.long 0x4194043d # 09704 -.long 0x812106a8 # 09708 -.long 0x7d044850 # 0970c -.long 0x7f854040 # 09710 -.long 0x7e083039 # 09714 -.long 0x409cffe0 # 09718 -.long 0x4082ffdc # 0971c -.long 0x2f060000 # 09720 -.long 0x419a0020 # 09724 -.long 0x54a8103a # 09728 -.long 0x7d0f402e # 0972c -.long 0x54ae6026 # 09730 -.long 0x7dce8214 # 09734 -.long 0x7d087278 # 09738 -.long 0x55080027 # 0973c -.long 0x4082ffb8 # 09740 -.long 0x54e46026 # 09744 -.long 0x812106b4 # 09748 -.long 0x7f874840 # 0974c -.long 0x54e90017 # 09750 -.long 0x419cf05c # 09754 -.long 0x4082f058 # 09758 -.long 0x81c105e8 # 0975c -.long 0x54e99e78 # 09760 -.long 0x7dce482e # 09764 -.long 0x54e9043e # 09768 -.long 0xa10e0000 # 0976c -.long 0x48000008 # 09770 -.long 0xa50e0008 # 09774 -.long 0xa20e0002 # 09778 -.long 0x7d084850 # 0977c -.long 0x7f888040 # 09780 -.long 0x419dfff0 # 09784 -.long 0x7d082a14 # 09788 -.long 0x7f888040 # 0978c -.long 0x419df020 # 09790 -.long 0x820e0004 # 09794 -.long 0x54e8801e # 09798 -.long 0x72100e01 # 0979c -.long 0x2c100a01 # 097a0 -.long 0x7d082b78 # 097a4 -.long 0x38a50001 # 097a8 -.long 0x4082f004 # 097ac -.long 0x910e0000 # 097b0 -.long 0x409a01b9 # 097b4 -.long 0x7de77b78 # 097b8 -.long 0x55ef503e # 097bc -.long 0x61ef0c00 # 097c0 -.long 0x91ee0004 # 097c4 -.long 0x408e0020 # 097c8 -.long 0x8101fbf8 # 097cc -.long 0x7d054050 # 097d0 -.long 0x9101fbf8 # 097d4 -.long 0x8101fbf4 # 097d8 -.long 0x7d054050 # 097dc -.long 0x9101fbf4 # 097e0 -.long 0x48000044 # 097e4 -.long 0x80e106ac # 097e8 -.long 0x7ce53850 # 097ec -.long 0x90e106ac # 097f0 -.long 0x90e106a8 # 097f4 -.long 0x80a1ffe0 # 097f8 -.long 0x54e86026 # 097fc -.long 0x91050dc4 # 09800 -.long 0x91050dc8 # 09804 -.long 0x7dc57378 # 09808 -.long 0x80e106b4 # 0980c -.long 0x39000a00 # 09810 -.long 0x480001ad # 09814 -.long 0x80e106ac # 09818 -.long 0x39000c00 # 0981c -.long 0x480001a1 # 09820 -.long 0x7cae2b78 # 09824 -.long 0x7cd042a6 # 09828 -.long 0x80c6ffec # 0982c -.long 0x4800a07d # 09830 -.long 0x7dde7378 # 09834 -.long 0x48000029 # 09838 -.long 0x20564d41 # 0983c -.long 0x6c6c6f63 # 09840 -.long 0x6174654d # 09844 -.long 0x656d6f72 # 09848 -.long 0x79202d20 # 0984c -.long 0x63726561 # 09850 -.long 0x74696e67 # 09854 -.long 0x20617265 # 09858 -.long 0x61000000 # 0985c -.long 0x7d0802a6 # 09860 -.long 0x4800cb7d # 09864 -.long 0x390000a0 # 09868 -.long 0x48008fb1 # 0986c -.long 0x7d1f4379 # 09870 -.long 0x4182edac # 09874 -.long 0x823e0004 # 09878 -.long 0xa21e0002 # 0987c -.long 0x3d006172 # 09880 -.long 0x61086561 # 09884 -.long 0x911f0004 # 09888 -.long 0x3a100001 # 0988c -.long 0x7c8f2378 # 09890 -.long 0x56106026 # 09894 -.long 0x8101fbe4 # 09898 -.long 0x81080014 # 0989c -.long 0x911f006c # 098a0 -.long 0x91ff0024 # 098a4 -.long 0x921f002c # 098a8 -.long 0x921f0038 # 098ac -.long 0x39000000 # 098b0 -.long 0x911f0030 # 098b4 -.long 0x4800000d # 098b8 -.long 0x20617420 # 098bc -.long 0x30780000 # 098c0 -.long 0x7d0802a6 # 098c4 -.long 0x4800cb19 # 098c8 -.long 0x7de87b78 # 098cc -.long 0x4800ce41 # 098d0 -.long 0x7e088378 # 098d4 -.long 0x4800ce39 # 098d8 -.long 0x48000009 # 098dc -.long 0x5e6e0000 # 098e0 -.long 0x7d0802a6 # 098e4 -.long 0x4800caf9 # 098e8 -.long 0x39000007 # 098ec -.long 0x911f001c # 098f0 -.long 0x3d000000 # 098f4 -.long 0x6108600c # 098f8 -.long 0x911f0020 # 098fc -.long 0x5628b03a # 09900 -.long 0x911f0040 # 09904 -.long 0x811f0008 # 09908 -.long 0x610800c0 # 0990c -.long 0x911f0008 # 09910 -.long 0x7fe8fb78 # 09914 -.long 0x480062d5 # 09918 -.long 0x2c090000 # 0991c -.long 0x4082ed00 # 09920 -.long 0x7d1f4378 # 09924 -.long 0x7d3042a6 # 09928 -.long 0x8109ffe4 # 0992c -.long 0x39200000 # 09930 -.long 0x48006ab9 # 09934 -.long 0x82080024 # 09938 -.long 0x2c100000 # 0993c -.long 0x4082ece0 # 09940 -.long 0x820106a8 # 09944 -.long 0x8228002c # 09948 -.long 0x56106026 # 0994c -.long 0x7c118000 # 09950 -.long 0x41820010 # 09954 -.long 0x9208002c # 09958 -.long 0x3a10ffff # 0995c -.long 0x92080028 # 09960 -.long 0x48009fb9 # 09964 -.long 0x4bffee5c # 09968 -.long 0x820f0000 # 0996c -.long 0x80e106ac # 09970 -.long 0x810106b0 # 09974 -.long 0x54e7103a # 09978 -.long 0x7ce74214 # 0997c -.long 0x54a8103a # 09980 -.long 0x7ce83850 # 09984 -.long 0x7c0f3840 # 09988 -.long 0x4d820020 # 0998c -.long 0x38e7fffc # 09990 -.long 0x7d2f402e # 09994 -.long 0x7c0f3840 # 09998 -.long 0x912f0000 # 0999c -.long 0x39ef0004 # 099a0 -.long 0x4180fff0 # 099a4 -.long 0x2c080004 # 099a8 -.long 0x3908fffc # 099ac -.long 0x96070004 # 099b0 -.long 0x3a101000 # 099b4 -.long 0x4181fff0 # 099b8 -.long 0x4e800020 # 099bc -.long 0x39c10078 # 099c0 -.long 0x81e106b0 # 099c4 -.long 0x38e7ffff # 099c8 -.long 0x2f880c00 # 099cc -.long 0x2807ffff # 099d0 -.long 0x860e0008 # 099d4 -.long 0x409e000c # 099d8 -.long 0x55e8503e # 099dc -.long 0x61080c00 # 099e0 -.long 0x91100004 # 099e4 -.long 0x3def0004 # 099e8 -.long 0x3ce7ffff # 099ec -.long 0x4181ffe0 # 099f0 -.long 0xb0f00002 # 099f4 -.long 0x4e800020 # 099f8 - -major_0x08794_0x1268: /* < outside referer */ -cmplw cr4, r4, r9 # 099fc -lwz r15, 0x06b0( r1) # 09a00 -slwi r8, r4, 2 # 09a04 -bge- cr4, major_0x08794_0x12a8 # 09a08 - -major_0x08794_0x1278: -lwzux r16, r15, r8 # 09a0c -lwz r14, 0x06a4( r1) # 09a10 -mtcrf 0x07, r16 # 09a14 -rlwinm r8, r16, 23, 9, 28 # 09a18 -rlwinm r9, r16, 0, 0, 19 # 09a1c -bgelr- cr5 # 09a20 -lwzux r8, r14, r8 # 09a24 -lwz r9, 0x0004(r14) # 09a28 -mtcrf 0x80, r8 # 09a2c -bns+ cr7, panic_wrapper_0x08620 # 09a30 -bltlr- # 09a34 -bl panic_wrapper_0x08620 # 09a38 - -major_0x08794_0x12a8: -lwz r9, 0x06b4( r1) # 09a3c -cmplw cr4, r4, r9 # 09a40 -rlwinm. r9, r4, 0, 0, 11 # 09a44 -blt+ cr4, major_0x08794_0x1c # 09a48 -bne+ major_0x08794_0x1c # 09a4c -lwz r15, 0x05e8( r1) # 09a50 -rlwinm r9, r4, 19, 25, 28 # 09a54 -lwzx r15, r15, r9 # 09a58 -clrlwi r9, r4, 0x10 # 09a5c -lhz r8, 0x0000(r15) # 09a60 -b major_0x08794_0x12d8 # 09a64 - -major_0x08794_0x12d4: -lhzu r8, 0x0008(r15) # 09a68 - -major_0x08794_0x12d8: -lhz r16, 0x0002(r15) # 09a6c -subf r8, r8, r9 # 09a70 -cmplw cr4, r8, r16 # 09a74 -bgt+ cr4, major_0x08794_0x12d4 # 09a78 -lwz r9, 0x0004(r15) # 09a7c -andi. r16, r9, 0xc00 # 09a80 -cmpwi cr6, r16, 0x400 # 09a84 -cmpwi cr7, r16, 0xc00 # 09a88 -beq- major_0x08794_0x1314 # 09a8c -beq- cr6, major_0x08794_0x131c # 09a90 -bne+ cr7, major_0x08794_0x1c # 09a94 -slwi r8, r8, 2 # 09a98 -rlwinm r15, r9, 22, 0, 29 # 09a9c -crset 4*cr4 + lt # 09aa0 -b major_0x08794_0x1278 # 09aa4 - -major_0x08794_0x1314: -slwi r8, r8, 12 # 09aa8 -add r9, r9, r8 # 09aac - -major_0x08794_0x131c: -rlwinm r16, r9, 0, 0, 19 # 09ab0 -crclr 4*cr4 + lt # 09ab4 -rlwinm r9, r9, 0, 22, 19 # 09ab8 -rlwimi r16, r9, 1, 25, 25 # 09abc -rlwimi r16, r9, 31, 26, 26 # 09ac0 -xori r16, r16, 0x20 # 09ac4 -rlwimi r16, r9, 29, 27, 27 # 09ac8 -rlwimi r16, r9, 27, 28, 28 # 09acc -rlwimi r16, r9, 2, 29, 29 # 09ad0 -ori r16, r16, 0x01 # 09ad4 -mtcrf 0x07, r16 # 09ad8 -blr # 09adc - -major_0x08794_0x134c: /* < outside referer */ -mfspr r9, 287/*pvr*/ # 09ae0 -clrlwi r8, r8, 0x01 # 09ae4 -rlwinm. r9, r9, 0, 0, 14 # 09ae8 -stw r8, 0x0000(r14) # 09aec -slwi r9, r4, 12 # 09af0 -sync # 09af4 -tlbie r9 # 09af8 -beq- major_0x08794_0x1374 # 09afc -sync # 09b00 -tlbsync # 09b04 - -major_0x08794_0x1374: -sync # 09b08 -isync # 09b0c -lwz r9, 0x0004(r14) # 09b10 -oris r8, r8, 0x8000 # 09b14 -rlwimi r16, r9, 29, 27, 27 # 09b18 -rlwimi r16, r9, 27, 28, 28 # 09b1c -mtcrf 0x07, r16 # 09b20 -blr # 09b24 - -major_0x08794_0x1394: /* < outside referer */ -stw r16, 0x0000(r15) # 09b28 -stw r9, 0x0004(r14) # 09b2c -eieio # 09b30 -stw r8, 0x0000(r14) # 09b34 -sync # 09b38 -blr # 09b3c - -major_0x08794_0x13ac: -lwz r8, 0x0e98( r1) # 09b40 -rlwinm r16, r16, 0, 21, 19 # 09b44 -addi r8, r8, 0x01 # 09b48 -stw r8, 0x0e98( r1) # 09b4c -rlwimi r16, r9, 0, 0, 19 # 09b50 -li r8, -0x01 # 09b54 -stw r8, 0x0340( r1) # 09b58 -stw r8, 0x0348( r1) # 09b5c -stw r8, 0x0350( r1) # 09b60 -stw r8, 0x0358( r1) # 09b64 -li r8, 0x00 # 09b68 -li r9, 0x00 # 09b6c -b major_0x08794_0x1394 # 09b70 - -major_0x08794_0x13e0: /* < outside referer */ -lwz r8, 0x06a0( r1) # 09b74 -lwz r14, 0x06a4( r1) # 09b78 -slwi r9, r4, 12 # 09b7c -mfsrin r6, r9 # 09b80 -xor r9, r6, r4 # 09b84 -slwi r7, r9, 6 # 09b88 -and r8, r8, r7 # 09b8c -lwzux r7, r14, r8 # 09b90 -lwz r8, 0x0008(r14) # 09b94 -lwz r9, 0x0010(r14) # 09b98 -lwz r5, 0x0018(r14) # 09b9c -cmpwi r7, 0x00 # 09ba0 -cmpwi cr1, r8, 0x00 # 09ba4 -cmpwi cr2, r9, 0x00 # 09ba8 -cmpwi cr3, r5, 0x00 # 09bac -bge- major_0x08794_0x1468 # 09bb0 -bge- cr1, major_0x08794_0x1464 # 09bb4 -bge- cr2, major_0x08794_0x1460 # 09bb8 -bge- cr3, major_0x08794_0x145c # 09bbc -lwzu r7, 0x0020(r14) # 09bc0 -lwz r8, 0x0008(r14) # 09bc4 -lwz r9, 0x0010(r14) # 09bc8 -lwz r5, 0x0018(r14) # 09bcc -cmpwi r7, 0x00 # 09bd0 -cmpwi cr1, r8, 0x00 # 09bd4 -cmpwi cr2, r9, 0x00 # 09bd8 -cmpwi cr3, r5, 0x00 # 09bdc -bge- major_0x08794_0x1468 # 09be0 -bge- cr1, major_0x08794_0x1464 # 09be4 -bge- cr2, major_0x08794_0x1460 # 09be8 -blt- cr3, major_0x08794_0x14b8 # 09bec - -major_0x08794_0x145c: -addi r14, r14, 0x08 # 09bf0 - -major_0x08794_0x1460: -addi r14, r14, 0x08 # 09bf4 - -major_0x08794_0x1464: -addi r14, r14, 0x08 # 09bf8 - -major_0x08794_0x1468: -lwz r9, 0x0e94( r1) # 09bfc -rlwinm r8, r6, 7, 1, 24 # 09c00 -addi r9, r9, 0x01 # 09c04 -stw r9, 0x0e94( r1) # 09c08 -rlwimi r8, r4, 22, 26, 31 # 09c0c -lwz r9, 0x0688( r1) # 09c10 -oris r8, r8, 0x8000 # 09c14 -rlwimi r9, r16, 0, 0, 19 # 09c18 -ori r9, r9, 0x100 # 09c1c -ori r16, r16, 0x08 # 09c20 -rlwimi r9, r16, 3, 24, 24 # 09c24 -rlwimi r9, r16, 31, 26, 26 # 09c28 -rlwimi r9, r16, 1, 25, 25 # 09c2c -xori r9, r9, 0x40 # 09c30 -rlwimi r9, r16, 30, 31, 31 # 09c34 -lwz r7, 0x06a4( r1) # 09c38 -ori r16, r16, 0x801 # 09c3c -subf r7, r7, r14 # 09c40 -rlwimi r16, r7, 9, 0, 19 # 09c44 -blr # 09c48 - -major_0x08794_0x14b8: -mr r7, r27 # 09c4c -mr r8, r29 # 09c50 -mr r9, r30 # 09c54 -mr r5, r31 # 09c58 -mr r16, r28 # 09c5c -mr r14, r26 # 09c60 -mflr r6 # 09c64 -slwi r27, r4, 12 # 09c68 -bl major_0x04c20 # 09c6c -bnel+ panic_wrapper_0x08620 # 09c70 -mr r27, r7 # 09c74 -mr r29, r8 # 09c78 -mr r30, r9 # 09c7c -mr r31, r5 # 09c80 -mr r28, r16 # 09c84 -mr r26, r14 # 09c88 -lwz r9, 0x06a8( r1) # 09c8c -bl major_0x08794_0x1268 # 09c90 -mtlr r6 # 09c94 -b major_0x08794_0x134c # 09c98 -.long 0x390106c0 # 09c9c -.long 0x812106ac # 09ca0 -.long 0x50e896ba # 09ca4 -.long 0x7c074840 # 09ca8 -.long 0x81080000 # 09cac -.long 0x54e713ba # 09cb0 -.long 0x4080eafc # 09cb4 -.long 0x7d28382e # 09cb8 -.long 0x55290026 # 09cbc -.long 0x4e800020 # 09cc0 - - - -/*********************************************************** - - major_0x09cc4 - -***********************************************************/ - -.long 0x4800001c # 09cc4 -.long 0x60000000 # 09cc8 -.long 0x60000000 # 09ccc -.long 0x60000000 # 09cd0 -.long 0x60000000 # 09cd4 -.long 0x60000000 # 09cd8 -.long 0x60000000 # 09cdc - - - -/*********************************************************** - -panic_offset_to_r1_minus_0x810_x48__0x9dfc_to_prev_plus_4_20_36 - -************************************************************ - -Xrefs: -setup - -***********************************************************/ - -.align 5 # 09ce0 - -panic_offset_to_r1_minus_0x810_x48__0x9dfc_to_prev_plus_4_20_36: /* < outside referer */ -mflr r9 # 09ce0 -lis r23, panic@h # 09ce4 -ori r23, r23, panic@l # 09ce8 -add r23, r23, r25 # 09cec -addi r8, r1, -0x810 # 09cf0 -li r22, 0xc0 # 09cf4 - -# r8 = dest -# r22 = len in bytes -# r23 = fillword -bl wordfill # 09cf8 -mtlr r9 # 09cfc -lis r23, major_0x09dfc@h # 09d00 -ori r23, r23, major_0x09dfc@l # 09d04 -add r23, r23, r25 # 09d08 -stw r23, 0x0004( r8) # 09d0c -stw r23, 0x0014( r8) # 09d10 -stw r23, 0x0024( r8) # 09d14 -blr # 09d18 - - - -/*********************************************************** - - major_0x09d1c - -***********************************************************/ - -.long 0x60000000 # 09d1c - - - -/*********************************************************** - - bootstrap_cpu - -************************************************************ - -NB: I was probably wrong about this. -Contains a (very rare) mtsprg0 instruction. - -************************************************************ - -Xrefs: -"lisori_caller" - -***********************************************************/ - -.align 5 # 09d20 - -bootstrap_cpu: /* < outside referer */ -mtcr r7 # 09d20 -lwz r4, 0x0670( r1) # 09d24 -cmplwi cr7, r3, 0x0b # 09d28 -mr r9, r13 # 09d2c -blt- cr2, bootstrap_cpu_0x18 # 09d30 -lwz r9, -0x0440( r1) # 09d34 - -bootstrap_cpu_0x18: -and. r8, r4, r9 # 09d38 -bgt- cr7, major_0x09dfc_0x60 # 09d3c -bne- major_0x09dfc_0x58 # 09d40 -cmplwi cr7, r3, 0x0b # 09d44 -beq- cr7, major_0x0a600_0x1c # 09d48 -cmplwi cr7, r3, 0x08 # 09d4c -beq- cr7, major_0x09dfc_0x68 # 09d50 -cmplwi cr7, r3, 0x09 # 09d54 -beq- cr7, major_0x0a600_0x10 # 09d58 -stw r26, 0x01d4( r6) # 09d5c -stw r27, 0x01dc( r6) # 09d60 -stw r28, 0x01e4( r6) # 09d64 -stw r29, 0x01ec( r6) # 09d68 -stw r30, 0x01f4( r6) # 09d6c -stw r31, 0x01fc( r6) # 09d70 -mfspr r31, 275/*sprg3*/ # 09d74 -addi r8, r1, -0x810 # 09d78 -mtspr 275/*sprg3*/, r8 # 09d7c -rlwinm r26, r3, 0, 29, 29 # 09d80 -clrlwi r3, r3, 0x1e # 09d84 -lbz r8, 0x06b8( r1) # 09d88 -slwi r3, r3, 1 # 09d8c -addi r3, r3, 0x1a # 09d90 -rlwnm r3, r8, r3, 0x1e, 0x1f # 09d94 -cmpwi r3, 0x00 # 09d98 -beq- major_0x09dfc_0x50 # 09d9c -lbz r9, 0x06b9( r1) # 09da0 -cmpwi r9, 0x00 # 09da4 -beq- bootstrap_cpu_0xb0 # 09da8 -mfspr r27, 1008/*hid0*/ # 09dac -mr r8, r27 # 09db0 -cmpwi r9, 0x01 # 09db4 -beq- bootstrap_cpu_0xa8 # 09db8 -oris r9, r3, 0x100 # 09dbc -srw r9, r9, r9 # 09dc0 -rlwimi r8, r9, 0, 8, 10 # 09dc4 - -bootstrap_cpu_0xa8: -oris r8, r8, 0x01 # 09dc8 -mtspr 1008/*hid0*/, r8 # 09dcc - -bootstrap_cpu_0xb0: -cmplwi r26, 0x04 # 09dd0 -beql- major_0x0a8c0_0x258 # 09dd4 -mfmsr r8 # 09dd8 -ori r8, r8, 0x8002 # 09ddc -cmplwi r3, 0x00 # 09de0 -beq- bootstrap_cpu_0xcc # 09de4 -oris r8, r8, 0x04 # 09de8 - -bootstrap_cpu_0xcc: -sync # 09dec -mtmsr r8 # 09df0 -isync # 09df4 - -bootstrap_cpu_0xd8: -b bootstrap_cpu_0xd8 # 09df8 - - - -/*********************************************************** - - major_0x09dfc - -************************************************************ - -Xrefs: -"lisori_caller" -bootstrap_cpu - -***********************************************************/ - -major_0x09dfc: /* < outside referer */ -lbz r8, 0x06b9( r1) # 09dfc -cmpwi r8, 0x00 # 09e00 -beq- major_0x09dfc_0x10 # 09e04 -mtspr 1008/*hid0*/, r27 # 09e08 - -major_0x09dfc_0x10: -mfspr r1, 274/*sprg2*/ # 09e0c -mtlr r1 # 09e10 -mfspr r1, 273/*sprg1*/ # 09e14 -lis r9, 0x7fff # 09e18 -mfspr r8, 22/*dec*/ # 09e1c -mtspr 22/*dec*/, r9 # 09e20 -mtspr 22/*dec*/, r8 # 09e24 -li r3, 0x00 # 09e28 - -major_0x09dfc_0x30: -mtspr 275/*sprg3*/, r31 # 09e2c -lwz r26, 0x01d4( r6) # 09e30 -lwz r27, 0x01dc( r6) # 09e34 -lwz r28, 0x01e4( r6) # 09e38 -lwz r29, 0x01ec( r6) # 09e3c -lwz r30, 0x01f4( r6) # 09e40 -lwz r31, 0x01fc( r6) # 09e44 -b skeleton_key # 09e48 - -major_0x09dfc_0x50: /* < outside referer */ -li r3, -0x7267 # 09e4c -b major_0x09dfc_0x30 # 09e50 - -major_0x09dfc_0x58: /* < outside referer */ -li r3, 0x00 # 09e54 -b skeleton_key # 09e58 - -major_0x09dfc_0x60: /* < outside referer */ -li r3, -0x01 # 09e5c -b skeleton_key # 09e60 - -major_0x09dfc_0x68: /* < outside referer */ -mfspr r9, 272/*sprg0*/ # 09e64 -lwz r8, -0x0338( r9) # 09e68 -lwz r9, 0x0024( r8) # 09e6c -cmpwi r9, 0x01 # 09e70 -li r3, -0x7267 # 09e74 -bgt+ skeleton_key # 09e78 -stw r26, 0x01d4( r6) # 09e7c -stw r27, 0x01dc( r6) # 09e80 -stw r28, 0x01e4( r6) # 09e84 -stw r29, 0x01ec( r6) # 09e88 -stw r30, 0x01f4( r6) # 09e8c -stw r31, 0x01fc( r6) # 09e90 -bl major_0x0a8c0_0x258 # 09e94 -mfspr r9, 1008/*hid0*/ # 09e98 -rlwinm r9, r9, 0, 18, 16 # 09e9c -rlwinm r9, r9, 0, 17, 15 # 09ea0 -mtspr 1008/*hid0*/, r9 # 09ea4 -sync # 09ea8 -isync # 09eac -lwz r26, 0x0f68( r1) # 09eb0 -andi. r26, r26, 0x01 # 09eb4 -beq- major_0x09dfc_0xdc # 09eb8 -mfspr r9, 1017/*l2cr*/ # 09ebc -clrlwi r9, r9, 0x01 # 09ec0 -mtspr 1017/*l2cr*/, r9 # 09ec4 -sync # 09ec8 -isync # 09ecc -addi r8, r1, -0x4d0 # 09ed0 -stw r9, 0x0050( r8) # 09ed4 - -major_0x09dfc_0xdc: -stw r7, 0x0000( r6) # 09ed8 -stw r2, 0x0114( r6) # 09edc -stw r3, 0x011c( r6) # 09ee0 -stw r4, 0x0124( r6) # 09ee4 -stw r5, 0x012c( r6) # 09ee8 -stw r14, 0x0174( r6) # 09eec -stw r15, 0x017c( r6) # 09ef0 -stw r16, 0x0184( r6) # 09ef4 -stw r17, 0x018c( r6) # 09ef8 -stw r18, 0x0194( r6) # 09efc -stw r19, 0x019c( r6) # 09f00 -stw r20, 0x01a4( r6) # 09f04 -stw r21, 0x01ac( r6) # 09f08 -stw r22, 0x01b4( r6) # 09f0c -stw r23, 0x01bc( r6) # 09f10 -stw r24, 0x01c4( r6) # 09f14 -stw r25, 0x01cc( r6) # 09f18 -stw r13, 0x00dc( r6) # 09f1c -andi. r8, r11, 0x2000 # 09f20 -beq- major_0x09dfc_0x1c4 # 09f24 -mfmsr r8 # 09f28 -ori r8, r8, 0x2000 # 09f2c -mtmsr r8 # 09f30 -isync # 09f34 -stfd f0, 0x0200( r6) # 09f38 -stfd f1, 0x0208( r6) # 09f3c -stfd f2, 0x0210( r6) # 09f40 -stfd f3, 0x0218( r6) # 09f44 -stfd f4, 0x0220( r6) # 09f48 -stfd f5, 0x0228( r6) # 09f4c -stfd f6, 0x0230( r6) # 09f50 -stfd f7, 0x0238( r6) # 09f54 -stfd f8, 0x0240( r6) # 09f58 -stfd f9, 0x0248( r6) # 09f5c -stfd f10, 0x0250( r6) # 09f60 -stfd f11, 0x0258( r6) # 09f64 -stfd f12, 0x0260( r6) # 09f68 -stfd f13, 0x0268( r6) # 09f6c -stfd f14, 0x0270( r6) # 09f70 -stfd f15, 0x0278( r6) # 09f74 -stfd f16, 0x0280( r6) # 09f78 -mffs f0 # 09f7c -stfd f17, 0x0288( r6) # 09f80 -stfd f18, 0x0290( r6) # 09f84 -stfd f19, 0x0298( r6) # 09f88 -stfd f20, 0x02a0( r6) # 09f8c -stfd f21, 0x02a8( r6) # 09f90 -stfd f22, 0x02b0( r6) # 09f94 -stfd f23, 0x02b8( r6) # 09f98 -stfd f24, 0x02c0( r6) # 09f9c -stfd f25, 0x02c8( r6) # 09fa0 -stfd f26, 0x02d0( r6) # 09fa4 -stfd f27, 0x02d8( r6) # 09fa8 -stfd f28, 0x02e0( r6) # 09fac -stfd f29, 0x02e8( r6) # 09fb0 -stfd f30, 0x02f0( r6) # 09fb4 -stfd f31, 0x02f8( r6) # 09fb8 -stfd f0, 0x00e0( r6) # 09fbc - -major_0x09dfc_0x1c4: -mfxer r9 # 09fc0 -addi r16, r1, -0x4d0 # 09fc4 -stw r9, 0x00d4( r6) # 09fc8 -mfctr r9 # 09fcc -stw r9, 0x00f0( r6) # 09fd0 -stw r12, 0x00e8( r6) # 09fd4 -stw r10, 0x0054(r16) # 09fd8 -stw r11, 0x0058(r16) # 09fdc -mfspr r9, 1008/*hid0*/ # 09fe0 -stw r9, 0x0064(r16) # 09fe4 - -major_0x09dfc_0x1ec: -mftbu r9 # 09fe8 -stw r9, 0x005c(r16) # 09fec -mftb r9, 0x10c # 09ff0 -stw r9, 0x0060(r16) # 09ff4 -mftbu r8 # 09ff8 -lwz r9, 0x005c(r16) # 09ffc -cmpw r8, r9 # 0a000 -bne+ major_0x09dfc_0x1ec # 0a004 -mfmsr r9 # 0a008 -stw r9, 0x006c(r16) # 0a00c -mfspr r9, 25/*sdr1*/ # 0a010 -stw r9, 0x0070(r16) # 0a014 -mfspr r9, 536/*dbat0u*/ # 0a018 -stw r9, 0x0000(r16) # 0a01c -mfspr r9, 537/*dbat0l*/ # 0a020 -stw r9, 0x0004(r16) # 0a024 -mfspr r9, 538/*dbat1u*/ # 0a028 -stw r9, 0x0008(r16) # 0a02c -mfspr r9, 539/*dbat1l*/ # 0a030 -stw r9, 0x000c(r16) # 0a034 -mfspr r9, 540/*dbat2u*/ # 0a038 -stw r9, 0x0010(r16) # 0a03c -mfspr r9, 541/*dbat2l*/ # 0a040 -stw r9, 0x0014(r16) # 0a044 -mfspr r9, 542/*dbat3u*/ # 0a048 -stw r9, 0x0018(r16) # 0a04c -mfspr r9, 543/*dbat3l*/ # 0a050 -stw r9, 0x001c(r16) # 0a054 -mfspr r9, 528/*ibat0u*/ # 0a058 -stw r9, 0x0020(r16) # 0a05c -mfspr r9, 529/*ibat0l*/ # 0a060 -stw r9, 0x0024(r16) # 0a064 -mfspr r9, 530/*ibat1u*/ # 0a068 -stw r9, 0x0028(r16) # 0a06c -mfspr r9, 531/*ibat1l*/ # 0a070 -stw r9, 0x002c(r16) # 0a074 -mfspr r9, 532/*ibat2u*/ # 0a078 -stw r9, 0x0030(r16) # 0a07c -mfspr r9, 533/*ibat2l*/ # 0a080 -stw r9, 0x0034(r16) # 0a084 -mfspr r9, 534/*ibat3u*/ # 0a088 -stw r9, 0x0038(r16) # 0a08c -mfspr r9, 535/*ibat3l*/ # 0a090 -stw r9, 0x003c(r16) # 0a094 -mfspr r9, 272/*sprg0*/ # 0a098 -stw r9, 0x0040(r16) # 0a09c -mfspr r9, 273/*sprg1*/ # 0a0a0 -stw r9, 0x0044(r16) # 0a0a4 -mfspr r9, 274/*sprg2*/ # 0a0a8 -stw r9, 0x0048(r16) # 0a0ac -mfspr r9, 275/*sprg3*/ # 0a0b0 -stw r9, 0x004c(r16) # 0a0b4 -stw r6, 0x007c(r16) # 0a0b8 -bl major_0x09dfc_0x5c8 # 0a0bc -lwz r1, 0x0004( r1) # 0a0c0 -addi r16, r1, -0x4d0 # 0a0c4 -lis r8, 0x100 # 0a0c8 -ori r8, r8, 0x00 # 0a0cc -lis r9, 0x00 # 0a0d0 - -major_0x09dfc_0x2d8: -addis r9, r9, -0x1000 # 0a0d4 -addis r8, r8, -0x10 # 0a0d8 -mr. r9, r9 # 0a0dc -mtsrin r8, r9 # 0a0e0 -bne+ major_0x09dfc_0x2d8 # 0a0e4 -isync # 0a0e8 -mfspr r9, 1008/*hid0*/ # 0a0ec -li r8, 0x800 # 0a0f0 -ori r8, r8, 0x200 # 0a0f4 -or r9, r9, r8 # 0a0f8 -mtspr 1008/*hid0*/, r9 # 0a0fc -isync # 0a100 -andc r9, r9, r8 # 0a104 -mtspr 1008/*hid0*/, r9 # 0a108 -isync # 0a10c -ori r9, r9, 0x8000 # 0a110 -ori r9, r9, 0x4000 # 0a114 -mtspr 1008/*hid0*/, r9 # 0a118 -isync # 0a11c -lwz r26, 0x0f68( r1) # 0a120 -andi. r26, r26, 0x01 # 0a124 -beq- major_0x09dfc_0x3b8 # 0a128 -lwz r8, 0x0f54( r1) # 0a12c -mr. r8, r8 # 0a130 -beq- major_0x09dfc_0x3b8 # 0a134 -mfspr r9, 1008/*hid0*/ # 0a138 -rlwinm r9, r9, 0, 12, 10 # 0a13c -mtspr 1008/*hid0*/, r9 # 0a140 -isync # 0a144 -lwz r9, 0x0050(r16) # 0a148 -mtspr 1017/*l2cr*/, r9 # 0a14c -sync # 0a150 -isync # 0a154 -lis r8, 0x20 # 0a158 -or r8, r9, r8 # 0a15c -mtspr 1017/*l2cr*/, r8 # 0a160 -sync # 0a164 -isync # 0a168 - -major_0x09dfc_0x370: -mfspr r8, 1017/*l2cr*/ # 0a16c -rlwinm. r8, r8, 31, 0, 0 # 0a170 -bne+ major_0x09dfc_0x370 # 0a174 -mfspr r8, 1017/*l2cr*/ # 0a178 -lis r9, -0x21 # 0a17c -ori r9, r9, 0xffff # 0a180 -and r8, r8, r9 # 0a184 -mtspr 1017/*l2cr*/, r8 # 0a188 -sync # 0a18c -mfspr r8, 1008/*hid0*/ # 0a190 -oris r8, r8, 0x10 # 0a194 -mtspr 1008/*hid0*/, r8 # 0a198 -isync # 0a19c -mfspr r8, 1017/*l2cr*/ # 0a1a0 -oris r8, r8, 0x8000 # 0a1a4 -mtspr 1017/*l2cr*/, r8 # 0a1a8 -sync # 0a1ac -isync # 0a1b0 - -major_0x09dfc_0x3b8: -lwz r6, 0x007c(r16) # 0a1b4 -lwz r7, 0x0000( r6) # 0a1b8 -lwz r13, 0x00dc( r6) # 0a1bc -lwz r9, 0x00f0( r6) # 0a1c0 -mtctr r9 # 0a1c4 -lwz r12, 0x00e8( r6) # 0a1c8 -lwz r9, 0x00d4( r6) # 0a1cc -mtxer r9 # 0a1d0 -lwz r10, 0x0054(r16) # 0a1d4 -lwz r11, 0x0058(r16) # 0a1d8 -lwz r2, 0x0114( r6) # 0a1dc -lwz r3, 0x011c( r6) # 0a1e0 -lwz r4, 0x0124( r6) # 0a1e4 -lwz r5, 0x012c( r6) # 0a1e8 -lwz r14, 0x0174( r6) # 0a1ec -lwz r15, 0x017c( r6) # 0a1f0 -lwz r17, 0x018c( r6) # 0a1f4 -lwz r18, 0x0194( r6) # 0a1f8 -lwz r19, 0x019c( r6) # 0a1fc -lwz r20, 0x01a4( r6) # 0a200 -lwz r21, 0x01ac( r6) # 0a204 -lwz r22, 0x01b4( r6) # 0a208 -lwz r23, 0x01bc( r6) # 0a20c -lwz r24, 0x01c4( r6) # 0a210 -lwz r25, 0x01cc( r6) # 0a214 -lwz r26, 0x01d4( r6) # 0a218 -lwz r27, 0x01dc( r6) # 0a21c -lwz r28, 0x01e4( r6) # 0a220 -lwz r29, 0x01ec( r6) # 0a224 -lwz r30, 0x01f4( r6) # 0a228 -lwz r31, 0x01fc( r6) # 0a22c -andi. r8, r11, 0x2000 # 0a230 -beq- major_0x09dfc_0x4d4 # 0a234 -mfmsr r8 # 0a238 -ori r8, r8, 0x2000 # 0a23c -mtmsr r8 # 0a240 -isync # 0a244 -lfd f31, 0x00e0( r6) # 0a248 -lfd f0, 0x0200( r6) # 0a24c -lfd f1, 0x0208( r6) # 0a250 -lfd f2, 0x0210( r6) # 0a254 -lfd f3, 0x0218( r6) # 0a258 -lfd f4, 0x0220( r6) # 0a25c -lfd f5, 0x0228( r6) # 0a260 -lfd f6, 0x0230( r6) # 0a264 -lfd f7, 0x0238( r6) # 0a268 -lfd f8, 0x0240( r6) # 0a26c -mtfsf 0xff, f31 # 0a270 -lfd f9, 0x0248( r6) # 0a274 -lfd f10, 0x0250( r6) # 0a278 -lfd f11, 0x0258( r6) # 0a27c -lfd f12, 0x0260( r6) # 0a280 -lfd f13, 0x0268( r6) # 0a284 -lfd f14, 0x0270( r6) # 0a288 -lfd f15, 0x0278( r6) # 0a28c -lfd f16, 0x0280( r6) # 0a290 -lfd f17, 0x0288( r6) # 0a294 -lfd f18, 0x0290( r6) # 0a298 -lfd f19, 0x0298( r6) # 0a29c -lfd f20, 0x02a0( r6) # 0a2a0 -lfd f21, 0x02a8( r6) # 0a2a4 -lfd f22, 0x02b0( r6) # 0a2a8 -lfd f23, 0x02b8( r6) # 0a2ac -lfd f24, 0x02c0( r6) # 0a2b0 -lfd f25, 0x02c8( r6) # 0a2b4 -lfd f26, 0x02d0( r6) # 0a2b8 -lfd f27, 0x02d8( r6) # 0a2bc -lfd f28, 0x02e0( r6) # 0a2c0 -lfd f29, 0x02e8( r6) # 0a2c4 -lfd f30, 0x02f0( r6) # 0a2c8 -lfd f31, 0x02f8( r6) # 0a2cc - -major_0x09dfc_0x4d4: -lwz r9, 0x0064(r16) # 0a2d0 -ori r9, r9, 0x8000 # 0a2d4 -ori r9, r9, 0x4000 # 0a2d8 -mtspr 1008/*hid0*/, r9 # 0a2dc -sync # 0a2e0 -isync # 0a2e4 -lwz r9, 0x005c(r16) # 0a2e8 -mtspr 285/*tbu*/, r9 # 0a2ec -lwz r9, 0x0060(r16) # 0a2f0 -mtspr 284/*tbl*/, r9 # 0a2f4 -li r9, 0x01 # 0a2f8 -mtspr 22/*dec*/, r9 # 0a2fc -lwz r9, 0x006c(r16) # 0a300 -mtmsr r9 # 0a304 -sync # 0a308 -isync # 0a30c -lwz r9, 0x0070(r16) # 0a310 -mtspr 25/*sdr1*/, r9 # 0a314 -lwz r9, 0x0040(r16) # 0a318 -mtspr 272/*sprg0*/, r9 # 0a31c -lwz r9, 0x0044(r16) # 0a320 -mtspr 273/*sprg1*/, r9 # 0a324 -lwz r9, 0x0048(r16) # 0a328 -mtspr 274/*sprg2*/, r9 # 0a32c -lwz r9, 0x004c(r16) # 0a330 -mtspr 275/*sprg3*/, r9 # 0a334 -lwz r9, 0x0000(r16) # 0a338 -mtspr 536/*dbat0u*/, r9 # 0a33c -lwz r9, 0x0004(r16) # 0a340 -mtspr 537/*dbat0l*/, r9 # 0a344 -lwz r9, 0x0008(r16) # 0a348 -mtspr 538/*dbat1u*/, r9 # 0a34c -lwz r9, 0x000c(r16) # 0a350 -mtspr 539/*dbat1l*/, r9 # 0a354 -lwz r9, 0x0010(r16) # 0a358 -mtspr 540/*dbat2u*/, r9 # 0a35c -lwz r9, 0x0014(r16) # 0a360 -mtspr 541/*dbat2l*/, r9 # 0a364 -lwz r9, 0x0018(r16) # 0a368 -mtspr 542/*dbat3u*/, r9 # 0a36c -lwz r9, 0x001c(r16) # 0a370 -mtspr 543/*dbat3l*/, r9 # 0a374 -lwz r9, 0x0020(r16) # 0a378 -mtspr 528/*ibat0u*/, r9 # 0a37c -lwz r9, 0x0024(r16) # 0a380 -mtspr 529/*ibat0l*/, r9 # 0a384 -lwz r9, 0x0028(r16) # 0a388 -mtspr 530/*ibat1u*/, r9 # 0a38c -lwz r9, 0x002c(r16) # 0a390 -mtspr 531/*ibat1l*/, r9 # 0a394 -lwz r9, 0x0030(r16) # 0a398 -mtspr 532/*ibat2u*/, r9 # 0a39c -lwz r9, 0x0034(r16) # 0a3a0 -mtspr 533/*ibat2l*/, r9 # 0a3a4 -lwz r9, 0x0038(r16) # 0a3a8 -mtspr 534/*ibat3u*/, r9 # 0a3ac -lwz r9, 0x003c(r16) # 0a3b0 -mtspr 535/*ibat3l*/, r9 # 0a3b4 -lwz r16, 0x0184( r6) # 0a3b8 -li r3, 0x00 # 0a3bc -b skeleton_key # 0a3c0 - -major_0x09dfc_0x5c8: -mflr r9 # 0a3c4 -stw r9, 0x0074(r16) # 0a3c8 -stw r1, 0x0078(r16) # 0a3cc -addi r9, r16, 0x74 # 0a3d0 -li r0, 0x00 # 0a3d4 -stw r9, 0x0000( r0) # 0a3d8 -lis r9, 0x4c61 # 0a3dc -ori r9, r9, 0x7273 # 0a3e0 -stw r9, 0x0004( r0) # 0a3e4 -mfspr r9, 1008/*hid0*/ # 0a3e8 -andis. r9, r9, 0x20 # 0a3ec -mtspr 1008/*hid0*/, r9 # 0a3f0 -mfmsr r8 # 0a3f4 -oris r8, r8, 0x04 # 0a3f8 -mfspr r9, 1008/*hid0*/ # 0a3fc -ori r9, r9, 0x8000 # 0a400 -mtspr 1008/*hid0*/, r9 # 0a404 -88: bl 99f # 0a408 -99: mflr r9 # 0a40c -addi r9, r9, major_0x0a600 - 88b - 4 # 0a410 -lis r1, -0x3502 # 0a414 -ori r1, r1, 0xbabe # 0a418 -b major_0x0a500 # 0a41c - - - -/*********************************************************** - - major_0x0a420 - -***********************************************************/ - -.align 5 # 0a420 - -.long 0x480000e0 # 0a420 -.long 0x60000000 # 0a424 -.long 0x60000000 # 0a428 -.long 0x60000000 # 0a42c -.long 0x60000000 # 0a430 -.long 0x60000000 # 0a434 -.long 0x60000000 # 0a438 -.long 0x60000000 # 0a43c -.long 0x60000000 # 0a440 -.long 0x60000000 # 0a444 -.long 0x60000000 # 0a448 -.long 0x60000000 # 0a44c -.long 0x60000000 # 0a450 -.long 0x60000000 # 0a454 -.long 0x60000000 # 0a458 -.long 0x60000000 # 0a45c -.long 0x60000000 # 0a460 -.long 0x60000000 # 0a464 -.long 0x60000000 # 0a468 -.long 0x60000000 # 0a46c -.long 0x60000000 # 0a470 -.long 0x60000000 # 0a474 -.long 0x60000000 # 0a478 -.long 0x60000000 # 0a47c -.long 0x60000000 # 0a480 -.long 0x60000000 # 0a484 -.long 0x60000000 # 0a488 -.long 0x60000000 # 0a48c -.long 0x60000000 # 0a490 -.long 0x60000000 # 0a494 -.long 0x60000000 # 0a498 -.long 0x60000000 # 0a49c -.long 0x60000000 # 0a4a0 -.long 0x60000000 # 0a4a4 -.long 0x60000000 # 0a4a8 -.long 0x60000000 # 0a4ac -.long 0x60000000 # 0a4b0 -.long 0x60000000 # 0a4b4 -.long 0x60000000 # 0a4b8 -.long 0x60000000 # 0a4bc -.long 0x60000000 # 0a4c0 -.long 0x60000000 # 0a4c4 -.long 0x60000000 # 0a4c8 -.long 0x60000000 # 0a4cc -.long 0x60000000 # 0a4d0 -.long 0x60000000 # 0a4d4 -.long 0x60000000 # 0a4d8 -.long 0x60000000 # 0a4dc -.long 0x60000000 # 0a4e0 -.long 0x60000000 # 0a4e4 -.long 0x60000000 # 0a4e8 -.long 0x60000000 # 0a4ec -.long 0x60000000 # 0a4f0 -.long 0x60000000 # 0a4f4 -.long 0x60000000 # 0a4f8 -.long 0x60000000 # 0a4fc - - - -/*********************************************************** - - major_0x0a500 - -************************************************************ - -Xrefs: -major_0x09dfc - -***********************************************************/ - -.align 8 # 0a500 - -major_0x0a500: /* < outside referer */ -sync # 0a500 -mtmsr r8 # 0a504 -isync # 0a508 -cmpwi r1, 0x00 # 0a50c -beq+ major_0x0a500 # 0a510 -lwz r0, 0x0000( r9) # 0a514 -andi. r1, r1, 0x00 # 0a518 -b major_0x0a500 # 0a51c - - - -/*********************************************************** - - major_0x0a520 - -***********************************************************/ - -.align 5 # 0a520 - -.long 0x480000e0 # 0a520 -.long 0x60000000 # 0a524 -.long 0x60000000 # 0a528 -.long 0x60000000 # 0a52c -.long 0x60000000 # 0a530 -.long 0x60000000 # 0a534 -.long 0x60000000 # 0a538 -.long 0x60000000 # 0a53c -.long 0x60000000 # 0a540 -.long 0x60000000 # 0a544 -.long 0x60000000 # 0a548 -.long 0x60000000 # 0a54c -.long 0x60000000 # 0a550 -.long 0x60000000 # 0a554 -.long 0x60000000 # 0a558 -.long 0x60000000 # 0a55c -.long 0x60000000 # 0a560 -.long 0x60000000 # 0a564 -.long 0x60000000 # 0a568 -.long 0x60000000 # 0a56c -.long 0x60000000 # 0a570 -.long 0x60000000 # 0a574 -.long 0x60000000 # 0a578 -.long 0x60000000 # 0a57c -.long 0x60000000 # 0a580 -.long 0x60000000 # 0a584 -.long 0x60000000 # 0a588 -.long 0x60000000 # 0a58c -.long 0x60000000 # 0a590 -.long 0x60000000 # 0a594 -.long 0x60000000 # 0a598 -.long 0x60000000 # 0a59c -.long 0x60000000 # 0a5a0 -.long 0x60000000 # 0a5a4 -.long 0x60000000 # 0a5a8 -.long 0x60000000 # 0a5ac -.long 0x60000000 # 0a5b0 -.long 0x60000000 # 0a5b4 -.long 0x60000000 # 0a5b8 -.long 0x60000000 # 0a5bc -.long 0x60000000 # 0a5c0 -.long 0x60000000 # 0a5c4 -.long 0x60000000 # 0a5c8 -.long 0x60000000 # 0a5cc -.long 0x60000000 # 0a5d0 -.long 0x60000000 # 0a5d4 -.long 0x60000000 # 0a5d8 -.long 0x60000000 # 0a5dc -.long 0x60000000 # 0a5e0 -.long 0x60000000 # 0a5e4 -.long 0x60000000 # 0a5e8 -.long 0x60000000 # 0a5ec -.long 0x60000000 # 0a5f0 -.long 0x60000000 # 0a5f4 -.long 0x60000000 # 0a5f8 -.long 0x60000000 # 0a5fc - - - -/*********************************************************** - - major_0x0a600 - -************************************************************ - -Xrefs: -bootstrap_cpu - -***********************************************************/ - -.align 9 # 0a600 - -major_0x0a600: /* < outside referer */ -.long 0 # 0a600 -.long 0 # 0a604 -.long 0 # 0a608 -.long 0 # 0a60c - -major_0x0a600_0x10: /* < outside referer */ -mtspr 0x3fb, r5 # 0a610 -li r3, 0x00 # 0a614 -b skeleton_key # 0a618 - -major_0x0a600_0x1c: /* < outside referer */ -b major_0x0a600_0x1c # 0a61c - - - -/*********************************************************** - - panic_wrapper_0x0a620 - -************************************************************ - -Xrefs: -rtas_call - -***********************************************************/ - -.align 5 # 0a620 - -panic_wrapper_0x0a620: /* < outside referer */ -b panic # 0a620 - - - -/*********************************************************** - - major_0x0a624 - -***********************************************************/ - -.long 0x4800001c # 0a624 -.long 0x60000000 # 0a628 -.long 0x60000000 # 0a62c -.long 0x60000000 # 0a630 -.long 0x60000000 # 0a634 -.long 0x60000000 # 0a638 -.long 0x60000000 # 0a63c - - - -/*********************************************************** - - rtas_call - -************************************************************ - -Only major that hits the RTAS globals. -RTAS requires some specific context stuff. - -************************************************************ - -Xrefs: -"lisori_caller" - -************************************************************ - -> r1 = kdp -> r6 = some kind of place -> r7 = some kind of flags - -***********************************************************/ - -.align 6 # 0a640 - -rtas_call: /* < outside referer */ -lwz r8, 0x0908( r1) # kdp.rtas_proc # 0a640 -cmpwi r8, 0x00 # 0a644 -bne- rtas_is_available # 0a648 -li r3, -0x01 # 0a64c -b skeleton_key # 0a650 - -rtas_is_available: -mr r8, r8 # 0a654 -mr r9, r9 # 0a658 -addi r8, r1, -0xb10 # kdp.rtas_lock # 0a65c - -# r8 = lock -bl lock # 0a660 -mr r8, r8 # 0a664 -mr r9, r9 # 0a668 -mtcrf 0x3f, r7 # 0a66c -lwz r9, 0x0658( r1) # kdp.system_context # 0a670 -lwz r8, -0x000c( r1) # kdp.-0xc # 0a674 -stw r7, 0x0000( r6) # 0a678 -stw r8, 0x0004( r6) # 0a67c -bns- cr6, rtas_call_0x5c # 0a680 -stw r17, 0x0024( r6) # 0a684 -stw r20, 0x0028( r6) # 0a688 -stw r21, 0x002c( r6) # 0a68c -stw r19, 0x0034( r6) # 0a690 -stw r18, 0x003c( r6) # 0a694 -lmw r14, 0x0038( r1) # kdp.0x38 # 0a698 - -rtas_call_0x5c: -mfxer r8 # 0a69c -stw r13, 0x00dc( r6) # 0a6a0 -stw r8, 0x00d4( r6) # 0a6a4 -stw r12, 0x00ec( r6) # 0a6a8 -mfctr r8 # 0a6ac -stw r10, 0x00fc( r6) # 0a6b0 -stw r8, 0x00f4( r6) # 0a6b4 -ble- cr3, rtas_call_0x8c # 0a6b8 -lwz r8, 0x00c4( r9) # 0a6bc -mfspr r12, 0/*mq*/ # 0a6c0 -mtspr 0/*mq*/, r8 # 0a6c4 -stw r12, 0x00c4( r6) # 0a6c8 - -rtas_call_0x8c: -lwz r8, 0x0004( r1) # kdp.0x4 # 0a6cc -stw r8, 0x010c( r6) # 0a6d0 -stw r2, 0x0114( r6) # 0a6d4 -stw r3, 0x011c( r6) # 0a6d8 -stw r4, 0x0124( r6) # 0a6dc -lwz r8, 0x0018( r1) # kdp.0x18 # 0a6e0 -stw r5, 0x012c( r6) # 0a6e4 -stw r8, 0x0134( r6) # 0a6e8 -andi. r8, r11, 0x2000 # 0a6ec -stw r14, 0x0174( r6) # 0a6f0 -stw r15, 0x017c( r6) # 0a6f4 -stw r16, 0x0184( r6) # 0a6f8 -stw r17, 0x018c( r6) # 0a6fc -stw r18, 0x0194( r6) # 0a700 -stw r19, 0x019c( r6) # 0a704 -stw r20, 0x01a4( r6) # 0a708 -stw r21, 0x01ac( r6) # 0a70c -stw r22, 0x01b4( r6) # 0a710 -stw r23, 0x01bc( r6) # 0a714 -stw r24, 0x01c4( r6) # 0a718 -stw r25, 0x01cc( r6) # 0a71c -stw r26, 0x01d4( r6) # 0a720 -stw r27, 0x01dc( r6) # 0a724 -stw r28, 0x01e4( r6) # 0a728 -stw r29, 0x01ec( r6) # 0a72c -stw r30, 0x01f4( r6) # 0a730 -stw r31, 0x01fc( r6) # 0a734 -bnel+ major_0x03da0_0x12c # 0a738 -stw r11, 0x00a4( r6) # 0a73c -mr r27, r3 # 0a740 -addi r29, r1, 800 # kdp.0x320 # 0a744 -bl major_0x054b8 # 0a748 -beql+ panic_wrapper_0x0a620 # 0a74c -rlwimi r3, r31, 0, 0, 19 # 0a750 -lhz r8, 0x0004( r3) # 0a754 -cmpwi r8, 0x00 # 0a758 -beq- rtas_call_0x14c # 0a75c -slwi r8, r8, 2 # 0a760 -lwzx r27, r8, r3 # 0a764 -addi r29, r1, 800 # kdp.0x320 # 0a768 -bl major_0x054b8 # 0a76c -beql+ panic_wrapper_0x0a620 # 0a770 -lwzx r9, r8, r3 # 0a774 -rlwimi r9, r31, 0, 0, 19 # 0a778 -stwx r9, r8, r3 # 0a77c -li r9, 0x00 # 0a780 -sth r9, 0x0004( r3) # 0a784 -dcbf r8, r3 # 0a788 - -rtas_call_0x14c: -li r9, 0x04 # 0a78c -dcbf r9, r3 # 0a790 -sync # 0a794 -isync # 0a798 -lwz r4, 0x090c( r1) # kdp.rtas_private_data # 0a79c -mfmsr r8 # 0a7a0 -andi. r8, r8, 0x10cf # 0a7a4 -mtmsr r8 # 0a7a8 -isync # 0a7ac -mr r28, r3 # 0a7b0 -lwz r9, 0x0908( r1) # kdp.rtas_proc # 0a7b4 -bl rtas_make_actual_call # 0a7b8 -mfspr r1, 272/*sprg0*/ # 0a7bc -lwz r6, -0x0014( r1) # kdp.-0x14 # 0a7c0 -clrlwi r29, r28, 0x14 # 0a7c4 -subfic r29, r29, 0x1000 # 0a7c8 -lhz r27, 0x0f4a( r1) # kdp.u16_cpuinfo_dcache_block_size - -rtas_call_0x190: -subf. r29, r27, r29 # 0a7d0 -dcbf r29, r28 # 0a7d4 -sync # 0a7d8 -icbi r29, r28 # 0a7dc -bge+ rtas_call_0x190 # 0a7e0 -sync # 0a7e4 -isync # 0a7e8 -lwz r8, 0x0000( r6) # 0a7ec -lwz r11, 0x00a4( r6) # 0a7f0 -mr r7, r8 # 0a7f4 -andi. r8, r11, 0x900 # 0a7f8 -lwz r8, 0x0004( r6) # 0a7fc -lwz r13, 0x00dc( r6) # 0a800 -stw r8, -0x000c( r1) # kdp.-0xc # 0a804 -lwz r8, 0x00d4( r6) # 0a808 -lwz r12, 0x00ec( r6) # 0a80c -mtxer r8 # 0a810 -lwz r8, 0x00f4( r6) # 0a814 -lwz r10, 0x00fc( r6) # 0a818 -mtctr r8 # 0a81c -bnel+ major_0x03da0_0x80 # 0a820 -lwz r8, 0x010c( r6) # 0a824 -stw r8, 0x0004( r1) # kdp.0x4 # 0a828 -lwz r2, 0x0114( r6) # 0a82c -lwz r3, 0x011c( r6) # 0a830 -lwz r4, 0x0124( r6) # 0a834 -lwz r8, 0x0134( r6) # 0a838 -lwz r5, 0x012c( r6) # 0a83c -stw r8, 0x0018( r1) # kdp.0x18 # 0a840 -lwz r14, 0x0174( r6) # 0a844 -lwz r15, 0x017c( r6) # 0a848 -lwz r16, 0x0184( r6) # 0a84c -lwz r17, 0x018c( r6) # 0a850 -lwz r18, 0x0194( r6) # 0a854 -lwz r19, 0x019c( r6) # 0a858 -lwz r20, 0x01a4( r6) # 0a85c -lwz r21, 0x01ac( r6) # 0a860 -lwz r22, 0x01b4( r6) # 0a864 -lwz r23, 0x01bc( r6) # 0a868 -lwz r24, 0x01c4( r6) # 0a86c -lwz r25, 0x01cc( r6) # 0a870 -lwz r26, 0x01d4( r6) # 0a874 -lwz r27, 0x01dc( r6) # 0a878 -lwz r28, 0x01e4( r6) # 0a87c -lwz r29, 0x01ec( r6) # 0a880 -lwz r30, 0x01f4( r6) # 0a884 -lwz r31, 0x01fc( r6) # 0a888 -sync # 0a88c -lwz r8, -0x0b10( r1) # kdp.rtas_lock # 0a890 -cmpwi cr1, r8, 0x00 # 0a894 -li r8, 0x00 # 0a898 -bne+ cr1, rtas_call_0x268 # 0a89c -mflr r8 # 0a8a0 -bl panic # 0a8a4 - -rtas_call_0x268: -stw r8, -0x0b10( r1) # kdp.rtas_lock # 0a8a8 -li r3, 0x00 # 0a8ac -b skeleton_key # 0a8b0 - -rtas_make_actual_call: -mtctr r9 # 0a8b4 -bctr # 0a8b8 - - - -/*********************************************************** - - major_0x0a8bc - -***********************************************************/ - -.long 0x60000000 # 0a8bc - - - -/*********************************************************** - - major_0x0a8c0 - -************************************************************ - -Xrefs: -"lisori_caller" -major_0x03940 -bootstrap_cpu -major_0x09dfc - -***********************************************************/ - -.align 6 # 0a8c0 - -major_0x0a8c0: /* < outside referer */ -stw r21, 0x01ac( r6) # 0a8c0 -stw r22, 0x01b4( r6) # 0a8c4 -stw r23, 0x01bc( r6) # 0a8c8 -clrlwi r8, r3, 0x10 # 0a8cc -cmplwi r8, 0x02 # 0a8d0 -bgt- major_0x0a8c0_0x4c # 0a8d4 -lwz r8, 0x0f68( r1) # 0a8d8 -andi. r8, r8, 0x01 # 0a8dc -beq- major_0x0a8c0_0x178 # 0a8e0 -rlwinm. r9, r3, 0, 2, 2 # 0a8e4 -bnel- major_0x0a8c0_0x1e4 # 0a8e8 -srwi r8, r3, 30 # 0a8ec -cmpwi r8, 0x03 # 0a8f0 -beq- major_0x0a8c0_0xd8 # 0a8f4 -clrlwi r8, r3, 0x10 # 0a8f8 -cmplwi r8, 0x01 # 0a8fc -beq- major_0x0a8c0_0x58 # 0a900 -cmplwi r8, 0x02 # 0a904 -beq- major_0x0a8c0_0xb8 # 0a908 - -major_0x0a8c0_0x4c: -lis r3, -0x01 # 0a90c -ori r3, r3, 0xfffe # 0a910 -b major_0x0a8c0_0x1c4 # 0a914 - -major_0x0a8c0_0x58: -rlwinm. r9, r3, 0, 1, 1 # 0a918 -bne- major_0x0a8c0_0x74 # 0a91c -rlwinm. r9, r3, 0, 0, 0 # 0a920 -bne- major_0x0a8c0_0x98 # 0a924 -rlwinm. r9, r3, 0, 3, 3 # 0a928 -bl major_0x0a8c0_0x258 # 0a92c -b major_0x0a8c0_0x1c4 # 0a930 - -major_0x0a8c0_0x74: -bl major_0x0a8c0_0x258 # 0a934 -rlwinm r22, r3, 0, 4, 5 # 0a938 -srwi r22, r22, 12 # 0a93c -mfspr r21, 1008/*hid0*/ # 0a940 -andc r21, r21, r22 # 0a944 -sync # 0a948 -mtspr 1008/*hid0*/, r21 # 0a94c -li r3, 0x00 # 0a950 -b major_0x0a8c0_0x1c4 # 0a954 - -major_0x0a8c0_0x98: -rlwinm r22, r3, 0, 4, 5 # 0a958 -srwi r22, r22, 12 # 0a95c -mfspr r21, 1008/*hid0*/ # 0a960 -or r21, r21, r22 # 0a964 -sync # 0a968 -mtspr 1008/*hid0*/, r21 # 0a96c -li r3, 0x00 # 0a970 -b major_0x0a8c0_0x1c4 # 0a974 - -major_0x0a8c0_0xb8: -rlwinm. r9, r3, 0, 1, 1 # 0a978 -bne- major_0x0a8c0_0x180 # 0a97c -rlwinm. r9, r3, 0, 0, 0 # 0a980 -bne- major_0x0a8c0_0xe8 # 0a984 -rlwinm. r9, r3, 0, 3, 3 # 0a988 -bne- major_0x0a8c0_0xe4 # 0a98c -rlwinm. r9, r3, 0, 2, 2 # 0a990 -bne- major_0x0a8c0_0x1c4 # 0a994 - -major_0x0a8c0_0xd8: -lis r3, -0x01 # 0a998 -ori r3, r3, 0xfffc # 0a99c -b major_0x0a8c0_0x1c4 # 0a9a0 - -major_0x0a8c0_0xe4: -bl major_0x0a8c0_0x180 # 0a9a4 - -major_0x0a8c0_0xe8: -mfspr r21, 1017/*l2cr*/ # 0a9a8 -sync # 0a9ac -andis. r21, r21, 0x8000 # 0a9b0 -bne- major_0x0a8c0_0x1c4 # 0a9b4 -lwz r8, 0x0f54( r1) # 0a9b8 -and. r8, r8, r8 # 0a9bc -beq- major_0x0a8c0_0x178 # 0a9c0 -mfspr r21, 1008/*hid0*/ # 0a9c4 -rlwinm r8, r21, 0, 12, 10 # 0a9c8 -mtspr 1008/*hid0*/, r8 # 0a9cc -sync # 0a9d0 -addi r8, r1, -0x4d0 # 0a9d4 -lwz r8, 0x0050( r8) # 0a9d8 -and. r8, r8, r8 # 0a9dc -beq- major_0x0a8c0_0x1c4 # 0a9e0 -sync # 0a9e4 -lis r9, 0x20 # 0a9e8 -or r8, r8, r9 # 0a9ec -mtspr 1017/*l2cr*/, r8 # 0a9f0 -sync # 0a9f4 - -major_0x0a8c0_0x138: -mfspr r8, 1017/*l2cr*/ # 0a9f8 -sync # 0a9fc -andi. r9, r8, 0x01 # 0aa00 -bne+ major_0x0a8c0_0x138 # 0aa04 -lis r9, 0x20 # 0aa08 -andc r8, r8, r9 # 0aa0c -mtspr 1017/*l2cr*/, r8 # 0aa10 -sync # 0aa14 -lis r9, -0x8000 # 0aa18 -or r8, r8, r9 # 0aa1c -mtspr 1017/*l2cr*/, r8 # 0aa20 -sync # 0aa24 -mtspr 1008/*hid0*/, r21 # 0aa28 -sync # 0aa2c -li r3, 0x00 # 0aa30 -b major_0x0a8c0_0x1c4 # 0aa34 - -major_0x0a8c0_0x178: -li r3, -0x02 # 0aa38 -b major_0x0a8c0_0x1c4 # 0aa3c - -major_0x0a8c0_0x180: -mfspr r22, 1017/*l2cr*/ # 0aa40 -sync # 0aa44 -andis. r22, r22, 0x8000 # 0aa48 -beq- major_0x0a8c0_0x1c4 # 0aa4c -bl major_0x0a8c0_0x258 # 0aa50 -mfspr r22, 1017/*l2cr*/ # 0aa54 -sync # 0aa58 -clrlwi r22, r22, 0x01 # 0aa5c -mtspr 1017/*l2cr*/, r22 # 0aa60 -sync # 0aa64 -addi r8, r1, -0x4d0 # 0aa68 -stw r22, 0x0050( r8) # 0aa6c -sync # 0aa70 -rlwinm r22, r22, 0, 7, 3 # 0aa74 -oris r22, r22, 0x10 # 0aa78 -mtspr 1017/*l2cr*/, r22 # 0aa7c -sync # 0aa80 - -major_0x0a8c0_0x1c4: -ori r23, r23, 0xffff # 0aa84 -oris r3, r3, 0xffff # 0aa88 -and r3, r3, r23 # 0aa8c - -major_0x0a8c0_0x1d0: -lwz r21, 0x01ac( r6) # 0aa90 -lwz r22, 0x01b4( r6) # 0aa94 -lwz r23, 0x01bc( r6) # 0aa98 -sync # 0aa9c -b skeleton_key # 0aaa0 - -major_0x0a8c0_0x1e4: -clrlwi r8, r3, 0x10 # 0aaa4 -cmplwi r8, 0x01 # 0aaa8 -beq- major_0x0a8c0_0x204 # 0aaac -cmplwi r8, 0x02 # 0aab0 -beq- major_0x0a8c0_0x218 # 0aab4 -lis r3, -0x01 # 0aab8 -ori r3, r3, 0xfffb # 0aabc -b major_0x0a8c0_0x1d0 # 0aac0 - -major_0x0a8c0_0x204: -mfspr r21, 1008/*hid0*/ # 0aac4 -rlwinm. r21, r21, 12, 4, 5 # 0aac8 -beq- major_0x0a8c0_0x24c # 0aacc -oris r23, r21, 0x8000 # 0aad0 -blr # 0aad4 - -major_0x0a8c0_0x218: -lwz r8, 0x0f54( r1) # 0aad8 -and. r8, r8, r8 # 0aadc -beq+ major_0x0a8c0_0x178 # 0aae0 -mfspr r21, 1008/*hid0*/ # 0aae4 -rlwinm r21, r21, 12, 4, 5 # 0aae8 -mfspr r22, 1017/*l2cr*/ # 0aaec -rlwinm r22, r22, 5, 4, 4 # 0aaf0 -andc r21, r21, r22 # 0aaf4 -mfspr r22, 1017/*l2cr*/ # 0aaf8 -andis. r22, r22, 0x8000 # 0aafc -beq- major_0x0a8c0_0x24c # 0ab00 -or r23, r21, r22 # 0ab04 -blr # 0ab08 - -major_0x0a8c0_0x24c: -lis r23, 0x4000 # 0ab0c -ori r23, r23, 0x00 # 0ab10 -blr # 0ab14 - -major_0x0a8c0_0x258: /* < outside referer */ -mfctr r8 # 0ab18 -stw r25, 0x01cc( r6) # 0ab1c -stw r24, 0x01c4( r6) # 0ab20 -stw r8, 0x00f4( r6) # 0ab24 -lhz r25, 0x0f44( r1) # 0ab28 -and. r25, r25, r25 # 0ab2c -cntlzw r8, r25 # 0ab30 -beq- major_0x0a8c0_0x338 # 0ab34 -subfic r9, r8, 0x1f # 0ab38 -lwz r8, 0x0f34( r1) # 0ab3c -and. r8, r8, r8 # 0ab40 -beq- major_0x0a8c0_0x338 # 0ab44 -lwz r24, 0x0f68( r1) # 0ab48 -mtcr r24 # 0ab4c -bso- cr6, major_0x0a8c0_0x350 # 0ab50 -bne- cr7, major_0x0a8c0_0x2a4 # 0ab54 -slwi r24, r8, 1 # 0ab58 -add r8, r8, r24 # 0ab5c -srwi r8, r8, 1 # 0ab60 - -major_0x0a8c0_0x2a4: -srw r8, r8, r9 # 0ab64 -mtctr r8 # 0ab68 -lwz r8, 0x0630( r1) # 0ab6c -lwz r9, 0x0028( r8) # 0ab70 -add r8, r8, r9 # 0ab74 - -major_0x0a8c0_0x2b8: -lwzux r9, r8, r25 # 0ab78 -bdnz+ major_0x0a8c0_0x2b8 # 0ab7c -lwz r24, 0x0f68( r1) # 0ab80 -andi. r24, r24, 0x01 # 0ab84 -beq- major_0x0a8c0_0x338 # 0ab88 -mfspr r24, 1017/*l2cr*/ # 0ab8c -andis. r24, r24, 0x8000 # 0ab90 -beq- major_0x0a8c0_0x338 # 0ab94 -lhz r25, 0x0f60( r1) # 0ab98 -and. r25, r25, r25 # 0ab9c -cntlzw r8, r25 # 0aba0 -beq- major_0x0a8c0_0x338 # 0aba4 -subfic r9, r8, 0x1f # 0aba8 -lwz r8, 0x0f54( r1) # 0abac -and. r8, r8, r8 # 0abb0 -beq- major_0x0a8c0_0x338 # 0abb4 -srw r8, r8, r9 # 0abb8 -mtctr r8 # 0abbc -mfspr r24, 1017/*l2cr*/ # 0abc0 -oris r24, r24, 0x40 # 0abc4 -mtspr 1017/*l2cr*/, r24 # 0abc8 -isync # 0abcc -lwz r8, 0x0630( r1) # 0abd0 -lwz r9, 0x0028( r8) # 0abd4 -add r8, r8, r9 # 0abd8 -addis r8, r8, 0x19 # 0abdc -neg r25, r25 # 0abe0 - -major_0x0a8c0_0x324: -lwzux r9, r8, r25 # 0abe4 -bdnz+ major_0x0a8c0_0x324 # 0abe8 -rlwinm r24, r24, 0, 10, 8 # 0abec -mtspr 1017/*l2cr*/, r24 # 0abf0 -isync # 0abf4 - -major_0x0a8c0_0x338: -lwz r8, 0x00f4( r6) # 0abf8 -lwz r25, 0x01cc( r6) # 0abfc -lwz r24, 0x01c4( r6) # 0ac00 -sync # 0ac04 -mtctr r8 # 0ac08 -blr # 0ac0c - -major_0x0a8c0_0x350: -dssall # 0ac10 -sync # 0ac14 -mfspr r8, 0x3f6 # 0ac18 -oris r8, r8, 0x80 # 0ac1c -mtspr 0x3f6, r8 # 0ac20 -sync # 0ac24 - -major_0x0a8c0_0x368: -mfspr r8, 0x3f6 # 0ac28 -sync # 0ac2c -andis. r8, r8, 0x80 # 0ac30 -bne+ major_0x0a8c0_0x368 # 0ac34 -mfspr r8, 1017/*l2cr*/ # 0ac38 -ori r8, r8, 0x800 # 0ac3c -mtspr 1017/*l2cr*/, r8 # 0ac40 -sync # 0ac44 - -major_0x0a8c0_0x388: -mfspr r8, 1017/*l2cr*/ # 0ac48 -sync # 0ac4c -andi. r8, r8, 0x800 # 0ac50 -bne+ major_0x0a8c0_0x388 # 0ac54 -b major_0x0a8c0_0x338 # 0ac58 - -major_0x0a8c0_0x39c: /* < outside referer */ -lwz r8, 0x0f68( r1) # 0ac5c -mtcr r8 # 0ac60 -bnslr- cr6 # 0ac64 -dssall # 0ac68 -sync # 0ac6c -mfspr r8, 0x3f6 # 0ac70 -oris r8, r8, 0x80 # 0ac74 -mtspr 0x3f6, r8 # 0ac78 -sync # 0ac7c - -major_0x0a8c0_0x3c0: -mfspr r8, 0x3f6 # 0ac80 -sync # 0ac84 -andis. r8, r8, 0x80 # 0ac88 -bne+ major_0x0a8c0_0x3c0 # 0ac8c -blr # 0ac90 - - - -/*********************************************************** - - major_0x0ac94 - -***********************************************************/ - -.long 0x4800000c # 0ac94 -.long 0x60000000 # 0ac98 -.long 0x60000000 # 0ac9c - - - -/*********************************************************** - - syscall - -************************************************************ - -Xrefs: -"lisori_caller" -sc_vector - -************************************************************ - -> r1 = kdp -> r6 = save area - -***********************************************************/ - -.align 5 # 0aca0 - -syscall: /* < outside referer */ -# r6 = ewa -bl save_registers_from_r14 # 0aca0 -# r8 = sprg0 (not used by me) - -lwz r8, 0x0018( r8) # 0aca4 -lwz r14, 0x064c( r1) # kdp.phys_kern_base # 0aca8 -lwz r15, 0x0104( r6) # 0acac -stw r8, 0x0134( r6) # 0acb0 -b syscall_0x230 # 0acb4 - -syscall_tbl: -.long (syscall_tbl-.) + (major_0x0b144-nk_start) # 0acb8 -.long (syscall_tbl-.) + (major_0x0b248-nk_start) # 0acbc -.long (syscall_tbl-.) + (NKRegisterCpuPlugin-nk_start) -.long (syscall_tbl-.) + (nk_cpu_count-nk_start) # 0acc4 -.long (syscall_tbl-.) + (major_0x0b3cc-nk_start) # 0acc8 -.long (syscall_tbl-.) + (major_0x0b45c-nk_start) # 0accc -.long (syscall_tbl-.) + (major_0x0b4a4-nk_start) # 0acd0 -.long (syscall_tbl-.) + (major_0x0e284-nk_start) # 0acd4 -.long (syscall_tbl-.) + (major_0x0e548-nk_start) # 0acd8 -.long (syscall_tbl-.) + (major_0x0e604-nk_start) # 0acdc -.long (syscall_tbl-.) + (major_0x0e76c-nk_start) # 0ace0 -.long (syscall_tbl-.) + (major_0x0e850-nk_start) # 0ace4 -.long (syscall_tbl-.) + (major_0x0e880-nk_start) # 0ace8 -.long (syscall_tbl-.) + (nk_yield_with_hint-nk_start) -.long (syscall_tbl-.) + (major_0x0e894-nk_start) # 0acf0 -.long (syscall_tbl-.) + (major_0x0c5e0-nk_start) # 0acf4 -.long (syscall_tbl-.) + (major_0x0c680-nk_start) # 0acf8 -.long (syscall_tbl-.) + (major_0x0c830-nk_start) # 0acfc -.long (syscall_tbl-.) + (major_0x0c968-nk_start) # 0ad00 -.long (syscall_tbl-.) + (major_0x0cac0-nk_start) # 0ad04 -.long (syscall_tbl-.) + (major_0x0cb00-nk_start) # 0ad08 -.long (syscall_tbl-.) + (major_0x0cd9c-nk_start) # 0ad0c -.long (syscall_tbl-.) + (major_0x0ccbc-nk_start) # 0ad10 -.long (syscall_tbl-.) + (major_0x0cb8c-nk_start) # 0ad14 -.long (syscall_tbl-.) + (major_0x0cc80-nk_start) # 0ad18 -.long (syscall_tbl-.) + (major_0x0ce48-nk_start) # 0ad1c -.long (syscall_tbl-.) + (major_0x0d158-nk_start) # 0ad20 -.long (syscall_tbl-.) + (major_0x0ced4-nk_start) # 0ad24 -.long (syscall_tbl-.) + (major_0x0d06c-nk_start) # 0ad28 -.long (syscall_tbl-.) + (major_0x0d010-nk_start) # 0ad2c -.long (syscall_tbl-.) + (major_0x0d818-nk_start) # 0ad30 -.long (syscall_tbl-.) + (major_0x0d8a0-nk_start) # 0ad34 -.long (syscall_tbl-.) + (major_0x0d9a8-nk_start) # 0ad38 -.long (syscall_tbl-.) + (major_0x0b640-nk_start) # 0ad3c -.long (syscall_tbl-.) + (major_0x0b720-nk_start) # 0ad40 -.long (syscall_tbl-.) + (major_0x0b73c-nk_start) # 0ad44 -.long (syscall_tbl-.) + (major_0x0b750-nk_start) # 0ad48 -.long (syscall_tbl-.) + (nk_get_next_id_unowned-nk_start) -.long (syscall_tbl-.) + (major_0x0b8b8-nk_start) # 0ad50 -.long (syscall_tbl-.) + (major_0x0c778-nk_start) # 0ad54 -.long (syscall_tbl-.) + (major_0x0d70c-nk_start) # 0ad58 -.long (syscall_tbl-.) + (major_0x0d798-nk_start) # 0ad5c -.long (syscall_tbl-.) + (major_0x0b960-nk_start) # 0ad60 -.long (syscall_tbl-.) + (major_0x0ba80-nk_start) # 0ad64 -.long (syscall_tbl-.) + (major_0x0bb20-nk_start) # 0ad68 -.long (syscall_tbl-.) + (NKStopScheduling-nk_start) -.long (syscall_tbl-.) + (NKCpuPlugin-nk_start) # 0ad70 -.long (syscall_tbl-.) + (major_0x0be10-nk_start) # 0ad74 -.long (syscall_tbl-.) + (_bad_syscall-nk_start) # 0ad78 -.long (syscall_tbl-.) + (major_0x0d204-nk_start) # 0ad7c -.long (syscall_tbl-.) + (major_0x0d278-nk_start) # 0ad80 -.long (syscall_tbl-.) + (major_0x0d324-nk_start) # 0ad84 -.long (syscall_tbl-.) + (major_0x0d504-nk_start) # 0ad88 -.long (syscall_tbl-.) + (major_0x0d678-nk_start) # 0ad8c -.long (syscall_tbl-.) + (major_0x0d6b4-nk_start) # 0ad90 -.long (syscall_tbl-.) + (major_0x0b664-nk_start) # 0ad94 -.long (syscall_tbl-.) + (major_0x0e90c-nk_start) # 0ad98 -.long (syscall_tbl-.) + (NKThrowException-nk_start) -.long (syscall_tbl-.) + (major_0x0ea58-nk_start) # 0ada0 -.long (syscall_tbl-.) + (major_0x0ec54-nk_start) # 0ada4 -.long (syscall_tbl-.) + (major_0x0ec8c-nk_start) # 0ada8 -.long (syscall_tbl-.) + (major_0x0f050-nk_start) # 0adac -.long (syscall_tbl-.) + (major_0x0b90c-nk_start) # 0adb0 -.long (syscall_tbl-.) + (major_0x0f288-nk_start) # 0adb4 -.long (syscall_tbl-.) + (major_0x0da20-nk_start) # 0adb8 -.long (syscall_tbl-.) + (major_0x0da8c-nk_start) # 0adbc -.long (syscall_tbl-.) + (major_0x0dc0c-nk_start) # 0adc0 -.long (syscall_tbl-.) + (major_0x0dacc-nk_start) # 0adc4 -.long (syscall_tbl-.) + (NKGetPageSizeClasses-nk_start) -.long (syscall_tbl-.) + (NKGetPageSize-nk_start) # 0adcc -.long (syscall_tbl-.) + (major_0x0f7b8-nk_start) # 0add0 -.long (syscall_tbl-.) + (major_0x0f9f8-nk_start) # 0add4 -.long (syscall_tbl-.) + (major_0x0fb34-nk_start) # 0add8 -.long (syscall_tbl-.) + (major_0x10414-nk_start) # 0addc -.long (syscall_tbl-.) + (major_0x104ec-nk_start) # 0ade0 -.long (syscall_tbl-.) + (major_0x1070c-nk_start) # 0ade4 -.long (syscall_tbl-.) + (NKSetAreaAccess-nk_start) # 0ade8 -.long (syscall_tbl-.) + (major_0x10e94-nk_start) # 0adec -.long (syscall_tbl-.) + (major_0x10ee0-nk_start) # 0adf0 -.long (syscall_tbl-.) + (major_0x10ff0-nk_start) # 0adf4 -.long (syscall_tbl-.) + (major_0x11040-nk_start) # 0adf8 -.long (syscall_tbl-.) + (major_0x11104-nk_start) # 0adfc -.long (syscall_tbl-.) + (major_0x11360-nk_start) # 0ae00 -.long (syscall_tbl-.) + (major_0x1139c-nk_start) # 0ae04 -.long (syscall_tbl-.) + (major_0x11490-nk_start) # 0ae08 -.long (syscall_tbl-.) + (NKMapPage-nk_start) # 0ae0c -.long (syscall_tbl-.) + (NKUnmapPages-nk_start) # 0ae10 -.long (syscall_tbl-.) + (NKLockPages-nk_start) # 0ae14 -.long (syscall_tbl-.) + (NKUnlockPages-nk_start) # 0ae18 -.long (syscall_tbl-.) + (NKHoldPages-nk_start) # 0ae1c -.long (syscall_tbl-.) + (NKUnholdPages-nk_start) # 0ae20 -.long (syscall_tbl-.) + (major_0x11ebc-nk_start) # 0ae24 -.long (syscall_tbl-.) + (major_0x11fac-nk_start) # 0ae28 -.long (syscall_tbl-.) + (major_0x120a8-nk_start) # 0ae2c -.long (syscall_tbl-.) + (major_0x12110-nk_start) # 0ae30 -.long (syscall_tbl-.) + (major_0x12248-nk_start) # 0ae34 -.long (syscall_tbl-.) + (NKxprintf-nk_start) # 0ae38 -.long (syscall_tbl-.) + (major_0x0beac-nk_start) # 0ae3c -.long (syscall_tbl-.) + (major_0x111d4-nk_start) # 0ae40 -.long (syscall_tbl-.) + (NKSetBlueProcessID-nk_start) -.long (syscall_tbl-.) + (NKGetFreePageCount-nk_start) -.long (syscall_tbl-.) + (NKGetUnheldFreePageCount-nk_start) -.long (syscall_tbl-.) + (major_0x16b90-nk_start) # 0ae50 -.long (syscall_tbl-.) + (major_0x16bb4-nk_start) # 0ae54 -.long (syscall_tbl-.) + (NKRegisterThermalHandler-nk_start) -.long (syscall_tbl-.) + (NKRegisterPMFHandler-nk_start) -.long (syscall_tbl-.) + (NKMarkPMFTask-nk_start) # 0ae60 -.long (syscall_tbl-.) + (major_0x0bfc8-nk_start) # 0ae64 -.long (syscall_tbl-.) + (major_0x0c070-nk_start) # 0ae68 -.long (syscall_tbl-.) + (bad_syscall-nk_start) # 0ae6c -.long (syscall_tbl-.) + (bad_syscall-nk_start) # 0ae70 -.long (syscall_tbl-.) + (bad_syscall-nk_start) # 0ae74 -.long (syscall_tbl-.) + (bad_syscall-nk_start) # 0ae78 -.long (syscall_tbl-.) + (bad_syscall-nk_start) # 0ae7c -.long (syscall_tbl-.) + (major_0x0f2b8-nk_start) # 0ae80 -.long (syscall_tbl-.) + (major_0x0c3ac-nk_start) # 0ae84 -.long (syscall_tbl-.) + (nk_get_next_id_owned-nk_start) -.long (syscall_tbl-.) + (NKCurrentAddressSpace-nk_start) -.long (syscall_tbl-.) + (NKHomeAddressSpace-nk_start) -.long (syscall_tbl-.) + (NKSetTaskAddressSpace-nk_start) -.long (syscall_tbl-.) + (major_0x0dd64-nk_start) # 0ae98 -.long (syscall_tbl-.) + (NKRegisterExternalHandler-nk_start) -.long (syscall_tbl-.) + (NKPropogateExternalInterrupt-nk_start) -.long (syscall_tbl-.) + (major_0x10de0-nk_start) # 0aea4 -.long (syscall_tbl-.) + (major_0x0bed8-nk_start) # 0aea8 -.long (syscall_tbl-.) + (major_0x11098-nk_start) # 0aeac -.long (syscall_tbl-.) + (NKSetTaskType-nk_start) # 0aeb0 -.long (syscall_tbl-.) + (NKMakePhysicallyContiguous-nk_start) -.long (syscall_tbl-.) + (major_0x0dc88-nk_start) # 0aeb8 -.long (syscall_tbl-.) + (major_0x121d4-nk_start) # 0aebc -.long (syscall_tbl-.) + (major_0x108fc-nk_start) # 0aec0 -.long (syscall_tbl-.) + (NKSetClockStep-nk_start) # 0aec4 -.long (syscall_tbl-.) + (NKSetClockDriftCorrection-nk_start) -.long (syscall_tbl-.) + (major_0x0c52c-nk_start) # 0aecc - -# Increment a counter. All but LS 10 bits ignored, giving 1024 entries. -# r16 = &perf_tbl -# r17 = offset into counter table -syscall_0x230: -lwz r16, 0x0ef4( r1) # kdp.0xef4 # 0aed0 -rlwinm r17, r15, 2, 20, 29 # 0aed4 -cmplwi r16, 0x00 # 0aed8 -beq- syscall_skip_counter # 0aedc -lwzx r18, r16, r17 # 0aee0 -addi r18, r18, 0x01 # 0aee4 -stwx r18, r16, r17 # 0aee8 - -# r14 = offset of entry in jump table -# r16 = offset of jump table in kernel -# r15 = content of entry -# jump assumes kernel mapped at zero -syscall_skip_counter: -cmplwi r15, (syscall_0x230-syscall_tbl)/4 # 0aeec -rlwimi r14, r15, 2, 21, 29 # 0aef0 -lis r16, syscall_tbl@h # 0aef4 -ori r16, r16, syscall_tbl@l # 0aef8 -lwzx r15, r16, r14 # 0aefc -add r15, r15, r14 # 0af00 -mtlr r15 # 0af04 -bltlr- # 0af08 - - - -/*********************************************************** - - bad_syscall - -************************************************************ - -syscall 109 -syscall 110 -syscall 111 -syscall 112 -syscall 113 -Handler for out-of-range or unimplemented (debug) syscalls. - -************************************************************ - -Xrefs: -syscall -major_0x0af14 -_bad_syscall - -***********************************************************/ - -bad_syscall: /* < outside referer */ -li r3, -0x04 # 0af0c -b syscall_return # 0af10 - - - -/*********************************************************** - - major_0x0af14 - -************************************************************ - -Xrefs: -major_0x1070c - -***********************************************************/ - -major_0x0af14: /* < outside referer */ -sync # 0af14 -lwz r16, -0x0b50( r1) # 0af18 -cmpwi cr1, r16, 0x00 # 0af1c -li r16, 0x00 # 0af20 -bne+ cr1, major_0x0af14_0x1c # 0af24 -mflr r16 # 0af28 -bl panic # 0af2c - -major_0x0af14_0x1c: -stw r16, -0x0b50( r1) # 0af30 -b bad_syscall # 0af34 - - - -/*********************************************************** - - syscall_return_assert_lock_unheld - -************************************************************ - -Xrefs: -NKRegisterCpuPlugin -major_0x0b3cc -major_0x0b45c -major_0x0b664 -major_0x0b960 -major_0x0ba80 -major_0x0bb20 -NKStopScheduling -NKRegisterThermalHandler -NKRegisterPMFHandler -NKMarkPMFTask -NKSetClockStep -NKSetClockDriftCorrection -major_0x0c3ac -NKRegisterExternalHandler -major_0x0c52c -major_0x0c5e0 -major_0x0c680 -major_0x0c778 -major_0x0c830 -major_0x0c968 -major_0x0cac0 -major_0x0cb00 -major_0x0cb8c -major_0x0cc80 -major_0x0cd9c -major_0x0ce48 -major_0x0ced4 -major_0x0d010 -major_0x0d06c -major_0x0d158 -major_0x0d204 -major_0x0d278 -major_0x0d324 -major_0x0d504 -major_0x0d678 -major_0x0d6b4 -major_0x0d70c -major_0x0d818 -major_0x0d8a0 -major_0x0d9a8 -major_0x0da20 -major_0x0da8c -major_0x0dc0c -major_0x0dc88 -major_0x0dd64 -major_0x0e284 -major_0x0e548 -major_0x0e76c -major_0x0e894 -major_0x0e90c -major_0x0ea58 -major_0x0ec54 -major_0x0ec8c -major_0x0f050 -major_0x0f288 -major_0x0f2b8 -NKSetTaskType -major_0x0f9f8 -NKSetTaskAddressSpace -major_0x104ec -major_0x1070c -major_0x108fc -NKSetAreaAccess -major_0x10de0 -major_0x10e94 -major_0x10ee0 -major_0x11040 -major_0x11098 -major_0x11104 -major_0x111d4 -major_0x11360 -NKMapPage -NKUnmapPages -NKMakePhysicallyContiguous -NKLockPages -NKUnlockPages -NKHoldPages -NKUnholdPages -major_0x11ebc -major_0x11fac -major_0x120a8 -major_0x12110 -major_0x121d4 -major_0x12248 - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -.align 3 # 0af38 - -syscall_return_assert_lock_unheld: /* < outside referer */ -sync # 0af38 -lwz r16, -0x0b50( r1) # kdp.sch_lock # 0af3c -cmpwi cr1, r16, 0x00 # 0af40 -li r16, 0x00 # 0af44 -bne+ cr1, syscall_return_assert_lock_unheld_0x1c # 0af48 -mflr r16 # 0af4c -bl panic # 0af50 - -syscall_return_assert_lock_unheld_0x1c: -stw r16, -0x0b50( r1) # kdp.sch_lock # 0af54 - - - -/*********************************************************** - - syscall_return_noErr - -************************************************************ - -Xrefs: -syscall_return_assert_lock_unheld -major_0x0b144 -major_0x0b4a4 -major_0x0b664 -major_0x0b720 -major_0x0b73c -major_0x0b750 -nk_get_next_id_unowned -nk_get_next_id_owned -major_0x0b8b8 -major_0x0b90c -major_0x0bccc -major_0x0be10 -NKxprintf -NKSetBlueProcessID -major_0x0bfc8 -major_0x0c070 -NKSetClockDriftCorrection -major_0x0d798 -major_0x10ff0 -major_0x1139c -major_0x16b90 - -***********************************************************/ - -.align 3 # 0af58 - -syscall_return_noErr: /* < outside referer */ -li r3, 0x00 # 0af58 -b syscall_return # 0af5c - - - -/*********************************************************** - - major_0x0af60 - -************************************************************ - -Xrefs: -NKRegisterCpuPlugin -major_0x0b3cc -major_0x0b45c -major_0x0b4a4 -major_0x0b720 -major_0x0b960 -major_0x0ba80 -major_0x0bb20 -NKStopScheduling -major_0x0c3ac -major_0x0c5e0 -major_0x0c778 -major_0x0c830 -major_0x0c968 -major_0x0cac0 -major_0x0cb00 -major_0x0cb8c -major_0x0cc80 -major_0x0ce48 -major_0x0ced4 -major_0x0d010 -major_0x0d06c -major_0x0d204 -major_0x0d504 -major_0x0d678 -major_0x0d70c -major_0x0d8a0 -major_0x0da20 -major_0x0e284 -major_0x0e548 -major_0x0e604 -major_0x0e76c -NKThrowException -major_0x0ea58 -major_0x0ec8c -major_0x0f050 -major_0x0f2b8 -major_0x0f7b8 -major_0x0f9f8 -NKSetTaskAddressSpace -major_0x0fb34 -major_0x10414 -major_0x104ec -major_0x1070c -major_0x108fc -major_0x1139c -NKMapPage -NKUnmapPages -NKMakePhysicallyContiguous -NKLockPages -NKHoldPages -major_0x11ebc -major_0x11fac -major_0x12110 -major_0x12248 - -***********************************************************/ - -.align 5 # 0af60 - -major_0x0af60: /* < outside referer */ -sync # 0af60 -lwz r16, -0x0b50( r1) # 0af64 -cmpwi cr1, r16, 0x00 # 0af68 -li r16, 0x00 # 0af6c -bne+ cr1, major_0x0af60_0x1c # 0af70 -mflr r16 # 0af74 -bl panic # 0af78 - -major_0x0af60_0x1c: -stw r16, -0x0b50( r1) # 0af7c - -major_0x0af60_0x20: /* < outside referer */ -mfspr r16, 287/*pvr*/ # 0af80 -rlwinm. r16, r16, 0, 0, 14 # 0af84 -beq- major_0x0af60_0x34 # 0af88 -mftb r4, 0x10c # 0af8c -b major_0x0af60_0x38 # 0af90 - -major_0x0af60_0x34: -mfspr r4, 5/*rtcl*/ # 0af94 - -major_0x0af60_0x38: -xori r16, r4, 0x1007 # 0af98 -xoris r16, r16, 0x1950 # 0af9c -stw r16, -0x096c( r1) # 0afa0 -li r3, -0x726e # 0afa4 -b syscall_return # 0afa8 -.long 0x38608d91 # 0afac -.long 0x48000174 # 0afb0 - -major_0x0af60_0x54: /* < outside referer */ -sync # 0afb4 -lwz r16, -0x0b50( r1) # 0afb8 -cmpwi cr1, r16, 0x00 # 0afbc -li r16, 0x00 # 0afc0 -bne+ cr1, major_0x0af60_0x70 # 0afc4 -mflr r16 # 0afc8 -bl panic # 0afcc - -major_0x0af60_0x70: -stw r16, -0x0b50( r1) # 0afd0 -li r3, -0x7270 # 0afd4 -b syscall_return # 0afd8 - -major_0x0af60_0x7c: /* < outside referer */ -sync # 0afdc -lwz r16, -0x0b50( r1) # 0afe0 -cmpwi cr1, r16, 0x00 # 0afe4 -li r16, 0x00 # 0afe8 -bne+ cr1, major_0x0af60_0x98 # 0afec -mflr r16 # 0aff0 -bl panic # 0aff4 - -major_0x0af60_0x98: -stw r16, -0x0b50( r1) # 0aff8 -li r3, -0x7271 # 0affc -b syscall_return # 0b000 - -major_0x0af60_0xa4: /* < outside referer */ -sync # 0b004 -lwz r16, -0x0b50( r1) # 0b008 -cmpwi cr1, r16, 0x00 # 0b00c -li r16, 0x00 # 0b010 -bne+ cr1, major_0x0af60_0xc0 # 0b014 -mflr r16 # 0b018 -bl panic # 0b01c - -major_0x0af60_0xc0: -stw r16, -0x0b50( r1) # 0b020 - - - -/*********************************************************** - - syscall_return_kMPInsufficientResourcesErr - -************************************************************ - -Xrefs: -major_0x0af60 -major_0x0b144 -NKRegisterCpuPlugin -major_0x0be10 -NKxprintf -NKSetBlueProcessID -NKSetClockStep -NKSetClockDriftCorrection -major_0x0c778 -major_0x0cb00 -major_0x0e284 -major_0x11360 -NKPropogateExternalInterrupt -major_0x16b80 - -***********************************************************/ - -syscall_return_kMPInsufficientResourcesErr: /* < outside referer */ -li r3, -0x7272 # 0b024 -b syscall_return # 0b028 - - - -/*********************************************************** - - major_0x0b02c - -************************************************************ - -Xrefs: -major_0x0c968 -major_0x0cb8c -major_0x0ced4 -major_0x0d504 - -***********************************************************/ - -major_0x0b02c: /* < outside referer */ -sync # 0b02c -lwz r16, -0x0b50( r1) # 0b030 -cmpwi cr1, r16, 0x00 # 0b034 -li r16, 0x00 # 0b038 -bne+ cr1, major_0x0b02c_0x1c # 0b03c -mflr r16 # 0b040 -bl panic # 0b044 - -major_0x0b02c_0x1c: -stw r16, -0x0b50( r1) # 0b048 - - - -/*********************************************************** - - syscall_return_wtf - -************************************************************ - -Xrefs: -major_0x0b02c -major_0x0b640 - -***********************************************************/ - -syscall_return_wtf: /* < outside referer */ -li r3, -0x726d # 0b04c -b syscall_return # 0b050 - - - -/*********************************************************** - - major_0x0b054 - -************************************************************ - -Xrefs: -major_0x0dc88 -major_0x0dd64 -major_0x10414 -major_0x1070c -major_0x108fc -NKSetAreaAccess -major_0x10de0 -major_0x10ee0 -major_0x11040 -major_0x11098 -major_0x11104 -major_0x111d4 -NKMapPage -NKUnmapPages -NKMakePhysicallyContiguous -NKLockPages -NKUnlockPages -NKHoldPages -NKUnholdPages -major_0x11ebc -major_0x11fac -major_0x120a8 -major_0x12110 -major_0x121d4 - -***********************************************************/ - -major_0x0b054: /* < outside referer */ -sync # 0b054 -lwz r16, -0x0b50( r1) # 0b058 -cmpwi cr1, r16, 0x00 # 0b05c -li r16, 0x00 # 0b060 -bne+ cr1, major_0x0b054_0x1c # 0b064 -mflr r16 # 0b068 -bl panic # 0b06c - -major_0x0b054_0x1c: -stw r16, -0x0b50( r1) # 0b070 - - - -/*********************************************************** - - syscall_return_paramErr - -************************************************************ - -Xrefs: -major_0x0b054 -nk_get_next_id_owned -major_0x0bfc8 -major_0x0c070 -NKSetClockStep -NKGetPageSize -major_0x12248 -NKPropogateExternalInterrupt -major_0x16b80 - -***********************************************************/ - -syscall_return_paramErr: /* < outside referer */ -li r3, -0x32 # 0b074 -b syscall_return # 0b078 - - - -/*********************************************************** - - major_0x0b07c - -************************************************************ - -Xrefs: -NKRegisterCpuPlugin -major_0x0b3cc -major_0x0b45c -major_0x0b4a4 -major_0x0ba80 -major_0x0bb20 -NKStopScheduling -NKRegisterThermalHandler -NKRegisterPMFHandler -NKMarkPMFTask -major_0x0c3ac -NKRegisterExternalHandler -major_0x0c680 -major_0x0c778 -major_0x0c830 -major_0x0c968 -major_0x0cac0 -major_0x0cb8c -major_0x0cc80 -major_0x0ccbc -major_0x0cd9c -major_0x0ced4 -major_0x0d010 -major_0x0d06c -major_0x0d158 -major_0x0d278 -major_0x0d324 -major_0x0d504 -major_0x0d678 -major_0x0d6b4 -major_0x0d798 -major_0x0d818 -major_0x0d8a0 -major_0x0d9a8 -major_0x0da8c -major_0x0dacc -major_0x0dc0c -major_0x0dc88 -major_0x0e284 -major_0x0e548 -major_0x0e604 -major_0x0e76c -major_0x0e894 -major_0x0e90c -NKThrowException -major_0x0ea58 -major_0x0ec54 -major_0x0ec8c -major_0x0f050 -major_0x0f288 -major_0x0f2b8 -NKSetTaskType -major_0x0f9f8 -NKSetTaskAddressSpace -major_0x0fb34 -major_0x10414 -major_0x104ec -major_0x1070c -major_0x108fc -NKSetAreaAccess -major_0x10de0 -major_0x10e94 -major_0x10ee0 -major_0x11040 -major_0x11098 -major_0x11104 -major_0x111d4 -major_0x11360 -NKMapPage -NKUnmapPages -NKMakePhysicallyContiguous -NKLockPages -NKUnlockPages -NKHoldPages -NKUnholdPages -major_0x11ebc -major_0x11fac -major_0x120a8 -major_0x12110 -major_0x121d4 - -***********************************************************/ - -major_0x0b07c: /* < outside referer */ -sync # 0b07c -lwz r16, -0x0b50( r1) # 0b080 -cmpwi cr1, r16, 0x00 # 0b084 -li r16, 0x00 # 0b088 -bne+ cr1, major_0x0b07c_0x1c # 0b08c -mflr r16 # 0b090 -bl panic # 0b094 - -major_0x0b07c_0x1c: -stw r16, -0x0b50( r1) # 0b098 -li r3, -0x725c # 0b09c -b syscall_return # 0b0a0 - -major_0x0b07c_0x28: /* < outside referer */ -sync # 0b0a4 -lwz r16, -0x0b50( r1) # 0b0a8 -cmpwi cr1, r16, 0x00 # 0b0ac -li r16, 0x00 # 0b0b0 -bne+ cr1, major_0x0b07c_0x44 # 0b0b4 -mflr r16 # 0b0b8 -bl panic # 0b0bc - -major_0x0b07c_0x44: -stw r16, -0x0b50( r1) # 0b0c0 - - - -/*********************************************************** - - syscall_return_kMPInvalidIDErr - -************************************************************ - -Xrefs: -major_0x0b07c -NKRegisterCpuPlugin -major_0x0b73c -major_0x0b750 -nk_get_next_id_unowned -nk_get_next_id_owned -major_0x0b8b8 -major_0x0b90c -major_0x0b960 -NKSetBlueProcessID -major_0x0e894 -major_0x10ff0 - -***********************************************************/ - -syscall_return_kMPInvalidIDErr: /* < outside referer */ -li r3, -0x7273 # 0b0c4 -b syscall_return # 0b0c8 - - - -/*********************************************************** - - major_0x0b0cc - -************************************************************ - -Xrefs: -NKLockPages -NKUnlockPages -NKHoldPages -NKUnholdPages - -***********************************************************/ - -major_0x0b0cc: /* < outside referer */ -sync # 0b0cc -lwz r16, -0x0b50( r1) # 0b0d0 -cmpwi cr1, r16, 0x00 # 0b0d4 -li r16, 0x00 # 0b0d8 -bne+ cr1, major_0x0b0cc_0x1c # 0b0dc -mflr r16 # 0b0e0 -bl panic # 0b0e4 - -major_0x0b0cc_0x1c: -stw r16, -0x0b50( r1) # 0b0e8 -li r3, -0x725a # 0b0ec -b syscall_return # 0b0f0 - - - -/*********************************************************** - - syscall_return_noErr_again - -************************************************************ - -Xrefs: -major_0x0b248 - -***********************************************************/ - -syscall_return_noErr_again: /* < outside referer */ -li r3, 0x00 # 0b0f4 -b syscall_return # 0b0f8 - - - -/*********************************************************** - - major_0x0b0fc - -************************************************************ - -Xrefs: -major_0x02964 -major_0x02ccc -major_0x0b664 -major_0x0c968 -major_0x0cb8c -major_0x0ccbc -major_0x0ced4 -major_0x0d504 -major_0x0dacc -major_0x0e604 -NKThrowException -major_0x0ea58 -major_0x0ec8c -major_0x0f050 -NKSetTaskAddressSpace -major_0x11104 -major_0x111d4 - -***********************************************************/ - -major_0x0b0fc: /* < outside referer */ -crclr 4*cr2 + eq # 0b0fc -b syscall_return_0x4 # 0b100 - -major_0x0b0fc_0x8: /* < outside referer */ -sync # 0b104 -lwz r16, -0x0b50( r1) # 0b108 -cmpwi cr1, r16, 0x00 # 0b10c -li r16, 0x00 # 0b110 -bne+ cr1, major_0x0b0fc_0x24 # 0b114 -mflr r16 # 0b118 -bl panic # 0b11c - -major_0x0b0fc_0x24: -stw r16, -0x0b50( r1) # 0b120 - - - -/*********************************************************** - - syscall_return - -************************************************************ - -Xrefs: -bad_syscall -syscall_return_noErr -major_0x0af60 -syscall_return_kMPInsufficientResourcesErr -syscall_return_wtf -syscall_return_paramErr -major_0x0b07c -syscall_return_kMPInvalidIDErr -major_0x0b0cc -syscall_return_noErr_again -major_0x0b0fc -nk_cpu_count -major_0x0b4a4 -nk_yield_with_hint -NKCpuPlugin -major_0x0beac -major_0x0bed8 -major_0x0e850 -major_0x0e880 -NKGetPageSizeClasses -NKGetPageSize -major_0x0f7b8 -NKCurrentAddressSpace -NKHomeAddressSpace -major_0x0fb34 -major_0x10414 -major_0x11490 -NKGetFreePageCount -NKGetUnheldFreePageCount -major_0x16b80 - -***********************************************************/ - -syscall_return: /* < outside referer */ -crset 4*cr2 + eq # 0b124 - -syscall_return_0x4: /* < outside referer */ -mfspr r8, 272/*sprg0*/ # 0b128 -lwz r9, 0x0134( r6) # 0b12c -stw r9, 0x0018( r8) # 0b130 -bne- cr2, syscall_return_0x1c # 0b134 - -# r6 = ewa -bl restore_registers_from_r14 # 0b138 -b skeleton_key # 0b13c - -syscall_return_0x1c: -b major_0x142dc # 0b140 - - - -/*********************************************************** - - major_0x0b144 - -************************************************************ - -syscall 0 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0b144: /* < outside referer */ -andi. r16, r3, 0xfff # 0b144 -mr r30, r7 # 0b148 -mr r29, r6 # 0b14c -bne+ syscall_return_kMPInsufficientResourcesErr # 0b150 -rlwinm. r4, r3, 20, 12, 31 # 0b154 -lwz r9, 0x06a8( r1) # 0b158 -beq+ syscall_return_kMPInsufficientResourcesErr # 0b15c -cmplw r4, r9 # 0b160 -bge+ syscall_return_kMPInsufficientResourcesErr # 0b164 -mr r17, r8 # 0b168 -mr r18, r9 # 0b16c -addi r8, r1, -0xb90 # 0b170 - -# r8 = lock -bl lock # 0b174 -mr r8, r17 # 0b178 -mr r9, r18 # 0b17c -bl major_0x08794_0x1268 # 0b180 -bge- cr4, major_0x0b144_0xd8 # 0b184 -bgt- cr5, major_0x0b144_0xd8 # 0b188 -bns- cr7, major_0x0b144_0xd8 # 0b18c -bgt- cr7, major_0x0b144_0xd8 # 0b190 -bltl+ cr5, major_0x08794_0x134c # 0b194 -bgel+ cr5, major_0x08794_0x13e0 # 0b198 -ori r16, r16, 0x404 # 0b19c -li r31, 0x03 # 0b1a0 -rlwimi r9, r31, 0, 30, 31 # 0b1a4 -bl major_0x08794_0x1394 # 0b1a8 -mr r7, r30 # 0b1ac -mr r6, r29 # 0b1b0 -sync # 0b1b4 -lwz r16, -0x0b90( r1) # 0b1b8 -cmpwi cr1, r16, 0x00 # 0b1bc -li r16, 0x00 # 0b1c0 -bne+ cr1, major_0x0b144_0x8c # 0b1c4 -mflr r16 # 0b1c8 -bl panic # 0b1cc - -major_0x0b144_0x8c: -stw r16, -0x0b90( r1) # 0b1d0 -mr r16, r8 # 0b1d4 -mr r17, r9 # 0b1d8 -addi r8, r1, -0xad0 # 0b1dc - -# r8 = lock -bl lock # 0b1e0 -mr r8, r16 # 0b1e4 -mr r9, r17 # 0b1e8 -rlwinm r8, r9, 0, 0, 19 # 0b1ec -mr r9, r3 # 0b1f0 - -# r1 = kdp -# r8 = anywhere in new page (phys) -# r9 = page_virt -bl poolextend # 0b1f4 -sync # 0b1f8 -lwz r16, -0x0ad0( r1) # 0b1fc -cmpwi cr1, r16, 0x00 # 0b200 -li r16, 0x00 # 0b204 -bne+ cr1, major_0x0b144_0xd0 # 0b208 -mflr r16 # 0b20c -bl panic # 0b210 - -major_0x0b144_0xd0: -stw r16, -0x0ad0( r1) # 0b214 -b syscall_return_noErr # 0b218 - -major_0x0b144_0xd8: -mr r7, r30 # 0b21c -mr r6, r29 # 0b220 -sync # 0b224 -lwz r16, -0x0b90( r1) # 0b228 -cmpwi cr1, r16, 0x00 # 0b22c -li r16, 0x00 # 0b230 -bne+ cr1, major_0x0b144_0xfc # 0b234 -mflr r16 # 0b238 -bl panic # 0b23c - -major_0x0b144_0xfc: -stw r16, -0x0b90( r1) # 0b240 -b syscall_return_kMPInsufficientResourcesErr # 0b244 - - - -/*********************************************************** - - major_0x0b248 - -************************************************************ - -syscall 1 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0b248 - -major_0x0b248: /* < outside referer */ -b syscall_return_noErr_again # 0b248 - - - -/*********************************************************** - - NKRegisterCpuPlugin - -************************************************************ - -syscall 2 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -NKRegisterCpuPlugin: /* < outside referer */ -mfspr r14, 272/*sprg0*/ # 0b24c -lwz r15, -0x0008(r14) # 0b250 -lwz r16, 0x0134( r6) # 0b254 -andi. r8, r4, 0xfff # 0b258 -bne+ syscall_return_kMPInsufficientResourcesErr # 0b25c -andi. r8, r5, 0xfff # 0b260 -cmpwi cr1, r5, 0x00 # 0b264 -bne+ syscall_return_kMPInsufficientResourcesErr # 0b268 -beq+ cr1, syscall_return_kMPInsufficientResourcesErr -mr r18, r8 # 0b270 -mr r19, r9 # 0b274 -addi r8, r1, -0xb50 # 0b278 - -# r8 = lock -bl lock # 0b27c -mr r8, r18 # 0b280 -mr r9, r19 # 0b284 -mr. r8, r3 # 0b288 -bne- NKRegisterCpuPlugin_0x50 # 0b28c -mfspr r15, 272/*sprg0*/ # 0b290 -lwz r14, -0x0338(r15) # 0b294 -b NKRegisterCpuPlugin_0x60 # 0b298 - -NKRegisterCpuPlugin_0x50: -# r8 = id -bl id_kind # 0b29c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0a # 0b2a0 -mr r14, r8 # 0b2a4 -bne+ syscall_return_kMPInvalidIDErr # 0b2a8 - -NKRegisterCpuPlugin_0x60: -cmpwi r16, 0x00 # 0b2ac -bne- NKRegisterCpuPlugin_0x74 # 0b2b0 -stw r16, 0x0038(r14) # 0b2b4 -stw r16, 0x0034(r14) # 0b2b8 -b major_0x0b07c_0x28 # 0b2bc - -NKRegisterCpuPlugin_0x74: -add r17, r4, r5 # 0b2c0 -cmplw r16, r4 # 0b2c4 -cmplw cr1, r16, r17 # 0b2c8 -blt+ major_0x0af60_0xa4 # 0b2cc -bge+ cr1, major_0x0af60_0xa4 # 0b2d0 -lwz r19, 0x0038(r14) # 0b2d4 -mr. r19, r19 # 0b2d8 -bne+ major_0x0b07c_0x28 # 0b2dc -mr r27, r4 # 0b2e0 -addi r29, r1, 800 # 0b2e4 -bl major_0x054b8 # 0b2e8 -beq+ major_0x0af60_0xa4 # 0b2ec -rlwinm r18, r31, 0, 0, 19 # 0b2f0 -mr r27, r16 # 0b2f4 -mr r19, r16 # 0b2f8 -addi r29, r1, 800 # 0b2fc -bl major_0x054b8 # 0b300 -beq+ major_0x0af60_0xa4 # 0b304 -rlwimi r19, r31, 0, 0, 19 # 0b308 -stw r4, 0x0028(r14) # 0b30c -stw r18, 0x002c(r14) # 0b310 -stw r5, 0x0030(r14) # 0b314 -stw r16, 0x0034(r14) # 0b318 -stw r19, 0x0038(r14) # 0b31c -lwz r27, 0x0000(r19) # 0b320 -addi r29, r1, 800 # 0b324 -bl major_0x054b8 # 0b328 -beq+ major_0x0af60_0xa4 # 0b32c -rlwimi r27, r31, 0, 0, 19 # 0b330 -stw r27, 0x0040(r14) # 0b334 -mfspr r16, 272/*sprg0*/ # 0b338 -lwz r17, -0x001c(r16) # 0b33c -stw r17, 0x004c(r14) # 0b340 -addi r16, r19, 0x20 # 0b344 -stw r16, 0x003c(r14) # 0b348 -addi r16, r16, -0x04 # 0b34c -lwz r17, 0x001c(r19) # 0b350 -cmplwi r17, 0x40 # 0b354 -stw r17, 0x0044(r14) # 0b358 -bgt+ major_0x0af60_0xa4 # 0b35c - -NKRegisterCpuPlugin_0x114: -lwzu r27, 0x0004(r16) # 0b360 -addi r29, r1, 800 # 0b364 -bl major_0x054b8 # 0b368 -beq+ major_0x0af60_0xa4 # 0b36c -addi r17, r17, -0x01 # 0b370 -rlwimi r27, r31, 0, 0, 19 # 0b374 -cmpwi r17, 0x00 # 0b378 -stw r27, 0x0000(r16) # 0b37c -bgt+ NKRegisterCpuPlugin_0x114 # 0b380 -bl 1f # 0b384 -.ascii "CPU plugin registered^n" # 0b388 -.short 0 # 0b39f -.align 2 # 0b3a1 -1: mflr r8 # 0b3a4 -bl print_string # 0b3a8 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0b3ac - - - -/*********************************************************** - - nk_cpu_count - -************************************************************ - -syscall 3 -Called by MPProcessors and MPProcessorsScheduled - -************************************************************ - -Xrefs: -syscall - -************************************************************ - -> r3 = 0:all, 1:scheduled - -< r3 = cpu_count - -***********************************************************/ - -.align 4 # 0b3b0 - -nk_cpu_count: /* < outside referer */ -mfspr r15, 272/*sprg0*/ # 0b3b0 -lwz r14, -0x0338(r15) # 0b3b4 -mr. r8, r3 # 0b3b8 -lwz r3, 0x0020(r14) # 0b3bc -beq+ syscall_return # 0b3c0 -lwz r3, 0x0024(r14) # 0b3c4 -b syscall_return # 0b3c8 - - - -/*********************************************************** - - major_0x0b3cc - -************************************************************ - -syscall 4 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0b3cc: /* < outside referer */ -mr r16, r8 # 0b3cc -mr r17, r9 # 0b3d0 -addi r8, r1, -0xb50 # 0b3d4 - -# r8 = lock -bl lock # 0b3d8 -mr r8, r16 # 0b3dc -mr r9, r17 # 0b3e0 -mr. r8, r3 # 0b3e4 -bne- major_0x0b3cc_0x28 # 0b3e8 -lwz r3, -0x0424( r1) # 0b3ec -mr r8, r3 # 0b3f0 - -major_0x0b3cc_0x28: -# r8 = id -bl id_kind # 0b3f4 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x08 # 0b3f8 -mr r30, r8 # 0b3fc -bne+ major_0x0b07c_0x28 # 0b400 -li r8, 0x20 # 0b404 - -# r1 = kdp -# r8 = size -bl pool_malloc # 0b408 -# r8 = ptr - -mr. r31, r8 # 0b40c -beq+ major_0x0af60 # 0b410 -li r9, 0x01 # 0b414 - -# r1 = kdp -# r9 = kind -bl alloc_id # 0b418 -cmpwi r8, 0x00 # 0b41c -bne- major_0x0b3cc_0x64 # 0b420 -mr r8, r31 # 0b424 -bl looks_like_poolextend # 0b428 -b major_0x0af60 # 0b42c - -major_0x0b3cc_0x64: -stw r8, 0x0000(r31) # 0b430 -lis r16, 0x5052 # 0b434 -ori r16, r16, 0x4f43 # 0b438 -stw r16, 0x0004(r31) # 0b43c -stw r3, 0x000c(r31) # 0b440 -stw r30, 0x0014(r31) # 0b444 -lwz r17, 0x0018(r31) # 0b448 -addi r17, r17, 0x01 # 0b44c -stw r17, 0x0018(r31) # 0b450 -mr r5, r8 # 0b454 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0b458 - - - -/*********************************************************** - - major_0x0b45c - -************************************************************ - -syscall 5 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0b45c: /* < outside referer */ -mr r16, r8 # 0b45c -mr r17, r9 # 0b460 -addi r8, r1, -0xb50 # 0b464 - -# r8 = lock -bl lock # 0b468 -mr r8, r16 # 0b46c -mr r9, r17 # 0b470 -mr r8, r3 # 0b474 - -# r8 = id -bl id_kind # 0b478 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x01 # 0b47c -bne+ major_0x0b07c_0x28 # 0b480 -mr r31, r8 # 0b484 -lwz r16, 0x0008(r31) # 0b488 -rlwinm. r17, r16, 0, 30, 30 # 0b48c -bne+ major_0x0af60_0xa4 # 0b490 -ori r16, r16, 0x02 # 0b494 -stw r16, 0x0008(r31) # 0b498 -mr r8, r3 # 0b49c - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0b4a0 - - - -/*********************************************************** - - major_0x0b4a4 - -************************************************************ - -syscall 6 - -************************************************************ - -Xrefs: -syscall -NKStopScheduling -major_0x0e604 -NKThrowException - -***********************************************************/ - -major_0x0b4a4: /* < outside referer */ -mr r16, r8 # 0b4a4 -mr r17, r9 # 0b4a8 -addi r8, r1, -0xb50 # 0b4ac - -# r8 = lock -bl lock # 0b4b0 -mr r8, r16 # 0b4b4 -mr r9, r17 # 0b4b8 -mr r8, r3 # 0b4bc - -# r8 = id -bl id_kind # 0b4c0 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x01 # 0b4c4 -bne+ major_0x0b07c_0x28 # 0b4c8 -mr r31, r8 # 0b4cc -lwz r16, 0x0008(r31) # 0b4d0 -lwz r17, 0x0010(r31) # 0b4d4 -rlwinm. r8, r16, 0, 30, 30 # 0b4d8 -cmpwi cr1, r17, 0x00 # 0b4dc -beq+ major_0x0af60_0xa4 # 0b4e0 -bne+ cr1, major_0x0af60_0xa4 # 0b4e4 -mr r8, r3 # 0b4e8 -bl major_0x15300 # 0b4ec -sync # 0b4f0 -lwz r16, -0x0b50( r1) # 0b4f4 -cmpwi cr1, r16, 0x00 # 0b4f8 -li r16, 0x00 # 0b4fc -bne+ cr1, major_0x0b4a4_0x68 # 0b500 -mflr r16 # 0b504 -bl panic # 0b508 - -major_0x0b4a4_0x68: -stw r16, -0x0b50( r1) # 0b50c -mr r8, r31 # 0b510 -bl looks_like_poolextend # 0b514 -b syscall_return_noErr # 0b518 - -major_0x0b4a4_0x78: /* < outside referer */ -mr r16, r8 # 0b51c -mr r17, r9 # 0b520 -addi r8, r1, -0xb50 # 0b524 - -# r8 = lock -bl lock # 0b528 -mr r8, r16 # 0b52c -mr r9, r17 # 0b530 -mfspr r16, 272/*sprg0*/ # 0b534 -rlwinm. r8, r7, 0, 10, 10 # 0b538 -lwz r17, 0x0658( r1) # 0b53c -lwz r31, -0x0008(r16) # 0b540 -beq- major_0x0b4a4_0xb4 # 0b544 -lwz r8, 0x00cc(r17) # 0b548 -rlwinm r8, r8, 0, 24, 21 # 0b54c -oris r8, r8, 0x8000 # 0b550 -stw r8, 0x00cc(r17) # 0b554 - -major_0x0b4a4_0xb4: -mr r8, r31 # 0b558 -bl major_0x13e4c # 0b55c -li r16, 0x02 # 0b560 -stb r16, 0x0019(r31) # 0b564 -bl major_0x13ed8_0x8 # 0b568 -mr r8, r31 # 0b56c -bl major_0x14af8 # 0b570 -sync # 0b574 -lwz r16, -0x0b50( r1) # 0b578 -cmpwi cr1, r16, 0x00 # 0b57c -li r16, 0x00 # 0b580 -bne+ cr1, major_0x0b4a4_0xec # 0b584 -mflr r16 # 0b588 -bl panic # 0b58c - -major_0x0b4a4_0xec: -stw r16, -0x0b50( r1) # 0b590 -b syscall_return # 0b594 - - - -/*********************************************************** - - nk_yield_with_hint - -************************************************************ - -syscall 13 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0b598 - -nk_yield_with_hint: /* < outside referer */ -mr r16, r8 # 0b598 -mr r17, r9 # 0b59c -addi r8, r1, -0xb50 # 0b5a0 - -# r8 = lock -bl lock # 0b5a4 -mr r8, r16 # 0b5a8 -mr r9, r17 # 0b5ac -mfspr r16, 272/*sprg0*/ # 0b5b0 -rlwinm. r8, r7, 0, 10, 10 # 0b5b4 -lwz r17, 0x0658( r1) # 0b5b8 -lwz r31, -0x0008(r16) # 0b5bc -beq- nk_yield_with_hint_0x68 # 0b5c0 -clrlwi. r8, r3, 0x1f # 0b5c4 -lwz r8, 0x00cc(r17) # 0b5c8 -rlwinm r8, r8, 0, 24, 21 # 0b5cc -oris r8, r8, 0x8000 # 0b5d0 -stw r8, 0x00cc(r17) # 0b5d4 -beq- nk_yield_with_hint_0x68 # 0b5d8 -lbz r16, 0x0019(r31) # 0b5dc -cmpwi r16, 0x02 # 0b5e0 -bge- nk_yield_with_hint_0x7c # 0b5e4 -mr r8, r31 # 0b5e8 -bl major_0x13e4c # 0b5ec -li r16, 0x02 # 0b5f0 -stb r16, 0x0019(r31) # 0b5f4 -bl major_0x13ed8 # 0b5f8 -b nk_yield_with_hint_0x7c # 0b5fc - -nk_yield_with_hint_0x68: -mr r8, r31 # 0b600 -bl major_0x13e4c # 0b604 -li r16, 0x02 # 0b608 -stb r16, 0x0019(r31) # 0b60c -bl major_0x13ed8_0x8 # 0b610 - -nk_yield_with_hint_0x7c: -mr r8, r31 # 0b614 -bl major_0x14af8 # 0b618 -sync # 0b61c -lwz r16, -0x0b50( r1) # 0b620 -cmpwi cr1, r16, 0x00 # 0b624 -li r16, 0x00 # 0b628 -bne+ cr1, nk_yield_with_hint_0xa0 # 0b62c -mflr r16 # 0b630 -bl panic # 0b634 - -nk_yield_with_hint_0xa0: -stw r16, -0x0b50( r1) # 0b638 -b syscall_return # 0b63c - - - -/*********************************************************** - - major_0x0b640 - -************************************************************ - -syscall 33 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 6 # 0b640 - -major_0x0b640: /* < outside referer */ -rlwinm. r8, r7, 0, 10, 10 # 0b640 -bne+ syscall_return_wtf # 0b644 -mr r16, r8 # 0b648 -mr r17, r9 # 0b64c -addi r8, r1, -0xb50 # 0b650 - -# r8 = lock -bl lock # 0b654 -mr r8, r16 # 0b658 -mr r9, r17 # 0b65c -b major_0x0b664_0x60 # 0b660 - - - -/*********************************************************** - - major_0x0b664 - -************************************************************ - -syscall 55 - -************************************************************ - -Xrefs: -syscall -major_0x0b640 - -***********************************************************/ - -major_0x0b664: /* < outside referer */ -rlwinm. r8, r7, 0, 10, 10 # 0b664 -lwz r16, 0x0e80( r1) # 0b668 -beq- major_0x0b664_0x60 # 0b66c -lwz r17, -0x08e4( r1) # 0b670 -lwz r18, 0x0658( r1) # 0b674 -cmpw r16, r17 # 0b678 -stw r16, -0x08e4( r1) # 0b67c -bne+ syscall_return_noErr # 0b680 -lwz r8, 0x00cc(r18) # 0b684 -rlwinm r8, r8, 0, 24, 21 # 0b688 -oris r8, r8, 0x8000 # 0b68c -stw r8, 0x00cc(r18) # 0b690 -mr r16, r8 # 0b694 -mr r17, r9 # 0b698 -addi r8, r1, -0xb50 # 0b69c - -# r8 = lock -bl lock # 0b6a0 -mr r8, r16 # 0b6a4 -mr r9, r17 # 0b6a8 -lwz r16, -0x0410( r1) # 0b6ac -cmpwi r16, -0x01 # 0b6b0 -li r16, 0x00 # 0b6b4 -bne- major_0x0b664_0x60 # 0b6b8 -stw r16, -0x0410( r1) # 0b6bc - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0b6c0 - -major_0x0b664_0x60: /* < outside referer */ -mfspr r16, 272/*sprg0*/ # 0b6c4 -li r17, 0x01 # 0b6c8 -lwz r31, -0x0008(r16) # 0b6cc -addi r16, r31, 0x20 # 0b6d0 -stb r17, 0x0014(r16) # 0b6d4 -clrlwi r3, r3, 0x01 # 0b6d8 -stw r3, 0x0038(r16) # 0b6dc -stw r4, 0x003c(r16) # 0b6e0 -stw r31, 0x0018(r16) # 0b6e4 -mr r8, r16 # 0b6e8 -bl major_0x130f0_0x524 # 0b6ec -mr r8, r31 # 0b6f0 -bl major_0x13e4c # 0b6f4 -addi r16, r1, -0xa44 # 0b6f8 -addi r17, r31, 0x08 # 0b6fc -stw r16, 0x0000(r17) # 0b700 -stw r16, 0x0008(r17) # 0b704 -lwz r18, 0x000c(r16) # 0b708 -stw r18, 0x000c(r17) # 0b70c -stw r17, 0x0008(r18) # 0b710 -stw r17, 0x000c(r16) # 0b714 -li r3, 0x00 # 0b718 -b major_0x0b0fc # 0b71c - - - -/*********************************************************** - - major_0x0b720 - -************************************************************ - -syscall 34 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 5 # 0b720 - -major_0x0b720: /* < outside referer */ -mr r8, r3 # 0b720 -mr r9, r4 # 0b724 - -# r1 = kdp -# r9 = kind -bl alloc_id # 0b728 -cmpwi r8, 0x00 # 0b72c -beq+ major_0x0af60_0x20 # 0b730 -mr r5, r8 # 0b734 -b syscall_return_noErr # 0b738 - - - -/*********************************************************** - - major_0x0b73c - -************************************************************ - -syscall 35 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0b73c: /* < outside referer */ -mr r8, r3 # 0b73c -bl major_0x15300 # 0b740 -cmpwi r8, 0x01 # 0b744 -beq+ syscall_return_noErr # 0b748 -b syscall_return_kMPInvalidIDErr # 0b74c - - - -/*********************************************************** - - major_0x0b750 - -************************************************************ - -syscall 36 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 4 # 0b750 - -major_0x0b750: /* < outside referer */ -mr r8, r3 # 0b750 - -# r8 = id -bl id_kind # 0b754 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x00 # 0b758 -mr r4, r9 # 0b75c -mr r5, r8 # 0b760 -bne+ syscall_return_noErr # 0b764 -b syscall_return_kMPInvalidIDErr # 0b768 - - - -/*********************************************************** - - nk_get_next_id_unowned - -************************************************************ - -syscall 37 -Replace the provided process/coherence/console ID with the "next" one. IDs were opaque but were only longs. Wrapped by MPGetNext*ID, which indirects the opaque ID structure. - -From MP docs: A coherence group is the set of processors and other bus controllers that have cache-coherent access to memory. Mac OS 9 defines only one coherence group, which is all the processors that can access internal memory (RAM). Other coherence groups are possible; for example, a PCI card with its own memory and processors can comprise a coherence group. - -************************************************************ - -Xrefs: -syscall - -************************************************************ - -> r3 = kind (process=1,coherence=10,console=13) -> r4 = prev_id - -< r3 = MP result code -< r4 = next_id - -***********************************************************/ - -nk_get_next_id_unowned: /* < outside referer */ -mr r8, r4 # 0b76c -mr r9, r3 # 0b770 -bl major_0x153e0 # 0b774 -cmpwi r8, 0x00 # 0b778 -mr r4, r8 # 0b77c -bne+ syscall_return_noErr # 0b780 -b syscall_return_kMPInvalidIDErr # 0b784 - - - -/*********************************************************** - - nk_get_next_id_owned - -************************************************************ - -syscall 116 -Replace the provided address space/task/queue/semaphore/critical region/timer/event/notification ID with the "next" one. IDs were opaque but were only longs. Wrapped by MPGetNext*ID, which indirects the opaque ID structure. Differs from nk_get_next_id_unowned because it deals in objects owned by a particular process. - -************************************************************ - -Xrefs: -syscall - -************************************************************ - -> r3 = owningProcessID -> r4 = kind (task=2,timer=3,queue=4,sema=5,crit_rgn=6,addr_spc=8,evt=9,notif=12) -> r5 = prev_id - -< r3 = MP result code -< r5 = next_id - -***********************************************************/ - -.align 3 # 0b788 - -nk_get_next_id_owned: /* < outside referer */ -mr r8, r3 # 0b788 - -# r8 = id -bl id_kind # 0b78c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x01 # 0b790 -bne+ syscall_return_kMPInvalidIDErr # 0b794 - -try_another_id: -mr r8, r5 # 0b798 -mr r9, r4 # 0b79c -bl major_0x153e0 # 0b7a0 -mr. r5, r8 # 0b7a4 -beq+ syscall_return_kMPInvalidIDErr # 0b7a8 - -# r8 = id -bl id_kind # 0b7ac -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r4, 0x02 # 0b7b0 -cmpwi cr1, r4, 0x03 # 0b7b4 -beq- want_task_id # 0b7b8 -beq- cr1, want_timer_id # 0b7bc -cmpwi r4, 0x04 # 0b7c0 -cmpwi cr1, r4, 0x05 # 0b7c4 -beq- want_queue_id # 0b7c8 -beq- cr1, want_sema_id # 0b7cc -cmpwi r4, 0x06 # 0b7d0 -cmpwi cr1, r4, 0x08 # 0b7d4 -beq- want_critrgn_id # 0b7d8 -beq- cr1, want_addrspc_id # 0b7dc -cmpwi r4, 0x09 # 0b7e0 -cmpwi cr1, r4, 0x0b # 0b7e4 -beq- want_evt_id # 0b7e8 -beq- cr1, want_11_id # 0b7ec -cmpwi r4, 0x0c # 0b7f0 -cmpwi cr1, r4, 0x0d # 0b7f4 -beq- want_notif_id # 0b7f8 -beq- cr1, want_13_id # 0b7fc -b syscall_return_paramErr # 0b800 - -want_task_id: -lwz r17, 0x0064( r8) # 0b804 -lwz r9, 0x0060( r8) # 0b808 -rlwinm. r17, r17, 0, 15, 15 # 0b80c -beq- nk_get_next_id_owned_0x94 # 0b810 -lwz r9, -0x041c( r1) # 0b814 -lwz r9, 0x0000( r9) # 0b818 - -nk_get_next_id_owned_0x94: -cmpw r9, r3 # 0b81c -bne+ try_another_id # 0b820 -b syscall_return_noErr # 0b824 - -want_timer_id: -lwz r9, 0x0010( r8) # 0b828 -cmpw r9, r3 # 0b82c -bne+ try_another_id # 0b830 -b syscall_return_noErr # 0b834 - -want_queue_id: -lwz r9, 0x0020( r8) # 0b838 -cmpw r9, r3 # 0b83c -bne+ try_another_id # 0b840 -b syscall_return_noErr # 0b844 - -want_sema_id: -lwz r9, 0x0018( r8) # 0b848 -cmpw r9, r3 # 0b84c -bne+ try_another_id # 0b850 -b syscall_return_noErr # 0b854 - -want_critrgn_id: -lwz r9, 0x0010( r8) # 0b858 -cmpw r9, r3 # 0b85c -bne+ try_another_id # 0b860 -b syscall_return_noErr # 0b864 - -want_addrspc_id: -lwz r9, 0x0074( r8) # 0b868 -cmpw r9, r3 # 0b86c -bne+ try_another_id # 0b870 -b syscall_return_noErr # 0b874 - -want_evt_id: -lwz r9, 0x0014( r8) # 0b878 -cmpw r9, r3 # 0b87c -bne+ try_another_id # 0b880 -b syscall_return_noErr # 0b884 - -want_11_id: -lwz r9, 0x000c( r8) # 0b888 -cmpw r9, r3 # 0b88c -bne+ try_another_id # 0b890 -b syscall_return_noErr # 0b894 - -want_notif_id: -lwz r9, 0x0008( r8) # 0b898 -cmpw r9, r3 # 0b89c -bne+ try_another_id # 0b8a0 -b syscall_return_noErr # 0b8a4 - -want_13_id: -lwz r9, 0x0008( r8) # 0b8a8 -cmpw r9, r3 # 0b8ac -bne+ try_another_id # 0b8b0 -b syscall_return_noErr # 0b8b4 - - - -/*********************************************************** - - major_0x0b8b8 - -************************************************************ - -syscall 38 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0b8b8 - -major_0x0b8b8: /* < outside referer */ -mr r8, r3 # 0b8b8 - -# r8 = id -bl id_kind # 0b8bc -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x01 # 0b8c0 -bne+ syscall_return_kMPInvalidIDErr # 0b8c4 -mr r31, r8 # 0b8c8 - -major_0x0b8b8_0x14: -mr r8, r4 # 0b8cc -li r9, 0x02 # 0b8d0 -bl major_0x153e0 # 0b8d4 -cmpwi r8, 0x00 # 0b8d8 -beq+ syscall_return_kMPInvalidIDErr # 0b8dc -mr r4, r8 # 0b8e0 - -# r8 = id -bl id_kind # 0b8e4 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -lwz r17, 0x0064( r8) # 0b8e8 -lwz r16, 0x0060( r8) # 0b8ec -rlwinm. r17, r17, 0, 15, 15 # 0b8f0 -beq- major_0x0b8b8_0x48 # 0b8f4 -lwz r16, -0x041c( r1) # 0b8f8 -lwz r16, 0x0000(r16) # 0b8fc - -major_0x0b8b8_0x48: -cmpw r16, r3 # 0b900 -beq+ syscall_return_noErr # 0b904 -b major_0x0b8b8_0x14 # 0b908 - - - -/*********************************************************** - - major_0x0b90c - -************************************************************ - -syscall 62 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0b90c: /* < outside referer */ -mr. r8, r3 # 0b90c -bne- major_0x0b90c_0x18 # 0b910 -mfspr r15, 272/*sprg0*/ # 0b914 -lwz r31, -0x0338(r15) # 0b918 -lwz r3, 0x0000(r31) # 0b91c -b major_0x0b90c_0x24 # 0b920 - -major_0x0b90c_0x18: -# r8 = id -bl id_kind # 0b924 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0a # 0b928 -bne+ syscall_return_kMPInvalidIDErr # 0b92c - -major_0x0b90c_0x24: -mr r8, r4 # 0b930 -li r9, 0x07 # 0b934 -bl major_0x153e0 # 0b938 -cmpwi r8, 0x00 # 0b93c -beq+ syscall_return_kMPInvalidIDErr # 0b940 -mr r4, r8 # 0b944 - -# r8 = id -bl id_kind # 0b948 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -lwz r16, 0x0008( r8) # 0b94c -lwz r17, 0x0000(r16) # 0b950 -cmpw r17, r3 # 0b954 -bne+ major_0x0b90c_0x24 # 0b958 -b syscall_return_noErr # 0b95c - - - -/*********************************************************** - - major_0x0b960 - -************************************************************ - -syscall 42 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 5 # 0b960 - -major_0x0b960: /* < outside referer */ -mr. r8, r3 # 0b960 -bne- major_0x0b960_0x14 # 0b964 -mfspr r15, 272/*sprg0*/ # 0b968 -lwz r30, -0x0338(r15) # 0b96c -b major_0x0b960_0x24 # 0b970 - -major_0x0b960_0x14: -# r8 = id -bl id_kind # 0b974 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0a # 0b978 -mr r30, r8 # 0b97c -bne+ syscall_return_kMPInvalidIDErr # 0b980 - -major_0x0b960_0x24: -li r8, 960 # 0b984 - -# r1 = kdp -# r8 = size -bl pool_malloc # 0b988 -# r8 = ptr - -mr. r31, r8 # 0b98c -beq+ major_0x0af60_0x20 # 0b990 -mr r16, r8 # 0b994 -mr r17, r9 # 0b998 -addi r8, r1, -0xb50 # 0b99c - -# r8 = lock -bl lock # 0b9a0 -mr r8, r16 # 0b9a4 -mr r9, r17 # 0b9a8 -li r9, 0x07 # 0b9ac - -# r1 = kdp -# r9 = kind -bl alloc_id # 0b9b0 -cmpwi r8, 0x00 # 0b9b4 -bne+ major_0x0b960_0x68 # 0b9b8 -mr r8, r31 # 0b9bc -bl looks_like_poolextend # 0b9c0 -b major_0x0af60 # 0b9c4 - -major_0x0b960_0x68: -stw r8, 0x0000(r31) # 0b9c8 -lis r16, 0x4350 # 0b9cc -ori r16, r16, 0x5520 # 0b9d0 -stw r8, 0x0134( r6) # 0b9d4 -stw r16, 0x0004(r31) # 0b9d8 -lwz r17, 0x0020(r30) # 0b9dc -addi r17, r17, 0x01 # 0b9e0 -stw r17, 0x0020(r30) # 0b9e4 -addi r16, r31, 0x08 # 0b9e8 -stw r30, 0x0000(r16) # 0b9ec -stw r30, 0x0008(r16) # 0b9f0 -lwz r17, 0x000c(r30) # 0b9f4 -stw r17, 0x000c(r16) # 0b9f8 -stw r16, 0x0008(r17) # 0b9fc -stw r16, 0x000c(r30) # 0ba00 -lis r8, 0x00 # 0ba04 -ori r8, r8, 0x0b # 0ba08 -lis r8, 0x00 # 0ba0c -ori r8, r8, 0x06 # 0ba10 -stw r8, 0x0018(r31) # 0ba14 -addi r30, r31, 0x20 # 0ba18 -addi r8, r1, -0xb90 # 0ba1c -stw r8, 0x0308(r30) # 0ba20 -stw r1, 0x031c(r30) # 0ba24 -li r8, 0x00 # 0ba28 -stw r8, 0x0318(r30) # 0ba2c -li r8, -0x01 # 0ba30 -sth r4, 0x020a(r30) # 0ba34 -stb r8, 0x0209(r30) # 0ba38 -lwz r8, -0x0020( r1) # 0ba3c -stw r8, 0x0300(r30) # 0ba40 -lis r8, 0x7469 # 0ba44 -ori r8, r8, 0x6d65 # 0ba48 -stw r8, 0x0004(r30) # 0ba4c -li r8, 0x04 # 0ba50 -stb r8, 0x0014(r30) # 0ba54 -li r8, 0x01 # 0ba58 -stb r8, 0x0016(r30) # 0ba5c -li r8, 0x00 # 0ba60 -stb r8, 0x0017(r30) # 0ba64 -lis r8, 0x7fff # 0ba68 -ori r8, r8, 0xffff # 0ba6c -stw r8, 0x0038(r30) # 0ba70 -oris r8, r8, 0xffff # 0ba74 -stw r8, 0x003c(r30) # 0ba78 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0ba7c - - - -/*********************************************************** - - major_0x0ba80 - -************************************************************ - -syscall 43 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 7 # 0ba80 - -major_0x0ba80: /* < outside referer */ -mr r16, r8 # 0ba80 -mr r17, r9 # 0ba84 -addi r8, r1, -0xb50 # 0ba88 - -# r8 = lock -bl lock # 0ba8c -mr r8, r16 # 0ba90 -mr r9, r17 # 0ba94 -mr r8, r3 # 0ba98 - -# r8 = id -bl id_kind # 0ba9c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x07 # 0baa0 -mr r31, r8 # 0baa4 -bne+ major_0x0b07c_0x28 # 0baa8 -lwz r16, 0x0018(r31) # 0baac -lis r17, 0x00 # 0bab0 -ori r17, r17, 0x09 # 0bab4 -and. r17, r17, r16 # 0bab8 -bne+ major_0x0af60_0xa4 # 0babc -mfspr r15, 272/*sprg0*/ # 0bac0 -li r16, 0x04 # 0bac4 -stw r16, -0x0238(r15) # 0bac8 -lhz r16, 0x022a(r31) # 0bacc -stw r16, -0x0234(r15) # 0bad0 -li r8, 0x02 # 0bad4 - -# r7 = flags -# r8 = usually 2? -bl SIGP # 0bad8 -lwz r17, 0x0008(r31) # 0badc -addi r16, r31, 0x08 # 0bae0 -lwz r18, 0x0020(r17) # 0bae4 -addi r18, r18, -0x01 # 0bae8 -stw r18, 0x0020(r17) # 0baec -lwz r17, 0x0008(r16) # 0baf0 -lwz r18, 0x000c(r16) # 0baf4 -stw r17, 0x0008(r18) # 0baf8 -stw r18, 0x000c(r17) # 0bafc -li r17, 0x00 # 0bb00 -stw r17, 0x0008(r16) # 0bb04 -stw r17, 0x000c(r16) # 0bb08 -mr r8, r31 # 0bb0c -bl looks_like_poolextend # 0bb10 -mr r8, r3 # 0bb14 -bl major_0x15300 # 0bb18 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0bb1c - - - -/*********************************************************** - - major_0x0bb20 - -************************************************************ - -syscall 44 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 5 # 0bb20 - -major_0x0bb20: /* < outside referer */ -mr r16, r8 # 0bb20 -mr r17, r9 # 0bb24 -addi r8, r1, -0xb50 # 0bb28 - -# r8 = lock -bl lock # 0bb2c -mr r8, r16 # 0bb30 -mr r9, r17 # 0bb34 -mr r8, r3 # 0bb38 - -# r8 = id -bl id_kind # 0bb3c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x07 # 0bb40 -bne+ major_0x0b07c_0x28 # 0bb44 -mr r30, r8 # 0bb48 -lwz r16, 0x0018(r30) # 0bb4c -rlwinm. r8, r16, 0, 28, 28 # 0bb50 - -# r1 = kdp -bne+ syscall_return_assert_lock_unheld # 0bb54 -mfspr r15, 272/*sprg0*/ # 0bb58 -li r16, 0x04 # 0bb5c -stw r16, -0x0238(r15) # 0bb60 -lhz r16, 0x022a(r30) # 0bb64 -stw r16, -0x0234(r15) # 0bb68 -bl 1f # 0bb6c -.ascii "SIGP kResetProcessor^n" # 0bb70 -.short 0 # 0bb86 -.align 2 # 0bb88 -1: mflr r8 # 0bb88 -bl print_string # 0bb8c -li r8, 0x02 # 0bb90 - -# r7 = flags -# r8 = usually 2? -bl SIGP # 0bb94 -cmpwi r8, -0x7264 # 0bb98 -cmpwi cr1, r8, 0x00 # 0bb9c -beq+ major_0x0af60_0xa4 # 0bba0 -bne+ cr1, major_0x0af60_0xa4 # 0bba4 -bl 1f # 0bba8 -.ascii "Creating idle task^n" # 0bbac -.short 0 # 0bbc0 -.align 2 # 0bbc2 -1: mflr r8 # 0bbc4 -bl print_string # 0bbc8 -mr r31, r7 # 0bbcc -rlwinm r7, r7, 0, 13, 11 # 0bbd0 -lwz r8, -0x041c( r1) # 0bbd4 -bl mktask # 0bbd8 -mr r7, r31 # 0bbdc -mr. r31, r8 # 0bbe0 -beq+ major_0x0af60 # 0bbe4 -stw r31, 0x001c(r30) # 0bbe8 -lis r8, 0x6964 # 0bbec -ori r8, r8, 0x6c65 # 0bbf0 -stw r8, 0x0074(r31) # 0bbf4 -lis r8, 0x08 # 0bbf8 -ori r8, r8, 0x40 # 0bbfc -stw r8, 0x0064(r31) # 0bc00 -li r8, 0x01 # 0bc04 -stw r8, 0x001c(r31) # 0bc08 -li r8, 0x03 # 0bc0c -stb r8, 0x0019(r31) # 0bc10 -lhz r8, 0x022a(r30) # 0bc14 -sth r8, 0x001a(r31) # 0bc18 -lwz r8, 0x0100(r31) # 0bc1c -oris r8, r8, 0x40 # 0bc20 -stw r8, 0x0100(r31) # 0bc24 -lwz r8, 0x064c( r1) # 0bc28 - - - -/*********************************************************** - - major_0x0bc2c - -************************************************************ - -Xrefs: -major_0x0bb20 - -***********************************************************/ - -lis r26, major_0x14bcc_0x338@h # 0bc2c -ori r26, r26, major_0x14bcc_0x338@l # 0bc30 -add r8, r8, r26 # 0bc34 -stw r8, 0x01fc(r31) # 0bc38 -lwz r8, 0x01a4(r31) # 0bc3c -andi. r8, r8, 0xbfcf # 0bc40 -stw r8, 0x01a4(r31) # 0bc44 -sync # 0bc48 -lwz r16, -0x0b50( r1) # 0bc4c -cmpwi cr1, r16, 0x00 # 0bc50 -li r16, 0x00 # 0bc54 -bne+ cr1, major_0x0bc2c_0x38 # 0bc58 -mflr r16 # 0bc5c -bl panic # 0bc60 - -major_0x0bc2c_0x38: -stw r16, -0x0b50( r1) # 0bc64 -mfspr r15, 272/*sprg0*/ # 0bc68 -li r16, 0x08 # 0bc6c -stw r16, -0x0238(r15) # 0bc70 -lhz r16, 0x022a(r30) # 0bc74 -stw r16, -0x0234(r15) # 0bc78 - -major_0x0bc2c_0x50: -bl 1f # 0bc7c -.ascii "SIGP kSynchClock^n" # 0bc80 -.short 0 # 0bc92 -.align 2 # 0bc94 -1: mflr r8 # 0bc94 -bl print_string # 0bc98 -li r8, 0x02 # 0bc9c - -# r7 = flags -# r8 = usually 2? -bl SIGP # 0bca0 -cmpwi r8, -0x7264 # 0bca4 -cmpwi cr1, r8, 0x00 # 0bca8 -beq+ major_0x0bc2c_0x50 # 0bcac -bne- cr1, panic_wrapper_0x0c5d4 # 0bcb0 -mfspr r15, 272/*sprg0*/ # 0bcb4 -li r16, 0x01 # 0bcb8 -stw r16, -0x0238(r15) # 0bcbc -lhz r16, 0x022a(r30) # 0bcc0 -stw r16, -0x0234(r15) # 0bcc4 -lwz r16, 0x064c( r1) # 0bcc8 - - - -/*********************************************************** - - major_0x0bccc - -************************************************************ - -Xrefs: -major_0x0bc2c - -***********************************************************/ - -lis r17, major_0x14bcc@h # 0bccc -ori r17, r17, major_0x14bcc@l # 0bcd0 -add r16, r16, r17 # 0bcd4 -stw r16, -0x0230(r15) # 0bcd8 -stw r30, -0x022c(r15) # 0bcdc - -major_0x0bccc_0x14: -bl 1f # 0bce0 -.ascii "SIGP kStartProcessor^n" # 0bce4 -.short 0 # 0bcfa -.align 2 # 0bcfc -1: mflr r8 # 0bcfc -bl print_string # 0bd00 -li r8, 0x04 # 0bd04 - -# r7 = flags -# r8 = usually 2? -bl SIGP # 0bd08 -cmpwi r8, -0x7264 # 0bd0c -cmpwi cr1, r8, 0x00 # 0bd10 -beq+ major_0x0bccc_0x14 # 0bd14 -bne- cr1, panic_wrapper_0x0c5d4 # 0bd18 -bl 1f # 0bd1c -.ascii "Processor scheduled^n" # 0bd20 -.short 0 # 0bd35 -.align 2 # 0bd37 -1: mflr r8 # 0bd38 -bl print_string # 0bd3c -b syscall_return_noErr # 0bd40 - - - -/*********************************************************** - - NKStopScheduling - -************************************************************ - -syscall 45 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -NKStopScheduling: /* < outside referer */ -mr r16, r8 # 0bd44 -mr r17, r9 # 0bd48 -addi r8, r1, -0xb50 # 0bd4c - -# r8 = lock -bl lock # 0bd50 -mr r8, r16 # 0bd54 -mr r9, r17 # 0bd58 -mr r8, r3 # 0bd5c - -# r8 = id -bl id_kind # 0bd60 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x07 # 0bd64 -bne+ major_0x0b07c_0x28 # 0bd68 -mr r30, r8 # 0bd6c -lwz r16, 0x0018(r30) # 0bd70 -rlwinm. r8, r16, 0, 28, 28 # 0bd74 - -# r1 = kdp -beq+ syscall_return_assert_lock_unheld # 0bd78 -lwz r31, 0x001c(r30) # 0bd7c -clrlwi. r8, r16, 0x1f # 0bd80 -bne+ major_0x0af60_0xa4 # 0bd84 -lbz r17, 0x0019(r31) # 0bd88 -cmpwi r17, 0x00 # 0bd8c -beq- NKStopScheduling_0x94 # 0bd90 -lwz r17, 0x0064(r31) # 0bd94 -oris r17, r17, 0x80 # 0bd98 -stw r17, 0x0064(r31) # 0bd9c -mr r8, r31 # 0bda0 -bl major_0x13e4c # 0bda4 -li r17, 0x00 # 0bda8 -stb r17, 0x0019(r31) # 0bdac -mr r8, r31 # 0bdb0 -bl major_0x13ed8 # 0bdb4 -bl major_0x149d4_0x8 # 0bdb8 -mr r8, r31 # 0bdbc -bl major_0x14af8_0xa0 # 0bdc0 -lwz r8, 0x064c( r1) # 0bdc4 -lis r9, major_0x14bcc_0x438@h # 0bdc8 -ori r9, r9, major_0x14bcc_0x438@l # 0bdcc -add r8, r8, r9 # 0bdd0 -stw r8, 0x01fc(r31) # 0bdd4 - -NKStopScheduling_0x94: -sync # 0bdd8 -lwz r16, -0x0b50( r1) # 0bddc -cmpwi cr1, r16, 0x00 # 0bde0 -li r16, 0x00 # 0bde4 -bne+ cr1, NKStopScheduling_0xb0 # 0bde8 -mflr r16 # 0bdec -bl panic # 0bdf0 - -NKStopScheduling_0xb0: -stw r16, -0x0b50( r1) # 0bdf4 -b major_0x0b4a4_0x78 # 0bdf8 - - - -/*********************************************************** - - NKCpuPlugin - -************************************************************ - -syscall 46 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -NKCpuPlugin: /* < outside referer */ -li r8, 0x00 # 0bdfc - -# r7 = flags -# r8 = usually 2? -bl SIGP # 0be00 -mr r3, r8 # 0be04 -mr r4, r9 # 0be08 -b syscall_return # 0be0c - - - -/*********************************************************** - - major_0x0be10 - -************************************************************ - -syscall 47 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 4 # 0be10 - -major_0x0be10: /* < outside referer */ -rlwinm. r8, r7, 0, 12, 12 # 0be10 -lwz r15, 0x00d8( r6) # 0be14 -beq+ syscall_return_kMPInsufficientResourcesErr # 0be18 -cmpwi r15, 0x00 # 0be1c -mr r16, r2 # 0be20 -beq+ syscall_return_kMPInsufficientResourcesErr # 0be24 -mr r17, r3 # 0be28 -mr r18, r4 # 0be2c -mr r19, r5 # 0be30 -bl major_0x13c90 # 0be34 -mr r2, r16 # 0be38 -mr r3, r17 # 0be3c -mr r4, r18 # 0be40 -mr r5, r19 # 0be44 -b syscall_return_noErr # 0be48 - - - -/*********************************************************** - - _bad_syscall - -************************************************************ - -syscall 48 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -_bad_syscall: /* < outside referer */ -b bad_syscall # 0be4c - - - -/*********************************************************** - - NKxprintf - -************************************************************ - -syscall 96 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 4 # 0be50 - -NKxprintf: /* < outside referer */ -rlwinm. r9, r11, 0, 27, 27 # 0be50 -mr r8, r3 # 0be54 -beq- NKxprintf_0x1c # 0be58 -li r9, 0x00 # 0be5c -bl major_0x12248_0x38c # 0be60 -beq- NKxprintf_0x24 # 0be64 -rlwimi r8, r17, 0, 0, 19 # 0be68 - -NKxprintf_0x1c: -bl print_string # 0be6c -b syscall_return_noErr # 0be70 - -NKxprintf_0x24: -bl 1f # 0be74 -.ascii "NKxprintf (V->P translation error)^n" # 0be78 -.short 0 # 0be9c -.align 2 # 0be9e -1: mflr r8 # 0bea0 -bl print_string # 0bea4 -b syscall_return_kMPInsufficientResourcesErr # 0bea8 - - - -/*********************************************************** - - major_0x0beac - -************************************************************ - -syscall 97 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0beac: /* < outside referer */ -mr r8, r3 # 0beac -cmpwi r4, 0x01 # 0beb0 -cmpwi cr1, r4, 0x02 # 0beb4 -beq- major_0x0beac_0x24 # 0beb8 -beq- cr1, major_0x0beac_0x1c # 0bebc -bl print_word_hex # 0bec0 -b syscall_return # 0bec4 - -major_0x0beac_0x1c: -bl print_short_hex # 0bec8 -b syscall_return # 0becc - -major_0x0beac_0x24: -bl print_twodig_decimal # 0bed0 -b syscall_return # 0bed4 - - - -/*********************************************************** - - major_0x0bed8 - -************************************************************ - -syscall 124 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0bed8 - -major_0x0bed8: /* < outside referer */ -mr r8, r3 # 0bed8 -bl print_decimal # 0bedc -b syscall_return # 0bee0 - - - -/*********************************************************** - - NKSetBlueProcessID - -************************************************************ - -syscall 99 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -NKSetBlueProcessID: /* < outside referer */ -mfspr r16, 272/*sprg0*/ # 0bee4 -rlwinm. r8, r7, 0, 10, 10 # 0bee8 -lwz r31, -0x0008(r16) # 0beec -beq+ syscall_return_kMPInsufficientResourcesErr # 0bef0 -mr r8, r3 # 0bef4 - -# r8 = id -bl id_kind # 0bef8 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x01 # 0befc -bne+ syscall_return_kMPInvalidIDErr # 0bf00 -stw r3, 0x0060(r31) # 0bf04 -stw r4, 0x00ec(r31) # 0bf08 -b syscall_return_noErr # 0bf0c - - - -/*********************************************************** - - NKRegisterThermalHandler - -************************************************************ - -syscall 104 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 4 # 0bf10 - -NKRegisterThermalHandler: /* < outside referer */ -mr r16, r8 # 0bf10 -mr r17, r9 # 0bf14 -addi r8, r1, -0xb50 # 0bf18 - -# r8 = lock -bl lock # 0bf1c -mr r8, r16 # 0bf20 -mr r9, r17 # 0bf24 -mr. r8, r3 # 0bf28 -beq- NKRegisterThermalHandler_0x2c # 0bf2c - -# r8 = id -bl id_kind # 0bf30 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0c # 0bf34 -bne+ major_0x0b07c_0x28 # 0bf38 - -NKRegisterThermalHandler_0x2c: -stw r3, -0x0418( r1) # 0bf3c - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0bf40 - - - -/*********************************************************** - - NKRegisterPMFHandler - -************************************************************ - -syscall 105 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -NKRegisterPMFHandler: /* < outside referer */ -mr r16, r8 # 0bf44 -mr r17, r9 # 0bf48 -addi r8, r1, -0xb50 # 0bf4c - -# r8 = lock -bl lock # 0bf50 -mr r8, r16 # 0bf54 -mr r9, r17 # 0bf58 -mr. r8, r3 # 0bf5c -beq- NKRegisterPMFHandler_0x2c # 0bf60 - -# r8 = id -bl id_kind # 0bf64 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0c # 0bf68 -bne+ major_0x0b07c_0x28 # 0bf6c - -NKRegisterPMFHandler_0x2c: -stw r3, -0x0414( r1) # 0bf70 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0bf74 - - - -/*********************************************************** - - NKMarkPMFTask - -************************************************************ - -syscall 106 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0bf78 - -NKMarkPMFTask: /* < outside referer */ -mr r16, r8 # 0bf78 -mr r17, r9 # 0bf7c -addi r8, r1, -0xb50 # 0bf80 - -# r8 = lock -bl lock # 0bf84 -mr r8, r16 # 0bf88 -mr r9, r17 # 0bf8c -mfspr r30, 272/*sprg0*/ # 0bf90 -mr. r8, r3 # 0bf94 -lwz r31, -0x0008(r30) # 0bf98 -beq- NKMarkPMFTask_0x38 # 0bf9c - -# r8 = id -bl id_kind # 0bfa0 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x02 # 0bfa4 -mr r31, r8 # 0bfa8 -bne+ major_0x0b07c_0x28 # 0bfac - -NKMarkPMFTask_0x38: -lwz r17, 0x0064(r31) # 0bfb0 -rlwimi r17, r4, 10, 21, 21 # 0bfb4 -stw r17, 0x0064(r31) # 0bfb8 -mr r8, r31 # 0bfbc -bl major_0x14af8_0xa0 # 0bfc0 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0bfc4 - - - -/*********************************************************** - - major_0x0bfc8 - -************************************************************ - -syscall 107 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0bfc8 - -major_0x0bfc8: /* < outside referer */ -cmpwi r3, 0x05 # 0bfc8 -cmpwi cr1, r3, 0x02 # 0bfcc -beq- major_0x0bfc8_0x58 # 0bfd0 -beq- cr1, major_0x0bfc8_0x94 # 0bfd4 -cmpwi r3, 0x03 # 0bfd8 -cmpwi cr1, r3, 0x04 # 0bfdc -beq- major_0x0bfc8_0x80 # 0bfe0 -beq- cr1, major_0x0bfc8_0x6c # 0bfe4 -cmpwi r3, 0x07 # 0bfe8 -cmpwi cr1, r3, 0x06 # 0bfec -beq- major_0x0bfc8_0x44 # 0bff0 -bne+ cr1, syscall_return_paramErr # 0bff4 -lwz r4, 0x0fd0( r1) # 0bff8 -lhz r16, 0x0fd6( r1) # 0bffc -lhz r5, 0x0fd4( r1) # 0c000 -stw r16, 0x0134( r6) # 0c004 -b syscall_return_noErr # 0c008 - -major_0x0bfc8_0x44: -lwz r4, 0x0fc8( r1) # 0c00c -lhz r16, 0x0fce( r1) # 0c010 -lhz r5, 0x0fcc( r1) # 0c014 -stw r16, 0x0134( r6) # 0c018 -b syscall_return_noErr # 0c01c - -major_0x0bfc8_0x58: -lwz r4, 0x0fd8( r1) # 0c020 -lhz r16, 0x0fde( r1) # 0c024 -lhz r5, 0x0fdc( r1) # 0c028 -stw r16, 0x0134( r6) # 0c02c -b syscall_return_noErr # 0c030 - -major_0x0bfc8_0x6c: -lwz r4, 0x0fe0( r1) # 0c034 -lhz r16, 0x0fe6( r1) # 0c038 -lhz r5, 0x0fe4( r1) # 0c03c -stw r16, 0x0134( r6) # 0c040 -b syscall_return_noErr # 0c044 - -major_0x0bfc8_0x80: -lwz r4, 0x0fe8( r1) # 0c048 -lhz r16, 0x0fee( r1) # 0c04c -lhz r5, 0x0fec( r1) # 0c050 -stw r16, 0x0134( r6) # 0c054 -b syscall_return_noErr # 0c058 - -major_0x0bfc8_0x94: -lwz r4, 0x0ff0( r1) # 0c05c -lhz r16, 0x0ff6( r1) # 0c060 -lhz r5, 0x0ff4( r1) # 0c064 -stw r16, 0x0134( r6) # 0c068 -b syscall_return_noErr # 0c06c - - - -/*********************************************************** - - major_0x0c070 - -************************************************************ - -syscall 108 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 4 # 0c070 - -major_0x0c070: /* < outside referer */ -cmplwi r3, 0x02 # 0c070 -bge+ syscall_return_paramErr # 0c074 -mulli r17, r3, 0x10 # 0c078 -addi r18, r1, 0xf80 # 0c07c -add r18, r17, r18 # 0c080 -lwz r16, 0x0134( r6) # 0c084 -stw r4, 0x0000(r18) # 0c088 -stw r5, 0x0004(r18) # 0c08c -stw r16, 0x0008(r18) # 0c090 -bl 1f # 0c094 -.ascii "Clock rates for step " # 0c098 -.short 0 # 0c0ad -.align 2 # 0c0af -1: mflr r8 # 0c0b0 -bl print_string # 0c0b4 -mr r8, r3 # 0c0b8 -bl print_decimal # 0c0bc -bl 1f # 0c0c0 -.ascii "- Cpu " # 0c0c4 -.short 0 # 0c0ca -.align 2 # 0c0cc -1: mflr r8 # 0c0cc -bl print_string # 0c0d0 -mr r8, r4 # 0c0d4 -bl print_decimal # 0c0d8 -bl 1f # 0c0dc -.ascii "- Bus " # 0c0e0 -.short 0 # 0c0e6 -.align 2 # 0c0e8 -1: mflr r8 # 0c0e8 -bl print_string # 0c0ec -mr r8, r5 # 0c0f0 -bl print_decimal # 0c0f4 -bl 1f # 0c0f8 -.ascii "- Dec " # 0c0fc -.short 0 # 0c102 -.align 2 # 0c104 -1: mflr r8 # 0c104 -bl print_string # 0c108 -mr r8, r16 # 0c10c -bl print_decimal # 0c110 -bl 1f # 0c114 -.ascii "Hz^n" # 0c118 -.short 0 # 0c11c -.align 2 # 0c11e -1: mflr r8 # 0c120 -bl print_string # 0c124 -b syscall_return_noErr # 0c128 - - - -/*********************************************************** - - NKSetClockStep - -************************************************************ - -syscall 131 -Debug string matches MPLibrary! -0xf7e(r1) = clock_step (half-word) - -************************************************************ - -Xrefs: -syscall - -************************************************************ - -> r3 = new_clock_step # (half-word) - -***********************************************************/ - -NKSetClockStep: /* < outside referer */ -mfspr r9, 272/*sprg0*/ # 0c12c -lwz r8, -0x0338( r9) # 0c130 -lwz r9, 0x0024( r8) # 0c134 -cmpwi r9, 0x01 # 0c138 -bgt+ syscall_return_kMPInsufficientResourcesErr # 0c13c -lhz r19, 0x0f7e( r1) # 0c140 -bl 1f # 0c144 -.ascii "NKSetClockStep - current " # 0c148 -.short 0 # 0c161 -.align 2 # 0c163 -1: mflr r8 # 0c164 -bl print_string # 0c168 -mr r8, r19 # 0c16c -bl print_decimal # 0c170 -bl 1f # 0c174 -.ascii " new " # 0c178 -.short 0 # 0c17d -.align 2 # 0c17f -1: mflr r8 # 0c180 -bl print_string # 0c184 -mr r8, r3 # 0c188 -bl print_decimal # 0c18c -bl 1f # 0c190 -.ascii "^n" # 0c194 -.short 0 # 0c196 -.align 2 # 0c198 -1: mflr r8 # 0c198 -bl print_string # 0c19c -cmplwi r3, 0x02 # 0c1a0 -cmpw cr1, r3, r19 # 0c1a4 -bge+ syscall_return_paramErr # 0c1a8 -beq+ cr1, syscall_return_kMPInsufficientResourcesErr -mulli r17, r3, 0x10 # 0c1b0 -addi r18, r1, 0xf80 # 0c1b4 -sth r17, 0x0f7e( r1) # 0c1b8 -add r18, r17, r18 # 0c1bc -lwz r16, 0x0000(r18) # 0c1c0 -lwz r17, 0x0004(r18) # 0c1c4 -stw r16, 0x0f24( r1) # 0c1c8 -stw r17, 0x0f28( r1) # 0c1cc -lwz r16, 0x0f88( r1) # 0c1d0 -stw r16, 0x0f2c( r1) # 0c1d4 -mr r16, r8 # 0c1d8 -mr r17, r9 # 0c1dc -addi r8, r1, -0xb50 # 0c1e0 - -# r8 = lock -bl lock # 0c1e4 -mr r8, r16 # 0c1e8 -mr r9, r17 # 0c1ec -lwz r16, 0x0008(r18) # 0c1f0 -stw r16, -0x0438( r1) # 0c1f4 -bgt- cr1, NKSetClockStep_0xec # 0c1f8 -lwz r31, -0x0434( r1) # 0c1fc -lbz r18, 0x0017(r31) # 0c200 -cmpwi r18, 0x00 # 0c204 - -# r1 = kdp -beq+ syscall_return_assert_lock_unheld # 0c208 -mr r8, r31 # 0c20c -bl major_0x130f0_0x5d8 # 0c210 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0c214 - -NKSetClockStep_0xec: -lwz r31, -0x0434( r1) # 0c218 -lbz r18, 0x0017(r31) # 0c21c -cmpwi r18, 0x01 # 0c220 - -# r1 = kdp -beq+ syscall_return_assert_lock_unheld # 0c224 -bl bizarre # 0c228 -stw r8, 0x0038(r31) # 0c22c -stw r9, 0x003c(r31) # 0c230 -mr r8, r31 # 0c234 -bl major_0x130f0_0x524 # 0c238 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0c23c - - - -/*********************************************************** - - NKSetClockDriftCorrection - -************************************************************ - -syscall 132 -There's a one-billion constant in here, for fractional expression. --0x36c(r1) = tb_drift_numerator --0x368(r1) = tb_drift_denominator - -************************************************************ - -Xrefs: -syscall - -************************************************************ - -> r3 = to - -***********************************************************/ - -.align 6 # 0c240 - -NKSetClockDriftCorrection: /* < outside referer */ -lwz r31, -0x0364( r1) # 0c240 -mfspr r9, 272/*sprg0*/ # 0c244 -cmpwi r31, 0x00 # 0c248 -beq+ syscall_return_kMPInsufficientResourcesErr # 0c24c -lwz r8, -0x0338( r9) # 0c250 -lwz r9, 0x0024( r8) # 0c254 -cmpwi r9, 0x01 # 0c258 -bgt+ syscall_return_kMPInsufficientResourcesErr # 0c25c -lwz r19, 0x0fa0( r1) # 0c260 -cmpwi r3, 0x00 # 0c264 -cmpw cr1, r3, r19 # 0c268 -stw r3, 0x0fa0( r1) # 0c26c -beq- NKSetClockDriftCorrection_0x12c # 0c270 -beq+ cr1, syscall_return_noErr # 0c274 -lis r16, 0x3b9a # 0c278 -ori r16, r16, 0xca00 # 0c27c -lwz r17, 0x0f88( r1) # 0c280 -srwi r17, r17, 7 # 0c284 -divw r18, r16, r3 # 0c288 -cmpw r18, r17 # 0c28c -bge- NKSetClockDriftCorrection_0x64 # 0c290 -divw r16, r16, r17 # 0c294 -mr r18, r17 # 0c298 -divw r17, r3, r16 # 0c29c -b NKSetClockDriftCorrection_0x6c # 0c2a0 - -NKSetClockDriftCorrection_0x64: -rlwinm r17, r3, 2, 30, 30 # 0c2a4 -addi r17, r17, 0x01 # 0c2a8 - -NKSetClockDriftCorrection_0x6c: -stw r17, -0x036c( r1) # 0c2ac -stw r18, -0x0368( r1) # 0c2b0 -bl 1f # 0c2b4 -.ascii "TB drift adjusted to " # 0c2b8 -.short 0 # 0c2cd -.align 2 # 0c2cf -1: mflr r8 # 0c2d0 -bl print_string # 0c2d4 -mr r8, r3 # 0c2d8 -bl print_decimal # 0c2dc -bl 1f # 0c2e0 -.ascii " ppb ( " # 0c2e4 -.short 0 # 0c2eb -.align 2 # 0c2ed -1: mflr r8 # 0c2f0 -bl print_string # 0c2f4 -mr r8, r17 # 0c2f8 -bl print_decimal # 0c2fc -bl 1f # 0c300 -.ascii "/ " # 0c304 -.short 0 # 0c306 -.align 2 # 0c308 -1: mflr r8 # 0c308 -bl print_string # 0c30c -mr r8, r18 # 0c310 -bl print_decimal # 0c314 -bl 1f # 0c318 -.ascii ")^n" # 0c31c -.short 0 # 0c31f -.align 2 # 0c321 -1: mflr r8 # 0c324 -bl print_string # 0c328 -mr r16, r8 # 0c32c -mr r17, r9 # 0c330 -addi r8, r1, -0xb50 # 0c334 - -# r8 = lock -bl lock # 0c338 -mr r8, r16 # 0c33c -mr r9, r17 # 0c340 -lwz r31, -0x0364( r1) # 0c344 -lbz r18, 0x0017(r31) # 0c348 -cmpwi r18, 0x01 # 0c34c - -# r1 = kdp -beq+ syscall_return_assert_lock_unheld # 0c350 -bl bizarre # 0c354 -stw r8, 0x0038(r31) # 0c358 -stw r9, 0x003c(r31) # 0c35c -mr r8, r31 # 0c360 -bl major_0x130f0_0x524 # 0c364 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0c368 - -NKSetClockDriftCorrection_0x12c: -mr r16, r8 # 0c36c -mr r17, r9 # 0c370 -addi r8, r1, -0xb50 # 0c374 - -# r8 = lock -bl lock # 0c378 -mr r8, r16 # 0c37c -mr r9, r17 # 0c380 -li r17, 0x00 # 0c384 -stw r17, -0x036c( r1) # 0c388 -stw r17, -0x0368( r1) # 0c38c -lwz r31, -0x0364( r1) # 0c390 -lbz r18, 0x0017(r31) # 0c394 -cmpwi r18, 0x00 # 0c398 - -# r1 = kdp -beq+ syscall_return_assert_lock_unheld # 0c39c -mr r8, r31 # 0c3a0 -bl major_0x130f0_0x5d8 # 0c3a4 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0c3a8 - - - -/*********************************************************** - - major_0x0c3ac - -************************************************************ - -syscall 115 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0c3ac: /* < outside referer */ -mr r16, r8 # 0c3ac -mr r17, r9 # 0c3b0 -addi r8, r1, -0xb50 # 0c3b4 - -# r8 = lock -bl lock # 0c3b8 -mr r8, r16 # 0c3bc -mr r9, r17 # 0c3c0 -mr r8, r3 # 0c3c4 - -# r8 = id -bl id_kind # 0c3c8 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0d # 0c3cc -mr r31, r8 # 0c3d0 -bne+ major_0x0b07c_0x28 # 0c3d4 -lwz r30, 0x000c(r31) # 0c3d8 -cmpwi r30, 0x00 # 0c3dc -bne- major_0x0c3ac_0x94 # 0c3e0 -mr r16, r8 # 0c3e4 -mr r17, r9 # 0c3e8 -addi r8, r1, -0xaf0 # 0c3ec - -# r8 = lock -bl lock # 0c3f0 -mr r8, r16 # 0c3f4 -mr r9, r17 # 0c3f8 -lwz r30, -0x0404( r1) # 0c3fc - -major_0x0c3ac_0x54: -addi r30, r30, 0x01 # 0c400 -andi. r29, r30, 0xfff # 0c404 -bne- major_0x0c3ac_0x64 # 0c408 -lwz r30, -0x1000(r30) # 0c40c - -major_0x0c3ac_0x64: -lbz r16, 0x0000(r30) # 0c410 -cmpwi r16, 0x00 # 0c414 -beq+ major_0x0c3ac_0x54 # 0c418 -stw r30, 0x000c(r31) # 0c41c -sync # 0c420 -lwz r16, -0x0af0( r1) # 0c424 -cmpwi cr1, r16, 0x00 # 0c428 -li r16, 0x00 # 0c42c -bne+ cr1, major_0x0c3ac_0x90 # 0c430 -mflr r16 # 0c434 -bl panic # 0c438 - -major_0x0c3ac_0x90: -stw r16, -0x0af0( r1) # 0c43c - -major_0x0c3ac_0x94: -cmpwi r5, 0x00 # 0c440 -ble+ major_0x0af60_0xa4 # 0c444 -rlwinm. r9, r11, 0, 27, 27 # 0c448 -mr r8, r4 # 0c44c -crmove r30, r2 # 0c450 -beq- major_0x0c3ac_0xd0 # 0c454 -li r9, 0x00 # 0c458 -bl major_0x12248_0x45c # 0c45c -beq+ major_0x0af60_0xa4 # 0c460 -add r8, r4, r5 # 0c464 -li r9, 0x00 # 0c468 -addi r8, r8, -0x01 # 0c46c -mr r30, r8 # 0c470 -bl major_0x12248_0x45c # 0c474 -beq+ major_0x0af60_0xa4 # 0c478 - -major_0x0c3ac_0xd0: -lwz r28, -0x0404( r1) # 0c47c -lwz r29, 0x000c(r31) # 0c480 -li r5, 0x00 # 0c484 -not r27, r4 # 0c488 - -major_0x0c3ac_0xe0: -cmpw r28, r29 # 0c48c -cmplw cr1, r4, r30 # 0c490 -beq- major_0x0c3ac_0x144 # 0c494 -bgt- cr1, major_0x0c3ac_0x144 # 0c498 -rlwinm r16, r4, 0, 0, 19 # 0c49c -mr r8, r4 # 0c4a0 -beq- cr7, major_0x0c3ac_0x11c # 0c4a4 -cmpw r16, r27 # 0c4a8 -mr r17, r26 # 0c4ac -beq- major_0x0c3ac_0x11c # 0c4b0 -mr r27, r16 # 0c4b4 -li r9, 0x00 # 0c4b8 -bl major_0x12248_0x45c # 0c4bc -beq+ major_0x0af60_0xa4 # 0c4c0 -mr r26, r17 # 0c4c4 - -major_0x0c3ac_0x11c: -rlwimi r17, r4, 0, 20, 31 # 0c4c8 -lbz r8, 0x0000(r29) # 0c4cc -addi r29, r29, 0x01 # 0c4d0 -andi. r16, r29, 0xfff # 0c4d4 -bne+ major_0x0c3ac_0x134 # 0c4d8 -lwz r29, -0x1000(r29) # 0c4dc - -major_0x0c3ac_0x134: -stb r8, 0x0000(r17) # 0c4e0 -addi r5, r5, 0x01 # 0c4e4 -addi r4, r4, 0x01 # 0c4e8 -b major_0x0c3ac_0xe0 # 0c4ec - -major_0x0c3ac_0x144: -stw r29, 0x000c(r31) # 0c4f0 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0c4f4 - - - -/*********************************************************** - - NKRegisterExternalHandler - -************************************************************ - -syscall 121 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0c4f8 - -NKRegisterExternalHandler: /* < outside referer */ -mr r16, r8 # 0c4f8 -mr r17, r9 # 0c4fc -addi r8, r1, -0xb50 # 0c500 - -# r8 = lock -bl lock # 0c504 -mr r8, r16 # 0c508 -mr r9, r17 # 0c50c -mr. r8, r3 # 0c510 -beq- NKRegisterExternalHandler_0x2c # 0c514 - -# r8 = id -bl id_kind # 0c518 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0c # 0c51c -bne+ major_0x0b07c_0x28 # 0c520 - -NKRegisterExternalHandler_0x2c: -stw r3, -0x0428( r1) # 0c524 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0c528 - - - -/*********************************************************** - - major_0x0c52c - -************************************************************ - -syscall 133 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0c52c: /* < outside referer */ -mr r16, r8 # 0c52c -mr r17, r9 # 0c530 -addi r8, r1, -0xb50 # 0c534 - -# r8 = lock -bl lock # 0c538 -mr r8, r16 # 0c53c -mr r9, r17 # 0c540 -cmpw r3, r0 # 0c544 -lwz r16, 0x0edc( r1) # 0c548 -li r17, 0x0b # 0c54c -blt- major_0x0c52c_0x34 # 0c550 -and r3, r3, r17 # 0c554 -or r16, r16, r3 # 0c558 -b major_0x0c52c_0x3c # 0c55c - -major_0x0c52c_0x34: -orc r3, r3, r17 # 0c560 -and r16, r16, r3 # 0c564 - -major_0x0c52c_0x3c: -stw r16, 0x0edc( r1) # 0c568 -srawi r16, r4, 16 # 0c56c -extsh r17, r4 # 0c570 -cmpwi r16, -0x01 # 0c574 -cmpwi cr1, r17, -0x01 # 0c578 -beq- major_0x0c52c_0x60 # 0c57c -bgt- major_0x0c52c_0x5c # 0c580 -li r16, 0x00 # 0c584 - -major_0x0c52c_0x5c: -sth r16, -0x0360( r1) # 0c588 - -major_0x0c52c_0x60: -beq- cr1, major_0x0c52c_0x70 # 0c58c -bgt- cr1, major_0x0c52c_0x6c # 0c590 -li r17, 0x00 # 0c594 - -major_0x0c52c_0x6c: -sth r17, -0x035e( r1) # 0c598 - -major_0x0c52c_0x70: -srawi r16, r5, 16 # 0c59c -extsh r17, r5 # 0c5a0 -cmpwi r16, -0x01 # 0c5a4 -cmpwi cr1, r17, -0x01 # 0c5a8 -beq- major_0x0c52c_0x90 # 0c5ac -bgt- major_0x0c52c_0x8c # 0c5b0 -li r16, 0x00 # 0c5b4 - -major_0x0c52c_0x8c: -sth r16, -0x035c( r1) # 0c5b8 - -major_0x0c52c_0x90: -beq- cr1, major_0x0c52c_0xa0 # 0c5bc -bgt- cr1, major_0x0c52c_0x9c # 0c5c0 -li r17, 0x00 # 0c5c4 - -major_0x0c52c_0x9c: -sth r17, -0x035a( r1) # 0c5c8 - -major_0x0c52c_0xa0: -# r1 = kdp -bl screenlog_redraw # 0c5cc - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0c5d0 - - - -/*********************************************************** - - panic_wrapper_0x0c5d4 - -************************************************************ - -Xrefs: -major_0x0bc2c -major_0x0bccc - -***********************************************************/ - -panic_wrapper_0x0c5d4: /* < outside referer */ -b panic # 0c5d4 - - - -/*********************************************************** - - major_0x0c5d8 - -***********************************************************/ - -.align 3 # 0c5d8 - -.long 0x60000000 # 0c5d8 -.long 0x60000000 # 0c5dc - - - -/*********************************************************** - - major_0x0c5e0 - -************************************************************ - -syscall 15 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 5 # 0c5e0 - -major_0x0c5e0: /* < outside referer */ -li r8, 0x34 # 0c5e0 -bl pool_malloc_with_crset # 0c5e4 -mr. r31, r8 # 0c5e8 -beq+ major_0x0af60_0x20 # 0c5ec -lis r16, 0x4d53 # 0c5f0 -stw r8, 0x0008( r8) # 0c5f4 -ori r16, r16, 0x4751 # 0c5f8 -stw r8, 0x000c( r8) # 0c5fc -stw r16, 0x0004( r8) # 0c600 -addi r9, r8, 0x10 # 0c604 -lis r16, 0x4e4f # 0c608 -stw r9, 0x0008( r9) # 0c60c -ori r16, r16, 0x5451 # 0c610 -stw r9, 0x000c( r9) # 0c614 -stw r16, 0x0004( r9) # 0c618 -mr r16, r8 # 0c61c -mr r17, r9 # 0c620 -addi r8, r1, -0xb50 # 0c624 - -# r8 = lock -bl lock # 0c628 -mr r8, r16 # 0c62c -mr r9, r17 # 0c630 -li r9, 0x04 # 0c634 - -# r1 = kdp -# r9 = kind -bl alloc_id # 0c638 -cmpwi r8, 0x00 # 0c63c -bne+ major_0x0c5e0_0x70 # 0c640 -mr r8, r31 # 0c644 -bl looks_like_poolextend # 0c648 -b major_0x0af60 # 0c64c - -major_0x0c5e0_0x70: -mfspr r30, 272/*sprg0*/ # 0c650 -lwz r30, -0x0008(r30) # 0c654 -stw r8, 0x0000(r31) # 0c658 -lwz r17, 0x0060(r30) # 0c65c -stw r17, 0x0020(r31) # 0c660 -mr r4, r8 # 0c664 -li r17, 0x00 # 0c668 -stw r17, 0x0024(r31) # 0c66c -stw r17, 0x0028(r31) # 0c670 -stw r17, 0x002c(r31) # 0c674 -stw r17, 0x0030(r31) # 0c678 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0c67c - - - -/*********************************************************** - - major_0x0c680 - -************************************************************ - -syscall 16 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 7 # 0c680 - -major_0x0c680: /* < outside referer */ -mr r16, r8 # 0c680 -mr r17, r9 # 0c684 -addi r8, r1, -0xb50 # 0c688 - -# r8 = lock -bl lock # 0c68c -mr r8, r16 # 0c690 -mr r9, r17 # 0c694 -mr r8, r3 # 0c698 - -# r8 = id -bl id_kind # 0c69c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x04 # 0c6a0 -mr r31, r8 # 0c6a4 -bne+ major_0x0b07c_0x28 # 0c6a8 - -major_0x0c680_0x2c: -addi r30, r31, 0x10 # 0c6ac -lwz r8, 0x0018(r31) # 0c6b0 -cmpw r8, r30 # 0c6b4 -beq- major_0x0c680_0x60 # 0c6b8 -lwz r16, 0x0008( r8) # 0c6bc -lwz r17, 0x000c( r8) # 0c6c0 -stw r16, 0x0008(r17) # 0c6c4 -stw r17, 0x000c(r16) # 0c6c8 -li r16, 0x00 # 0c6cc -stw r16, 0x0008( r8) # 0c6d0 -stw r16, 0x000c( r8) # 0c6d4 -bl looks_like_poolextend # 0c6d8 -b major_0x0c680_0x2c # 0c6dc - -major_0x0c680_0x60: -lwz r30, 0x0028(r31) # 0c6e0 - -major_0x0c680_0x64: -mr. r8, r30 # 0c6e4 -beq- major_0x0c680_0x78 # 0c6e8 -lwz r30, 0x0008(r30) # 0c6ec -bl looks_like_poolextend # 0c6f0 -b major_0x0c680_0x64 # 0c6f4 - -major_0x0c680_0x78: -mr r8, r3 # 0c6f8 -bl major_0x0dce8 # 0c6fc - -major_0x0c680_0x80: -addi r30, r31, 0x00 # 0c700 -lwz r16, 0x0008(r31) # 0c704 -cmpw r16, r30 # 0c708 -addi r8, r16, -0x08 # 0c70c -beq- major_0x0c680_0xe4 # 0c710 -lwz r17, 0x0088( r8) # 0c714 -li r18, -0x726f # 0c718 -stw r18, 0x011c(r17) # 0c71c -lbz r17, 0x0037( r8) # 0c720 -cmpwi r17, 0x01 # 0c724 -bne- major_0x0c680_0xb4 # 0c728 -addi r8, r8, 0x20 # 0c72c -bl major_0x130f0_0x5d8 # 0c730 - -major_0x0c680_0xb4: -lwz r16, 0x0008(r31) # 0c734 -lwz r17, 0x0008(r16) # 0c738 -lwz r18, 0x000c(r16) # 0c73c -stw r17, 0x0008(r18) # 0c740 -stw r18, 0x000c(r17) # 0c744 -li r17, 0x00 # 0c748 -stw r17, 0x0008(r16) # 0c74c -stw r17, 0x000c(r16) # 0c750 -addi r8, r16, -0x08 # 0c754 -bl major_0x13ed8_0x8 # 0c758 -bl major_0x14af8 # 0c75c -b major_0x0c680_0x80 # 0c760 - -major_0x0c680_0xe4: -mr r8, r31 # 0c764 -bl looks_like_poolextend # 0c768 -mr r8, r3 # 0c76c -bl major_0x15300 # 0c770 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0c774 - - - -/*********************************************************** - - major_0x0c778 - -************************************************************ - -syscall 39 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0c778 - -major_0x0c778: /* < outside referer */ -cmpwi r4, 0x00 # 0c778 -blt+ syscall_return_kMPInsufficientResourcesErr # 0c77c -mr r16, r8 # 0c780 -mr r17, r9 # 0c784 -addi r8, r1, -0xb50 # 0c788 - -# r8 = lock -bl lock # 0c78c -mr r8, r16 # 0c790 -mr r9, r17 # 0c794 -mr r8, r3 # 0c798 - -# r8 = id -bl id_kind # 0c79c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x04 # 0c7a0 -mr r31, r8 # 0c7a4 -bne+ major_0x0b07c_0x28 # 0c7a8 -lwz r29, 0x0024(r31) # 0c7ac -lwz r30, 0x0028(r31) # 0c7b0 -cmpw r29, r4 # 0c7b4 - -# r1 = kdp -beq+ syscall_return_assert_lock_unheld # 0c7b8 -blt- major_0x0c778_0x7c # 0c7bc - -major_0x0c778_0x48: -mr. r8, r30 # 0c7c0 -beq- major_0x0c778_0x70 # 0c7c4 -addi r29, r29, -0x01 # 0c7c8 -lwz r30, 0x0008(r30) # 0c7cc -bl looks_like_poolextend # 0c7d0 -cmpw r29, r4 # 0c7d4 -bgt+ major_0x0c778_0x48 # 0c7d8 -stw r4, 0x0024(r31) # 0c7dc -stw r30, 0x0028(r31) # 0c7e0 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0c7e4 - -major_0x0c778_0x70: -stw r29, 0x0024(r31) # 0c7e8 -stw r30, 0x0028(r31) # 0c7ec -b major_0x0af60_0xa4 # 0c7f0 - -major_0x0c778_0x7c: -li r8, 0x1c # 0c7f4 -bl pool_malloc_with_crset # 0c7f8 -cmpwi r8, 0x00 # 0c7fc -beq+ major_0x0af60 # 0c800 -addi r29, r29, 0x01 # 0c804 -lis r17, 0x6e6f # 0c808 -ori r17, r17, 0x7472 # 0c80c -stw r17, 0x0004( r8) # 0c810 -stw r30, 0x0008( r8) # 0c814 -stw r29, 0x0024(r31) # 0c818 -cmpw r29, r4 # 0c81c -stw r8, 0x0028(r31) # 0c820 -mr r30, r8 # 0c824 -blt+ major_0x0c778_0x7c # 0c828 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0c82c - - - -/*********************************************************** - - major_0x0c830 - -************************************************************ - -syscall 17 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 4 # 0c830 - -major_0x0c830: /* < outside referer */ -mr r16, r8 # 0c830 -mr r17, r9 # 0c834 -addi r8, r1, -0xb50 # 0c838 - -# r8 = lock -bl lock # 0c83c -mr r8, r16 # 0c840 -mr r9, r17 # 0c844 -mr r8, r3 # 0c848 - -# r8 = id -bl id_kind # 0c84c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x04 # 0c850 -mr r31, r8 # 0c854 -bne+ major_0x0b07c_0x28 # 0c858 -lwz r16, 0x0024(r31) # 0c85c -li r8, 0x1c # 0c860 -cmpwi r16, 0x00 # 0c864 -bne- major_0x0c830_0x58 # 0c868 -bl pool_malloc_with_crset # 0c86c -cmpwi r8, 0x00 # 0c870 -beq+ major_0x0af60 # 0c874 -lis r17, 0x6e6f # 0c878 -ori r17, r17, 0x7465 # 0c87c -stw r17, 0x0004( r8) # 0c880 -b major_0x0c830_0x6c # 0c884 - -major_0x0c830_0x58: -lwz r17, 0x0028(r31) # 0c888 -mr. r8, r17 # 0c88c -beq+ major_0x0af60_0xa4 # 0c890 -lwz r17, 0x0008(r17) # 0c894 -stw r17, 0x0028(r31) # 0c898 - -major_0x0c830_0x6c: -lwz r16, 0x0134( r6) # 0c89c -stw r4, 0x0010( r8) # 0c8a0 -stw r5, 0x0014( r8) # 0c8a4 -stw r16, 0x0018( r8) # 0c8a8 -bl major_0x0c8b4 # 0c8ac - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0c8b0 - - - -/*********************************************************** - - major_0x0c8b4 - -************************************************************ - -Xrefs: -major_0x02ccc -major_0x0c830 -major_0x0db04 -major_0x0e604 -major_0x0ea58 - -***********************************************************/ - -major_0x0c8b4: /* < outside referer */ -addi r17, r31, 0x10 # 0c8b4 -stw r17, 0x0000( r8) # 0c8b8 -stw r17, 0x0008( r8) # 0c8bc -lwz r16, 0x000c(r17) # 0c8c0 -stw r16, 0x000c( r8) # 0c8c4 -stw r8, 0x0008(r16) # 0c8c8 -stw r8, 0x000c(r17) # 0c8cc -lwz r18, 0x0030(r31) # 0c8d0 -addi r18, r18, 0x01 # 0c8d4 -stw r18, 0x0030(r31) # 0c8d8 -mflr r27 # 0c8dc -lwz r8, 0x0000(r31) # 0c8e0 -bl major_0x0dce8 # 0c8e4 -lwz r16, 0x0008(r31) # 0c8e8 -cmpw r16, r31 # 0c8ec -addi r8, r16, -0x08 # 0c8f0 -beq- major_0x0c8b4_0xac # 0c8f4 -lwz r17, 0x0088( r8) # 0c8f8 -lwz r18, 0x00fc(r17) # 0c8fc -addi r18, r18, -0x04 # 0c900 -stw r18, 0x00fc(r17) # 0c904 -lbz r17, 0x0037( r8) # 0c908 -cmpwi r17, 0x01 # 0c90c -bne- major_0x0c8b4_0x68 # 0c910 -addi r8, r8, 0x20 # 0c914 -bl major_0x130f0_0x5d8 # 0c918 - -major_0x0c8b4_0x68: -lwz r16, 0x0008(r31) # 0c91c -lwz r17, 0x0008(r16) # 0c920 -lwz r18, 0x000c(r16) # 0c924 -stw r17, 0x0008(r18) # 0c928 -stw r18, 0x000c(r17) # 0c92c -li r17, 0x00 # 0c930 -stw r17, 0x0008(r16) # 0c934 -stw r17, 0x000c(r16) # 0c938 -lwz r18, 0x002c(r31) # 0c93c -addi r18, r18, -0x01 # 0c940 -stw r18, 0x002c(r31) # 0c944 -addi r8, r16, -0x08 # 0c948 -li r17, 0x01 # 0c94c -stb r17, 0x0019( r8) # 0c950 -bl major_0x13ed8_0x8 # 0c954 -bl major_0x149d4_0x8 # 0c958 -bl major_0x14af8 # 0c95c - -major_0x0c8b4_0xac: -mtlr r27 # 0c960 -blr # 0c964 - - - -/*********************************************************** - - major_0x0c968 - -************************************************************ - -syscall 18 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0c968 - -major_0x0c968: /* < outside referer */ -mr r16, r8 # 0c968 -mr r17, r9 # 0c96c -addi r8, r1, -0xb50 # 0c970 - -# r8 = lock -bl lock # 0c974 -mr r8, r16 # 0c978 -mr r9, r17 # 0c97c -mr r8, r3 # 0c980 - -# r8 = id -bl id_kind # 0c984 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x04 # 0c988 -bne+ major_0x0b07c_0x28 # 0c98c -mr r31, r8 # 0c990 -lwz r16, 0x0018(r31) # 0c994 -addi r17, r31, 0x10 # 0c998 -cmpw r16, r17 # 0c99c -beq- major_0x0c968_0x9c # 0c9a0 -lwz r4, 0x0010(r16) # 0c9a4 -lwz r5, 0x0014(r16) # 0c9a8 -lwz r17, 0x0018(r16) # 0c9ac -stw r17, 0x0134( r6) # 0c9b0 -lwz r17, 0x0008(r16) # 0c9b4 -lwz r18, 0x000c(r16) # 0c9b8 -stw r17, 0x0008(r18) # 0c9bc -stw r18, 0x000c(r17) # 0c9c0 -li r17, 0x00 # 0c9c4 -stw r17, 0x0008(r16) # 0c9c8 -stw r17, 0x000c(r16) # 0c9cc -lwz r18, 0x0030(r31) # 0c9d0 -addi r18, r18, -0x01 # 0c9d4 -stw r18, 0x0030(r31) # 0c9d8 -lbz r17, 0x0007(r16) # 0c9dc -mr r8, r16 # 0c9e0 -cmpwi r17, 0x72 # 0c9e4 -beq- major_0x0c968_0x8c # 0c9e8 -bl looks_like_poolextend # 0c9ec - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0c9f0 - -major_0x0c968_0x8c: -lwz r17, 0x0028(r31) # 0c9f4 -stw r16, 0x0028(r31) # 0c9f8 -stw r17, 0x0008(r16) # 0c9fc - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0ca00 - -major_0x0c968_0x9c: -lwz r17, 0x013c( r6) # 0ca04 -mfspr r30, 272/*sprg0*/ # 0ca08 -cmpwi r17, 0x00 # 0ca0c -lwz r19, -0x0008(r30) # 0ca10 -beq+ major_0x0af60_0x54 # 0ca14 -lwz r16, 0x0064(r19) # 0ca18 -rlwinm. r16, r16, 0, 15, 15 # 0ca1c -beq- major_0x0c968_0xc4 # 0ca20 -stw r3, -0x0410( r1) # 0ca24 -b major_0x0b02c # 0ca28 - -major_0x0c968_0xc4: -mr r8, r19 # 0ca2c -bl major_0x13e4c # 0ca30 -lwz r19, -0x0008(r30) # 0ca34 -addi r16, r31, 0x00 # 0ca38 -addi r17, r19, 0x08 # 0ca3c -stw r16, 0x0000(r17) # 0ca40 -stw r16, 0x0008(r17) # 0ca44 -lwz r18, 0x000c(r16) # 0ca48 -stw r18, 0x000c(r17) # 0ca4c -stw r17, 0x0008(r18) # 0ca50 -stw r17, 0x000c(r16) # 0ca54 -lwz r18, 0x002c(r31) # 0ca58 -addi r18, r18, 0x01 # 0ca5c -stw r18, 0x002c(r31) # 0ca60 -lis r16, 0x7fff # 0ca64 -lwz r17, 0x013c( r6) # 0ca68 -ori r16, r16, 0xffff # 0ca6c -addi r30, r19, 0x20 # 0ca70 -cmpw r17, r16 # 0ca74 -li r16, 0x02 # 0ca78 -beq- major_0x0c968_0x154 # 0ca7c -stb r16, 0x0014(r30) # 0ca80 -stw r19, 0x0018(r30) # 0ca84 -mr r8, r17 # 0ca88 - -# r1 = kdp -# r8 = multiple (pos: /250; neg: /250000) -bl scale_timebase # 0ca8c -# r8 = hi -# r9 = lo - -mr r27, r8 # 0ca90 -mr r28, r9 # 0ca94 -bl bizarre # 0ca98 -mfxer r16 # 0ca9c -addc r9, r9, r28 # 0caa0 -adde r8, r8, r27 # 0caa4 -mtxer r16 # 0caa8 -stw r8, 0x0038(r30) # 0caac -stw r9, 0x003c(r30) # 0cab0 -mr r8, r30 # 0cab4 -bl major_0x130f0_0x524 # 0cab8 - -major_0x0c968_0x154: -b major_0x0b0fc # 0cabc - - - -/*********************************************************** - - major_0x0cac0 - -************************************************************ - -syscall 19 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 6 # 0cac0 - -major_0x0cac0: /* < outside referer */ -mr r16, r8 # 0cac0 -mr r17, r9 # 0cac4 -addi r8, r1, -0xb50 # 0cac8 - -# r8 = lock -bl lock # 0cacc -mr r8, r16 # 0cad0 -mr r9, r17 # 0cad4 -mr r8, r3 # 0cad8 - -# r8 = id -bl id_kind # 0cadc -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x04 # 0cae0 -bne+ major_0x0b07c_0x28 # 0cae4 -mr r31, r8 # 0cae8 -lwz r16, 0x0018(r31) # 0caec -addi r17, r31, 0x10 # 0caf0 -cmpw r16, r17 # 0caf4 -beq+ major_0x0af60_0x54 # 0caf8 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0cafc - - - -/*********************************************************** - - major_0x0cb00 - -************************************************************ - -syscall 20 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 8 # 0cb00 - -major_0x0cb00: /* < outside referer */ -cmpw r4, r3 # 0cb00 -bgt+ syscall_return_kMPInsufficientResourcesErr # 0cb04 -li r8, 0x20 # 0cb08 -bl pool_malloc_with_crset # 0cb0c -mr. r31, r8 # 0cb10 -beq+ major_0x0af60_0x20 # 0cb14 -lis r16, 0x5345 # 0cb18 -stw r31, 0x0008(r31) # 0cb1c -ori r16, r16, 0x4d41 # 0cb20 -stw r31, 0x000c(r31) # 0cb24 -stw r16, 0x0004(r31) # 0cb28 -mr r16, r8 # 0cb2c -mr r17, r9 # 0cb30 -addi r8, r1, -0xb50 # 0cb34 - -# r8 = lock -bl lock # 0cb38 -mr r8, r16 # 0cb3c -mr r9, r17 # 0cb40 -li r9, 0x05 # 0cb44 - -# r1 = kdp -# r9 = kind -bl alloc_id # 0cb48 -cmpwi r8, 0x00 # 0cb4c -bne+ major_0x0cb00_0x60 # 0cb50 -mr r8, r31 # 0cb54 -bl looks_like_poolextend # 0cb58 -b major_0x0af60 # 0cb5c - -major_0x0cb00_0x60: -li r18, 0x00 # 0cb60 -stw r8, 0x0000(r31) # 0cb64 -mfspr r30, 272/*sprg0*/ # 0cb68 -lwz r30, -0x0008(r30) # 0cb6c -stw r3, 0x0014(r31) # 0cb70 -stw r4, 0x0010(r31) # 0cb74 -lwz r17, 0x0060(r30) # 0cb78 -stw r18, 0x001c(r31) # 0cb7c -stw r17, 0x0018(r31) # 0cb80 -mr r5, r8 # 0cb84 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0cb88 - - - -/*********************************************************** - - major_0x0cb8c - -************************************************************ - -syscall 23 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0cb8c: /* < outside referer */ -mr r16, r8 # 0cb8c -mr r17, r9 # 0cb90 -addi r8, r1, -0xb50 # 0cb94 - -# r8 = lock -bl lock # 0cb98 -mr r8, r16 # 0cb9c -mr r9, r17 # 0cba0 -mr r8, r3 # 0cba4 - -# r8 = id -bl id_kind # 0cba8 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x05 # 0cbac -bne+ major_0x0b07c_0x28 # 0cbb0 -mr r31, r8 # 0cbb4 -lwz r16, 0x0010(r31) # 0cbb8 -cmpwi r16, 0x00 # 0cbbc -addi r16, r16, -0x01 # 0cbc0 -ble- major_0x0cb8c_0x44 # 0cbc4 -stw r16, 0x0010(r31) # 0cbc8 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0cbcc - -major_0x0cb8c_0x44: -cmpwi r4, 0x00 # 0cbd0 -mfspr r30, 272/*sprg0*/ # 0cbd4 -beq+ major_0x0af60_0x54 # 0cbd8 -lwz r8, -0x0008(r30) # 0cbdc -lwz r16, 0x0064( r8) # 0cbe0 -rlwinm. r16, r16, 0, 15, 15 # 0cbe4 -beq- major_0x0cb8c_0x68 # 0cbe8 -stw r3, -0x0410( r1) # 0cbec -b major_0x0b02c # 0cbf0 - -major_0x0cb8c_0x68: -bl major_0x13e4c # 0cbf4 -addi r16, r31, 0x00 # 0cbf8 -addi r17, r8, 0x08 # 0cbfc -stw r16, 0x0000(r17) # 0cc00 -stw r16, 0x0008(r17) # 0cc04 -lwz r18, 0x000c(r16) # 0cc08 -stw r18, 0x000c(r17) # 0cc0c -stw r17, 0x0008(r18) # 0cc10 -stw r17, 0x000c(r16) # 0cc14 -lwz r18, 0x001c(r31) # 0cc18 -addi r18, r18, 0x01 # 0cc1c -stw r18, 0x001c(r31) # 0cc20 -lis r16, 0x7fff # 0cc24 -addi r30, r8, 0x20 # 0cc28 -ori r16, r16, 0xffff # 0cc2c -cmpw r4, r16 # 0cc30 -li r17, 0x02 # 0cc34 -beq- major_0x0cb8c_0xec # 0cc38 -stb r17, 0x0014(r30) # 0cc3c -stw r8, 0x0018(r30) # 0cc40 -mr r8, r4 # 0cc44 - -# r1 = kdp -# r8 = multiple (pos: /250; neg: /250000) -bl scale_timebase # 0cc48 -# r8 = hi -# r9 = lo - -mr r27, r8 # 0cc4c -mr r28, r9 # 0cc50 -bl bizarre # 0cc54 -mfxer r16 # 0cc58 -addc r9, r9, r28 # 0cc5c -adde r8, r8, r27 # 0cc60 -mtxer r16 # 0cc64 -stw r8, 0x0038(r30) # 0cc68 -stw r9, 0x003c(r30) # 0cc6c -mr r8, r30 # 0cc70 -bl major_0x130f0_0x524 # 0cc74 - -major_0x0cb8c_0xec: -li r3, 0x00 # 0cc78 -b major_0x0b0fc # 0cc7c - - - -/*********************************************************** - - major_0x0cc80 - -************************************************************ - -syscall 24 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 7 # 0cc80 - -major_0x0cc80: /* < outside referer */ -mr r16, r8 # 0cc80 -mr r17, r9 # 0cc84 -addi r8, r1, -0xb50 # 0cc88 - -# r8 = lock -bl lock # 0cc8c -mr r8, r16 # 0cc90 -mr r9, r17 # 0cc94 -mr r8, r3 # 0cc98 - -# r8 = id -bl id_kind # 0cc9c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x05 # 0cca0 -bne+ major_0x0b07c_0x28 # 0cca4 -mr r31, r8 # 0cca8 -lwz r16, 0x0010(r31) # 0ccac -cmpwi r16, 0x00 # 0ccb0 -ble+ major_0x0af60_0x54 # 0ccb4 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0ccb8 - - - -/*********************************************************** - - major_0x0ccbc - -************************************************************ - -syscall 22 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0ccbc: /* < outside referer */ -mr r16, r8 # 0ccbc -mr r17, r9 # 0ccc0 -addi r8, r1, -0xb50 # 0ccc4 - -# r8 = lock -bl lock # 0ccc8 -mr r8, r16 # 0cccc -mr r9, r17 # 0ccd0 -mr r8, r3 # 0ccd4 - -# r8 = id -bl id_kind # 0ccd8 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x05 # 0ccdc -mr r31, r8 # 0cce0 -bne+ major_0x0b07c_0x28 # 0cce4 -bl major_0x0ccf4 # 0cce8 -mr r3, r8 # 0ccec -b major_0x0b0fc_0x8 # 0ccf0 - - - -/*********************************************************** - - major_0x0ccf4 - -************************************************************ - -Xrefs: -major_0x0ccbc -major_0x0db04 - -***********************************************************/ - -major_0x0ccf4: /* < outside referer */ -mflr r27 # 0ccf4 -lwz r8, 0x0000(r31) # 0ccf8 -bl major_0x0dce8 # 0ccfc -lwz r16, 0x0008(r31) # 0cd00 -cmpw r16, r31 # 0cd04 -beq- major_0x0ccf4_0x80 # 0cd08 -addi r8, r16, -0x08 # 0cd0c -lbz r17, 0x0037( r8) # 0cd10 -cmpwi r17, 0x01 # 0cd14 -bne- major_0x0ccf4_0x30 # 0cd18 -addi r8, r8, 0x20 # 0cd1c -bl major_0x130f0_0x5d8 # 0cd20 - -major_0x0ccf4_0x30: -lwz r16, 0x0008(r31) # 0cd24 -lwz r17, 0x0008(r16) # 0cd28 -lwz r18, 0x000c(r16) # 0cd2c -stw r17, 0x0008(r18) # 0cd30 -stw r18, 0x000c(r17) # 0cd34 -li r17, 0x00 # 0cd38 -stw r17, 0x0008(r16) # 0cd3c -stw r17, 0x000c(r16) # 0cd40 -lwz r18, 0x001c(r31) # 0cd44 -addi r18, r18, -0x01 # 0cd48 -stw r18, 0x001c(r31) # 0cd4c -addi r8, r16, -0x08 # 0cd50 -li r17, 0x01 # 0cd54 -stb r17, 0x0019( r8) # 0cd58 -bl major_0x13ed8_0x8 # 0cd5c -bl major_0x149d4_0x8 # 0cd60 -bl major_0x14af8 # 0cd64 -mtlr r27 # 0cd68 -li r8, 0x00 # 0cd6c -blr # 0cd70 - -major_0x0ccf4_0x80: -mtlr r27 # 0cd74 -lwz r16, 0x0010(r31) # 0cd78 -lwz r17, 0x0014(r31) # 0cd7c -cmpw r16, r17 # 0cd80 -addi r16, r16, 0x01 # 0cd84 -li r8, -0x7272 # 0cd88 -bgelr- # 0cd8c -stw r16, 0x0010(r31) # 0cd90 -li r8, 0x00 # 0cd94 -blr # 0cd98 - - - -/*********************************************************** - - major_0x0cd9c - -************************************************************ - -syscall 21 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0cd9c: /* < outside referer */ -mr r16, r8 # 0cd9c -mr r17, r9 # 0cda0 -addi r8, r1, -0xb50 # 0cda4 - -# r8 = lock -bl lock # 0cda8 -mr r8, r16 # 0cdac -mr r9, r17 # 0cdb0 -mr r8, r3 # 0cdb4 - -# r8 = id -bl id_kind # 0cdb8 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x05 # 0cdbc -mr r31, r8 # 0cdc0 -bne+ major_0x0b07c_0x28 # 0cdc4 -mr r8, r3 # 0cdc8 -bl major_0x0dce8 # 0cdcc - -major_0x0cd9c_0x34: -addi r30, r31, 0x00 # 0cdd0 -lwz r16, 0x0008(r31) # 0cdd4 -cmpw r16, r30 # 0cdd8 -addi r8, r16, -0x08 # 0cddc -beq- major_0x0cd9c_0x98 # 0cde0 -lwz r17, 0x0088( r8) # 0cde4 -li r18, -0x726f # 0cde8 -stw r18, 0x011c(r17) # 0cdec -lbz r17, 0x0037( r8) # 0cdf0 -cmpwi r17, 0x01 # 0cdf4 -bne- major_0x0cd9c_0x68 # 0cdf8 -addi r8, r8, 0x20 # 0cdfc -bl major_0x130f0_0x5d8 # 0ce00 - -major_0x0cd9c_0x68: -lwz r16, 0x0008(r31) # 0ce04 -lwz r17, 0x0008(r16) # 0ce08 -lwz r18, 0x000c(r16) # 0ce0c -stw r17, 0x0008(r18) # 0ce10 -stw r18, 0x000c(r17) # 0ce14 -li r17, 0x00 # 0ce18 -stw r17, 0x0008(r16) # 0ce1c -stw r17, 0x000c(r16) # 0ce20 -addi r8, r16, -0x08 # 0ce24 -bl major_0x13ed8_0x8 # 0ce28 -bl major_0x14af8 # 0ce2c -b major_0x0cd9c_0x34 # 0ce30 - -major_0x0cd9c_0x98: -mr r8, r31 # 0ce34 -bl looks_like_poolextend # 0ce38 -mr r8, r3 # 0ce3c -bl major_0x15300 # 0ce40 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0ce44 - - - -/*********************************************************** - - major_0x0ce48 - -************************************************************ - -syscall 25 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0ce48 - -major_0x0ce48: /* < outside referer */ -li r8, 0x24 # 0ce48 -bl pool_malloc_with_crset # 0ce4c -mr. r31, r8 # 0ce50 -beq+ major_0x0af60_0x20 # 0ce54 -lis r16, 0x4352 # 0ce58 -stw r31, 0x0008(r31) # 0ce5c -ori r16, r16, 0x474e # 0ce60 -stw r31, 0x000c(r31) # 0ce64 -stw r16, 0x0004(r31) # 0ce68 -mr r16, r8 # 0ce6c -mr r17, r9 # 0ce70 -addi r8, r1, -0xb50 # 0ce74 - -# r8 = lock -bl lock # 0ce78 -mr r8, r16 # 0ce7c -mr r9, r17 # 0ce80 -li r9, 0x06 # 0ce84 - -# r1 = kdp -# r9 = kind -bl alloc_id # 0ce88 -cmpwi r8, 0x00 # 0ce8c -bne+ major_0x0ce48_0x58 # 0ce90 -mr r8, r31 # 0ce94 -bl looks_like_poolextend # 0ce98 -b major_0x0af60 # 0ce9c - -major_0x0ce48_0x58: -li r18, 0x00 # 0cea0 -mfspr r30, 272/*sprg0*/ # 0cea4 -lwz r30, -0x0008(r30) # 0cea8 -li r16, 0x00 # 0ceac -stw r8, 0x0000(r31) # 0ceb0 -stw r16, 0x0014(r31) # 0ceb4 -stw r16, 0x001c(r31) # 0ceb8 -stw r16, 0x0018(r31) # 0cebc -lwz r17, 0x0060(r30) # 0cec0 -stw r18, 0x0020(r31) # 0cec4 -stw r17, 0x0010(r31) # 0cec8 -mr r4, r8 # 0cecc - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0ced0 - - - -/*********************************************************** - - major_0x0ced4 - -************************************************************ - -syscall 27 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0ced4: /* < outside referer */ -mr r16, r8 # 0ced4 -mr r17, r9 # 0ced8 -addi r8, r1, -0xb50 # 0cedc - -# r8 = lock -bl lock # 0cee0 -mr r8, r16 # 0cee4 -mr r9, r17 # 0cee8 -mr r8, r3 # 0ceec - -# r8 = id -bl id_kind # 0cef0 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x06 # 0cef4 -bne+ major_0x0b07c_0x28 # 0cef8 -mr r31, r8 # 0cefc -mfspr r17, 272/*sprg0*/ # 0cf00 -lwz r18, 0x0014(r31) # 0cf04 -lwz r30, -0x0008(r17) # 0cf08 -cmpwi r18, 0x00 # 0cf0c -lwz r16, 0x0018(r31) # 0cf10 -beq- major_0x0ced4_0x64 # 0cf14 -lwz r17, 0x001c(r31) # 0cf18 -cmpw r16, r30 # 0cf1c -cmpw cr1, r17, r5 # 0cf20 -bne- major_0x0ced4_0x78 # 0cf24 -bne- cr1, major_0x0ced4_0x78 # 0cf28 -addi r18, r18, 0x01 # 0cf2c -stw r18, 0x0014(r31) # 0cf30 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0cf34 - -major_0x0ced4_0x64: -addi r18, r18, 0x01 # 0cf38 -stw r30, 0x0018(r31) # 0cf3c -stw r5, 0x001c(r31) # 0cf40 -stw r18, 0x0014(r31) # 0cf44 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0cf48 - -major_0x0ced4_0x78: -lwz r8, 0x0000(r16) # 0cf4c - -# r8 = id -bl id_kind # 0cf50 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x02 # 0cf54 -bne+ major_0x0af60_0x7c # 0cf58 -lwz r8, 0x001c(r31) # 0cf5c - -# r8 = id -bl id_kind # 0cf60 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x01 # 0cf64 -bne+ major_0x0af60_0x7c # 0cf68 -cmpwi r4, 0x00 # 0cf6c -lwz r16, 0x0064(r30) # 0cf70 -beq+ major_0x0af60_0x54 # 0cf74 -rlwinm. r16, r16, 0, 15, 15 # 0cf78 -beq- major_0x0ced4_0xb4 # 0cf7c -stw r3, -0x0410( r1) # 0cf80 -b major_0x0b02c # 0cf84 - -major_0x0ced4_0xb4: -mr r8, r30 # 0cf88 -bl major_0x13e4c # 0cf8c -lis r16, 0x7fff # 0cf90 -addi r18, r30, 0x08 # 0cf94 -ori r16, r16, 0xffff # 0cf98 -stw r31, 0x0000(r18) # 0cf9c -stw r31, 0x0008(r18) # 0cfa0 -lwz r19, 0x000c(r31) # 0cfa4 -stw r19, 0x000c(r18) # 0cfa8 -stw r18, 0x0008(r19) # 0cfac -stw r18, 0x000c(r31) # 0cfb0 -lwz r18, 0x0020(r31) # 0cfb4 -addi r18, r18, 0x01 # 0cfb8 -stw r18, 0x0020(r31) # 0cfbc -cmpw r4, r16 # 0cfc0 -beq- major_0x0ced4_0x138 # 0cfc4 -addi r29, r30, 0x20 # 0cfc8 -li r8, 0x02 # 0cfcc -stw r30, 0x0018(r29) # 0cfd0 -stb r8, 0x0014(r29) # 0cfd4 -mr r8, r4 # 0cfd8 - -# r1 = kdp -# r8 = multiple (pos: /250; neg: /250000) -bl scale_timebase # 0cfdc -# r8 = hi -# r9 = lo - -mr r27, r8 # 0cfe0 -mr r28, r9 # 0cfe4 -bl bizarre # 0cfe8 -mfxer r16 # 0cfec -addc r9, r9, r28 # 0cff0 -adde r8, r8, r27 # 0cff4 -mtxer r16 # 0cff8 -stw r8, 0x0038(r29) # 0cffc -stw r9, 0x003c(r29) # 0d000 -mr r8, r29 # 0d004 -bl major_0x130f0_0x524 # 0d008 - -major_0x0ced4_0x138: -b major_0x0b0fc # 0d00c - - - -/*********************************************************** - - major_0x0d010 - -************************************************************ - -syscall 29 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 4 # 0d010 - -major_0x0d010: /* < outside referer */ -mr r16, r8 # 0d010 -mr r17, r9 # 0d014 -addi r8, r1, -0xb50 # 0d018 - -# r8 = lock -bl lock # 0d01c -mr r8, r16 # 0d020 -mr r9, r17 # 0d024 -mr r8, r3 # 0d028 - -# r8 = id -bl id_kind # 0d02c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x06 # 0d030 -bne+ major_0x0b07c_0x28 # 0d034 -mr r31, r8 # 0d038 -mfspr r17, 272/*sprg0*/ # 0d03c -lwz r18, 0x0014(r31) # 0d040 -cmpwi r18, 0x00 # 0d044 - -# r1 = kdp -beq+ syscall_return_assert_lock_unheld # 0d048 -lwz r30, -0x0008(r17) # 0d04c -lwz r16, 0x0018(r31) # 0d050 -lwz r17, 0x001c(r31) # 0d054 -cmpw r16, r30 # 0d058 -cmpw cr1, r17, r4 # 0d05c -bne+ major_0x0af60_0x54 # 0d060 -bne+ cr1, major_0x0af60_0x54 # 0d064 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0d068 - - - -/*********************************************************** - - major_0x0d06c - -************************************************************ - -syscall 28 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0d06c: /* < outside referer */ -mr r16, r8 # 0d06c -mr r17, r9 # 0d070 -addi r8, r1, -0xb50 # 0d074 - -# r8 = lock -bl lock # 0d078 -mr r8, r16 # 0d07c -mr r9, r17 # 0d080 -mr r8, r3 # 0d084 - -# r8 = id -bl id_kind # 0d088 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x06 # 0d08c -bne+ major_0x0b07c_0x28 # 0d090 -mr r31, r8 # 0d094 -mfspr r17, 272/*sprg0*/ # 0d098 -lwz r16, 0x0018(r31) # 0d09c -lwz r30, -0x0008(r17) # 0d0a0 -lwz r18, 0x0014(r31) # 0d0a4 -lwz r17, 0x001c(r31) # 0d0a8 -cmpw r16, r30 # 0d0ac -cmpw cr1, r17, r4 # 0d0b0 -bne+ major_0x0af60_0xa4 # 0d0b4 -bne+ cr1, major_0x0af60_0xa4 # 0d0b8 -addi r18, r18, -0x01 # 0d0bc -cmpwi r18, 0x00 # 0d0c0 -stw r18, 0x0014(r31) # 0d0c4 - -# r1 = kdp -bne+ syscall_return_assert_lock_unheld # 0d0c8 -stw r18, 0x0018(r31) # 0d0cc -stw r18, 0x001c(r31) # 0d0d0 -mr r8, r3 # 0d0d4 -bl major_0x0dce8 # 0d0d8 -lwz r16, 0x0008(r31) # 0d0dc -cmpw r16, r31 # 0d0e0 - -# r1 = kdp -beq+ syscall_return_assert_lock_unheld # 0d0e4 -addi r8, r16, -0x08 # 0d0e8 -lbz r17, 0x0037( r8) # 0d0ec -cmpwi r17, 0x01 # 0d0f0 -bne- major_0x0d06c_0x94 # 0d0f4 -addi r8, r8, 0x20 # 0d0f8 -bl major_0x130f0_0x5d8 # 0d0fc - -major_0x0d06c_0x94: -lwz r16, 0x0008(r31) # 0d100 -lwz r17, 0x0008(r16) # 0d104 -lwz r18, 0x000c(r16) # 0d108 -stw r17, 0x0008(r18) # 0d10c -stw r18, 0x000c(r17) # 0d110 -li r17, 0x00 # 0d114 -stw r17, 0x0008(r16) # 0d118 -stw r17, 0x000c(r16) # 0d11c -lwz r18, 0x0020(r31) # 0d120 -addi r18, r18, -0x01 # 0d124 -stw r18, 0x0020(r31) # 0d128 -addi r8, r16, -0x08 # 0d12c -lwz r17, 0x0088( r8) # 0d130 -lwz r18, 0x00fc(r17) # 0d134 -addi r18, r18, -0x04 # 0d138 -stw r18, 0x00fc(r17) # 0d13c -li r17, 0x01 # 0d140 -stb r17, 0x0019( r8) # 0d144 -bl major_0x13ed8_0x8 # 0d148 -bl major_0x149d4_0x8 # 0d14c -bl major_0x14af8 # 0d150 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0d154 - - - -/*********************************************************** - - major_0x0d158 - -************************************************************ - -syscall 26 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0d158 - -major_0x0d158: /* < outside referer */ -mr r16, r8 # 0d158 -mr r17, r9 # 0d15c -addi r8, r1, -0xb50 # 0d160 - -# r8 = lock -bl lock # 0d164 -mr r8, r16 # 0d168 -mr r9, r17 # 0d16c -mr r8, r3 # 0d170 - -# r8 = id -bl id_kind # 0d174 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x06 # 0d178 -mr r31, r8 # 0d17c -bne+ major_0x0b07c_0x28 # 0d180 -mr r8, r3 # 0d184 -bl major_0x0dce8 # 0d188 - -major_0x0d158_0x34: -addi r30, r31, 0x00 # 0d18c -lwz r16, 0x0008(r31) # 0d190 -cmpw r16, r30 # 0d194 -addi r8, r16, -0x08 # 0d198 -beq- major_0x0d158_0x98 # 0d19c -lwz r17, 0x0088( r8) # 0d1a0 -li r18, -0x726f # 0d1a4 -stw r18, 0x011c(r17) # 0d1a8 -lbz r17, 0x0037( r8) # 0d1ac -cmpwi r17, 0x01 # 0d1b0 -bne- major_0x0d158_0x68 # 0d1b4 -addi r8, r8, 0x20 # 0d1b8 -bl major_0x130f0_0x5d8 # 0d1bc - -major_0x0d158_0x68: -lwz r16, 0x0008(r31) # 0d1c0 -lwz r17, 0x0008(r16) # 0d1c4 -lwz r18, 0x000c(r16) # 0d1c8 -stw r17, 0x0008(r18) # 0d1cc -stw r18, 0x000c(r17) # 0d1d0 -li r17, 0x00 # 0d1d4 -stw r17, 0x0008(r16) # 0d1d8 -stw r17, 0x000c(r16) # 0d1dc -addi r8, r16, -0x08 # 0d1e0 -bl major_0x13ed8_0x8 # 0d1e4 -bl major_0x14af8 # 0d1e8 -b major_0x0d158_0x34 # 0d1ec - -major_0x0d158_0x98: -mr r8, r31 # 0d1f0 -bl looks_like_poolextend # 0d1f4 -mr r8, r3 # 0d1f8 -bl major_0x15300 # 0d1fc - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0d200 - - - -/*********************************************************** - - major_0x0d204 - -************************************************************ - -syscall 49 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0d204: /* < outside referer */ -li r8, 0x20 # 0d204 - -# r1 = kdp -# r8 = size -bl pool_malloc # 0d208 -# r8 = ptr - -mr. r31, r8 # 0d20c -beq+ major_0x0af60_0x20 # 0d210 -lis r16, 0x4556 # 0d214 -stw r8, 0x0008( r8) # 0d218 -ori r16, r16, 0x4e54 # 0d21c -stw r8, 0x000c( r8) # 0d220 -stw r16, 0x0004( r8) # 0d224 -mr r16, r8 # 0d228 -mr r17, r9 # 0d22c -addi r8, r1, -0xb50 # 0d230 - -# r8 = lock -bl lock # 0d234 -mr r8, r16 # 0d238 -mr r9, r17 # 0d23c -li r9, 0x09 # 0d240 - -# r1 = kdp -# r9 = kind -bl alloc_id # 0d244 -cmpwi r8, 0x00 # 0d248 -bne+ major_0x0d204_0x58 # 0d24c -mr r8, r31 # 0d250 -bl looks_like_poolextend # 0d254 -b major_0x0af60 # 0d258 - -major_0x0d204_0x58: -mfspr r30, 272/*sprg0*/ # 0d25c -lwz r30, -0x0008(r30) # 0d260 -stw r8, 0x0000(r31) # 0d264 -lwz r17, 0x0060(r30) # 0d268 -stw r17, 0x0014(r31) # 0d26c -mr r4, r8 # 0d270 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0d274 - - - -/*********************************************************** - - major_0x0d278 - -************************************************************ - -syscall 50 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0d278 - -major_0x0d278: /* < outside referer */ -mr r16, r8 # 0d278 -mr r17, r9 # 0d27c -addi r8, r1, -0xb50 # 0d280 - -# r8 = lock -bl lock # 0d284 -mr r8, r16 # 0d288 -mr r9, r17 # 0d28c -mr r8, r3 # 0d290 - -# r8 = id -bl id_kind # 0d294 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x09 # 0d298 -mr r31, r8 # 0d29c -bne+ major_0x0b07c_0x28 # 0d2a0 -mr r8, r3 # 0d2a4 -bl major_0x0dce8 # 0d2a8 - -major_0x0d278_0x34: -addi r30, r31, 0x00 # 0d2ac -lwz r16, 0x0008(r31) # 0d2b0 -cmpw r16, r30 # 0d2b4 -addi r8, r16, -0x08 # 0d2b8 -beq- major_0x0d278_0x98 # 0d2bc -lwz r17, 0x0088( r8) # 0d2c0 -li r18, -0x726f # 0d2c4 -stw r18, 0x011c(r17) # 0d2c8 -lbz r17, 0x0037( r8) # 0d2cc -cmpwi r17, 0x01 # 0d2d0 -bne- major_0x0d278_0x68 # 0d2d4 -addi r8, r8, 0x20 # 0d2d8 -bl major_0x130f0_0x5d8 # 0d2dc - -major_0x0d278_0x68: -lwz r16, 0x0008(r31) # 0d2e0 -lwz r17, 0x0008(r16) # 0d2e4 -lwz r18, 0x000c(r16) # 0d2e8 -stw r17, 0x0008(r18) # 0d2ec -stw r18, 0x000c(r17) # 0d2f0 -li r17, 0x00 # 0d2f4 -stw r17, 0x0008(r16) # 0d2f8 -stw r17, 0x000c(r16) # 0d2fc -addi r8, r16, -0x08 # 0d300 -bl major_0x13ed8_0x8 # 0d304 -bl major_0x14af8 # 0d308 -b major_0x0d278_0x34 # 0d30c - -major_0x0d278_0x98: -mr r8, r31 # 0d310 -bl looks_like_poolextend # 0d314 -mr r8, r3 # 0d318 -bl major_0x15300 # 0d31c - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0d320 - - - -/*********************************************************** - - major_0x0d324 - -************************************************************ - -syscall 51 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0d324: /* < outside referer */ -mr r16, r8 # 0d324 -mr r17, r9 # 0d328 -addi r8, r1, -0xb50 # 0d32c - -# r8 = lock -bl lock # 0d330 -mr r8, r16 # 0d334 -mr r9, r17 # 0d338 -mr r8, r3 # 0d33c - -# r8 = id -bl id_kind # 0d340 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x09 # 0d344 -mr r31, r8 # 0d348 -bne+ major_0x0b07c_0x28 # 0d34c -mr r8, r4 # 0d350 -bl major_0x0d35c # 0d354 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0d358 - - - -/*********************************************************** - - major_0x0d35c - -************************************************************ - -Xrefs: -major_0x0d324 -major_0x0db04 -major_0x1139c - -***********************************************************/ - -major_0x0d35c: /* < outside referer */ -lwz r16, 0x0010(r31) # 0d35c -or r16, r16, r8 # 0d360 -stw r16, 0x0010(r31) # 0d364 -mflr r27 # 0d368 -lwz r8, 0x0000(r31) # 0d36c -bl major_0x0dce8 # 0d370 -lwz r16, 0x0008(r31) # 0d374 -cmpw r16, r31 # 0d378 -addi r8, r16, -0x08 # 0d37c -beq- major_0x0d35c_0x90 # 0d380 -lwz r17, 0x0088( r8) # 0d384 -lwz r18, 0x00fc(r17) # 0d388 -addi r18, r18, -0x04 # 0d38c -stw r18, 0x00fc(r17) # 0d390 -lbz r17, 0x0037( r8) # 0d394 -cmpwi r17, 0x01 # 0d398 -bne- major_0x0d35c_0x4c # 0d39c -addi r8, r8, 0x20 # 0d3a0 -bl major_0x130f0_0x5d8 # 0d3a4 - -major_0x0d35c_0x4c: -lwz r16, 0x0008(r31) # 0d3a8 -lwz r17, 0x0008(r16) # 0d3ac -lwz r18, 0x000c(r16) # 0d3b0 -stw r17, 0x0008(r18) # 0d3b4 -stw r18, 0x000c(r17) # 0d3b8 -li r17, 0x00 # 0d3bc -stw r17, 0x0008(r16) # 0d3c0 -stw r17, 0x000c(r16) # 0d3c4 -lwz r18, 0x001c(r31) # 0d3c8 -addi r18, r18, -0x01 # 0d3cc -stw r18, 0x001c(r31) # 0d3d0 -addi r8, r16, -0x08 # 0d3d4 -li r17, 0x01 # 0d3d8 -stb r17, 0x0019( r8) # 0d3dc -bl major_0x13ed8_0x8 # 0d3e0 -bl major_0x149d4_0x8 # 0d3e4 -bl major_0x14af8 # 0d3e8 - -major_0x0d35c_0x90: -lwz r16, 0x0018(r31) # 0d3ec -rlwinm. r17, r16, 0, 27, 27 # 0d3f0 -beq- major_0x0d35c_0x1a0 # 0d3f4 -lwz r17, 0x0658( r1) # 0d3f8 -lwz r26, -0x08f0( r1) # 0d3fc -lwz r18, 0x00c8(r17) # 0d400 -lwz r19, 0x00d0(r17) # 0d404 -cmpwi cr1, r18, 0x00 # 0d408 -cmpwi r19, 0x00 # 0d40c -bne- cr1, major_0x0d35c_0xc8 # 0d410 -bne- major_0x0d35c_0x1a0 # 0d414 -lwz r8, 0x0000(r31) # 0d418 -stw r8, 0x00d0(r17) # 0d41c -b major_0x0d35c_0x118 # 0d420 - -major_0x0d35c_0xc8: -lwz r9, 0x0634( r1) # 0d424 -rlwinm r16, r16, 2, 26, 29 # 0d428 -add r18, r18, r9 # 0d42c -lwzx r19, r16, r18 # 0d430 -cmpwi r19, 0x00 # 0d434 -bne- major_0x0d35c_0x1a0 # 0d438 -lwz r8, 0x0000(r31) # 0d43c -stwx r8, r16, r18 # 0d440 -li r19, 0x1c # 0d444 -li r9, 0x04 # 0d448 - -major_0x0d35c_0xf0: -lwzx r8, r19, r18 # 0d44c -cmpwi r8, 0x00 # 0d450 -bne- major_0x0d35c_0x108 # 0d454 -subf. r19, r9, r19 # 0d458 -bgt+ major_0x0d35c_0xf0 # 0d45c -bl panic # 0d460 - -major_0x0d35c_0x108: -cmplw r16, r19 # 0d464 -srwi r16, r16, 2 # 0d468 -blt- major_0x0d35c_0x1a0 # 0d46c -stw r16, 0x00d0(r17) # 0d470 - -major_0x0d35c_0x118: -lwz r16, 0x0064(r26) # 0d474 -lbz r19, 0x0018(r26) # 0d478 -ori r16, r16, 0x10 # 0d47c -stw r16, 0x0064(r26) # 0d480 -lwz r17, -0x0440( r1) # 0d484 -lwz r16, 0x0674( r1) # 0d488 -lwz r8, 0x0678( r1) # 0d48c -and r16, r16, r8 # 0d490 -or r17, r17, r16 # 0d494 -stw r17, -0x0440( r1) # 0d498 -cmpwi r19, 0x00 # 0d49c -addi r16, r26, 0x08 # 0d4a0 -bne- major_0x0d35c_0x198 # 0d4a4 -lwz r17, 0x0008(r16) # 0d4a8 -lwz r18, 0x000c(r16) # 0d4ac -stw r17, 0x0008(r18) # 0d4b0 -stw r18, 0x000c(r17) # 0d4b4 -li r17, 0x00 # 0d4b8 -stw r17, 0x0008(r16) # 0d4bc -stw r17, 0x000c(r16) # 0d4c0 -lbz r17, 0x0037(r26) # 0d4c4 -cmpwi r17, 0x01 # 0d4c8 -bne- major_0x0d35c_0x17c # 0d4cc -addi r8, r26, 0x20 # 0d4d0 -bl major_0x130f0_0x5d8 # 0d4d4 - -major_0x0d35c_0x17c: -lwz r18, -0x08f0( r1) # 0d4d8 -li r16, 0x00 # 0d4dc -stb r16, 0x0019(r26) # 0d4e0 -mr r8, r26 # 0d4e4 -bl major_0x13ed8 # 0d4e8 -mr r8, r26 # 0d4ec -bl major_0x149d4_0x8 # 0d4f0 - -major_0x0d35c_0x198: -mr r8, r26 # 0d4f4 -bl major_0x14af8 # 0d4f8 - -major_0x0d35c_0x1a0: -mtlr r27 # 0d4fc -blr # 0d500 - - - -/*********************************************************** - - major_0x0d504 - -************************************************************ - -syscall 52 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0d504: /* < outside referer */ -mr r16, r8 # 0d504 -mr r17, r9 # 0d508 -addi r8, r1, -0xb50 # 0d50c - -# r8 = lock -bl lock # 0d510 -mr r8, r16 # 0d514 -mr r9, r17 # 0d518 -mr r8, r3 # 0d51c - -# r8 = id -bl id_kind # 0d520 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x09 # 0d524 -bne+ major_0x0b07c_0x28 # 0d528 -mr r31, r8 # 0d52c -lwz r16, 0x0010(r31) # 0d530 -cmpwi r16, 0x00 # 0d534 -beq- major_0x0d504_0xc0 # 0d538 -mr r4, r16 # 0d53c -li r16, 0x00 # 0d540 -stw r16, 0x0010(r31) # 0d544 -lwz r16, 0x0018(r31) # 0d548 -lwz r17, 0x0658( r1) # 0d54c -rlwinm. r18, r16, 0, 27, 27 # 0d550 -rlwinm r16, r16, 2, 26, 29 # 0d554 - -# r1 = kdp -beq+ syscall_return_assert_lock_unheld # 0d558 -lwz r18, 0x00c8(r17) # 0d55c -lwz r9, 0x0634( r1) # 0d560 -cmpwi r18, 0x00 # 0d564 -add r18, r18, r9 # 0d568 -bne- major_0x0d504_0x84 # 0d56c -lwz r18, 0x00d0(r17) # 0d570 -cmpw r18, r3 # 0d574 -li r18, 0x00 # 0d578 - -# r1 = kdp -bne+ syscall_return_assert_lock_unheld # 0d57c -stw r18, 0x00d0(r17) # 0d580 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0d584 - -major_0x0d504_0x84: -lwzx r19, r16, r18 # 0d588 -cmpw r19, r3 # 0d58c -li r19, 0x00 # 0d590 - -# r1 = kdp -bne+ syscall_return_assert_lock_unheld # 0d594 -stwx r19, r16, r18 # 0d598 -li r19, 0x1c # 0d59c -li r9, 0x04 # 0d5a0 - -major_0x0d504_0xa0: -lwzx r8, r19, r18 # 0d5a4 -cmpwi r8, 0x00 # 0d5a8 -bne- major_0x0d504_0xb4 # 0d5ac -subf. r19, r9, r19 # 0d5b0 -bgt+ major_0x0d504_0xa0 # 0d5b4 - -major_0x0d504_0xb4: -srwi r19, r19, 2 # 0d5b8 -stw r19, 0x00d0(r17) # 0d5bc - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0d5c0 - -major_0x0d504_0xc0: -mfspr r30, 272/*sprg0*/ # 0d5c4 -cmpwi r5, 0x00 # 0d5c8 -lwz r19, -0x0008(r30) # 0d5cc -beq+ major_0x0af60_0x54 # 0d5d0 -lwz r16, 0x0064(r19) # 0d5d4 -rlwinm. r16, r16, 0, 15, 15 # 0d5d8 -beq- major_0x0d504_0xe4 # 0d5dc -stw r3, -0x0410( r1) # 0d5e0 -b major_0x0b02c # 0d5e4 - -major_0x0d504_0xe4: -mr r8, r19 # 0d5e8 -bl major_0x13e4c # 0d5ec -lwz r19, -0x0008(r30) # 0d5f0 -addi r16, r31, 0x00 # 0d5f4 -addi r17, r19, 0x08 # 0d5f8 -stw r16, 0x0000(r17) # 0d5fc -stw r16, 0x0008(r17) # 0d600 -lwz r18, 0x000c(r16) # 0d604 -stw r18, 0x000c(r17) # 0d608 -stw r17, 0x0008(r18) # 0d60c -stw r17, 0x000c(r16) # 0d610 -lwz r18, 0x001c(r31) # 0d614 -addi r18, r18, 0x01 # 0d618 -stw r18, 0x001c(r31) # 0d61c -lis r16, 0x7fff # 0d620 -ori r16, r16, 0xffff # 0d624 -addi r30, r19, 0x20 # 0d628 -cmpw r5, r16 # 0d62c -li r16, 0x02 # 0d630 -beq- major_0x0d504_0x170 # 0d634 -stb r16, 0x0014(r30) # 0d638 -stw r19, 0x0018(r30) # 0d63c -mr r8, r5 # 0d640 - -# r1 = kdp -# r8 = multiple (pos: /250; neg: /250000) -bl scale_timebase # 0d644 -# r8 = hi -# r9 = lo - -mr r27, r8 # 0d648 -mr r28, r9 # 0d64c -bl bizarre # 0d650 -mfxer r16 # 0d654 -addc r9, r9, r28 # 0d658 -adde r8, r8, r27 # 0d65c -mtxer r16 # 0d660 -stw r8, 0x0038(r30) # 0d664 -stw r9, 0x003c(r30) # 0d668 -mr r8, r30 # 0d66c -bl major_0x130f0_0x524 # 0d670 - -major_0x0d504_0x170: -b major_0x0b0fc # 0d674 - - - -/*********************************************************** - - major_0x0d678 - -************************************************************ - -syscall 53 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0d678 - -major_0x0d678: /* < outside referer */ -mr r16, r8 # 0d678 -mr r17, r9 # 0d67c -addi r8, r1, -0xb50 # 0d680 - -# r8 = lock -bl lock # 0d684 -mr r8, r16 # 0d688 -mr r9, r17 # 0d68c -mr r8, r3 # 0d690 - -# r8 = id -bl id_kind # 0d694 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x09 # 0d698 -bne+ major_0x0b07c_0x28 # 0d69c -mr r31, r8 # 0d6a0 -lwz r16, 0x0010(r31) # 0d6a4 -cmpwi r16, 0x00 # 0d6a8 -beq+ major_0x0af60_0x54 # 0d6ac - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0d6b0 - - - -/*********************************************************** - - major_0x0d6b4 - -************************************************************ - -syscall 54 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0d6b4: /* < outside referer */ -mr r16, r8 # 0d6b4 -mr r17, r9 # 0d6b8 -addi r8, r1, -0xb50 # 0d6bc - -# r8 = lock -bl lock # 0d6c0 -mr r8, r16 # 0d6c4 -mr r9, r17 # 0d6c8 -mr r8, r3 # 0d6cc - -# r8 = id -bl id_kind # 0d6d0 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x09 # 0d6d4 -bne+ major_0x0b07c_0x28 # 0d6d8 -mr r31, r8 # 0d6dc -li r17, 0x01 # 0d6e0 -cmpwi r4, 0x00 # 0d6e4 -cmplwi cr1, r4, 0x08 # 0d6e8 -lwz r16, 0x0018(r31) # 0d6ec -beq- major_0x0d6b4_0x48 # 0d6f0 -bgt- cr1, major_0x0d6b4_0x48 # 0d6f4 -mr r17, r4 # 0d6f8 - -major_0x0d6b4_0x48: -ori r16, r16, 0x10 # 0d6fc -rlwimi r16, r17, 0, 28, 31 # 0d700 -stw r16, 0x0018(r31) # 0d704 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0d708 - - - -/*********************************************************** - - major_0x0d70c - -************************************************************ - -syscall 40 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0d70c: /* < outside referer */ -li r8, 0x40 # 0d70c - -# r1 = kdp -# r8 = size -bl pool_malloc # 0d710 -# r8 = ptr - -mr. r31, r8 # 0d714 -beq+ major_0x0af60_0x20 # 0d718 -mr r16, r8 # 0d71c -mr r17, r9 # 0d720 -addi r8, r1, -0xb50 # 0d724 - -# r8 = lock -bl lock # 0d728 -mr r8, r16 # 0d72c -mr r9, r17 # 0d730 -mr r8, r31 # 0d734 -li r9, 0x03 # 0d738 - -# r1 = kdp -# r9 = kind -bl alloc_id # 0d73c -cmpwi r8, 0x00 # 0d740 -bne- major_0x0d70c_0x48 # 0d744 -mr r8, r31 # 0d748 -bl looks_like_poolextend # 0d74c -b major_0x0af60 # 0d750 - -major_0x0d70c_0x48: -mfspr r30, 272/*sprg0*/ # 0d754 -stw r8, 0x0000(r31) # 0d758 -lwz r30, -0x0008(r30) # 0d75c -mr r4, r8 # 0d760 -lwz r17, 0x0060(r30) # 0d764 -stw r17, 0x0010(r31) # 0d768 -bl bizarre # 0d76c -stw r8, 0x0038(r31) # 0d770 -stw r9, 0x003c(r31) # 0d774 -lis r17, 0x5449 # 0d778 -ori r17, r17, 0x4d45 # 0d77c -stw r17, 0x0004(r31) # 0d780 -li r17, 0x03 # 0d784 -stb r17, 0x0014(r31) # 0d788 -li r17, 0x00 # 0d78c -stb r17, 0x0016(r31) # 0d790 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0d794 - - - -/*********************************************************** - - major_0x0d798 - -************************************************************ - -syscall 41 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0d798 - -major_0x0d798: /* < outside referer */ -mr r16, r8 # 0d798 -mr r17, r9 # 0d79c -addi r8, r1, -0xb50 # 0d7a0 - -# r8 = lock -bl lock # 0d7a4 -mr r8, r16 # 0d7a8 -mr r9, r17 # 0d7ac -mr r8, r3 # 0d7b0 - -# r8 = id -bl id_kind # 0d7b4 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x03 # 0d7b8 -mr r31, r8 # 0d7bc -bne+ major_0x0b07c_0x28 # 0d7c0 -mr r8, r3 # 0d7c4 -bl major_0x15300 # 0d7c8 -lwz r16, 0x0008(r31) # 0d7cc -cmpwi r16, 0x00 # 0d7d0 -beq- major_0x0d798_0x48 # 0d7d4 -mr r8, r31 # 0d7d8 -bl major_0x130f0_0x5d8 # 0d7dc - -major_0x0d798_0x48: -sync # 0d7e0 -lwz r16, -0x0b50( r1) # 0d7e4 -cmpwi cr1, r16, 0x00 # 0d7e8 -li r16, 0x00 # 0d7ec -bne+ cr1, major_0x0d798_0x64 # 0d7f0 -mflr r16 # 0d7f4 -bl panic # 0d7f8 - -major_0x0d798_0x64: -stw r16, -0x0b50( r1) # 0d7fc -lwz r8, 0x001c(r31) # 0d800 -cmpwi r8, 0x00 # 0d804 -bnel- looks_like_poolextend # 0d808 -mr r8, r31 # 0d80c -bl looks_like_poolextend # 0d810 -b syscall_return_noErr # 0d814 - - - -/*********************************************************** - - major_0x0d818 - -************************************************************ - -syscall 30 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0d818 - -major_0x0d818: /* < outside referer */ -mr r16, r8 # 0d818 -mr r17, r9 # 0d81c -addi r8, r1, -0xb50 # 0d820 - -# r8 = lock -bl lock # 0d824 -mr r8, r16 # 0d828 -mr r9, r17 # 0d82c -mr r8, r3 # 0d830 - -# r8 = id -bl id_kind # 0d834 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x03 # 0d838 -mr r31, r8 # 0d83c -bne+ major_0x0b07c_0x28 # 0d840 -lbz r16, 0x0014(r31) # 0d844 -cmpwi r16, 0x03 # 0d848 -bne+ major_0x0b07c_0x28 # 0d84c -mr r8, r4 # 0d850 - -# r8 = id -bl id_kind # 0d854 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x05 # 0d858 -cmpwi cr2, r9, 0x04 # 0d85c -beq- major_0x0d818_0x80 # 0d860 -cmpwi r9, 0x09 # 0d864 -beq- cr2, major_0x0d818_0x64 # 0d868 -bne+ major_0x0b07c_0x28 # 0d86c -stw r4, 0x002c(r31) # 0d870 -stw r5, 0x0030(r31) # 0d874 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0d878 - -major_0x0d818_0x64: -stw r4, 0x0018(r31) # 0d87c -lwz r16, 0x0134( r6) # 0d880 -lwz r17, 0x013c( r6) # 0d884 -stw r5, 0x0020(r31) # 0d888 -stw r16, 0x0024(r31) # 0d88c -stw r17, 0x0028(r31) # 0d890 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0d894 - -major_0x0d818_0x80: -stw r4, 0x0034(r31) # 0d898 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0d89c - - - -/*********************************************************** - - major_0x0d8a0 - -************************************************************ - -syscall 31 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 5 # 0d8a0 - -major_0x0d8a0: /* < outside referer */ -mr r16, r8 # 0d8a0 -mr r17, r9 # 0d8a4 -addi r8, r1, -0xb50 # 0d8a8 - -# r8 = lock -bl lock # 0d8ac -mr r8, r16 # 0d8b0 -mr r9, r17 # 0d8b4 -mr r8, r3 # 0d8b8 - -# r8 = id -bl id_kind # 0d8bc -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x03 # 0d8c0 -mr r31, r8 # 0d8c4 -bne+ major_0x0b07c_0x28 # 0d8c8 -lbz r16, 0x0014(r31) # 0d8cc -cmpwi r16, 0x03 # 0d8d0 -bne+ major_0x0b07c_0x28 # 0d8d4 -lwz r16, 0x0008(r31) # 0d8d8 -cmpwi r16, 0x00 # 0d8dc -mr r8, r31 # 0d8e0 -beq- major_0x0d8a0_0x4c # 0d8e4 -bl major_0x130f0_0x5d8 # 0d8e8 - -major_0x0d8a0_0x4c: -lwz r9, 0x001c(r31) # 0d8ec -lwz r8, 0x0018(r31) # 0d8f0 -cmpwi r9, 0x00 # 0d8f4 -cmpwi cr1, r8, 0x00 # 0d8f8 -bne- major_0x0d8a0_0x9c # 0d8fc -beq- cr1, major_0x0d8a0_0x9c # 0d900 - -# r8 = id -bl id_kind # 0d904 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x04 # 0d908 -bne- major_0x0d8a0_0x9c # 0d90c -lwz r9, 0x0024( r8) # 0d910 -li r8, 0x1c # 0d914 -cmpwi r9, 0x00 # 0d918 -bne- major_0x0d8a0_0x9c # 0d91c - -# r1 = kdp -# r8 = size -bl pool_malloc # 0d920 -# r8 = ptr - -mr. r30, r8 # 0d924 -beq+ major_0x0af60 # 0d928 -lis r8, 0x6e6f # 0d92c -ori r8, r8, 0x7465 # 0d930 -stw r8, 0x0004(r30) # 0d934 -stw r30, 0x001c(r31) # 0d938 - -major_0x0d8a0_0x9c: -lwz r16, 0x0134( r6) # 0d93c -rlwinm. r9, r16, 0, 29, 29 # 0d940 -mr r8, r4 # 0d944 -beq- major_0x0d8a0_0xb8 # 0d948 - -# r1 = kdp -# r8 = multiple (pos: /250; neg: /250000) -bl scale_timebase # 0d94c -# r8 = hi -# r9 = lo - -mr r4, r8 # 0d950 -mr r5, r9 # 0d954 - -major_0x0d8a0_0xb8: -lwz r16, 0x0134( r6) # 0d958 -rlwinm. r8, r16, 0, 30, 30 # 0d95c -mfxer r17 # 0d960 -beq- major_0x0d8a0_0xdc # 0d964 -lwz r19, 0x003c(r31) # 0d968 -lwz r18, 0x0038(r31) # 0d96c -addc r5, r5, r19 # 0d970 -adde r4, r4, r18 # 0d974 -mtxer r17 # 0d978 - -major_0x0d8a0_0xdc: -stw r4, 0x0038(r31) # 0d97c -stw r5, 0x003c(r31) # 0d980 -lwz r16, 0x0134( r6) # 0d984 -clrlwi. r16, r16, 0x1f # 0d988 -li r17, 0x00 # 0d98c -beq- major_0x0d8a0_0xf8 # 0d990 -li r17, 0x01 # 0d994 - -major_0x0d8a0_0xf8: -stb r17, 0x0016(r31) # 0d998 -mr r8, r31 # 0d99c -bl major_0x130f0_0x524 # 0d9a0 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0d9a4 - - - -/*********************************************************** - - major_0x0d9a8 - -************************************************************ - -syscall 32 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0d9a8 - -major_0x0d9a8: /* < outside referer */ -mr r16, r8 # 0d9a8 -mr r17, r9 # 0d9ac -addi r8, r1, -0xb50 # 0d9b0 - -# r8 = lock -bl lock # 0d9b4 -mr r8, r16 # 0d9b8 -mr r9, r17 # 0d9bc -mr r8, r3 # 0d9c0 - -# r8 = id -bl id_kind # 0d9c4 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x03 # 0d9c8 -mr r31, r8 # 0d9cc -bne+ major_0x0b07c_0x28 # 0d9d0 -lbz r16, 0x0017(r31) # 0d9d4 -cmpwi r16, 0x01 # 0d9d8 -bne- major_0x0d9a8_0x58 # 0d9dc -lwz r4, 0x0038(r31) # 0d9e0 -lwz r5, 0x003c(r31) # 0d9e4 -bl bizarre # 0d9e8 -mfxer r16 # 0d9ec -subfc r5, r9, r5 # 0d9f0 -subfe. r4, r8, r4 # 0d9f4 -mtxer r16 # 0d9f8 -bge+ major_0x0d9a8_0x60 # 0d9fc - -major_0x0d9a8_0x58: -li r4, 0x00 # 0da00 -li r5, 0x00 # 0da04 - -major_0x0d9a8_0x60: -lwz r16, 0x0008(r31) # 0da08 -cmpwi r16, 0x00 # 0da0c -mr r8, r31 # 0da10 -beq- major_0x0d9a8_0x74 # 0da14 -bl major_0x130f0_0x5d8 # 0da18 - -major_0x0d9a8_0x74: -# r1 = kdp -b syscall_return_assert_lock_unheld # 0da1c - - - -/*********************************************************** - - major_0x0da20 - -************************************************************ - -syscall 64 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 5 # 0da20 - -major_0x0da20: /* < outside referer */ -li r8, 0x28 # 0da20 - -# r1 = kdp -# r8 = size -bl pool_malloc # 0da24 -# r8 = ptr - -mr. r31, r8 # 0da28 -beq+ major_0x0af60_0x20 # 0da2c -lis r16, 0x4b4e # 0da30 -ori r16, r16, 0x4f54 # 0da34 -stw r16, 0x0004(r31) # 0da38 -mr r16, r8 # 0da3c -mr r17, r9 # 0da40 -addi r8, r1, -0xb50 # 0da44 - -# r8 = lock -bl lock # 0da48 -mr r8, r16 # 0da4c -mr r9, r17 # 0da50 -li r9, 0x0c # 0da54 - -# r1 = kdp -# r9 = kind -bl alloc_id # 0da58 -cmpwi r8, 0x00 # 0da5c -bne+ major_0x0da20_0x50 # 0da60 -mr r8, r31 # 0da64 -bl looks_like_poolextend # 0da68 -b major_0x0af60 # 0da6c - -major_0x0da20_0x50: -mfspr r30, 272/*sprg0*/ # 0da70 -lwz r30, -0x0008(r30) # 0da74 -stw r8, 0x0000(r31) # 0da78 -lwz r17, 0x0060(r30) # 0da7c -stw r17, 0x0008(r31) # 0da80 -mr r4, r8 # 0da84 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0da88 - - - -/*********************************************************** - - major_0x0da8c - -************************************************************ - -syscall 65 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0da8c: /* < outside referer */ -mr r16, r8 # 0da8c -mr r17, r9 # 0da90 -addi r8, r1, -0xb50 # 0da94 - -# r8 = lock -bl lock # 0da98 -mr r8, r16 # 0da9c -mr r9, r17 # 0daa0 -mr r8, r3 # 0daa4 - -# r8 = id -bl id_kind # 0daa8 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0c # 0daac -mr r31, r8 # 0dab0 -bne+ major_0x0b07c_0x28 # 0dab4 -mr r8, r31 # 0dab8 -bl looks_like_poolextend # 0dabc -mr r8, r3 # 0dac0 -bl major_0x15300 # 0dac4 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0dac8 - - - -/*********************************************************** - - major_0x0dacc - -************************************************************ - -syscall 67 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0dacc: /* < outside referer */ -mr r16, r8 # 0dacc -mr r17, r9 # 0dad0 -addi r8, r1, -0xb50 # 0dad4 - -# r8 = lock -bl lock # 0dad8 -mr r8, r16 # 0dadc -mr r9, r17 # 0dae0 -mr r8, r3 # 0dae4 - -# r8 = id -bl id_kind # 0dae8 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0c # 0daec -mr r30, r8 # 0daf0 -bne+ major_0x0b07c_0x28 # 0daf4 -bl major_0x0db04 # 0daf8 -mr r3, r8 # 0dafc -b major_0x0b0fc_0x8 # 0db00 - - - -/*********************************************************** - - major_0x0db04 - -************************************************************ - -Xrefs: -major_0x02ccc -major_0x04240 -major_0x04300 -major_0x0dacc -major_0x102c8 -interrupt_blue - -***********************************************************/ - -major_0x0db04: /* < outside referer */ -mflr r29 # 0db04 -lwz r16, 0x000c(r30) # 0db08 -lwz r17, 0x0024(r30) # 0db0c -cmplwi r16, 0x00 # 0db10 -cmplwi cr1, r17, 0x00 # 0db14 -bne- major_0x0db04_0x28 # 0db18 -bne- cr1, major_0x0db04_0x28 # 0db1c -lwz r18, 0x001c(r30) # 0db20 -cmplwi r18, 0x00 # 0db24 -beq- major_0x0db04_0xf0 # 0db28 - -major_0x0db04_0x28: -lwz r8, 0x000c(r30) # 0db2c -cmplwi r8, 0x00 # 0db30 -beq- major_0x0db04_0x94 # 0db34 - -# r8 = id -bl id_kind # 0db38 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x04 # 0db3c -mr r31, r8 # 0db40 -bne- major_0x0db04_0xfc # 0db44 -lwz r16, 0x0024(r31) # 0db48 -cmpwi r16, 0x00 # 0db4c -lwz r17, 0x0028(r31) # 0db50 -beq- major_0x0db04_0x68 # 0db54 -mr. r8, r17 # 0db58 -lwz r17, 0x0008(r17) # 0db5c -beq- major_0x0db04_0xf0 # 0db60 -stw r17, 0x0028(r31) # 0db64 -b major_0x0db04_0x78 # 0db68 - -major_0x0db04_0x68: -li r8, 0x1c # 0db6c -bl pool_malloc_with_crset # 0db70 -cmpwi r8, 0x00 # 0db74 -beq- major_0x0db04_0xe4 # 0db78 - -major_0x0db04_0x78: -lwz r16, 0x0010(r30) # 0db7c -lwz r17, 0x0014(r30) # 0db80 -lwz r18, 0x0018(r30) # 0db84 -stw r16, 0x0010( r8) # 0db88 -stw r17, 0x0014( r8) # 0db8c -stw r18, 0x0018( r8) # 0db90 -bl major_0x0c8b4 # 0db94 - -major_0x0db04_0x94: -lwz r8, 0x0024(r30) # 0db98 -cmplwi r8, 0x00 # 0db9c -beq- major_0x0db04_0xb4 # 0dba0 - -# r8 = id -bl id_kind # 0dba4 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x05 # 0dba8 -mr r31, r8 # 0dbac -bne- major_0x0db04_0xfc # 0dbb0 -bl major_0x0ccf4 # 0dbb4 - -major_0x0db04_0xb4: -lwz r8, 0x001c(r30) # 0dbb8 -cmplwi r8, 0x00 # 0dbbc -beq- major_0x0db04_0xd8 # 0dbc0 - -# r8 = id -bl id_kind # 0dbc4 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x09 # 0dbc8 -mr r31, r8 # 0dbcc -bne- major_0x0db04_0xfc # 0dbd0 -lwz r8, 0x0020(r30) # 0dbd4 -bl major_0x0d35c # 0dbd8 - -major_0x0db04_0xd8: -mtlr r29 # 0dbdc -li r8, 0x00 # 0dbe0 -blr # 0dbe4 - -major_0x0db04_0xe4: -mtlr r29 # 0dbe8 -li r8, -0x726e # 0dbec -blr # 0dbf0 - -major_0x0db04_0xf0: -mtlr r29 # 0dbf4 -li r8, -0x7272 # 0dbf8 -blr # 0dbfc - -major_0x0db04_0xfc: -mtlr r29 # 0dc00 -li r8, -0x7273 # 0dc04 -blr # 0dc08 - - - -/*********************************************************** - - major_0x0dc0c - -************************************************************ - -syscall 66 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0dc0c: /* < outside referer */ -mr r16, r8 # 0dc0c -mr r17, r9 # 0dc10 -addi r8, r1, -0xb50 # 0dc14 - -# r8 = lock -bl lock # 0dc18 -mr r8, r16 # 0dc1c -mr r9, r17 # 0dc20 -mr r8, r3 # 0dc24 - -# r8 = id -bl id_kind # 0dc28 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0c # 0dc2c -mr r31, r8 # 0dc30 -bne+ major_0x0b07c_0x28 # 0dc34 -mr r8, r4 # 0dc38 - -# r8 = id -bl id_kind # 0dc3c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x05 # 0dc40 -cmpwi cr2, r9, 0x04 # 0dc44 -beq- major_0x0dc0c_0x74 # 0dc48 -cmpwi r9, 0x09 # 0dc4c -beq- cr2, major_0x0dc0c_0x58 # 0dc50 -bne+ major_0x0b07c_0x28 # 0dc54 -stw r4, 0x001c(r31) # 0dc58 -stw r5, 0x0020(r31) # 0dc5c - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0dc60 - -major_0x0dc0c_0x58: -stw r4, 0x000c(r31) # 0dc64 -lwz r16, 0x0134( r6) # 0dc68 -lwz r17, 0x013c( r6) # 0dc6c -stw r5, 0x0010(r31) # 0dc70 -stw r16, 0x0014(r31) # 0dc74 -stw r17, 0x0018(r31) # 0dc78 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0dc7c - -major_0x0dc0c_0x74: -stw r4, 0x0024(r31) # 0dc80 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0dc84 - - - -/*********************************************************** - - major_0x0dc88 - -************************************************************ - -syscall 128 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0dc88 - -major_0x0dc88: /* < outside referer */ -mr r16, r8 # 0dc88 -mr r17, r9 # 0dc8c -addi r8, r1, -0xb50 # 0dc90 - -# r8 = lock -bl lock # 0dc94 -mr r8, r16 # 0dc98 -mr r9, r17 # 0dc9c -mr r8, r3 # 0dca0 - -# r8 = id -bl id_kind # 0dca4 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0c # 0dca8 -mr r31, r8 # 0dcac -bne+ major_0x0b07c_0x28 # 0dcb0 -cmpwi r4, 0x04 # 0dcb4 -cmpwi cr1, r4, 0x09 # 0dcb8 -beq- major_0x0dc88_0x40 # 0dcbc -beq- cr1, major_0x0dc88_0x58 # 0dcc0 -b major_0x0b054 # 0dcc4 - -major_0x0dc88_0x40: -lwz r16, 0x0134( r6) # 0dcc8 -lwz r17, 0x013c( r6) # 0dccc -stw r5, 0x0010(r31) # 0dcd0 -stw r16, 0x0014(r31) # 0dcd4 -stw r17, 0x0018(r31) # 0dcd8 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0dcdc - -major_0x0dc88_0x58: -stw r5, 0x0020(r31) # 0dce0 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0dce4 - - - -/*********************************************************** - - major_0x0dce8 - -************************************************************ - -Xrefs: -major_0x02ccc -major_0x0c680 -major_0x0c8b4 -major_0x0ccf4 -major_0x0cd9c -major_0x0d06c -major_0x0d158 -major_0x0d278 -major_0x0d35c - -***********************************************************/ - -.align 3 # 0dce8 - -major_0x0dce8: /* < outside referer */ -lwz r9, -0x0410( r1) # 0dce8 -lwz r19, -0x08f0( r1) # 0dcec -cmpw r8, r9 # 0dcf0 -bnelr- # 0dcf4 -li r9, -0x01 # 0dcf8 -mflr r24 # 0dcfc -stw r9, -0x0410( r1) # 0dd00 -lbz r17, 0x0018(r19) # 0dd04 -cmpwi r17, 0x00 # 0dd08 -addi r16, r19, 0x08 # 0dd0c -bne- major_0x0dce8_0x70 # 0dd10 -lwz r17, 0x0008(r16) # 0dd14 -lwz r18, 0x000c(r16) # 0dd18 -stw r17, 0x0008(r18) # 0dd1c -stw r18, 0x000c(r17) # 0dd20 -li r17, 0x00 # 0dd24 -stw r17, 0x0008(r16) # 0dd28 -stw r17, 0x000c(r16) # 0dd2c -lbz r17, 0x0037(r19) # 0dd30 -cmpwi r17, 0x01 # 0dd34 -bne- major_0x0dce8_0x60 # 0dd38 -addi r8, r19, 0x20 # 0dd3c -bl major_0x130f0_0x5d8 # 0dd40 -lwz r19, -0x08f0( r1) # 0dd44 - -major_0x0dce8_0x60: -li r16, 0x01 # 0dd48 -stb r16, 0x0019(r19) # 0dd4c -lwz r8, -0x08f0( r1) # 0dd50 -bl major_0x13ed8_0x8 # 0dd54 - -major_0x0dce8_0x70: -lwz r8, -0x08f0( r1) # 0dd58 -mtlr r24 # 0dd5c -b major_0x14af8 # 0dd60 - - - -/*********************************************************** - - major_0x0dd64 - -************************************************************ - -syscall 120 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0dd64: /* < outside referer */ -mr r16, r8 # 0dd64 -mr r17, r9 # 0dd68 -addi r8, r1, -0xb50 # 0dd6c - -# r8 = lock -bl lock # 0dd70 -mr r8, r16 # 0dd74 -mr r9, r17 # 0dd78 -mr r8, r3 # 0dd7c - -# r8 = id -bl id_kind # 0dd80 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -mr r31, r8 # 0dd84 -cmpwi r9, 0x05 # 0dd88 -cmpwi cr1, r9, 0x04 # 0dd8c -beq- major_0x0dd64_0x33c # 0dd90 -beq- cr1, major_0x0dd64_0x248 # 0dd94 -cmpwi r9, 0x09 # 0dd98 -cmpwi cr1, r9, 0x06 # 0dd9c -beq- major_0x0dd64_0x1b4 # 0dda0 -beq- cr1, major_0x0dd64_0x10c # 0dda4 -cmpwi r9, 0x0c # 0dda8 -cmpwi cr1, r9, 0x08 # 0ddac -beq- major_0x0dd64_0x58 # 0ddb0 -beq- cr1, major_0x0dd64_0x3d8 # 0ddb4 -b major_0x0b054 # 0ddb8 - -major_0x0dd64_0x58: -lis r8, 0x0c # 0ddbc -ori r8, r8, 0x01 # 0ddc0 -cmpw r8, r4 # 0ddc4 -bne+ major_0x0b054 # 0ddc8 -cmplwi r5, 0x00 # 0ddcc -bne- major_0x0dd64_0xa0 # 0ddd0 -lis r16, 0x0c # 0ddd4 -ori r16, r16, 0x01 # 0ddd8 -stw r16, 0x0134( r6) # 0dddc -lwz r16, 0x0008(r31) # 0dde0 -stw r16, 0x013c( r6) # 0dde4 -lwz r16, 0x0004(r31) # 0dde8 -stw r16, 0x0144( r6) # 0ddec -lwz r16, 0x000c(r31) # 0ddf0 -stw r16, 0x014c( r6) # 0ddf4 -li r16, 0x10 # 0ddf8 -stw r16, 0x0154( r6) # 0ddfc - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0de00 - -major_0x0dd64_0xa0: -cmplwi r5, 0x10 # 0de04 -bne- major_0x0dd64_0xd4 # 0de08 -lwz r16, 0x0010(r31) # 0de0c -stw r16, 0x0134( r6) # 0de10 -lwz r16, 0x0014(r31) # 0de14 -stw r16, 0x013c( r6) # 0de18 -lwz r16, 0x0018(r31) # 0de1c -stw r16, 0x0144( r6) # 0de20 -lwz r16, 0x001c(r31) # 0de24 -stw r16, 0x014c( r6) # 0de28 -li r16, 0x10 # 0de2c -stw r16, 0x0154( r6) # 0de30 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0de34 - -major_0x0dd64_0xd4: -cmplwi r5, 0x20 # 0de38 -bne- major_0x0dd64_0xf8 # 0de3c -lwz r16, 0x0020(r31) # 0de40 -stw r16, 0x0134( r6) # 0de44 -lwz r16, 0x0024(r31) # 0de48 -stw r16, 0x013c( r6) # 0de4c -li r16, 0x08 # 0de50 -stw r16, 0x0154( r6) # 0de54 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0de58 - -major_0x0dd64_0xf8: -cmpwi r5, 0x28 # 0de5c -bne+ major_0x0b054 # 0de60 -li r16, 0x00 # 0de64 -stw r16, 0x0154( r6) # 0de68 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0de6c - -major_0x0dd64_0x10c: -lis r8, 0x06 # 0de70 -ori r8, r8, 0x01 # 0de74 -cmpw r8, r4 # 0de78 -bne+ major_0x0b054 # 0de7c -cmplwi r5, 0x00 # 0de80 -bne- major_0x0dd64_0x154 # 0de84 -lis r16, 0x06 # 0de88 -ori r16, r16, 0x01 # 0de8c -stw r16, 0x0134( r6) # 0de90 -lwz r16, 0x0010(r31) # 0de94 -stw r16, 0x013c( r6) # 0de98 -lwz r16, 0x0004(r31) # 0de9c -stw r16, 0x0144( r6) # 0dea0 -lwz r16, 0x0020(r31) # 0dea4 -stw r16, 0x014c( r6) # 0dea8 -li r16, 0x10 # 0deac -stw r16, 0x0154( r6) # 0deb0 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0deb4 - -major_0x0dd64_0x154: -cmplwi r5, 0x10 # 0deb8 -bne- major_0x0dd64_0x1a0 # 0debc -addi r17, r31, 0x00 # 0dec0 -lwz r18, 0x0008(r31) # 0dec4 -li r16, 0x00 # 0dec8 -cmpw r17, r18 # 0decc -beq- major_0x0dd64_0x174 # 0ded0 -lwz r16, -0x0008(r18) # 0ded4 - -major_0x0dd64_0x174: -stw r16, 0x0134( r6) # 0ded8 -lwz r16, 0x0018(r31) # 0dedc -cmpwi r16, 0x00 # 0dee0 -beq- major_0x0dd64_0x188 # 0dee4 -lwz r16, 0x0000(r16) # 0dee8 - -major_0x0dd64_0x188: -stw r16, 0x013c( r6) # 0deec -lwz r16, 0x0014(r31) # 0def0 -stw r16, 0x0144( r6) # 0def4 -li r16, 0x0c # 0def8 -stw r16, 0x0154( r6) # 0defc - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0df00 - -major_0x0dd64_0x1a0: -cmpwi r5, 0x1c # 0df04 -bne+ major_0x0b054 # 0df08 -li r16, 0x00 # 0df0c -stw r16, 0x0154( r6) # 0df10 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0df14 - -major_0x0dd64_0x1b4: -lis r8, 0x09 # 0df18 -ori r8, r8, 0x01 # 0df1c -cmpw r8, r4 # 0df20 -bne+ major_0x0b054 # 0df24 -cmplwi r5, 0x00 # 0df28 -bne- major_0x0dd64_0x1fc # 0df2c -lis r16, 0x09 # 0df30 -ori r16, r16, 0x01 # 0df34 -stw r16, 0x0134( r6) # 0df38 -lwz r16, 0x0014(r31) # 0df3c -stw r16, 0x013c( r6) # 0df40 -lwz r16, 0x0004(r31) # 0df44 -stw r16, 0x0144( r6) # 0df48 -lwz r16, 0x001c(r31) # 0df4c -stw r16, 0x014c( r6) # 0df50 -li r16, 0x10 # 0df54 -stw r16, 0x0154( r6) # 0df58 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0df5c - -major_0x0dd64_0x1fc: -cmplwi r5, 0x10 # 0df60 -bne- major_0x0dd64_0x234 # 0df64 -addi r17, r31, 0x00 # 0df68 -lwz r18, 0x0008(r31) # 0df6c -li r16, 0x00 # 0df70 -cmpw r17, r18 # 0df74 -beq- major_0x0dd64_0x21c # 0df78 -lwz r16, -0x0008(r18) # 0df7c - -major_0x0dd64_0x21c: -stw r16, 0x0134( r6) # 0df80 -lwz r16, 0x0010(r31) # 0df84 -stw r16, 0x013c( r6) # 0df88 -li r16, 0x08 # 0df8c -stw r16, 0x0154( r6) # 0df90 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0df94 - -major_0x0dd64_0x234: -cmpwi r5, 0x18 # 0df98 -bne+ major_0x0b054 # 0df9c -li r16, 0x00 # 0dfa0 -stw r16, 0x0154( r6) # 0dfa4 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0dfa8 - -major_0x0dd64_0x248: -lis r8, 0x04 # 0dfac -ori r8, r8, 0x01 # 0dfb0 -cmpw r8, r4 # 0dfb4 -bne+ major_0x0b054 # 0dfb8 -cmplwi r5, 0x00 # 0dfbc -bne- major_0x0dd64_0x290 # 0dfc0 -lis r16, 0x04 # 0dfc4 -ori r16, r16, 0x01 # 0dfc8 -stw r16, 0x0134( r6) # 0dfcc -lwz r16, 0x0020(r31) # 0dfd0 -stw r16, 0x013c( r6) # 0dfd4 -lwz r16, 0x0004(r31) # 0dfd8 -stw r16, 0x0144( r6) # 0dfdc -lwz r16, 0x002c(r31) # 0dfe0 -stw r16, 0x014c( r6) # 0dfe4 -li r16, 0x10 # 0dfe8 -stw r16, 0x0154( r6) # 0dfec - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0dff0 - -major_0x0dd64_0x290: -cmplwi r5, 0x10 # 0dff4 -bne- major_0x0dd64_0x2ec # 0dff8 -addi r17, r31, 0x00 # 0dffc -lwz r18, 0x0008(r31) # 0e000 -li r16, 0x00 # 0e004 -cmpw r17, r18 # 0e008 -beq- major_0x0dd64_0x2b0 # 0e00c -lwz r16, -0x0008(r18) # 0e010 - -major_0x0dd64_0x2b0: -stw r16, 0x0134( r6) # 0e014 -lwz r16, 0x0030(r31) # 0e018 -stw r16, 0x013c( r6) # 0e01c -lwz r16, 0x0024(r31) # 0e020 -stw r16, 0x0144( r6) # 0e024 -lwz r18, 0x0018(r31) # 0e028 -addi r17, r31, 0x10 # 0e02c -li r16, 0x00 # 0e030 -cmpw r17, r18 # 0e034 -beq- major_0x0dd64_0x2dc # 0e038 -lwz r16, 0x0010(r18) # 0e03c - -major_0x0dd64_0x2dc: -stw r16, 0x014c( r6) # 0e040 -li r16, 0x10 # 0e044 -stw r16, 0x0154( r6) # 0e048 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0e04c - -major_0x0dd64_0x2ec: -cmplwi r5, 0x20 # 0e050 -bne- major_0x0dd64_0x328 # 0e054 -lwz r18, 0x0018(r31) # 0e058 -addi r17, r31, 0x10 # 0e05c -li r16, 0x00 # 0e060 -cmpw r17, r18 # 0e064 -li r17, 0x00 # 0e068 -beq- major_0x0dd64_0x314 # 0e06c -lwz r16, 0x0014(r18) # 0e070 -lwz r17, 0x0018(r18) # 0e074 - -major_0x0dd64_0x314: -stw r16, 0x0134( r6) # 0e078 -stw r17, 0x013c( r6) # 0e07c -li r16, 0x08 # 0e080 -stw r16, 0x0154( r6) # 0e084 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0e088 - -major_0x0dd64_0x328: -cmpwi r5, 0x28 # 0e08c -bne+ major_0x0b054 # 0e090 -li r16, 0x00 # 0e094 -stw r16, 0x0154( r6) # 0e098 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0e09c - -major_0x0dd64_0x33c: -lis r8, 0x05 # 0e0a0 -ori r8, r8, 0x01 # 0e0a4 -cmpw r8, r4 # 0e0a8 -bne+ major_0x0b054 # 0e0ac -cmplwi r5, 0x00 # 0e0b0 -bne- major_0x0dd64_0x384 # 0e0b4 -lis r16, 0x05 # 0e0b8 -ori r16, r16, 0x01 # 0e0bc -stw r16, 0x0134( r6) # 0e0c0 -lwz r16, 0x0018(r31) # 0e0c4 -stw r16, 0x013c( r6) # 0e0c8 -lwz r16, 0x0004(r31) # 0e0cc -stw r16, 0x0144( r6) # 0e0d0 -lwz r16, 0x001c(r31) # 0e0d4 -stw r16, 0x014c( r6) # 0e0d8 -li r16, 0x10 # 0e0dc -stw r16, 0x0154( r6) # 0e0e0 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0e0e4 - -major_0x0dd64_0x384: -cmplwi r5, 0x10 # 0e0e8 -bne- major_0x0dd64_0x3c4 # 0e0ec -addi r17, r31, 0x00 # 0e0f0 -lwz r18, 0x0008(r31) # 0e0f4 -li r16, 0x00 # 0e0f8 -cmpw r17, r18 # 0e0fc -beq- major_0x0dd64_0x3a4 # 0e100 -lwz r16, -0x0008(r18) # 0e104 - -major_0x0dd64_0x3a4: -stw r16, 0x0134( r6) # 0e108 -lwz r16, 0x0014(r31) # 0e10c -stw r16, 0x013c( r6) # 0e110 -lwz r16, 0x0010(r31) # 0e114 -stw r16, 0x0144( r6) # 0e118 -li r16, 0x0c # 0e11c -stw r16, 0x0154( r6) # 0e120 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0e124 - -major_0x0dd64_0x3c4: -cmpwi r5, 0x1c # 0e128 -bne+ major_0x0b054 # 0e12c -li r16, 0x00 # 0e130 -stw r16, 0x0154( r6) # 0e134 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0e138 - -major_0x0dd64_0x3d8: -lis r8, 0x08 # 0e13c -ori r8, r8, 0x01 # 0e140 -cmpw r8, r4 # 0e144 -bne+ major_0x0b054 # 0e148 -cmplwi r5, 0x00 # 0e14c -bne- major_0x0dd64_0x420 # 0e150 -lis r16, 0x08 # 0e154 -ori r16, r16, 0x01 # 0e158 -stw r16, 0x0134( r6) # 0e15c -lwz r16, 0x0074(r31) # 0e160 -stw r16, 0x013c( r6) # 0e164 -lwz r16, 0x0070(r31) # 0e168 -stw r16, 0x0144( r6) # 0e16c -lwz r16, 0x000c(r31) # 0e170 -stw r16, 0x014c( r6) # 0e174 -li r16, 0x10 # 0e178 -stw r16, 0x0154( r6) # 0e17c - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0e180 - -major_0x0dd64_0x420: -cmplwi r5, 0x10 # 0e184 -bne- major_0x0dd64_0x454 # 0e188 -lwz r16, 0x0030(r31) # 0e18c -stw r16, 0x0134( r6) # 0e190 -lwz r16, 0x0034(r31) # 0e194 -stw r16, 0x013c( r6) # 0e198 -lwz r16, 0x0038(r31) # 0e19c -stw r16, 0x0144( r6) # 0e1a0 -lwz r16, 0x003c(r31) # 0e1a4 -stw r16, 0x014c( r6) # 0e1a8 -li r16, 0x10 # 0e1ac -stw r16, 0x0154( r6) # 0e1b0 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0e1b4 - -major_0x0dd64_0x454: -cmplwi r5, 0x20 # 0e1b8 -bne- major_0x0dd64_0x488 # 0e1bc -lwz r16, 0x0040(r31) # 0e1c0 -stw r16, 0x0134( r6) # 0e1c4 -lwz r16, 0x0044(r31) # 0e1c8 -stw r16, 0x013c( r6) # 0e1cc -lwz r16, 0x0048(r31) # 0e1d0 -stw r16, 0x0144( r6) # 0e1d4 -lwz r16, 0x004c(r31) # 0e1d8 -stw r16, 0x014c( r6) # 0e1dc -li r16, 0x10 # 0e1e0 -stw r16, 0x0154( r6) # 0e1e4 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0e1e8 - -major_0x0dd64_0x488: -cmplwi r5, 0x30 # 0e1ec -bne- major_0x0dd64_0x4bc # 0e1f0 -lwz r16, 0x0050(r31) # 0e1f4 -stw r16, 0x0134( r6) # 0e1f8 -lwz r16, 0x0054(r31) # 0e1fc -stw r16, 0x013c( r6) # 0e200 -lwz r16, 0x0058(r31) # 0e204 -stw r16, 0x0144( r6) # 0e208 -lwz r16, 0x005c(r31) # 0e20c -stw r16, 0x014c( r6) # 0e210 -li r16, 0x10 # 0e214 -stw r16, 0x0154( r6) # 0e218 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0e21c - -major_0x0dd64_0x4bc: -cmplwi r5, 0x40 # 0e220 -bne- major_0x0dd64_0x4f0 # 0e224 -lwz r16, 0x0060(r31) # 0e228 -stw r16, 0x0134( r6) # 0e22c -lwz r16, 0x0064(r31) # 0e230 -stw r16, 0x013c( r6) # 0e234 -lwz r16, 0x0068(r31) # 0e238 -stw r16, 0x0144( r6) # 0e23c -lwz r16, 0x006c(r31) # 0e240 -stw r16, 0x014c( r6) # 0e244 -li r16, 0x10 # 0e248 -stw r16, 0x0154( r6) # 0e24c - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0e250 - -major_0x0dd64_0x4f0: -cmpwi r5, 0x50 # 0e254 -bne+ major_0x0b054 # 0e258 -li r16, 0x00 # 0e25c -stw r16, 0x0154( r6) # 0e260 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0e264 - - - -/*********************************************************** - - major_0x0e268 - -***********************************************************/ - -.align 3 # 0e268 - -.long 0x48000018 # 0e268 -.long 0x60000000 # 0e26c -.long 0x60000000 # 0e270 -.long 0x60000000 # 0e274 -.long 0x60000000 # 0e278 -.long 0x60000000 # 0e27c - - - -/*********************************************************** - - panic_wrapper_0x0e280 - -************************************************************ - -Xrefs: -mktask -major_0x0e548 -major_0x0ec8c -major_0x0f050 - -***********************************************************/ - -.align 7 # 0e280 - -panic_wrapper_0x0e280: /* < outside referer */ -b panic # 0e280 - - - -/*********************************************************** - - major_0x0e284 - -************************************************************ - -syscall 7 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0e284: /* < outside referer */ -rlwinm. r8, r5, 0, 31, 28 # 0e284 -bne+ syscall_return_kMPInsufficientResourcesErr # 0e288 -mr r16, r8 # 0e28c -mr r17, r9 # 0e290 -addi r8, r1, -0xb50 # 0e294 - -# r8 = lock -bl lock # 0e298 -mr r8, r16 # 0e29c -mr r9, r17 # 0e2a0 -mr r8, r3 # 0e2a4 - -# r8 = id -bl id_kind # 0e2a8 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x01 # 0e2ac -mr r30, r8 # 0e2b0 -bne+ major_0x0b07c_0x28 # 0e2b4 -lwz r16, 0x0008(r30) # 0e2b8 -rlwinm. r17, r16, 0, 30, 30 # 0e2bc -bne+ major_0x0af60_0xa4 # 0e2c0 -bl mktask # 0e2c4 -mr. r31, r8 # 0e2c8 -beq+ major_0x0af60 # 0e2cc -mfspr r15, 272/*sprg0*/ # 0e2d0 -lwz r17, 0x0000(r31) # 0e2d4 -stw r17, 0x0154( r6) # 0e2d8 -lhz r16, -0x0116(r15) # 0e2dc -sth r16, 0x001a(r31) # 0e2e0 -addi r16, r31, 0x100 # 0e2e4 -lwz r17, 0x013c( r6) # 0e2e8 -stw r17, 0x0164(r16) # 0e2ec -lwz r17, 0x0144( r6) # 0e2f0 -stw r17, 0x00fc(r16) # 0e2f4 -lwz r17, 0x014c( r6) # 0e2f8 -stw r17, 0x0114(r16) # 0e2fc -stw r4, 0x0098(r31) # 0e300 -lwz r17, 0x0134( r6) # 0e304 -stw r17, 0x00ec(r31) # 0e308 -lwz r16, 0x0064(r28) # 0e30c -rlwinm. r8, r5, 0, 30, 30 # 0e310 -beq- major_0x0e284_0x98 # 0e314 -oris r16, r16, 0x40 # 0e318 - -major_0x0e284_0x98: -rlwinm. r8, r5, 0, 29, 29 # 0e31c -beq- major_0x0e284_0xa4 # 0e320 -oris r16, r16, 0x02 # 0e324 - -major_0x0e284_0xa4: -stw r16, 0x0064(r28) # 0e328 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0e32c - - - -/*********************************************************** - - mktask - -************************************************************ - -Xrefs: -setup -major_0x0bb20 -major_0x0e284 - -***********************************************************/ - -.align 4 # 0e330 - -mktask: /* < outside referer */ -mr r27, r8 # 0e330 -mflr r29 # 0e334 -li r8, 0x400 # 0e338 - -# r1 = kdp -# r8 = size -bl pool_malloc # 0e33c -# r8 = ptr - -mr. r28, r8 # 0e340 -beq- mktask_0x20c # 0e344 -li r9, 0x02 # 0e348 - -# r1 = kdp -# r9 = kind -bl alloc_id # 0e34c -cmpwi r8, 0x00 # 0e350 -beq- mktask_0x204 # 0e354 -stw r8, 0x0000(r28) # 0e358 -lis r8, 0x5441 # 0e35c -ori r8, r8, 0x534b # 0e360 -stw r8, 0x0004(r28) # 0e364 -lis r8, 0x2d2d # 0e368 -ori r8, r8, 0x2d2d # 0e36c -stw r8, 0x0074(r28) # 0e370 -li r8, 0x1c # 0e374 - -# r1 = kdp -# r8 = size -bl pool_malloc # 0e378 -# r8 = ptr - -cmpwi r8, 0x00 # 0e37c -stw r8, 0x009c(r28) # 0e380 -beq- mktask_0x1fc # 0e384 -lis r9, 0x6e6f # 0e388 -ori r9, r9, 0x7465 # 0e38c -stw r9, 0x0004( r8) # 0e390 -addi r16, r28, 160 # 0e394 -lis r17, 0x5345 # 0e398 -stw r16, 0x0008(r16) # 0e39c -ori r17, r17, 0x4d41 # 0e3a0 -stw r16, 0x000c(r16) # 0e3a4 -stw r17, 0x0004(r16) # 0e3a8 -li r16, 0x01 # 0e3ac -stw r16, 0x00b4(r28) # 0e3b0 -li r16, 0x00 # 0e3b4 -stw r16, 0x00b0(r28) # 0e3b8 -addi r8, r28, 160 # 0e3bc -li r9, 0x05 # 0e3c0 - -# r1 = kdp -# r9 = kind -bl alloc_id # 0e3c4 -cmpwi r8, 0x00 # 0e3c8 -beq- mktask_0x1f4 # 0e3cc -stw r8, 0x00a0(r28) # 0e3d0 -rlwinm. r8, r7, 0, 12, 12 # 0e3d4 -beq- mktask_0xe8 # 0e3d8 -li r8, 0x214 # 0e3dc - -# r1 = kdp -# r8 = size -bl pool_malloc # 0e3e0 -# r8 = ptr - -andi. r9, r8, 0x0f # 0e3e4 -cmpwi cr1, r8, 0x00 # 0e3e8 -bne+ panic_wrapper_0x0e280 # 0e3ec -beq- cr1, mktask_0x1ec # 0e3f0 -stw r8, 0x008c(r28) # 0e3f4 -stw r8, 0x01d8(r28) # 0e3f8 -li r16, 0x80 # 0e3fc -addi r8, r8, -0x04 # 0e400 -lwz r17, -0x08e0( r1) # 0e404 - -mktask_0xd8: -addi r16, r16, -0x01 # 0e408 -stwu r17, 0x0004( r8) # 0e40c -cmpwi r16, 0x00 # 0e410 -bgt+ mktask_0xd8 # 0e414 - -mktask_0xe8: -addi r16, r1, -0xa44 # 0e418 -addi r17, r28, 0x08 # 0e41c -stw r16, 0x0000(r17) # 0e420 -stw r16, 0x0008(r17) # 0e424 -lwz r18, 0x000c(r16) # 0e428 -stw r18, 0x000c(r17) # 0e42c -stw r17, 0x0008(r18) # 0e430 -stw r17, 0x000c(r16) # 0e434 -li r16, 0x00 # 0e438 -stb r16, 0x0018(r28) # 0e43c -li r16, 0x09 # 0e440 -stw r16, 0x0064(r28) # 0e444 -lis r16, 0x7469 # 0e448 -ori r16, r16, 0x6d65 # 0e44c -stw r16, 0x0024(r28) # 0e450 -li r16, 0x01 # 0e454 -stb r16, 0x0036(r28) # 0e458 -li r16, 100 # 0e45c -stw r16, 0x001c(r28) # 0e460 -li r16, 0x02 # 0e464 -stb r16, 0x0019(r28) # 0e468 -addi r16, r28, 0x100 # 0e46c -stw r16, 0x0088(r28) # 0e470 -lwz r16, -0x0968( r1) # 0e474 -stw r16, 0x0100(r28) # 0e478 -lwz r16, -0x0964( r1) # 0e47c -stw r16, 0x01a4(r28) # 0e480 -addi r16, r1, 0x360 # 0e484 -stw r16, 0x00f0(r28) # 0e488 -li r16, 0x00 # 0e48c -lwz r17, 0x009c(r28) # 0e490 -stw r16, 0x0010(r17) # 0e494 -stw r16, 0x0014(r17) # 0e498 -li r16, -0x7271 # 0e49c -stw r16, 0x0018(r17) # 0e4a0 -li r16, 0x00 # 0e4a4 -stw r16, 0x00c0(r28) # 0e4a8 -stw r16, 0x00c4(r28) # 0e4ac -stw r16, 0x00e0(r28) # 0e4b0 -stw r16, 0x00e4(r28) # 0e4b4 -stw r16, 0x00e8(r28) # 0e4b8 -bl bizarre # 0e4bc -stw r8, 0x00c8(r28) # 0e4c0 -stw r9, 0x00cc(r28) # 0e4c4 -stw r8, 0x00d0(r28) # 0e4c8 -stw r9, 0x00d4(r28) # 0e4cc -stw r8, 0x0080(r28) # 0e4d0 -stw r9, 0x0084(r28) # 0e4d4 -lwz r16, 0x0ecc( r1) # 0e4d8 -addi r16, r16, 0x01 # 0e4dc -stw r16, 0x0ecc( r1) # 0e4e0 -stw r27, 0x006c(r28) # 0e4e4 -lwz r16, 0x0000(r27) # 0e4e8 -stw r16, 0x0060(r28) # 0e4ec -lwz r17, 0x0014(r27) # 0e4f0 -stw r17, 0x0070(r28) # 0e4f4 -lwz r16, 0x000c(r17) # 0e4f8 -addi r16, r16, 0x01 # 0e4fc -stw r16, 0x000c(r17) # 0e500 -lwz r16, 0x0010(r27) # 0e504 -addi r16, r16, 0x01 # 0e508 -stw r16, 0x0010(r27) # 0e50c -mtlr r29 # 0e510 -mr r8, r28 # 0e514 -blr # 0e518 - -mktask_0x1ec: -lwz r8, 0x00a0(r28) # 0e51c -bl major_0x15300 # 0e520 - -mktask_0x1f4: -lwz r8, 0x009c(r28) # 0e524 -bl looks_like_poolextend # 0e528 - -mktask_0x1fc: -lwz r8, 0x0000(r28) # 0e52c -bl major_0x15300 # 0e530 - -mktask_0x204: -mr r8, r28 # 0e534 -bl looks_like_poolextend # 0e538 - -mktask_0x20c: -mtlr r29 # 0e53c -li r8, 0x00 # 0e540 -blr # 0e544 - - - -/*********************************************************** - - major_0x0e548 - -************************************************************ - -syscall 8 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0e548 - -major_0x0e548: /* < outside referer */ -mr r16, r8 # 0e548 -mr r17, r9 # 0e54c -addi r8, r1, -0xb50 # 0e550 - -# r8 = lock -bl lock # 0e554 -mr r8, r16 # 0e558 -mr r9, r17 # 0e55c -mr r8, r3 # 0e560 - -# r8 = id -bl id_kind # 0e564 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x02 # 0e568 -mr r31, r8 # 0e56c -bne+ major_0x0b07c_0x28 # 0e570 -lbz r16, 0x0018(r31) # 0e574 -cmpwi r16, 0x00 # 0e578 -bne+ major_0x0af60_0xa4 # 0e57c -lwz r8, 0x0060(r31) # 0e580 - -# r8 = id -bl id_kind # 0e584 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x01 # 0e588 -bne+ panic_wrapper_0x0e280 # 0e58c -lwz r16, 0x0008( r8) # 0e590 -rlwinm. r17, r16, 0, 30, 30 # 0e594 -bne+ major_0x0af60_0xa4 # 0e598 -lwz r30, 0x0088(r31) # 0e59c -stw r4, 0x0074(r31) # 0e5a0 -stw r5, 0x011c(r30) # 0e5a4 -lwz r18, 0x009c(r31) # 0e5a8 -lwz r16, 0x0134( r6) # 0e5ac -lwz r17, 0x013c( r6) # 0e5b0 -stw r16, 0x0010(r18) # 0e5b4 -stw r17, 0x0014(r18) # 0e5b8 -lwz r16, 0x0144( r6) # 0e5bc -lwz r17, 0x014c( r6) # 0e5c0 -stw r16, 0x010c(r30) # 0e5c4 -stw r16, 0x0090(r31) # 0e5c8 -stw r17, 0x0094(r31) # 0e5cc -addi r16, r31, 0x08 # 0e5d0 -lwz r17, 0x0008(r16) # 0e5d4 -lwz r18, 0x000c(r16) # 0e5d8 -stw r17, 0x0008(r18) # 0e5dc -stw r18, 0x000c(r17) # 0e5e0 -li r17, 0x00 # 0e5e4 -stw r17, 0x0008(r16) # 0e5e8 -stw r17, 0x000c(r16) # 0e5ec -mr r8, r31 # 0e5f0 -bl major_0x13ed8_0x8 # 0e5f4 -bl major_0x149d4_0x8 # 0e5f8 -bl major_0x14af8 # 0e5fc - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0e600 - - - -/*********************************************************** - - major_0x0e604 - -************************************************************ - -syscall 9 - -************************************************************ - -Xrefs: -syscall -major_0x0ea58 - -***********************************************************/ - -major_0x0e604: /* < outside referer */ -mr r16, r8 # 0e604 -mr r17, r9 # 0e608 -addi r8, r1, -0xb50 # 0e60c - -# r8 = lock -bl lock # 0e610 -mr r8, r16 # 0e614 -mr r9, r17 # 0e618 -mr r8, r3 # 0e61c - -# r8 = id -bl id_kind # 0e620 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -mr r31, r8 # 0e624 -cmpwi r9, 0x02 # 0e628 -bne+ major_0x0b07c_0x28 # 0e62c -lwz r16, 0x0064(r31) # 0e630 -lbz r17, 0x0018(r31) # 0e634 -rlwinm. r18, r16, 0, 30, 30 # 0e638 -cmpwi cr1, r17, 0x00 # 0e63c -bne+ major_0x0af60_0xa4 # 0e640 -beq- cr1, major_0x0e604_0xb4 # 0e644 -mfspr r15, 272/*sprg0*/ # 0e648 -lhz r18, 0x001a(r31) # 0e64c -lhz r17, -0x0116(r15) # 0e650 -cmpw r18, r17 # 0e654 -beq- major_0x0e604_0xe0 # 0e658 -ori r16, r16, 0x400 # 0e65c -stw r16, 0x0064(r31) # 0e660 -li r17, 0x01 # 0e664 -stb r17, 0x0019(r31) # 0e668 -mr r8, r31 # 0e66c -bl major_0x14af8_0xa0 # 0e670 -sync # 0e674 -lwz r16, -0x0b50( r1) # 0e678 -cmpwi cr1, r16, 0x00 # 0e67c -li r16, 0x00 # 0e680 -bne+ cr1, major_0x0e604_0x8c # 0e684 -mflr r16 # 0e688 -bl panic # 0e68c - -major_0x0e604_0x8c: -stw r16, -0x0b50( r1) # 0e690 -addi r10, r10, -0x04 # 0e694 -b major_0x0b4a4_0x78 # 0e698 - -major_0x0e604_0x98: /* < outside referer */ -lwz r16, 0x0064(r31) # 0e69c -ori r16, r16, 0x02 # 0e6a0 -stw r16, 0x0064(r31) # 0e6a4 -lwz r17, 0x009c(r31) # 0e6a8 -li r16, -0x7271 # 0e6ac -stw r16, 0x0018(r17) # 0e6b0 -b major_0x0e604_0xfc # 0e6b4 - -major_0x0e604_0xb4: -ori r16, r16, 0x02 # 0e6b8 -stw r16, 0x0064(r31) # 0e6bc -addi r16, r31, 0x08 # 0e6c0 -lwz r17, 0x0008(r16) # 0e6c4 -lwz r18, 0x000c(r16) # 0e6c8 -stw r17, 0x0008(r18) # 0e6cc -stw r18, 0x000c(r17) # 0e6d0 -li r17, 0x00 # 0e6d4 -stw r17, 0x0008(r16) # 0e6d8 -stw r17, 0x000c(r16) # 0e6dc -b major_0x0e604_0xf0 # 0e6e0 - -major_0x0e604_0xe0: -ori r16, r16, 0x02 # 0e6e4 -stw r16, 0x0064(r31) # 0e6e8 -mr r8, r31 # 0e6ec -bl major_0x13e4c # 0e6f0 - -major_0x0e604_0xf0: -lwz r17, 0x009c(r31) # 0e6f4 -li r3, 0x00 # 0e6f8 -stw r4, 0x0018(r17) # 0e6fc - -major_0x0e604_0xfc: -addi r16, r1, -0xa44 # 0e700 -addi r17, r31, 0x08 # 0e704 -stw r16, 0x0000(r17) # 0e708 -stw r16, 0x0008(r17) # 0e70c -lwz r18, 0x000c(r16) # 0e710 -stw r18, 0x000c(r17) # 0e714 -stw r17, 0x0008(r18) # 0e718 -stw r17, 0x000c(r16) # 0e71c -lbz r8, 0x0037(r31) # 0e720 -cmpwi r8, 0x01 # 0e724 -bne- major_0x0e604_0x130 # 0e728 -addi r8, r31, 0x20 # 0e72c -bl major_0x130f0_0x5d8 # 0e730 - -major_0x0e604_0x130: -lwz r8, 0x0098(r31) # 0e734 - -# r8 = id -bl id_kind # 0e738 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x04 # 0e73c -li r18, 0x00 # 0e740 -lwz r17, 0x009c(r31) # 0e744 -stw r18, 0x009c(r31) # 0e748 -bne- major_0x0e604_0x15c # 0e74c -mr r31, r8 # 0e750 -mr r8, r17 # 0e754 -bl major_0x0c8b4 # 0e758 -b major_0x0b0fc_0x8 # 0e75c - -major_0x0e604_0x15c: -mr r8, r17 # 0e760 -bl looks_like_poolextend # 0e764 -b major_0x0b0fc_0x8 # 0e768 - - - -/*********************************************************** - - major_0x0e76c - -************************************************************ - -syscall 10 - -************************************************************ - -Xrefs: -syscall -major_0x14bcc - -***********************************************************/ - -major_0x0e76c: /* < outside referer */ -mr r16, r8 # 0e76c -mr r17, r9 # 0e770 -addi r8, r1, -0xb50 # 0e774 - -# r8 = lock -bl lock # 0e778 -mr r8, r16 # 0e77c -mr r9, r17 # 0e780 -mr r8, r3 # 0e784 - -# r8 = id -bl id_kind # 0e788 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x02 # 0e78c -bne+ major_0x0b07c_0x28 # 0e790 -mr r31, r8 # 0e794 -lbz r16, 0x0018(r31) # 0e798 -cmpwi r16, 0x00 # 0e79c -bne+ major_0x0af60_0xa4 # 0e7a0 -lwz r16, 0x0064(r31) # 0e7a4 -rlwinm. r16, r16, 0, 30, 30 # 0e7a8 -beq+ major_0x0af60_0xa4 # 0e7ac -mr r8, r31 # 0e7b0 -bl major_0x0e76c_0x50 # 0e7b4 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0e7b8 - -major_0x0e76c_0x50: /* < outside referer */ -mflr r27 # 0e7bc -mr r26, r8 # 0e7c0 -addi r16, r26, 0x08 # 0e7c4 -lwz r17, 0x0008(r16) # 0e7c8 -lwz r18, 0x000c(r16) # 0e7cc -stw r17, 0x0008(r18) # 0e7d0 -stw r18, 0x000c(r17) # 0e7d4 -li r17, 0x00 # 0e7d8 -stw r17, 0x0008(r16) # 0e7dc -stw r17, 0x000c(r16) # 0e7e0 -lwz r8, 0x0000(r26) # 0e7e4 -bl major_0x15300 # 0e7e8 -lwz r8, 0x00a0(r26) # 0e7ec -bl major_0x15300 # 0e7f0 -lwz r8, 0x009c(r26) # 0e7f4 -cmpwi r8, 0x00 # 0e7f8 -beq- major_0x0e76c_0x98 # 0e7fc -bl looks_like_poolextend # 0e800 - -major_0x0e76c_0x98: -lwz r8, 0x008c(r26) # 0e804 -cmpwi r8, 0x00 # 0e808 -beq- major_0x0e76c_0xa8 # 0e80c -bl looks_like_poolextend # 0e810 - -major_0x0e76c_0xa8: -lwz r17, 0x006c(r26) # 0e814 -lwz r16, 0x0010(r17) # 0e818 -addi r16, r16, -0x01 # 0e81c -stw r16, 0x0010(r17) # 0e820 -lwz r17, 0x0070(r26) # 0e824 -lwz r16, 0x000c(r17) # 0e828 -addi r16, r16, -0x01 # 0e82c -stw r16, 0x000c(r17) # 0e830 -mr r8, r26 # 0e834 -bl looks_like_poolextend # 0e838 -lwz r16, 0x0ecc( r1) # 0e83c -addi r16, r16, -0x01 # 0e840 -stw r16, 0x0ecc( r1) # 0e844 -mtlr r27 # 0e848 -blr # 0e84c - - - -/*********************************************************** - - major_0x0e850 - -************************************************************ - -syscall 11 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 4 # 0e850 - -major_0x0e850: /* < outside referer */ -mfspr r16, 272/*sprg0*/ # 0e850 -cmpwi r3, 0x00 # 0e854 -lwz r17, -0x08f0( r1) # 0e858 -lwz r18, -0x0008(r16) # 0e85c -lwz r19, 0x0000(r17) # 0e860 -bne- major_0x0e850_0x1c # 0e864 -lwz r3, 0x0000(r18) # 0e868 - -major_0x0e850_0x1c: -cmpw r3, r19 # 0e86c -li r3, 0x01 # 0e870 -beq+ syscall_return # 0e874 -li r3, 0x00 # 0e878 -b syscall_return # 0e87c - - - -/*********************************************************** - - major_0x0e880 - -************************************************************ - -syscall 12 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 7 # 0e880 - -major_0x0e880: /* < outside referer */ -mfspr r14, 272/*sprg0*/ # 0e880 -lwz r15, -0x0008(r14) # 0e884 -lwz r3, 0x0000(r15) # 0e888 -lwz r4, 0x00ec(r15) # 0e88c -b syscall_return # 0e890 - - - -/*********************************************************** - - major_0x0e894 - -************************************************************ - -syscall 14 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0e894: /* < outside referer */ -cmpwi r4, 0x01 # 0e894 -cmpwi cr1, r4, 10000 # 0e898 -blt+ syscall_return_kMPInvalidIDErr # 0e89c -bgt+ cr1, syscall_return_kMPInvalidIDErr # 0e8a0 -mr r16, r8 # 0e8a4 -mr r17, r9 # 0e8a8 -addi r8, r1, -0xb50 # 0e8ac - -# r8 = lock -bl lock # 0e8b0 -mr r8, r16 # 0e8b4 -mr r9, r17 # 0e8b8 -mr r8, r3 # 0e8bc - -# r8 = id -bl id_kind # 0e8c0 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x02 # 0e8c4 -bne+ major_0x0b07c_0x28 # 0e8c8 -mr r31, r8 # 0e8cc -lbz r16, 0x0018(r31) # 0e8d0 -cmpwi r16, 0x01 # 0e8d4 -bne- major_0x0e894_0x70 # 0e8d8 -lwz r16, 0x0008(r31) # 0e8dc -lwz r17, 0x001c(r31) # 0e8e0 -lwz r18, 0x0014(r16) # 0e8e4 -subf r17, r17, r4 # 0e8e8 -add r18, r17, r18 # 0e8ec -cmpwi r17, 0x00 # 0e8f0 -stw r18, 0x0014(r16) # 0e8f4 -beq- major_0x0e894_0x70 # 0e8f8 -mr r8, r31 # 0e8fc -bl major_0x14af8_0xa0 # 0e900 - -major_0x0e894_0x70: -stw r4, 0x001c(r31) # 0e904 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0e908 - - - -/*********************************************************** - - major_0x0e90c - -************************************************************ - -syscall 56 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0e90c: /* < outside referer */ -mr r16, r8 # 0e90c -mr r17, r9 # 0e910 -addi r8, r1, -0xb50 # 0e914 - -# r8 = lock -bl lock # 0e918 -mr r8, r16 # 0e91c -mr r9, r17 # 0e920 -mr r8, r3 # 0e924 - -# r8 = id -bl id_kind # 0e928 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x02 # 0e92c -bne+ major_0x0b07c_0x28 # 0e930 -mr r31, r8 # 0e934 -mr r8, r4 # 0e938 - -# r8 = id -bl id_kind # 0e93c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x00 # 0e940 -cmpwi cr1, r9, 0x04 # 0e944 -beq- major_0x0e90c_0x44 # 0e948 -bne+ cr1, major_0x0b07c_0x28 # 0e94c - -major_0x0e90c_0x44: -mr r30, r8 # 0e950 -stw r4, 0x00f4(r31) # 0e954 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0e958 - - - -/*********************************************************** - - NKThrowException - -************************************************************ - -syscall 57 -Throws an exception to a specified task. - -************************************************************ - -Xrefs: -syscall - -************************************************************ - -> r3 = MPTaskID task -> r4 = MPExceptionKind kind - -< r3 = result code - -***********************************************************/ - -NKThrowException: /* < outside referer */ -mfspr r15, 272/*sprg0*/ # 0e95c -mr r16, r8 # 0e960 -mr r17, r9 # 0e964 -addi r8, r1, -0xb50 # 0e968 - -# r8 = lock -bl lock # 0e96c -mr r8, r16 # 0e970 -mr r9, r17 # 0e974 -mr r8, r3 # 0e978 - -# r8 = id -bl id_kind # 0e97c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x02 # 0e980 -bne+ major_0x0b07c_0x28 # 0e984 -mr r31, r8 # 0e988 -lwz r16, 0x0064(r31) # 0e98c -mtcr r16 # 0e990 -li r3, -0x7271 # 0e994 -beq+ cr7, major_0x0b0fc_0x8 # 0e998 -li r3, -0x726c # 0e99c -beq+ cr5, major_0x0b0fc_0x8 # 0e9a0 -beq+ cr3, major_0x0af60_0xa4 # 0e9a4 -lbz r17, 0x0018(r31) # 0e9a8 -lhz r18, 0x001a(r31) # 0e9ac -cmpwi cr1, r17, 0x00 # 0e9b0 -bne- cr1, NKThrowException_0x70 # 0e9b4 -ori r16, r16, 0x600 # 0e9b8 -stw r4, 0x00f8(r31) # 0e9bc -stw r16, 0x0064(r31) # 0e9c0 -li r3, -0x726b # 0e9c4 -b major_0x0b0fc_0x8 # 0e9c8 - -NKThrowException_0x70: -lhz r19, -0x0116(r15) # 0e9cc -cmpw r19, r18 # 0e9d0 -bne- NKThrowException_0xb8 # 0e9d4 -ori r16, r16, 0x200 # 0e9d8 -stw r4, 0x00f8(r31) # 0e9dc -stw r16, 0x0064(r31) # 0e9e0 -mr r8, r31 # 0e9e4 -bl major_0x13e4c # 0e9e8 -addi r16, r1, -0xa34 # 0e9ec -addi r17, r31, 0x08 # 0e9f0 -stw r16, 0x0000(r17) # 0e9f4 -stw r16, 0x0008(r17) # 0e9f8 -lwz r18, 0x000c(r16) # 0e9fc -stw r18, 0x000c(r17) # 0ea00 -stw r17, 0x0008(r18) # 0ea04 -stw r17, 0x000c(r16) # 0ea08 -li r3, -0x726c # 0ea0c -b major_0x0b0fc_0x8 # 0ea10 - -NKThrowException_0xb8: -lwz r3, 0x0000(r31) # 0ea14 -ori r16, r16, 0x400 # 0ea18 -stw r16, 0x0064(r31) # 0ea1c -li r17, 0x01 # 0ea20 -stb r17, 0x0019(r31) # 0ea24 -mr r8, r31 # 0ea28 -bl major_0x14af8_0xa0 # 0ea2c -sync # 0ea30 -lwz r16, -0x0b50( r1) # 0ea34 -cmpwi cr1, r16, 0x00 # 0ea38 -li r16, 0x00 # 0ea3c -bne+ cr1, NKThrowException_0xf0 # 0ea40 -mflr r16 # 0ea44 -bl panic # 0ea48 - -NKThrowException_0xf0: -stw r16, -0x0b50( r1) # 0ea4c -addi r10, r10, -0x04 # 0ea50 -b major_0x0b4a4_0x78 # 0ea54 - - - -/*********************************************************** - - major_0x0ea58 - -************************************************************ - -syscall 58 - -************************************************************ - -Xrefs: -major_0x02ccc -syscall -major_0x0ec8c - -***********************************************************/ - -.align 3 # 0ea58 - -major_0x0ea58: /* < outside referer */ -mr r16, r8 # 0ea58 -mr r17, r9 # 0ea5c -addi r8, r1, -0xb50 # 0ea60 - -# r8 = lock -bl lock # 0ea64 -mr r8, r16 # 0ea68 -mr r9, r17 # 0ea6c -mr r8, r3 # 0ea70 - -# r8 = id -bl id_kind # 0ea74 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x02 # 0ea78 -bne+ major_0x0b07c_0x28 # 0ea7c -mr r31, r8 # 0ea80 -lwz r29, 0x0064(r31) # 0ea84 -mtcr r29 # 0ea88 -li r3, -0x7271 # 0ea8c -beq+ cr7, major_0x0b0fc_0x8 # 0ea90 -beq- cr4, major_0x0ea58_0x44 # 0ea94 -bne+ cr5, major_0x0af60_0xa4 # 0ea98 - -major_0x0ea58_0x44: -mtcr r4 # 0ea9c -lwz r30, 0x0088(r31) # 0eaa0 -bns- cr7, major_0x0ea58_0x68 # 0eaa4 -li r8, 0x1c # 0eaa8 -bl pool_malloc_with_crset # 0eaac -cmpwi r8, 0x00 # 0eab0 -beq+ major_0x0af60 # 0eab4 -li r3, 0x00 # 0eab8 -b major_0x0ea58_0x114 # 0eabc - -major_0x0ea58_0x68: -li r17, 0x3800 # 0eac0 -rlwinm. r8, r29, 0, 18, 18 # 0eac4 -andc r29, r29, r17 # 0eac8 -li r17, 0x00 # 0eacc -bne- cr7, major_0x0ea58_0x80 # 0ead0 -ori r17, r17, 0x400 # 0ead4 - -major_0x0ea58_0x80: -ble- cr7, major_0x0ea58_0x88 # 0ead8 -ori r17, r17, 0x200 # 0eadc - -major_0x0ea58_0x88: -lwz r18, 0x00a4(r30) # 0eae0 -rlwimi r18, r17, 0, 21, 22 # 0eae4 -stw r18, 0x00a4(r30) # 0eae8 -li r19, 0x600 # 0eaec -lwz r17, 0x0008(r31) # 0eaf0 -addi r18, r1, -0xa34 # 0eaf4 -andc r29, r29, r19 # 0eaf8 -cmpw cr1, r17, r18 # 0eafc -stw r29, 0x0064(r31) # 0eb00 -bne- major_0x0ea58_0xb4 # 0eb04 -bne- cr1, major_0x0ea58_0xe0 # 0eb08 - -major_0x0ea58_0xb4: -addi r16, r31, 0x08 # 0eb0c -lwz r17, 0x0008(r16) # 0eb10 -lwz r18, 0x000c(r16) # 0eb14 -stw r17, 0x0008(r18) # 0eb18 -stw r18, 0x000c(r17) # 0eb1c -li r17, 0x00 # 0eb20 -stw r17, 0x0008(r16) # 0eb24 -stw r17, 0x000c(r16) # 0eb28 -mr r8, r31 # 0eb2c -bl major_0x13ed8_0x8 # 0eb30 -bl major_0x14af8 # 0eb34 - -major_0x0ea58_0xe0: -# r1 = kdp -b syscall_return_assert_lock_unheld # 0eb38 - -major_0x0ea58_0xe4: /* < outside referer */ -addi r16, r1, -0xa34 # 0eb3c -addi r17, r31, 0x08 # 0eb40 -stw r16, 0x0000(r17) # 0eb44 -stw r16, 0x0008(r17) # 0eb48 -lwz r18, 0x000c(r16) # 0eb4c -stw r18, 0x000c(r17) # 0eb50 -stw r17, 0x0008(r18) # 0eb54 -stw r17, 0x000c(r16) # 0eb58 -li r8, 0x1c # 0eb5c -bl pool_malloc_with_crset # 0eb60 -lwz r29, 0x0064(r31) # 0eb64 -ori r29, r29, 0x200 # 0eb68 - -major_0x0ea58_0x114: -mtcr r29 # 0eb6c -mr r28, r8 # 0eb70 -beq- cr3, major_0x0ea58_0x13c # 0eb74 -blt- cr5, major_0x0ea58_0x13c # 0eb78 -lwz r8, -0x08e8( r1) # 0eb7c - -# r8 = id -bl id_kind # 0eb80 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x04 # 0eb84 -mr r30, r8 # 0eb88 -ori r29, r29, 0x800 # 0eb8c -beq- major_0x0ea58_0x184 # 0eb90 - -major_0x0ea58_0x13c: -bso- cr4, major_0x0ea58_0x158 # 0eb94 -lwz r8, 0x00f4(r31) # 0eb98 - -# r8 = id -bl id_kind # 0eb9c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x04 # 0eba0 -mr r30, r8 # 0eba4 -ori r29, r29, 0x1000 # 0eba8 -beq- major_0x0ea58_0x184 # 0ebac - -major_0x0ea58_0x158: -mr. r8, r28 # 0ebb0 -bnel- looks_like_poolextend # 0ebb4 -addi r16, r31, 0x08 # 0ebb8 -lwz r17, 0x0008(r16) # 0ebbc -lwz r18, 0x000c(r16) # 0ebc0 -stw r17, 0x0008(r18) # 0ebc4 -stw r18, 0x000c(r17) # 0ebc8 -li r17, 0x00 # 0ebcc -stw r17, 0x0008(r16) # 0ebd0 -stw r17, 0x000c(r16) # 0ebd4 -b major_0x0e604_0x98 # 0ebd8 - -major_0x0ea58_0x184: -mr. r8, r28 # 0ebdc -stw r29, 0x0064(r31) # 0ebe0 -bne- major_0x0ea58_0x1a4 # 0ebe4 -lwz r8, 0x0028(r30) # 0ebe8 -cmpwi r8, 0x00 # 0ebec -beq+ major_0x0ea58_0x114 # 0ebf0 -lwz r17, 0x0008( r8) # 0ebf4 -stw r17, 0x0028(r30) # 0ebf8 - -major_0x0ea58_0x1a4: -bl major_0x0ea58_0x1dc # 0ebfc -lwz r16, 0x0088(r31) # 0ec00 -lwz r17, 0x0000(r31) # 0ec04 -mflr r18 # 0ec08 -stw r17, 0x0010( r8) # 0ec0c -lwz r17, 0x0074(r16) # 0ec10 -lbz r19, 0x0040(r16) # 0ec14 -lbzx r18, r18, r19 # 0ec18 -stw r18, 0x0014( r8) # 0ec1c -stw r17, 0x0018( r8) # 0ec20 -stw r18, 0x00f8(r31) # 0ec24 -mr r31, r30 # 0ec28 -bl major_0x0c8b4 # 0ec2c -b major_0x0b0fc_0x8 # 0ec30 - -major_0x0ea58_0x1dc: /* < outside referer */ -blrl # 0ec34 -.long 0x0002020d # 0ec38 -.long 0x01080003 # 0ec3c -.long 0x090a0403 # 0ec40 -.long 0x07000500 # 0ec44 -.long 0x0b0b0403 # 0ec48 -.long 0x07060505 # 0ec4c -.long 0x11000000 # 0ec50 - - - -/*********************************************************** - - major_0x0ec54 - -************************************************************ - -syscall 59 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0ec54: /* < outside referer */ -mr r16, r8 # 0ec54 -mr r17, r9 # 0ec58 -addi r8, r1, -0xb50 # 0ec5c - -# r8 = lock -bl lock # 0ec60 -mr r8, r16 # 0ec64 -mr r9, r17 # 0ec68 -mr. r8, r3 # 0ec6c -beq- major_0x0ec54_0x30 # 0ec70 - -# r8 = id -bl id_kind # 0ec74 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x04 # 0ec78 -bne+ major_0x0b07c_0x28 # 0ec7c -mr r31, r8 # 0ec80 - -major_0x0ec54_0x30: -stw r3, -0x08e8( r1) # 0ec84 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0ec88 - - - -/*********************************************************** - - major_0x0ec8c - -************************************************************ - -syscall 60 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0ec8c: /* < outside referer */ -mr r16, r8 # 0ec8c -mr r17, r9 # 0ec90 -addi r8, r1, -0xb50 # 0ec94 - -# r8 = lock -bl lock # 0ec98 -mr r8, r16 # 0ec9c -mr r9, r17 # 0eca0 -mr r8, r3 # 0eca4 - -# r8 = id -bl id_kind # 0eca8 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x02 # 0ecac -bne+ major_0x0b07c_0x28 # 0ecb0 -mr r31, r8 # 0ecb4 -cmpwi r4, 0x05 # 0ecb8 -beq- major_0x0ec8c_0x288 # 0ecbc -lwz r16, 0x0064(r31) # 0ecc0 -mtcr r16 # 0ecc4 -li r3, -0x7271 # 0ecc8 -beq+ cr7, major_0x0b0fc_0x8 # 0eccc -beq- cr4, major_0x0ec8c_0x4c # 0ecd0 -bne+ cr5, major_0x0af60_0xa4 # 0ecd4 - -major_0x0ec8c_0x4c: -lbz r16, 0x0018(r31) # 0ecd8 -cmpwi r16, 0x00 # 0ecdc -bne+ major_0x0af60_0xa4 # 0ece0 -cmpwi r4, 0x00 # 0ece4 -cmpwi cr1, r4, 0x01 # 0ece8 -beq- major_0x0ec8c_0xf8 # 0ecec -beq- cr1, major_0x0ec8c_0x10c # 0ecf0 -cmpwi r4, 0x02 # 0ecf4 -cmpwi cr1, r4, 0x03 # 0ecf8 -beq- major_0x0ec8c_0x150 # 0ecfc -beq- cr1, major_0x0ec8c_0x1c0 # 0ed00 -cmpwi r4, 0x04 # 0ed04 -bne+ major_0x0af60_0xa4 # 0ed08 -lwz r16, 0x0088(r31) # 0ed0c -li r17, 0x00 # 0ed10 -cmplwi r5, 0x00 # 0ed14 -cmplwi cr1, r5, 0x04 # 0ed18 -beq- major_0x0ec8c_0xac # 0ed1c -beq- cr1, major_0x0ec8c_0xc0 # 0ed20 -cmplwi r5, 0x08 # 0ed24 -cmplwi cr1, r5, 0x0c # 0ed28 -beq- major_0x0ec8c_0xc8 # 0ed2c -beq- cr1, major_0x0ec8c_0xd0 # 0ed30 -b major_0x0af60_0xa4 # 0ed34 - -major_0x0ec8c_0xac: -lwz r8, 0x0070(r31) # 0ed38 -lwz r9, 0x0074(r16) # 0ed3c -bl major_0x10320_0xcc # 0ed40 -lwz r17, 0x0000( r8) # 0ed44 -b major_0x0ec8c_0x36c # 0ed48 - -major_0x0ec8c_0xc0: -lwz r17, 0x0074(r16) # 0ed4c -b major_0x0ec8c_0x36c # 0ed50 - -major_0x0ec8c_0xc8: -lwz r17, 0x00f8(r31) # 0ed54 -b major_0x0ec8c_0x36c # 0ed58 - -major_0x0ec8c_0xd0: -lwz r17, 0x0040(r16) # 0ed5c -lwz r18, 0x0064(r16) # 0ed60 -rlwinm. r8, r17, 0, 27, 27 # 0ed64 -li r17, 0x02 # 0ed68 -beq- major_0x0ec8c_0x36c # 0ed6c -rlwinm. r8, r18, 0, 1, 1 # 0ed70 -li r17, 0x01 # 0ed74 -bne- major_0x0ec8c_0x36c # 0ed78 -li r17, 0x00 # 0ed7c -b major_0x0ec8c_0x36c # 0ed80 - -major_0x0ec8c_0xf8: -lwz r16, 0x0088(r31) # 0ed84 -cmplwi cr1, r5, 0xf8 # 0ed88 -andi. r17, r5, 0x07 # 0ed8c -addi r16, r16, 0xfc # 0ed90 -b major_0x0ec8c_0x124 # 0ed94 - -major_0x0ec8c_0x10c: -lwz r16, 0x0088(r31) # 0ed98 -cmplwi r5, 0x100 # 0ed9c -cmplwi cr1, r5, 0xf8 # 0eda0 -beq- major_0x0ec8c_0x144 # 0eda4 -andi. r17, r5, 0x07 # 0eda8 -addi r16, r16, 0x1fc # 0edac - -major_0x0ec8c_0x124: -add r16, r16, r5 # 0edb0 -bgt+ cr1, major_0x0af60_0xa4 # 0edb4 -bne+ major_0x0af60_0xa4 # 0edb8 -lwzu r17, 0x0004(r16) # 0edbc -lwzu r18, 0x0004(r16) # 0edc0 -lwzu r19, 0x0004(r16) # 0edc4 -lwzu r20, 0x0004(r16) # 0edc8 -b major_0x0ec8c_0x3a8 # 0edcc - -major_0x0ec8c_0x144: -lwz r17, 0x00e4(r16) # 0edd0 -li r18, 0x00 # 0edd4 -b major_0x0ec8c_0x37c # 0edd8 - -major_0x0ec8c_0x150: -lwz r16, 0x0088(r31) # 0eddc -rlwinm. r8, r7, 0, 12, 12 # 0ede0 -lwz r16, 0x00d8(r16) # 0ede4 -beq+ major_0x0af60_0xa4 # 0ede8 -cmplwi cr3, r16, 0x00 # 0edec -cmplwi r5, 0x200 # 0edf0 -cmplwi cr2, r5, 0x210 # 0edf4 -cmplwi cr1, r5, 0x1f0 # 0edf8 -beql+ cr3, panic_wrapper_0x0e280 # 0edfc -beq- major_0x0ec8c_0x1a4 # 0ee00 -beq- cr2, major_0x0ec8c_0x1b8 # 0ee04 -andi. r8, r5, 0x0f # 0ee08 -add r16, r16, r5 # 0ee0c -addi r16, r16, -0x04 # 0ee10 -bgt+ cr1, major_0x0af60_0xa4 # 0ee14 -bne+ major_0x0af60_0xa4 # 0ee18 -lwzu r17, 0x0004(r16) # 0ee1c -lwzu r18, 0x0004(r16) # 0ee20 -lwzu r19, 0x0004(r16) # 0ee24 -lwzu r20, 0x0004(r16) # 0ee28 -b major_0x0ec8c_0x3a8 # 0ee2c - -major_0x0ec8c_0x1a4: -lwz r17, 0x0200(r16) # 0ee30 -lwz r18, 0x0204(r16) # 0ee34 -lwz r19, 0x0208(r16) # 0ee38 -lwz r20, 0x020c(r16) # 0ee3c -b major_0x0ec8c_0x3a8 # 0ee40 - -major_0x0ec8c_0x1b8: -lwz r17, 0x0210(r16) # 0ee44 -b major_0x0ec8c_0x36c # 0ee48 - -major_0x0ec8c_0x1c0: -lwz r16, 0x0088(r31) # 0ee4c -li r17, 0x00 # 0ee50 -cmplwi r5, 0x00 # 0ee54 -cmplwi cr1, r5, 0x08 # 0ee58 -beq- major_0x0ec8c_0x21c # 0ee5c -beq- cr1, major_0x0ec8c_0x228 # 0ee60 -cmplwi r5, 0x10 # 0ee64 -cmplwi cr1, r5, 0x30 # 0ee68 -beq- major_0x0ec8c_0x234 # 0ee6c -beq- cr1, major_0x0ec8c_0x240 # 0ee70 -cmplwi r5, 0x1c # 0ee74 -cmplwi cr1, r5, 0x20 # 0ee78 -beq- major_0x0ec8c_0x24c # 0ee7c -beq- cr1, major_0x0ec8c_0x254 # 0ee80 -cmplwi r5, 0x24 # 0ee84 -cmplwi cr1, r5, 0x28 # 0ee88 -beq- major_0x0ec8c_0x25c # 0ee8c -beq- cr1, major_0x0ec8c_0x264 # 0ee90 -cmplwi r5, 0x2c # 0ee94 -cmplwi cr1, r5, 0x18 # 0ee98 -beq- major_0x0ec8c_0x278 # 0ee9c -beq- cr1, major_0x0ec8c_0x280 # 0eea0 -b major_0x0af60_0xa4 # 0eea4 - -major_0x0ec8c_0x21c: -lwz r17, 0x00f0(r16) # 0eea8 -lwz r18, 0x00f4(r16) # 0eeac -b major_0x0ec8c_0x37c # 0eeb0 - -major_0x0ec8c_0x228: -lwz r17, 0x00e8(r16) # 0eeb4 -lwz r18, 0x00ec(r16) # 0eeb8 -b major_0x0ec8c_0x37c # 0eebc - -major_0x0ec8c_0x234: -lwz r17, 0x00f8(r16) # 0eec0 -lwz r18, 0x00fc(r16) # 0eec4 -b major_0x0ec8c_0x37c # 0eec8 - -major_0x0ec8c_0x240: -lwz r17, 0x0070(r16) # 0eecc -lwz r18, 0x0074(r16) # 0eed0 -b major_0x0ec8c_0x37c # 0eed4 - -major_0x0ec8c_0x24c: -lwz r17, 0x00d4(r16) # 0eed8 -b major_0x0ec8c_0x36c # 0eedc - -major_0x0ec8c_0x254: -lwz r17, 0x00a4(r16) # 0eee0 -b major_0x0ec8c_0x36c # 0eee4 - -major_0x0ec8c_0x25c: -lwz r17, 0x00c4(r16) # 0eee8 -b major_0x0ec8c_0x36c # 0eeec - -major_0x0ec8c_0x264: -lbz r17, 0x0040(r16) # 0eef0 -bl major_0x0ea58_0x1dc # 0eef4 -mflr r18 # 0eef8 -lbzx r17, r18, r17 # 0eefc -b major_0x0ec8c_0x36c # 0ef00 - -major_0x0ec8c_0x278: -li r17, 0x00 # 0ef04 -b major_0x0ec8c_0x36c # 0ef08 - -major_0x0ec8c_0x280: -lwz r17, 0x00dc(r16) # 0ef0c -b major_0x0ec8c_0x36c # 0ef10 - -major_0x0ec8c_0x288: -cmplwi cr1, r5, 0x04 # 0ef14 -cmplwi r5, 0x14 # 0ef18 -beq- cr1, major_0x0ec8c_0x2c4 # 0ef1c -beq- major_0x0ec8c_0x2e4 # 0ef20 -cmplwi cr1, r5, 0x20 # 0ef24 -cmplwi r5, 0x30 # 0ef28 -beq- cr1, major_0x0ec8c_0x2f4 # 0ef2c -beq- major_0x0ec8c_0x308 # 0ef30 -cmpwi cr1, r5, 0x40 # 0ef34 -cmplwi r5, 0x3c # 0ef38 -beq- cr1, major_0x0ec8c_0x320 # 0ef3c -beq- major_0x0ec8c_0x318 # 0ef40 -cmpwi cr1, r5, 0x50 # 0ef44 -beq- cr1, major_0x0ec8c_0x34c # 0ef48 -b major_0x0af60_0xa4 # 0ef4c - -major_0x0ec8c_0x2c4: -lwz r17, 0x0074(r31) # 0ef50 -lwz r18, 0x0008(r31) # 0ef54 -lwz r18, 0x0004(r18) # 0ef58 -lhz r19, 0x001a(r31) # 0ef5c -lbz r20, 0x0018(r31) # 0ef60 -rlwimi r19, r20, 16, 8, 15 # 0ef64 -lwz r20, 0x001c(r31) # 0ef68 -b major_0x0ec8c_0x3a8 # 0ef6c - -major_0x0ec8c_0x2e4: -lwz r17, 0x0060(r31) # 0ef70 -lwz r18, 0x00c0(r31) # 0ef74 -lwz r19, 0x00c4(r31) # 0ef78 -b major_0x0ec8c_0x390 # 0ef7c - -major_0x0ec8c_0x2f4: -lwz r17, 0x00c8(r31) # 0ef80 -lwz r18, 0x00cc(r31) # 0ef84 -lwz r19, 0x00d0(r31) # 0ef88 -lwz r20, 0x00d4(r31) # 0ef8c -b major_0x0ec8c_0x3a8 # 0ef90 - -major_0x0ec8c_0x308: -lwz r17, 0x00e0(r31) # 0ef94 -lwz r18, 0x00e4(r31) # 0ef98 -lwz r19, 0x00e8(r31) # 0ef9c -b major_0x0ec8c_0x390 # 0efa0 - -major_0x0ec8c_0x318: -lwz r17, 0x0078(r31) # 0efa4 -b major_0x0ec8c_0x36c # 0efa8 - -major_0x0ec8c_0x320: -lbz r20, 0x0018(r31) # 0efac -li r17, 0x00 # 0efb0 -lwz r16, 0x0008(r31) # 0efb4 -lwz r18, 0x0070(r31) # 0efb8 -cmpwi r20, 0x00 # 0efbc -lwz r19, 0x0094(r31) # 0efc0 -lwz r20, 0x0090(r31) # 0efc4 -lwz r18, 0x0000(r18) # 0efc8 -bne- major_0x0ec8c_0x3a8 # 0efcc -lwz r17, 0x0000(r16) # 0efd0 -b major_0x0ec8c_0x3a8 # 0efd4 - -major_0x0ec8c_0x34c: -mfspr r18, 272/*sprg0*/ # 0efd8 -lwz r20, 0x0088(r31) # 0efdc -lwz r19, -0x0008(r18) # 0efe0 -cmpw r19, r31 # 0efe4 -lwz r17, 0x0004(r18) # 0efe8 -beq- major_0x0ec8c_0x36c # 0efec -lwz r17, 0x010c(r20) # 0eff0 -b major_0x0ec8c_0x36c # 0eff4 - -major_0x0ec8c_0x36c: -li r21, 0x04 # 0eff8 -stw r17, 0x0134( r6) # 0effc -stw r21, 0x0154( r6) # 0f000 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0f004 - -major_0x0ec8c_0x37c: -li r21, 0x08 # 0f008 -stw r17, 0x0134( r6) # 0f00c -stw r18, 0x013c( r6) # 0f010 -stw r21, 0x0154( r6) # 0f014 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0f018 - -major_0x0ec8c_0x390: -li r21, 0x0c # 0f01c -stw r17, 0x0134( r6) # 0f020 -stw r18, 0x013c( r6) # 0f024 -stw r19, 0x0144( r6) # 0f028 -stw r21, 0x0154( r6) # 0f02c - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0f030 - -major_0x0ec8c_0x3a8: -li r21, 0x10 # 0f034 -stw r17, 0x0134( r6) # 0f038 -stw r18, 0x013c( r6) # 0f03c -stw r19, 0x0144( r6) # 0f040 -stw r20, 0x014c( r6) # 0f044 -stw r21, 0x0154( r6) # 0f048 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0f04c - - - -/*********************************************************** - - major_0x0f050 - -************************************************************ - -syscall 61 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 4 # 0f050 - -major_0x0f050: /* < outside referer */ -mr r16, r8 # 0f050 -mr r17, r9 # 0f054 -addi r8, r1, -0xb50 # 0f058 - -# r8 = lock -bl lock # 0f05c -mr r8, r16 # 0f060 -mr r9, r17 # 0f064 -mr r8, r3 # 0f068 - -# r8 = id -bl id_kind # 0f06c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x02 # 0f070 -bne+ major_0x0b07c_0x28 # 0f074 -mr r31, r8 # 0f078 -lwz r16, 0x0064(r31) # 0f07c -mtcr r16 # 0f080 -li r3, -0x7271 # 0f084 -beq+ cr7, major_0x0b0fc_0x8 # 0f088 -beq- cr4, major_0x0f050_0x44 # 0f08c -bne+ cr5, major_0x0af60_0xa4 # 0f090 - -major_0x0f050_0x44: -lbz r16, 0x0018(r31) # 0f094 -cmpwi r16, 0x00 # 0f098 -bne+ major_0x0af60_0xa4 # 0f09c -lwz r17, 0x0134( r6) # 0f0a0 -lwz r18, 0x013c( r6) # 0f0a4 -lwz r19, 0x0144( r6) # 0f0a8 -lwz r20, 0x014c( r6) # 0f0ac -cmpwi r4, 0x00 # 0f0b0 -cmpwi cr1, r4, 0x01 # 0f0b4 -beq- major_0x0f050_0x84 # 0f0b8 -beq- cr1, major_0x0f050_0x98 # 0f0bc -cmpwi r4, 0x02 # 0f0c0 -cmpwi cr1, r4, 0x03 # 0f0c4 -beq- major_0x0f050_0xe8 # 0f0c8 -beq- cr1, major_0x0f050_0x170 # 0f0cc -b major_0x0af60_0xa4 # 0f0d0 - -major_0x0f050_0x84: -lwz r16, 0x0088(r31) # 0f0d4 -cmplwi cr1, r5, 0xf8 # 0f0d8 -andi. r8, r5, 0x07 # 0f0dc -addi r16, r16, 0xfc # 0f0e0 -b major_0x0f050_0xb0 # 0f0e4 - -major_0x0f050_0x98: -lwz r16, 0x0088(r31) # 0f0e8 -cmplwi r5, 0x100 # 0f0ec -cmplwi cr1, r5, 0xf8 # 0f0f0 -beq- major_0x0f050_0xd8 # 0f0f4 -andi. r8, r5, 0x07 # 0f0f8 -addi r16, r16, 0x1fc # 0f0fc - -major_0x0f050_0xb0: -add r16, r16, r5 # 0f100 -bgt+ cr1, major_0x0af60_0xa4 # 0f104 -bne+ major_0x0af60_0xa4 # 0f108 -li r21, 0x10 # 0f10c -stwu r17, 0x0004(r16) # 0f110 -stwu r18, 0x0004(r16) # 0f114 -stwu r19, 0x0004(r16) # 0f118 -stwu r20, 0x0004(r16) # 0f11c -stw r21, 0x0154( r6) # 0f120 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0f124 - -major_0x0f050_0xd8: -li r21, 0x04 # 0f128 -stw r17, 0x00e4(r16) # 0f12c -stw r21, 0x0154( r6) # 0f130 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0f134 - -major_0x0f050_0xe8: -lwz r16, 0x0088(r31) # 0f138 -rlwinm. r8, r7, 0, 12, 12 # 0f13c -lwz r16, 0x00d8(r16) # 0f140 -beq+ major_0x0af60_0xa4 # 0f144 -cmplwi cr3, r16, 0x00 # 0f148 -cmplwi r5, 0x200 # 0f14c -cmplwi cr2, r5, 0x210 # 0f150 -cmplwi cr1, r5, 0x1f0 # 0f154 -beql+ cr3, panic_wrapper_0x0e280 # 0f158 -beq- major_0x0f050_0x144 # 0f15c -beq- cr2, major_0x0f050_0x160 # 0f160 -andi. r8, r5, 0x0f # 0f164 -add r16, r16, r5 # 0f168 -addi r16, r16, -0x04 # 0f16c -bgt+ cr1, major_0x0af60_0xa4 # 0f170 -bne+ major_0x0af60_0xa4 # 0f174 -li r21, 0x10 # 0f178 -stwu r17, 0x0004(r16) # 0f17c -stwu r18, 0x0004(r16) # 0f180 -stwu r19, 0x0004(r16) # 0f184 -stwu r20, 0x0004(r16) # 0f188 -stw r21, 0x0154( r6) # 0f18c - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0f190 - -major_0x0f050_0x144: -li r21, 0x10 # 0f194 -stw r17, 0x0200(r16) # 0f198 -stw r18, 0x0204(r16) # 0f19c -stw r19, 0x0208(r16) # 0f1a0 -stw r20, 0x020c(r16) # 0f1a4 -stw r21, 0x0154( r6) # 0f1a8 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0f1ac - -major_0x0f050_0x160: -li r21, 0x04 # 0f1b0 -stw r17, 0x0210(r16) # 0f1b4 -stw r21, 0x0154( r6) # 0f1b8 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0f1bc - -major_0x0f050_0x170: -lwz r16, 0x0088(r31) # 0f1c0 -cmplwi r5, 0x00 # 0f1c4 -cmplwi cr1, r5, 0x08 # 0f1c8 -beq- major_0x0f050_0x1b0 # 0f1cc -beq- cr1, major_0x0f050_0x1c4 # 0f1d0 -cmplwi r5, 0x10 # 0f1d4 -beq- major_0x0f050_0x1d8 # 0f1d8 -cmplwi r5, 0x1c # 0f1dc -cmplwi cr1, r5, 0x20 # 0f1e0 -beq- major_0x0f050_0x1ec # 0f1e4 -beq- cr1, major_0x0f050_0x1fc # 0f1e8 -cmplwi r5, 0x24 # 0f1ec -cmplwi cr1, r5, 0x18 # 0f1f0 -beq- major_0x0f050_0x218 # 0f1f4 -beq- cr1, major_0x0f050_0x228 # 0f1f8 -b major_0x0af60_0xa4 # 0f1fc - -major_0x0f050_0x1b0: -li r21, 0x08 # 0f200 -stw r17, 0x00f0(r16) # 0f204 -stw r18, 0x00f4(r16) # 0f208 -stw r21, 0x0154( r6) # 0f20c - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0f210 - -major_0x0f050_0x1c4: -li r21, 0x08 # 0f214 -stw r17, 0x00e8(r16) # 0f218 -stw r18, 0x00ec(r16) # 0f21c -stw r21, 0x0154( r6) # 0f220 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0f224 - -major_0x0f050_0x1d8: -li r21, 0x08 # 0f228 -stw r17, 0x00f8(r16) # 0f22c -stw r18, 0x00fc(r16) # 0f230 -stw r21, 0x0154( r6) # 0f234 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0f238 - -major_0x0f050_0x1ec: -li r21, 0x04 # 0f23c -stw r17, 0x00d4(r16) # 0f240 -stw r21, 0x0154( r6) # 0f244 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0f248 - -major_0x0f050_0x1fc: -li r21, 0x04 # 0f24c -lwz r18, 0x00a4(r16) # 0f250 -rlwimi r18, r17, 0, 20, 23 # 0f254 -rlwimi r18, r17, 0, 31, 31 # 0f258 -stw r18, 0x00a4(r16) # 0f25c -stw r21, 0x0154( r6) # 0f260 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0f264 - -major_0x0f050_0x218: -li r21, 0x04 # 0f268 -stw r17, 0x00c4(r16) # 0f26c -stw r21, 0x0154( r6) # 0f270 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0f274 - -major_0x0f050_0x228: -li r21, 0x04 # 0f278 -stw r17, 0x00dc(r16) # 0f27c -stw r21, 0x0154( r6) # 0f280 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0f284 - - - -/*********************************************************** - - major_0x0f288 - -************************************************************ - -syscall 63 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0f288 - -major_0x0f288: /* < outside referer */ -mr r16, r8 # 0f288 -mr r17, r9 # 0f28c -addi r8, r1, -0xb50 # 0f290 - -# r8 = lock -bl lock # 0f294 -mr r8, r16 # 0f298 -mr r9, r17 # 0f29c -mr r8, r3 # 0f2a0 - -# r8 = id -bl id_kind # 0f2a4 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x02 # 0f2a8 -bne+ major_0x0b07c_0x28 # 0f2ac -stw r4, 0x00ec( r8) # 0f2b0 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0f2b4 - - - -/*********************************************************** - - major_0x0f2b8 - -************************************************************ - -syscall 114 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0f2b8 - -major_0x0f2b8: /* < outside referer */ -mr r16, r8 # 0f2b8 -mr r17, r9 # 0f2bc -addi r8, r1, -0xb50 # 0f2c0 - -# r8 = lock -bl lock # 0f2c4 -mr r8, r16 # 0f2c8 -mr r9, r17 # 0f2cc -mr r8, r3 # 0f2d0 - -# r8 = id -bl id_kind # 0f2d4 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x02 # 0f2d8 -mr r31, r8 # 0f2dc -bne+ major_0x0b07c_0x28 # 0f2e0 -mr r8, r4 # 0f2e4 - -# r8 = id -bl id_kind # 0f2e8 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x07 # 0f2ec -mr r30, r8 # 0f2f0 -bne+ major_0x0b07c_0x28 # 0f2f4 -lwz r16, 0x0064(r31) # 0f2f8 -lwz r17, 0x00e8(r31) # 0f2fc -rlwinm. r8, r16, 0, 30, 30 # 0f300 -cmplw cr1, r17, r5 # 0f304 -lwz r18, 0x0018(r30) # 0f308 -bne+ major_0x0af60_0xa4 # 0f30c -bne+ cr1, major_0x0af60_0xa4 # 0f310 -rlwinm. r8, r18, 0, 28, 28 # 0f314 -cmplwi cr1, r17, 0x04 # 0f318 -beq+ major_0x0af60_0xa4 # 0f31c -lwz r16, 0x0064(r31) # 0f320 -lhz r17, 0x022a(r30) # 0f324 -ori r16, r16, 0x40 # 0f328 -stw r16, 0x0064(r31) # 0f32c -sth r17, 0x001a(r31) # 0f330 -rlwinm. r8, r16, 0, 26, 26 # 0f334 -mr r8, r31 # 0f338 -bne- major_0x0f2b8_0x90 # 0f33c -bl major_0x13e4c # 0f340 -bl major_0x13ed8_0x8 # 0f344 - -major_0x0f2b8_0x90: -bl major_0x14af8 # 0f348 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0f34c - - - -/*********************************************************** - - NKSetTaskType - -************************************************************ - -syscall 126 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 4 # 0f350 - -NKSetTaskType: /* < outside referer */ -mr r16, r8 # 0f350 -mr r17, r9 # 0f354 -addi r8, r1, -0xb50 # 0f358 - -# r8 = lock -bl lock # 0f35c -mr r8, r16 # 0f360 -mr r9, r17 # 0f364 -mr r8, r3 # 0f368 - -# r8 = id -bl id_kind # 0f36c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x02 # 0f370 -bne+ major_0x0b07c_0x28 # 0f374 -stw r4, 0x0074( r8) # 0f378 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0f37c - - - -/*********************************************************** - - panic_wrapper_0x0f380 - -************************************************************ - -Xrefs: -convert_pmdts_to_areas -major_0x1070c -major_0x108fc -NKSetAreaAccess -major_0x10de0 -major_0x111d4 -major_0x1139c -free_list_add_page -NKMapPage -NKUnmapPages -NKMakePhysicallyContiguous -NKLockPages -NKHoldPages -major_0x12110 -major_0x12248 - -***********************************************************/ - -.align 7 # 0f380 - -panic_wrapper_0x0f380: /* < outside referer */ -b panic # 0f380 - - - -/*********************************************************** - - major_0x0f384 - -************************************************************ - -Xrefs: -setup - -***********************************************************/ - -major_0x0f384: /* < outside referer */ -addi r9, r1, -0x450 # 0f384 -lis r8, 0x5048 # 0f388 -stw r9, 0x0008( r9) # 0f38c -ori r8, r8, 0x5953 # 0f390 -stw r9, 0x000c( r9) # 0f394 -stw r8, 0x0004( r9) # 0f398 -li r8, 0x00 # 0f39c -stw r8, -0x0430( r1) # 0f3a0 -stw r8, -0x042c( r1) # 0f3a4 -stw r8, -0x03f4( r1) # 0f3a8 -lwz r8, -0x03fc( r1) # 0f3ac -stw r8, -0x03f8( r1) # 0f3b0 -blr # 0f3b4 - - - -/*********************************************************** - - convert_pmdts_to_areas - -************************************************************ - -Pretty obvious from log output. - -************************************************************ - -Xrefs: -setup - -***********************************************************/ - -.align 3 # 0f3b8 - -convert_pmdts_to_areas: /* < outside referer */ -mflr r16 # 0f3b8 -mfcr r17 # 0f3bc -stw r16, -0x0278( r1) # 0f3c0 -stw r17, -0x0274( r1) # 0f3c4 -bl 1f # 0f3c8 -.ascii "Converting PMDTs to areas^n" # 0f3cc -.short 0 # 0f3e7 -.align 2 # 0f3e9 -1: mflr r8 # 0f3ec -bl print_string # 0f3f0 -lwz r17, -0x042c( r1) # 0f3f4 -lwz r16, 0x06ac( r1) # 0f3f8 -add r17, r17, r16 # 0f3fc -stw r17, -0x042c( r1) # 0f400 -addi r27, r1, 120 # 0f404 -lis r26, 0x00 # 0f408 - -convert_pmdts_to_areas_0x54: -lwzu r25, 0x0008(r27) # 0f40c -b convert_pmdts_to_areas_0x60 # 0f410 - -convert_pmdts_to_areas_0x5c: -addi r25, r25, 0x08 # 0f414 - -convert_pmdts_to_areas_0x60: -lwz r17, 0x0004(r25) # 0f418 -lhz r15, 0x0000(r25) # 0f41c -andi. r8, r17, 0xe00 # 0f420 -lhz r16, 0x0002(r25) # 0f424 -cmplwi r8, 0x00 # 0f428 -cmplwi cr1, r8, 0xc00 # 0f42c -beq- convert_pmdts_to_areas_0x178 # 0f430 -beq- cr1, convert_pmdts_to_areas_0x2e4 # 0f434 -cmplwi cr2, r15, 0x00 # 0f438 -cmplwi cr3, r16, 0xffff # 0f43c -bne+ cr2, convert_pmdts_to_areas_0x5c # 0f440 -bne+ cr3, convert_pmdts_to_areas_0x5c # 0f444 -addis r26, r26, 0x1000 # 0f448 -cmplwi r26, 0x00 # 0f44c -bne+ convert_pmdts_to_areas_0x54 # 0f450 -li r8, 160 # 0f454 - -# r1 = kdp -# r8 = size -bl pool_malloc # 0f458 -# r8 = ptr - -mr. r31, r8 # 0f45c -beq+ panic_wrapper_0x0f380 # 0f460 -lwz r8, -0x001c( r1) # 0f464 -stw r8, 0x006c(r31) # 0f468 -lis r15, 0x68f1 # 0f46c -ori r15, r15, 0x68f1 # 0f470 -stw r15, 0x0024(r31) # 0f474 -li r16, 0x1000 # 0f478 -stw r16, 0x002c(r31) # 0f47c -lis r8, 0x00 # 0f480 -ori r8, r8, 0x8000 # 0f484 -stw r8, 0x0030(r31) # 0f488 -li r8, 0x00 # 0f48c -stw r8, 0x001c(r31) # 0f490 -lis r8, 0x00 # 0f494 -ori r8, r8, 0xe00c # 0f498 -stw r8, 0x0020(r31) # 0f49c -mr r8, r31 # 0f4a0 -bl createarea # 0f4a4 -cmpwi r9, 0x00 # 0f4a8 -beq- convert_pmdts_to_areas_0x100 # 0f4ac -mr r8, r31 # 0f4b0 -bl looks_like_poolextend # 0f4b4 - -convert_pmdts_to_areas_0x100: -li r8, 160 # 0f4b8 - -# r1 = kdp -# r8 = size -bl pool_malloc # 0f4bc -# r8 = ptr - -mr. r31, r8 # 0f4c0 -beq+ panic_wrapper_0x0f380 # 0f4c4 -lwz r8, -0x001c( r1) # 0f4c8 -stw r8, 0x006c(r31) # 0f4cc -lis r15, -0x2153 # 0f4d0 -ori r15, r15, 0xbeef # 0f4d4 -stw r15, 0x0024(r31) # 0f4d8 -li r16, 0x1000 # 0f4dc -stw r16, 0x002c(r31) # 0f4e0 -lis r8, 0x00 # 0f4e4 -ori r8, r8, 0x8000 # 0f4e8 -stw r8, 0x0030(r31) # 0f4ec -li r8, 0x00 # 0f4f0 -stw r8, 0x001c(r31) # 0f4f4 -lis r8, 0x00 # 0f4f8 -ori r8, r8, 0xe00c # 0f4fc -stw r8, 0x0020(r31) # 0f500 -mr r8, r31 # 0f504 -bl createarea # 0f508 -cmpwi r9, 0x00 # 0f50c -beq- convert_pmdts_to_areas_0x164 # 0f510 -mr r8, r31 # 0f514 -bl looks_like_poolextend # 0f518 - -convert_pmdts_to_areas_0x164: -lwz r16, -0x0278( r1) # 0f51c -lwz r17, -0x0274( r1) # 0f520 -mtlr r16 # 0f524 -mtcr r17 # 0f528 -blr # 0f52c - -convert_pmdts_to_areas_0x178: -lwz r8, -0x026c( r1) # 0f530 -cmpwi r8, 0x00 # 0f534 -beq- convert_pmdts_to_areas_0x198 # 0f538 -bl createarea # 0f53c -cmpwi r9, 0x00 # 0f540 -bne+ panic_wrapper_0x0f380 # 0f544 -li r8, 0x00 # 0f548 -stw r8, -0x026c( r1) # 0f54c - -convert_pmdts_to_areas_0x198: -li r8, 160 # 0f550 - -# r1 = kdp -# r8 = size -bl pool_malloc # 0f554 -# r8 = ptr - -mr. r31, r8 # 0f558 -beq+ panic_wrapper_0x0f380 # 0f55c -lwz r17, 0x0004(r25) # 0f560 -lhz r15, 0x0000(r25) # 0f564 -lhz r16, 0x0002(r25) # 0f568 -lis r8, 0x6172 # 0f56c -ori r8, r8, 0x6561 # 0f570 -stw r8, 0x0004(r31) # 0f574 -slwi r15, r15, 12 # 0f578 -addi r16, r16, 0x01 # 0f57c -add r15, r15, r26 # 0f580 -slwi r16, r16, 12 # 0f584 -lwz r8, 0x0ec0( r1) # 0f588 -stw r8, 0x000c(r31) # 0f58c -lwz r8, -0x001c( r1) # 0f590 -stw r8, 0x006c(r31) # 0f594 -stw r15, 0x0024(r31) # 0f598 -stw r16, 0x002c(r31) # 0f59c -stw r16, 0x0038(r31) # 0f5a0 -li r8, 0x00 # 0f5a4 -stw r8, 0x0030(r31) # 0f5a8 -lwz r18, 0x007c(r31) # 0f5ac -rlwinm r9, r17, 0, 0, 19 # 0f5b0 -stw r9, 0x0070(r31) # 0f5b4 -andi. r16, r17, 0x03 # 0f5b8 -bne- convert_pmdts_to_areas_0x20c # 0f5bc -ori r17, r17, 0x02 # 0f5c0 - -convert_pmdts_to_areas_0x20c: -bl major_0x10d38_0x58 # 0f5c4 -stw r18, 0x001c(r31) # 0f5c8 - -convert_pmdts_to_areas_0x214: -lis r8, 0x00 # 0f5cc -ori r8, r8, 0xe00c # 0f5d0 -stw r8, 0x0020(r31) # 0f5d4 -mr r8, r31 # 0f5d8 -bl createarea # 0f5dc -cmpwi r9, 0x00 # 0f5e0 -mr r31, r8 # 0f5e4 -beq+ convert_pmdts_to_areas_0x5c # 0f5e8 -lwz r9, 0x0024(r31) # 0f5ec -lwz r8, 0x006c(r31) # 0f5f0 -bl major_0x10320_0xcc # 0f5f4 -mr r24, r8 # 0f5f8 -lwz r15, 0x0024(r31) # 0f5fc -lwz r16, 0x0024(r24) # 0f600 -lwz r17, 0x0028(r31) # 0f604 -subf. r16, r15, r16 # 0f608 -stw r17, -0x0270( r1) # 0f60c -stw r16, 0x002c(r31) # 0f610 -beq- convert_pmdts_to_areas_0x2b0 # 0f614 -bltl+ panic_wrapper_0x0f380 # 0f618 -mr r8, r31 # 0f61c -bl createarea # 0f620 -cmpwi r9, 0x00 # 0f624 -mr r30, r8 # 0f628 -bnel+ panic_wrapper_0x0f380 # 0f62c -lwz r15, 0x0028(r24) # 0f630 -lwz r16, -0x0270( r1) # 0f634 -subf. r16, r15, r16 # 0f638 -ble+ convert_pmdts_to_areas_0x5c # 0f63c -li r8, 160 # 0f640 - -# r1 = kdp -# r8 = size -bl pool_malloc # 0f644 -# r8 = ptr - -mr. r31, r8 # 0f648 -beq+ panic_wrapper_0x0f380 # 0f64c -li r8, 0x9c # 0f650 - -convert_pmdts_to_areas_0x29c: -lwzx r9, r8, r30 # 0f654 -stwx r9, r8, r31 # 0f658 -cmpwi r8, 0x00 # 0f65c -addi r8, r8, -0x04 # 0f660 -bgt+ convert_pmdts_to_areas_0x29c # 0f664 - -convert_pmdts_to_areas_0x2b0: -lwz r9, 0x0024(r31) # 0f668 -lwz r15, 0x0028(r24) # 0f66c -lwz r16, -0x0270( r1) # 0f670 -subf. r16, r15, r16 # 0f674 -addi r15, r15, 0x01 # 0f678 -blel+ panic_wrapper_0x0f380 # 0f67c -stw r16, 0x002c(r31) # 0f680 -stw r15, 0x0024(r31) # 0f684 -subf r9, r9, r15 # 0f688 -lwz r8, 0x0070(r31) # 0f68c -add r8, r8, r9 # 0f690 -stw r8, 0x0070(r31) # 0f694 -b convert_pmdts_to_areas_0x214 # 0f698 - -convert_pmdts_to_areas_0x2e4: -li r8, 160 # 0f69c - -# r1 = kdp -# r8 = size -bl pool_malloc # 0f6a0 -# r8 = ptr - -mr. r31, r8 # 0f6a4 -beq+ panic_wrapper_0x0f380 # 0f6a8 -lwz r17, 0x0004(r25) # 0f6ac -lhz r15, 0x0000(r25) # 0f6b0 -lhz r16, 0x0002(r25) # 0f6b4 -lis r8, 0x6172 # 0f6b8 -ori r8, r8, 0x6561 # 0f6bc -stw r8, 0x0004(r31) # 0f6c0 -slwi r15, r15, 12 # 0f6c4 -addi r16, r16, 0x01 # 0f6c8 -add r15, r15, r26 # 0f6cc -slwi r16, r16, 12 # 0f6d0 -lwz r8, 0x0ec0( r1) # 0f6d4 -stw r8, 0x000c(r31) # 0f6d8 -lwz r8, -0x001c( r1) # 0f6dc -stw r8, 0x006c(r31) # 0f6e0 -stw r15, 0x0024(r31) # 0f6e4 -stw r16, 0x002c(r31) # 0f6e8 -stw r16, 0x0038(r31) # 0f6ec -li r8, 0x00 # 0f6f0 -stw r8, 0x0030(r31) # 0f6f4 -li r8, 0x07 # 0f6f8 -stw r8, 0x001c(r31) # 0f6fc -lis r8, 0x00 # 0f700 -ori r8, r8, 0x600c # 0f704 -stw r8, 0x0020(r31) # 0f708 -rlwinm r8, r17, 22, 0, 29 # 0f70c -stw r8, 0x0040(r31) # 0f710 -lwz r8, 0x0008(r31) # 0f714 -ori r8, r8, 0x40 # 0f718 -lwz r9, -0x0430( r1) # 0f71c -cmpwi r9, 0x00 # 0f720 -bgt- convert_pmdts_to_areas_0x374 # 0f724 -ori r8, r8, 0x80 # 0f728 - -convert_pmdts_to_areas_0x374: -stw r8, 0x0008(r31) # 0f72c -cmpwi r15, 0x00 # 0f730 -bne- convert_pmdts_to_areas_0x388 # 0f734 -stw r31, -0x026c( r1) # 0f738 -b convert_pmdts_to_areas_0x5c # 0f73c - -convert_pmdts_to_areas_0x388: -lwz r18, -0x026c( r1) # 0f740 -cmpwi r18, 0x00 # 0f744 -beq- convert_pmdts_to_areas_0x3c8 # 0f748 -lwz r8, 0x0024(r18) # 0f74c -lwz r9, 0x002c(r18) # 0f750 -add r19, r8, r9 # 0f754 -cmplw r19, r15 # 0f758 -bne- convert_pmdts_to_areas_0x3c8 # 0f75c -add r9, r9, r16 # 0f760 -addi r19, r9, -0x01 # 0f764 -stw r9, 0x002c(r18) # 0f768 -stw r9, 0x0038(r18) # 0f76c -stw r19, 0x0028(r18) # 0f770 -mr r8, r31 # 0f774 -bl looks_like_poolextend # 0f778 -b convert_pmdts_to_areas_0x5c # 0f77c - -convert_pmdts_to_areas_0x3c8: -lwz r8, 0x0008(r31) # 0f780 -ori r8, r8, 0x80 # 0f784 -stw r8, 0x0008(r31) # 0f788 -mr r8, r31 # 0f78c -bl createarea # 0f790 -cmpwi r9, 0x00 # 0f794 -bne+ panic_wrapper_0x0f380 # 0f798 -b convert_pmdts_to_areas_0x5c # 0f79c - - - -/*********************************************************** - - NKGetPageSizeClasses - -************************************************************ - -syscall 68 - -************************************************************ - -Xrefs: -syscall - -************************************************************ - -> r1 = kdp - -< r3 = pageClass - -***********************************************************/ - -.align 5 # 0f7a0 - -NKGetPageSizeClasses: /* < outside referer */ -li r3, 0x01 # 0f7a0 -b syscall_return # 0f7a4 - - - -/*********************************************************** - - NKGetPageSize - -************************************************************ - -syscall 69 - -************************************************************ - -Xrefs: -syscall - -************************************************************ - -> r1 = kdp -> r3 = pageClass - -< r3 = byteCount - -***********************************************************/ - -.align 3 # 0f7a8 - -NKGetPageSize: /* < outside referer */ -cmpwi r3, 0x01 # 0f7a8 -bne+ syscall_return_paramErr # 0f7ac -lwz r3, 0x0f30( r1) # kdp.u32_cpuinfo_page_size -b syscall_return # 0f7b4 - - - -/*********************************************************** - - major_0x0f7b8 - -************************************************************ - -syscall 70 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0f7b8 - -major_0x0f7b8: /* < outside referer */ -mr r16, r8 # 0f7b8 -mr r17, r9 # 0f7bc -addi r8, r1, -0xb50 # 0f7c0 - -# r8 = lock -bl lock # 0f7c4 -mr r8, r16 # 0f7c8 -mr r9, r17 # 0f7cc -mfspr r16, 272/*sprg0*/ # 0f7d0 -lwz r17, -0x0008(r16) # 0f7d4 -mr r8, r3 # 0f7d8 -lwz r9, 0x006c(r17) # 0f7dc -lwz r16, 0x0008( r9) # 0f7e0 -rlwinm. r16, r16, 0, 30, 30 # 0f7e4 -bne+ major_0x0af60_0xa4 # 0f7e8 -bl NKCreateAddressSpaceSub # 0f7ec -sync # 0f7f0 -lwz r16, -0x0b50( r1) # 0f7f4 -cmpwi cr1, r16, 0x00 # 0f7f8 -li r16, 0x00 # 0f7fc -bne+ cr1, major_0x0f7b8_0x54 # 0f800 -mflr r16 # 0f804 -bl panic # 0f808 - -major_0x0f7b8_0x54: -stw r16, -0x0b50( r1) # 0f80c -mr. r3, r8 # 0f810 -li r4, 0x00 # 0f814 -bne+ syscall_return # 0f818 -lwz r4, 0x0000( r9) # 0f81c -b syscall_return # 0f820 - - - -/*********************************************************** - - NKCreateAddressSpaceSub - -************************************************************ - -Guessing by strings -- but maybe that name applies to syscall? - -************************************************************ - -Xrefs: -setup -major_0x0f7b8 - -***********************************************************/ - -NKCreateAddressSpaceSub: /* < outside referer */ -cmpwi r8, 0x00 # 0f824 -mr r27, r9 # 0f828 -mflr r30 # 0f82c -bne- NKCreateAddressSpaceSub_0x1c # 0f830 -mfspr r15, 272/*sprg0*/ # 0f834 -lwz r28, -0x0338(r15) # 0f838 -b NKCreateAddressSpaceSub_0x30 # 0f83c - -NKCreateAddressSpaceSub_0x1c: -# r8 = id -bl id_kind # 0f840 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0a # 0f844 -mr r28, r8 # 0f848 -bne- NKCreateAddressSpaceSub_0x1c8 # 0f84c -lwz r28, 0x0018(r28) # 0f850 - -NKCreateAddressSpaceSub_0x30: -lwz r29, 0x0000(r28) # 0f854 -bl 1f # 0f858 -.ascii "NKCreateAddressSpaceSub - group at 0x" # 0f85c -.short 0 # 0f881 -.align 2 # 0f883 -1: mflr r8 # 0f884 -bl print_string # 0f888 -mr r8, r28 # 0f88c -bl print_word_hex # 0f890 -mr r8, r29 # 0f894 -bl print_word_hex # 0f898 -bl 1f # 0f89c -.ascii "^n" # 0f8a0 -.short 0 # 0f8a2 -.align 2 # 0f8a4 -1: mflr r8 # 0f8a4 -bl print_string # 0f8a8 -li r8, 0xc0 # 0f8ac - -# r1 = kdp -# r8 = size -bl pool_malloc # 0f8b0 -# r8 = ptr - -mr. r31, r8 # 0f8b4 -beq- NKCreateAddressSpaceSub_0x1c0 # 0f8b8 -stw r29, 0x0070(r31) # 0f8bc -li r9, 0x08 # 0f8c0 - -# r1 = kdp -# r9 = kind -bl alloc_id # 0f8c4 -cmpwi r8, 0x00 # 0f8c8 -beq- NKCreateAddressSpaceSub_0x1b8 # 0f8cc -stw r8, 0x0000(r31) # 0f8d0 -lwz r16, 0x0048(r28) # 0f8d4 -addi r16, r16, 0x01 # 0f8d8 -clrlwi. r16, r16, 0x0c # 0f8dc -beq- NKCreateAddressSpaceSub_0x1a4 # 0f8e0 -stw r16, 0x0048(r28) # 0f8e4 -addi r16, r16, -0x01 # 0f8e8 -li r17, 0x3c # 0f8ec -oris r16, r16, 0x2000 # 0f8f0 -addi r18, r31, 0x30 # 0f8f4 - -NKCreateAddressSpaceSub_0xd4: -cmpwi r17, 0x00 # 0f8f8 -rlwimi r16, r17, 18, 8, 11 # 0f8fc -stwx r16, r17, r18 # 0f900 -addi r17, r17, -0x04 # 0f904 -bne+ NKCreateAddressSpaceSub_0xd4 # 0f908 -lis r8, 0x5350 # 0f90c -ori r8, r8, 0x4143 # 0f910 -stw r8, 0x0004(r31) # 0f914 -addi r16, r31, 0x10 # 0f918 -lis r17, 0x7273 # 0f91c -stw r16, 0x0008(r16) # 0f920 -ori r17, r17, 0x7276 # 0f924 -stw r16, 0x000c(r16) # 0f928 -stw r17, 0x0004(r16) # 0f92c -addi r16, r31, 0x20 # 0f930 -lis r17, 0x6172 # 0f934 -stw r16, 0x0008(r16) # 0f938 -ori r17, r17, 0x6561 # 0f93c -stw r16, 0x000c(r16) # 0f940 -stw r17, 0x0004(r16) # 0f944 -li r8, 160 # 0f948 - -# r1 = kdp -# r8 = size -bl pool_malloc # 0f94c -# r8 = ptr - -mr. r29, r8 # 0f950 -beq- NKCreateAddressSpaceSub_0x1a0 # 0f954 -lis r8, 0x4152 # 0f958 -ori r8, r8, 0x4541 # 0f95c -stw r8, 0x0004(r29) # 0f960 -lis r8, -0x01 # 0f964 -ori r8, r8, 0xffff # 0f968 -stw r8, 0x0024(r29) # 0f96c -stw r8, 0x0028(r29) # 0f970 -li r8, 0x100 # 0f974 -stw r8, 0x0008(r29) # 0f978 -lwz r8, 0x0000(r31) # 0f97c -stw r8, 0x0010(r29) # 0f980 -addi r16, r31, 0x20 # 0f984 -addi r29, r29, 0x54 # 0f988 -stw r16, 0x0000(r29) # 0f98c -stw r16, 0x0008(r29) # 0f990 -lwz r17, 0x000c(r16) # 0f994 -stw r17, 0x000c(r29) # 0f998 -stw r29, 0x0008(r17) # 0f99c -stw r29, 0x000c(r16) # 0f9a0 -lwz r18, 0x0000(r27) # 0f9a4 -stw r18, 0x0074(r31) # 0f9a8 -lwz r17, 0x0018(r27) # 0f9ac -addi r17, r17, 0x01 # 0f9b0 -stw r17, 0x0018(r27) # 0f9b4 -li r8, 0x00 # 0f9b8 -mr r9, r31 # 0f9bc -b NKCreateAddressSpaceSub_0x1cc # 0f9c0 - -NKCreateAddressSpaceSub_0x1a0: -lwz r8, 0x0000(r31) # 0f9c4 - -NKCreateAddressSpaceSub_0x1a4: -bl major_0x15300 # 0f9c8 -mr r8, r31 # 0f9cc -bl looks_like_poolextend # 0f9d0 -li r8, -0x7272 # 0f9d4 -b NKCreateAddressSpaceSub_0x1cc # 0f9d8 - -NKCreateAddressSpaceSub_0x1b8: -mr r8, r31 # 0f9dc -bl looks_like_poolextend # 0f9e0 - -NKCreateAddressSpaceSub_0x1c0: -li r8, -0x726e # 0f9e4 -b NKCreateAddressSpaceSub_0x1cc # 0f9e8 - -NKCreateAddressSpaceSub_0x1c8: -li r8, -0x7273 # 0f9ec - -NKCreateAddressSpaceSub_0x1cc: -mtlr r30 # 0f9f0 -blr # 0f9f4 - - - -/*********************************************************** - - major_0x0f9f8 - -************************************************************ - -syscall 71 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0f9f8 - -major_0x0f9f8: /* < outside referer */ -mr r16, r8 # 0f9f8 -mr r17, r9 # 0f9fc -addi r8, r1, -0xb50 # 0fa00 - -# r8 = lock -bl lock # 0fa04 -mr r8, r16 # 0fa08 -mr r9, r17 # 0fa0c -mr r8, r3 # 0fa10 - -# r8 = id -bl id_kind # 0fa14 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x08 # 0fa18 -bne+ major_0x0b07c_0x28 # 0fa1c -mr r31, r8 # 0fa20 -lwz r16, 0x000c(r31) # 0fa24 -cmpwi r16, 0x00 # 0fa28 -bne+ major_0x0af60_0xa4 # 0fa2c -addi r16, r31, 0x10 # 0fa30 -lwz r17, 0x0018(r31) # 0fa34 -cmpw r16, r17 # 0fa38 -bne+ major_0x0af60_0xa4 # 0fa3c -addi r16, r31, 0x20 # 0fa40 -lwz r17, 0x0028(r31) # 0fa44 -cmpw r16, r17 # 0fa48 -bne+ major_0x0af60_0xa4 # 0fa4c -lwz r8, 0x0074(r31) # 0fa50 - -# r8 = id -bl id_kind # 0fa54 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -lwz r17, 0x0018( r8) # 0fa58 -addi r17, r17, -0x01 # 0fa5c -stw r17, 0x0018( r8) # 0fa60 -lwz r8, 0x0000(r31) # 0fa64 -bl major_0x15300 # 0fa68 -mr r8, r31 # 0fa6c -bl looks_like_poolextend # 0fa70 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0fa74 - - - -/*********************************************************** - - NKCurrentAddressSpace - -************************************************************ - -syscall 117 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0fa78 - -NKCurrentAddressSpace: /* < outside referer */ -mfspr r16, 272/*sprg0*/ # 0fa78 -lwz r17, -0x001c(r16) # 0fa7c -lwz r3, 0x0000(r17) # 0fa80 -b syscall_return # 0fa84 - - - -/*********************************************************** - - NKHomeAddressSpace - -************************************************************ - -syscall 118 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 0fa88 - -NKHomeAddressSpace: /* < outside referer */ -mfspr r16, 272/*sprg0*/ # 0fa88 -lwz r17, -0x0008(r16) # 0fa8c -lwz r18, 0x006c(r17) # 0fa90 -lwz r19, 0x0014(r18) # 0fa94 -lwz r3, 0x0000(r19) # 0fa98 -b syscall_return # 0fa9c - - - -/*********************************************************** - - NKSetTaskAddressSpace - -************************************************************ - -syscall 119 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 5 # 0faa0 - -NKSetTaskAddressSpace: /* < outside referer */ -mr r16, r8 # 0faa0 -mr r17, r9 # 0faa4 -addi r8, r1, -0xb50 # 0faa8 - -# r8 = lock -bl lock # 0faac -mr r8, r16 # 0fab0 -mr r9, r17 # 0fab4 -mr r8, r3 # 0fab8 - -# r8 = id -bl id_kind # 0fabc -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -mr r31, r8 # 0fac0 -cmpwi r9, 0x02 # 0fac4 -bne+ major_0x0b07c_0x28 # 0fac8 -lwz r16, 0x0064(r31) # 0facc -mtcr r16 # 0fad0 -li r3, -0x7271 # 0fad4 -beq+ cr7, major_0x0b0fc_0x8 # 0fad8 -bne+ cr5, major_0x0af60_0xa4 # 0fadc -lbz r16, 0x0018(r31) # 0fae0 -cmpwi r16, 0x00 # 0fae4 -bne+ major_0x0af60_0xa4 # 0fae8 -mr r8, r4 # 0faec - -# r8 = id -bl id_kind # 0faf0 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -mr r30, r8 # 0faf4 -lwz r16, 0x0060(r31) # 0faf8 -cmpwi r9, 0x08 # 0fafc -lwz r17, 0x0074(r30) # 0fb00 -bne+ major_0x0b07c_0x28 # 0fb04 -cmpw r16, r17 # 0fb08 -bne+ major_0x0af60_0xa4 # 0fb0c -lwz r17, 0x0070(r31) # 0fb10 -lwz r16, 0x000c(r17) # 0fb14 -addi r16, r16, -0x01 # 0fb18 -stw r16, 0x000c(r17) # 0fb1c -lwz r16, 0x000c(r30) # 0fb20 -addi r16, r16, 0x01 # 0fb24 -stw r16, 0x000c(r30) # 0fb28 -stw r30, 0x0070(r31) # 0fb2c - -# r1 = kdp -b syscall_return_assert_lock_unheld # 0fb30 - - - -/*********************************************************** - - major_0x0fb34 - -************************************************************ - -syscall 72 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x0fb34: /* < outside referer */ -mr r16, r8 # 0fb34 -mr r17, r9 # 0fb38 -addi r8, r1, -0xb50 # 0fb3c - -# r8 = lock -bl lock # 0fb40 -mr r8, r16 # 0fb44 -mr r9, r17 # 0fb48 -mr. r8, r3 # 0fb4c -mfspr r28, 272/*sprg0*/ # 0fb50 -lwz r30, -0x001c(r28) # 0fb54 -beq- major_0x0fb34_0x38 # 0fb58 - -# r8 = id -bl id_kind # 0fb5c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x08 # 0fb60 -mr r30, r8 # 0fb64 -bne+ major_0x0b07c_0x28 # 0fb68 - -major_0x0fb34_0x38: -li r8, 160 # 0fb6c - -# r1 = kdp -# r8 = size -bl pool_malloc # 0fb70 -# r8 = ptr - -mr. r31, r8 # 0fb74 -beq+ major_0x0af60 # 0fb78 -stw r30, 0x006c(r31) # 0fb7c -stw r4, 0x001c(r31) # 0fb80 -stw r5, 0x002c(r31) # 0fb84 -lwz r8, 0x0134( r6) # 0fb88 -stw r8, 0x0030(r31) # 0fb8c -lwz r8, 0x013c( r6) # 0fb90 -stw r8, 0x0020(r31) # 0fb94 -lwz r8, 0x0144( r6) # 0fb98 -stw r8, 0x0024(r31) # 0fb9c -mr r8, r31 # 0fba0 -bl createarea # 0fba4 -sync # 0fba8 -lwz r16, -0x0b50( r1) # 0fbac -cmpwi cr1, r16, 0x00 # 0fbb0 -li r16, 0x00 # 0fbb4 -bne+ cr1, major_0x0fb34_0x90 # 0fbb8 -mflr r16 # 0fbbc -bl panic # 0fbc0 - -major_0x0fb34_0x90: -stw r16, -0x0b50( r1) # 0fbc4 -mr. r3, r9 # 0fbc8 -bne- major_0x0fb34_0xb0 # 0fbcc -lwz r8, 0x0024(r31) # 0fbd0 -stw r8, 0x0144( r6) # 0fbd4 -lwz r8, 0x0000(r31) # 0fbd8 -stw r8, 0x014c( r6) # 0fbdc -b syscall_return # 0fbe0 - -major_0x0fb34_0xb0: -bl looks_like_poolextend # 0fbe4 -b syscall_return # 0fbe8 - - - -/*********************************************************** - - createarea - -************************************************************ - -Xrefs: -convert_pmdts_to_areas -major_0x0fb34 -major_0x10414 - -***********************************************************/ - -createarea: /* < outside referer */ -mflr r16 # 0fbec -mfspr r9, 272/*sprg0*/ # 0fbf0 -stw r16, -0x0040( r9) # 0fbf4 -stmw r25, -0x003c( r9) # 0fbf8 -mr r31, r8 # 0fbfc -li r9, -0x32 # 0fc00 -lwz r16, 0x0008(r31) # 0fc04 -lwz r17, 0x0020(r31) # 0fc08 -rlwinm. r16, r16, 0, 28, 28 # 0fc0c -lis r16, -0x04 # 0fc10 -ori r16, r16, 0x13e0 # 0fc14 -beq- createarea_0x38 # 0fc18 -lis r16, -0x07 # 0fc1c -ori r16, r16, 0x9be0 # 0fc20 - -createarea_0x38: -and. r16, r16, r17 # 0fc24 -bne- major_0x10320_0xb8 # 0fc28 -andi. r16, r17, 0x1f # 0fc2c -cmpwi cr1, r16, 0x0c # 0fc30 -beq- createarea_0x50 # 0fc34 -blt- cr1, major_0x10320_0xb8 # 0fc38 - -createarea_0x50: -bne- createarea_0x5c # 0fc3c -ori r17, r17, 0x0c # 0fc40 -stw r17, 0x0020(r31) # 0fc44 - -createarea_0x5c: -andi. r16, r17, 0x1f # 0fc48 -li r18, -0x01 # 0fc4c -slw r18, r18, r16 # 0fc50 -stw r18, 0x0078(r31) # 0fc54 -rlwinm. r16, r17, 27, 27, 31 # 0fc58 -bne- major_0x10320_0xb8 # 0fc5c -addi r16, r16, 0x0c # 0fc60 -li r18, -0x01 # 0fc64 -slw r18, r18, r16 # 0fc68 -stw r18, 0x007c(r31) # 0fc6c -neg r16, r18 # 0fc70 -not r19, r18 # 0fc74 -stw r16, 0x0068(r31) # 0fc78 -lwz r16, 0x002c(r31) # 0fc7c -add r16, r16, r19 # 0fc80 -and. r16, r16, r18 # 0fc84 -stw r16, 0x002c(r31) # 0fc88 -beq- major_0x10320_0xb8 # 0fc8c -lwz r18, 0x001c(r31) # 0fc90 -lis r16, -0x01 # 0fc94 -ori r16, r16, 0xff10 # 0fc98 -and. r16, r16, r18 # 0fc9c -bne- major_0x10320_0xb8 # 0fca0 -lwz r16, 0x0070(r31) # 0fca4 -li r17, 0x200 # 0fca8 -rlwimi r17, r16, 0, 0, 19 # 0fcac -bl major_0x10cb8 # 0fcb0 -stw r16, 0x0070(r31) # 0fcb4 -stw r17, 0x0074(r31) # 0fcb8 -mr r8, r31 # 0fcbc -li r9, 0x0b # 0fcc0 - -# r1 = kdp -# r9 = kind -bl alloc_id # 0fcc4 -cmpwi r8, 0x00 # 0fcc8 -beq- major_0x10320 # 0fccc -stw r8, 0x0000(r31) # 0fcd0 -mfspr r16, 272/*sprg0*/ # 0fcd4 -lwz r17, -0x0008(r16) # 0fcd8 -lwz r18, 0x0060(r17) # 0fcdc -lwz r30, 0x006c(r17) # 0fce0 -stw r18, 0x000c(r31) # 0fce4 -lwz r16, 0x006c(r31) # 0fce8 -lwz r17, 0x0000(r16) # 0fcec -stw r17, 0x0010(r31) # 0fcf0 -lwz r16, 0x0008(r30) # 0fcf4 -rlwinm. r16, r16, 0, 30, 30 # 0fcf8 -bne- major_0x10320_0x64 # 0fcfc -lis r16, 0x4152 # 0fd00 -ori r16, r16, 0x4541 # 0fd04 -stw r16, 0x0004(r31) # 0fd08 -lwz r17, 0x0020(r31) # 0fd0c -lwz r16, 0x0030(r31) # 0fd10 -addi r16, r16, 0xfff # 0fd14 -rlwinm r16, r16, 0, 0, 19 # 0fd18 -stw r16, 0x0030(r31) # 0fd1c -rlwinm r16, r17, 0, 17, 18 # 0fd20 -cmplwi cr7, r16, 0x6000 # 0fd24 -rlwinm. r16, r17, 0, 17, 17 # 0fd28 -beq- cr7, createarea_0x150 # 0fd2c -bne- createarea_0x150 # 0fd30 -crset 4*cr7 + gt # 0fd34 -crclr 4*cr7 + lt # 0fd38 - -createarea_0x150: -rlwinm. r16, r17, 0, 17, 18 # 0fd3c -lwz r18, 0x0024(r31) # 0fd40 -lwz r19, 0x002c(r31) # 0fd44 -blt- cr7, createarea_0x16c # 0fd48 -bne- createarea_0x170 # 0fd4c -li r18, 0x00 # 0fd50 -b createarea_0x170 # 0fd54 - -createarea_0x16c: -subf r18, r19, r18 # 0fd58 - -createarea_0x170: -lwz r16, 0x0078(r31) # 0fd5c -and r18, r18, r16 # 0fd60 -stw r18, 0x0024(r31) # 0fd64 -add r16, r18, r19 # 0fd68 -addi r16, r16, -0x01 # 0fd6c -stw r16, 0x0028(r31) # 0fd70 -bl 1f # 0fd74 -.ascii " CreateArea [ " # 0fd78 -.short 0 # 0fd86 -.align 2 # 0fd88 -1: mflr r8 # 0fd88 -bl print_string # 0fd8c -mr r8, r18 # 0fd90 -bl print_word_hex # 0fd94 -mr r8, r16 # 0fd98 -bl print_word_hex # 0fd9c -bl 1f # 0fda0 -.ascii "] ID " # 0fda4 -.short 0 # 0fda9 -.align 2 # 0fdab -1: mflr r8 # 0fdac -bl print_string # 0fdb0 -lwz r8, 0x0000(r31) # 0fdb4 -mr r8, r8 # 0fdb8 -bl print_word_hex # 0fdbc -bgt- cr7, createarea_0x1f4 # 0fdc0 -blt- cr7, createarea_0x218 # 0fdc4 -bl 1f # 0fdc8 -.ascii "placed" # 0fdcc -.short 0 # 0fdd2 -.align 2 # 0fdd4 -1: mflr r8 # 0fdd4 -bl print_string # 0fdd8 -b createarea_0x234 # 0fddc - -createarea_0x1f4: -bl 1f # 0fde0 -.ascii "placed at or above" # 0fde4 -.short 0 # 0fdf6 -.align 2 # 0fdf8 -1: mflr r8 # 0fdf8 -bl print_string # 0fdfc -b createarea_0x234 # 0fe00 - -createarea_0x218: -bl 1f # 0fe04 -.ascii "placed below" # 0fe08 -.short 0 # 0fe14 -.align 2 # 0fe16 -1: mflr r8 # 0fe18 -bl print_string # 0fe1c - -createarea_0x234: -lwz r8, 0x006c(r31) # 0fe20 -lwz r16, 0x0028(r31) # 0fe24 -lwz r9, 0x0024(r31) # 0fe28 -cmplw r9, r16 # 0fe2c -bge- major_0x10320_0x64 # 0fe30 -bl major_0x10320_0xcc # 0fe34 -mr r30, r8 # 0fe38 -lwz r14, 0x0024(r31) # 0fe3c -lwz r15, 0x0028(r31) # 0fe40 -lwz r16, 0x0030(r31) # 0fe44 -lwz r17, 0x0024(r30) # 0fe48 -lwz r18, 0x0028(r30) # 0fe4c -lwz r19, 0x0030(r30) # 0fe50 -lwz r21, 0x006c(r31) # 0fe54 -cmpwi r17, -0x01 # 0fe58 -add r8, r15, r16 # 0fe5c -add r9, r15, r19 # 0fe60 -beq- createarea_0x2b8 # 0fe64 -cmplw r8, r17 # 0fe68 -cmplw cr1, r9, r17 # 0fe6c -bge- createarea_0x28c # 0fe70 -blt- cr1, createarea_0x2b8 # 0fe74 - -createarea_0x28c: -beq- cr7, major_0x10320_0x64 # 0fe78 -bl 1f # 0fe7c -.ascii " ... bc search^n" # 0fe80 -.short 0 # 0fe90 -.align 2 # 0fe92 -1: mflr r8 # 0fe94 -bl print_string # 0fe98 -bgt- cr7, createarea_0x34c # 0fe9c -b createarea_0x31c # 0fea0 - -createarea_0x2b8: -addi r21, r21, 0x20 # 0fea4 -lwz r20, 0x0060(r30) # 0fea8 -cmpw r20, r21 # 0feac -beq- createarea_0x39c # 0feb0 -addi r20, r20, -0x54 # 0feb4 -lwz r17, 0x0024(r20) # 0feb8 -lwz r18, 0x0028(r20) # 0febc -lwz r19, 0x0030(r20) # 0fec0 -add r8, r18, r16 # 0fec4 -add r9, r18, r19 # 0fec8 -cmplw r8, r14 # 0fecc -cmplw cr1, r9, r14 # 0fed0 -bge- createarea_0x2f0 # 0fed4 -blt- cr1, createarea_0x374 # 0fed8 - -createarea_0x2f0: -beq- cr7, major_0x10320_0x64 # 0fedc -bl 1f # 0fee0 -.ascii " ... ab search^n" # 0fee4 -.short 0 # 0fef4 -.align 2 # 0fef6 -1: mflr r8 # 0fef8 -bl print_string # 0fefc -bgt- cr7, createarea_0x34c # 0ff00 -b createarea_0x31c # 0ff04 - -createarea_0x31c: -subf r8, r19, r17 # 0ff08 -subf r9, r16, r17 # 0ff0c -cmplw r8, r9 # 0ff10 -lwz r21, 0x002c(r31) # 0ff14 -ble- createarea_0x334 # 0ff18 -mr r8, r9 # 0ff1c - -createarea_0x334: -subf r8, r21, r8 # 0ff20 -cmplw r8, r14 # 0ff24 -addi r18, r8, 0x01 # 0ff28 -lwz r19, 0x002c(r31) # 0ff2c -bge- major_0x10320_0x64 # 0ff30 -b createarea_0x170 # 0ff34 - -createarea_0x34c: -add r8, r18, r19 # 0ff38 -add r9, r18, r16 # 0ff3c -lwz r20, 0x0078(r31) # 0ff40 -cmplw r8, r9 # 0ff44 -neg r21, r20 # 0ff48 -bge- createarea_0x368 # 0ff4c -mr r8, r9 # 0ff50 - -createarea_0x368: -add r18, r8, r21 # 0ff54 -lwz r19, 0x002c(r31) # 0ff58 -b createarea_0x170 # 0ff5c - -createarea_0x374: -addi r19, r31, 0x54 # 0ff60 -addi r20, r20, 0x54 # 0ff64 -lwz r16, 0x0000(r20) # 0ff68 -stw r16, 0x0000(r19) # 0ff6c -lwz r16, 0x0008(r20) # 0ff70 -stw r16, 0x0008(r19) # 0ff74 -stw r20, 0x000c(r19) # 0ff78 -stw r19, 0x000c(r16) # 0ff7c -stw r19, 0x0008(r20) # 0ff80 -b createarea_0x3b8 # 0ff84 - -createarea_0x39c: -addi r19, r31, 0x54 # 0ff88 -stw r20, 0x0000(r19) # 0ff8c -stw r20, 0x000c(r19) # 0ff90 -lwz r16, 0x0008(r20) # 0ff94 -stw r16, 0x0008(r19) # 0ff98 -stw r19, 0x000c(r16) # 0ff9c -stw r19, 0x0008(r20) # 0ffa0 - -createarea_0x3b8: -addi r16, r31, 0x90 # 0ffa4 -lis r17, 0x6665 # 0ffa8 -stw r16, 0x0008(r16) # 0ffac -ori r17, r17, 0x6e63 # 0ffb0 -stw r16, 0x000c(r16) # 0ffb4 -stw r17, 0x0004(r16) # 0ffb8 -lwz r16, 0x0020(r31) # 0ffbc -lwz r17, 0x0008(r31) # 0ffc0 -rlwinm. r8, r16, 0, 16, 16 # 0ffc4 -bne- createarea_0x64c # 0ffc8 -rlwinm. r8, r17, 0, 25, 25 # 0ffcc -bne- createarea_0x41c # 0ffd0 -lwz r8, 0x002c(r31) # 0ffd4 -rlwinm r8, r8, 22, 10, 29 # 0ffd8 -mr r29, r8 # 0ffdc - -# r1 = kdp -# r8 = size -bl pool_malloc # 0ffe0 -# r8 = ptr - -cmpwi r8, 0x00 # 0ffe4 -stw r8, 0x0040(r31) # 0ffe8 -beq- createarea_0x460 # 0ffec -lwz r9, 0x002c(r31) # 0fff0 -srwi r9, r9, 12 # 0fff4 -bl major_0x10284 # 0fff8 -lwz r17, 0x0008(r31) # 0fffc -ori r17, r17, 0x10 # 10000 -stw r17, 0x0008(r31) # 10004 - -createarea_0x41c: -lwz r17, 0x0008(r31) # 10008 -andi. r8, r17, 0x88 # 1000c -lwz r8, 0x002c(r31) # 10010 -bne- createarea_0x45c # 10014 -rlwinm r8, r8, 21, 11, 30 # 10018 -mr r29, r8 # 1001c - -# r1 = kdp -# r8 = size -bl pool_malloc # 10020 -# r8 = ptr - -cmpwi r8, 0x00 # 10024 -stw r8, 0x003c(r31) # 10028 -beq- createarea_0x460 # 1002c -lwz r9, 0x002c(r31) # 10030 -srwi r9, r9, 12 # 10034 -bl major_0x102a8 # 10038 -lwz r16, 0x0008(r31) # 1003c -ori r16, r16, 0x01 # 10040 -stw r16, 0x0008(r31) # 10044 - -createarea_0x45c: -b createarea_0x64c # 10048 - -createarea_0x460: -cmpwi r29, 0xfd8 # 1004c -ble- major_0x10320_0x20 # 10050 -mr r16, r8 # 10054 -mr r17, r9 # 10058 -addi r8, r1, -0xad0 # 1005c - -# r8 = lock -bl lock # 10060 -mr r8, r16 # 10064 -mr r9, r17 # 10068 -lwz r17, 0x0008(r31) # 1006c -li r27, 0x00 # 10070 -rlwinm. r8, r17, 0, 25, 25 # 10074 -bne- createarea_0x4b4 # 10078 -lwz r27, 0x002c(r31) # 1007c -srwi r27, r27, 12 # 10080 -cmpwi r27, 0x400 # 10084 -ble- createarea_0x4ac # 10088 -ori r17, r17, 0x20 # 1008c -stw r17, 0x0008(r31) # 10090 -addi r27, r27, 0x400 # 10094 - -createarea_0x4ac: -addi r27, r27, 0x3ff # 10098 -srwi r27, r27, 10 # 1009c - -createarea_0x4b4: -lwz r8, 0x0008(r31) # 100a0 -li r29, 0x00 # 100a4 -rlwinm. r9, r8, 0, 28, 28 # 100a8 -bne- createarea_0x4e8 # 100ac -lwz r29, 0x002c(r31) # 100b0 -srwi r29, r29, 12 # 100b4 -cmpwi r29, 0x800 # 100b8 -ble- createarea_0x4e0 # 100bc -ori r8, r8, 0x02 # 100c0 -stw r8, 0x0008(r31) # 100c4 -addi r29, r29, 0x800 # 100c8 - -createarea_0x4e0: -addi r29, r29, 0x7ff # 100cc -srwi r29, r29, 11 # 100d0 - -createarea_0x4e8: -lwz r18, -0x0430( r1) # 100d4 -add. r8, r27, r29 # 100d8 -ble- major_0x102c8 # 100dc -cmpw r8, r18 # 100e0 -bgt- major_0x102c8 # 100e4 -lwz r16, -0x0430( r1) # 100e8 -lwz r17, -0x042c( r1) # 100ec -subf r16, r8, r16 # 100f0 -subf r17, r8, r17 # 100f4 -stw r16, -0x0430( r1) # 100f8 -stw r17, -0x042c( r1) # 100fc -mr. r18, r27 # 10100 -beq- createarea_0x5a0 # 10104 -lwz r16, -0x0448( r1) # 10108 -lwz r17, 0x0008(r16) # 1010c -lwz r19, 0x000c(r16) # 10110 -stw r17, 0x0008(r19) # 10114 -stw r19, 0x000c(r17) # 10118 -li r17, 0x00 # 1011c -stw r17, 0x0008(r16) # 10120 -stw r17, 0x000c(r16) # 10124 -addi r18, r18, -0x01 # 10128 -stw r16, 0x0040(r31) # 1012c -cmpwi r18, 0x00 # 10130 -lwz r17, -0x0448( r1) # 10134 -mr r8, r16 # 10138 -addi r16, r16, -0x04 # 1013c -bgt- createarea_0x564 # 10140 -li r9, 0x400 # 10144 -bl major_0x10284 # 10148 -b createarea_0x5a0 # 1014c - -createarea_0x564: -lwz r19, 0x0008(r17) # 10150 -lwz r20, 0x000c(r17) # 10154 -stw r19, 0x0008(r20) # 10158 -stw r20, 0x000c(r19) # 1015c -li r19, 0x00 # 10160 -stw r19, 0x0008(r17) # 10164 -stw r19, 0x000c(r17) # 10168 -addi r18, r18, -0x01 # 1016c -stwu r17, 0x0004(r16) # 10170 -mr r8, r17 # 10174 -li r9, 0x400 # 10178 -bl major_0x10284 # 1017c -lwz r17, -0x0448( r1) # 10180 -cmpwi r18, 0x00 # 10184 -bgt+ createarea_0x564 # 10188 - -createarea_0x5a0: -mr. r18, r29 # 1018c -beq- createarea_0x62c # 10190 -lwz r16, -0x0448( r1) # 10194 -lwz r17, 0x0008(r16) # 10198 -lwz r19, 0x000c(r16) # 1019c -stw r17, 0x0008(r19) # 101a0 -stw r19, 0x000c(r17) # 101a4 -li r17, 0x00 # 101a8 -stw r17, 0x0008(r16) # 101ac -stw r17, 0x000c(r16) # 101b0 -addi r18, r18, -0x01 # 101b4 -stw r16, 0x003c(r31) # 101b8 -cmpwi r18, 0x00 # 101bc -lwz r17, -0x0448( r1) # 101c0 -mr r8, r16 # 101c4 -addi r16, r16, -0x04 # 101c8 -bgt- createarea_0x5f0 # 101cc -li r9, 0x800 # 101d0 -bl major_0x102a8 # 101d4 -b createarea_0x62c # 101d8 - -createarea_0x5f0: -lwz r19, 0x0008(r17) # 101dc -lwz r20, 0x000c(r17) # 101e0 -stw r19, 0x0008(r20) # 101e4 -stw r20, 0x000c(r19) # 101e8 -li r19, 0x00 # 101ec -stw r19, 0x0008(r17) # 101f0 -stw r19, 0x000c(r17) # 101f4 -addi r18, r18, -0x01 # 101f8 -stwu r17, 0x0004(r16) # 101fc -mr r8, r17 # 10200 -li r9, 0x800 # 10204 -bl major_0x102a8 # 10208 -lwz r17, -0x0448( r1) # 1020c -cmpwi r18, 0x00 # 10210 -bgt+ createarea_0x5f0 # 10214 - -createarea_0x62c: -sync # 10218 -lwz r16, -0x0ad0( r1) # 1021c -cmpwi cr1, r16, 0x00 # 10220 -li r16, 0x00 # 10224 -bne+ cr1, createarea_0x648 # 10228 -mflr r16 # 1022c -bl panic # 10230 - -createarea_0x648: -stw r16, -0x0ad0( r1) # 10234 - -createarea_0x64c: -lwz r16, 0x0008(r31) # 10238 -rlwinm. r8, r16, 0, 28, 28 # 1023c -beq- createarea_0x67c # 10240 -lwz r16, 0x0044(r31) # 10244 -addi r17, r31, 0x44 # 10248 -stw r16, 0x0000(r17) # 1024c -stw r16, 0x0008(r17) # 10250 -lwz r18, 0x000c(r16) # 10254 -stw r18, 0x000c(r17) # 10258 -stw r17, 0x0008(r18) # 1025c -stw r17, 0x000c(r16) # 10260 -b major_0x10320_0x94 # 10264 - -createarea_0x67c: -addi r16, r31, 0x44 # 10268 -lis r17, 0x414b # 1026c -stw r16, 0x0008(r16) # 10270 -ori r17, r17, 0x4120 # 10274 -stw r16, 0x000c(r16) # 10278 -stw r17, 0x0004(r16) # 1027c -b major_0x10320_0x94 # 10280 - - - -/*********************************************************** - - major_0x10284 - -************************************************************ - -Xrefs: -createarea - -***********************************************************/ - -major_0x10284: /* < outside referer */ -addi r8, r8, -0x04 # 10284 -addi r9, r9, -0x01 # 10288 -lwz r20, 0x0074(r31) # 1028c -ori r20, r20, 0x200 # 10290 - -major_0x10284_0x10: -cmpwi r9, 0x00 # 10294 -stwu r20, 0x0004( r8) # 10298 -addi r9, r9, -0x01 # 1029c -bgt+ major_0x10284_0x10 # 102a0 -blr # 102a4 - - - -/*********************************************************** - - major_0x102a8 - -************************************************************ - -Xrefs: -createarea - -***********************************************************/ - -.align 3 # 102a8 - -major_0x102a8: /* < outside referer */ -addi r8, r8, -0x02 # 102a8 -addi r9, r9, -0x01 # 102ac -li r20, 0x7fff # 102b0 - -major_0x102a8_0xc: -cmpwi r9, 0x00 # 102b4 -sthu r20, 0x0002( r8) # 102b8 -addi r9, r9, -0x01 # 102bc -bgt+ major_0x102a8_0xc # 102c0 -blr # 102c4 - - - -/*********************************************************** - - major_0x102c8 - -************************************************************ - -Xrefs: -createarea - -***********************************************************/ - -.align 3 # 102c8 - -major_0x102c8: /* < outside referer */ -sync # 102c8 -lwz r16, -0x0ad0( r1) # 102cc -cmpwi cr1, r16, 0x00 # 102d0 -li r16, 0x00 # 102d4 -bne+ cr1, major_0x102c8_0x1c # 102d8 -mflr r16 # 102dc -bl panic # 102e0 - -major_0x102c8_0x1c: -stw r16, -0x0ad0( r1) # 102e4 -addi r30, r8, 0x08 # 102e8 -lwz r8, -0x0420( r1) # 102ec - -# r8 = id -bl id_kind # 102f0 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0c # 102f4 -mr r26, r8 # 102f8 -bne- major_0x10320_0x20 # 102fc -li r8, 0x02 # 10300 -stw r8, 0x0010(r26) # 10304 -stw r30, 0x0014(r26) # 10308 -li r29, 0x00 # 1030c -stw r29, 0x0018(r26) # 10310 -mr r30, r26 # 10314 -bl major_0x0db04 # 10318 -b major_0x10320_0x20 # 1031c - - - -/*********************************************************** - - major_0x10320 - -************************************************************ - -Xrefs: -major_0x035a0 -major_0x04c20 -major_0x0ec8c -convert_pmdts_to_areas -createarea -major_0x102c8 -major_0x11040 -major_0x11098 -major_0x12248 - -***********************************************************/ - -.align 5 # 10320 - -major_0x10320: /* < outside referer */ -mr r8, r31 # 10320 -li r9, -0x726e # 10324 -b major_0x10320_0xb8 # 10328 -.long 0x811f0000 # 1032c -.long 0x48004fd1 # 10330 -.long 0x7fe8fb78 # 10334 -.long 0x39208d8d # 10338 -.long 0x4800009c # 1033c - -major_0x10320_0x20: /* < outside referer */ -addi r19, r31, 0x54 # 10340 -lwz r16, 0x0008(r19) # 10344 -lwz r17, 0x000c(r19) # 10348 -stw r16, 0x0008(r17) # 1034c -stw r17, 0x000c(r16) # 10350 -li r16, 0x00 # 10354 -stw r16, 0x0008(r19) # 10358 -stw r16, 0x000c(r19) # 1035c -lwz r16, 0x0008(r31) # 10360 -lwz r8, 0x0040(r31) # 10364 -rlwinm. r16, r16, 0, 25, 25 # 10368 -bne- major_0x10320_0x58 # 1036c -cmpwi r8, 0x00 # 10370 -bnel- looks_like_poolextend # 10374 - -major_0x10320_0x58: -lwz r8, 0x003c(r31) # 10378 -cmpwi r8, 0x00 # 1037c -bnel- looks_like_poolextend # 10380 - -major_0x10320_0x64: /* < outside referer */ -bl 1f # 10384 -.ascii " ... skipped^n" # 10388 -.short 0 # 10396 -.align 2 # 10398 -1: mflr r8 # 10398 -bl print_string # 1039c -lwz r8, 0x0000(r31) # 103a0 -bl major_0x15300 # 103a4 -mr r8, r31 # 103a8 -li r9, -0x7272 # 103ac -b major_0x10320_0xb8 # 103b0 - -major_0x10320_0x94: /* < outside referer */ -bl 1f # 103b4 -.ascii " ... created^n" # 103b8 -.short 0 # 103c6 -.align 2 # 103c8 -1: mflr r8 # 103c8 -bl print_string # 103cc -mr r8, r31 # 103d0 -li r9, 0x00 # 103d4 - -major_0x10320_0xb8: /* < outside referer */ -mfspr r16, 272/*sprg0*/ # 103d8 -lwz r17, -0x0040(r16) # 103dc -mtlr r17 # 103e0 -lmw r25, -0x003c(r16) # 103e4 -blr # 103e8 - -major_0x10320_0xcc: /* < outside referer */ -lwz r8, 0x0028( r8) # 103ec - -major_0x10320_0xd0: -addi r8, r8, -0x54 # 103f0 -lwz r16, 0x0024( r8) # 103f4 -lwz r17, 0x0028( r8) # 103f8 -cmplw r16, r9 # 103fc -cmplw cr1, r17, r9 # 10400 -bgelr- # 10404 -bgelr- cr1 # 10408 -lwz r8, 0x005c( r8) # 1040c -b major_0x10320_0xd0 # 10410 - - - -/*********************************************************** - - major_0x10414 - -************************************************************ - -syscall 73 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x10414: /* < outside referer */ -mr r16, r8 # 10414 -mr r17, r9 # 10418 -addi r8, r1, -0xb50 # 1041c - -# r8 = lock -bl lock # 10420 -mr r8, r16 # 10424 -mr r9, r17 # 10428 -mr r8, r3 # 1042c - -# r8 = id -bl id_kind # 10430 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 10434 -bne+ major_0x0b07c_0x28 # 10438 -mr r30, r8 # 1043c -lwz r16, 0x0008(r30) # 10440 -rlwinm. r8, r16, 0, 28, 28 # 10444 -bne+ major_0x0b054 # 10448 -li r8, 160 # 1044c - -# r1 = kdp -# r8 = size -bl pool_malloc # 10450 -# r8 = ptr - -mr. r31, r8 # 10454 -beq+ major_0x0af60 # 10458 -mfspr r28, 272/*sprg0*/ # 1045c -lwz r8, -0x001c(r28) # 10460 -stw r8, 0x006c(r31) # 10464 -stw r3, 0x0014(r31) # 10468 -stw r30, 0x0044(r31) # 1046c -stw r4, 0x001c(r31) # 10470 -stw r5, 0x002c(r31) # 10474 -lwz r8, 0x0134( r6) # 10478 -stw r8, 0x0030(r31) # 1047c -lwz r8, 0x013c( r6) # 10480 -stw r8, 0x0020(r31) # 10484 -lwz r8, 0x0144( r6) # 10488 -stw r8, 0x0024(r31) # 1048c -lwz r8, 0x014c( r6) # 10490 -stw r8, 0x0080(r31) # 10494 -li r8, 0x08 # 10498 -stw r8, 0x0008(r31) # 1049c -mr r8, r31 # 104a0 -bl createarea # 104a4 -sync # 104a8 -lwz r16, -0x0b50( r1) # 104ac -cmpwi cr1, r16, 0x00 # 104b0 -li r16, 0x00 # 104b4 -bne+ cr1, major_0x10414_0xb0 # 104b8 -mflr r16 # 104bc -bl panic # 104c0 - -major_0x10414_0xb0: -stw r16, -0x0b50( r1) # 104c4 -mr. r3, r9 # 104c8 -bne- major_0x10414_0xd0 # 104cc -lwz r8, 0x0024(r31) # 104d0 -stw r8, 0x0144( r6) # 104d4 -lwz r8, 0x0000(r31) # 104d8 -stw r8, 0x0154( r6) # 104dc -b syscall_return # 104e0 - -major_0x10414_0xd0: -bl looks_like_poolextend # 104e4 -b syscall_return # 104e8 - - - -/*********************************************************** - - major_0x104ec - -************************************************************ - -syscall 74 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x104ec: /* < outside referer */ -mr r16, r8 # 104ec -mr r17, r9 # 104f0 -addi r8, r1, -0xb50 # 104f4 - -# r8 = lock -bl lock # 104f8 -mr r8, r16 # 104fc -mr r9, r17 # 10500 -mr r8, r3 # 10504 - -# r8 = id -bl id_kind # 10508 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 1050c -bne+ major_0x0b07c_0x28 # 10510 -mr r31, r8 # 10514 -lwz r17, 0x0038(r31) # 10518 -lwz r29, 0x0008(r31) # 1051c -cmpwi cr1, r17, 0x00 # 10520 -rlwinm. r8, r29, 0, 29, 29 # 10524 -bne+ cr1, major_0x0af60_0xa4 # 10528 -bne+ major_0x0b07c # 1052c -rlwinm. r8, r29, 0, 28, 28 # 10530 -lwz r16, 0x004c(r31) # 10534 -bne- major_0x104ec_0x5c # 10538 -addi r17, r31, 0x44 # 1053c -cmpw r16, r17 # 10540 -bne+ major_0x0af60_0xa4 # 10544 - -major_0x104ec_0x5c: -mr r18, r8 # 10548 -mr r9, r9 # 1054c -addi r8, r1, -0xb90 # 10550 - -# r8 = lock -bl lock # 10554 -mr r8, r18 # 10558 -mr r9, r9 # 1055c -addi r16, r31, 0x54 # 10560 -lwz r17, 0x0008(r16) # 10564 -lwz r18, 0x000c(r16) # 10568 -stw r17, 0x0008(r18) # 1056c -stw r18, 0x000c(r17) # 10570 -li r17, 0x00 # 10574 -stw r17, 0x0008(r16) # 10578 -stw r17, 0x000c(r16) # 1057c -rlwinm. r8, r29, 0, 28, 28 # 10580 -addi r16, r31, 0x44 # 10584 -beq- major_0x104ec_0xbc # 10588 -lwz r17, 0x0008(r16) # 1058c -lwz r18, 0x000c(r16) # 10590 -stw r17, 0x0008(r18) # 10594 -stw r18, 0x000c(r17) # 10598 -li r17, 0x00 # 1059c -stw r17, 0x0008(r16) # 105a0 -stw r17, 0x000c(r16) # 105a4 - -major_0x104ec_0xbc: -sync # 105a8 -lwz r18, -0x0b90( r1) # 105ac -cmpwi cr1, r18, 0x00 # 105b0 -li r18, 0x00 # 105b4 -bne+ cr1, major_0x104ec_0xd8 # 105b8 -mflr r18 # 105bc -bl panic # 105c0 - -major_0x104ec_0xd8: -stw r18, -0x0b90( r1) # 105c4 -lwz r8, 0x0040(r31) # 105c8 -rlwinm. r16, r29, 0, 25, 25 # 105cc -cmpwi cr1, r8, 0x00 # 105d0 -bne- major_0x104ec_0x178 # 105d4 -rlwinm. r16, r29, 0, 27, 27 # 105d8 -beq- cr1, major_0x104ec_0x178 # 105dc -bne- major_0x104ec_0x174 # 105e0 -mr r18, r8 # 105e4 -mr r9, r9 # 105e8 -addi r8, r1, -0xad0 # 105ec - -# r8 = lock -bl lock # 105f0 -mr r8, r18 # 105f4 -mr r9, r9 # 105f8 -rlwinm. r16, r29, 0, 26, 26 # 105fc -beq- major_0x104ec_0x14c # 10600 -lwz r19, 0x002c(r31) # 10604 -mr r20, r8 # 10608 -srwi r19, r19, 12 # 1060c -addi r19, r19, 0x3ff # 10610 -srwi r19, r19, 10 # 10614 -slwi r19, r19, 2 # 10618 -addi r19, r19, -0x04 # 1061c - -major_0x104ec_0x134: -lwzx r8, r19, r20 # 10620 - -# r1 = kdp -# r8 = maybe the page -bl free_list_add_page # 10624 -cmpwi r19, 0x00 # 10628 -addi r19, r19, -0x04 # 1062c -bgt+ major_0x104ec_0x134 # 10630 -mr r8, r20 # 10634 - -major_0x104ec_0x14c: -# r1 = kdp -# r8 = maybe the page -bl free_list_add_page # 10638 -sync # 1063c -lwz r18, -0x0ad0( r1) # 10640 -cmpwi cr1, r18, 0x00 # 10644 -li r18, 0x00 # 10648 -bne+ cr1, major_0x104ec_0x16c # 1064c -mflr r18 # 10650 -bl panic # 10654 - -major_0x104ec_0x16c: -stw r18, -0x0ad0( r1) # 10658 -b major_0x104ec_0x178 # 1065c - -major_0x104ec_0x174: -bl looks_like_poolextend # 10660 - -major_0x104ec_0x178: -lwz r8, 0x003c(r31) # 10664 -clrlwi. r16, r29, 0x1f # 10668 -cmpwi cr1, r8, 0x00 # 1066c -beq- cr1, major_0x104ec_0x20c # 10670 -bne- major_0x104ec_0x208 # 10674 -mr r18, r8 # 10678 -mr r9, r9 # 1067c -addi r8, r1, -0xad0 # 10680 - -# r8 = lock -bl lock # 10684 -mr r8, r18 # 10688 -mr r9, r9 # 1068c -rlwinm. r16, r29, 0, 30, 30 # 10690 -beq- major_0x104ec_0x1e0 # 10694 -lwz r19, 0x002c(r31) # 10698 -mr r20, r8 # 1069c -srwi r19, r19, 12 # 106a0 -addi r19, r19, 0x7ff # 106a4 -srwi r19, r19, 11 # 106a8 -slwi r19, r19, 2 # 106ac -addi r19, r19, -0x04 # 106b0 - -major_0x104ec_0x1c8: -lwzx r8, r19, r20 # 106b4 - -# r1 = kdp -# r8 = maybe the page -bl free_list_add_page # 106b8 -cmpwi r19, 0x00 # 106bc -addi r19, r19, -0x04 # 106c0 -bgt+ major_0x104ec_0x1c8 # 106c4 -mr r8, r20 # 106c8 - -major_0x104ec_0x1e0: -# r1 = kdp -# r8 = maybe the page -bl free_list_add_page # 106cc -sync # 106d0 -lwz r18, -0x0ad0( r1) # 106d4 -cmpwi cr1, r18, 0x00 # 106d8 -li r18, 0x00 # 106dc -bne+ cr1, major_0x104ec_0x200 # 106e0 -mflr r18 # 106e4 -bl panic # 106e8 - -major_0x104ec_0x200: -stw r18, -0x0ad0( r1) # 106ec -b major_0x104ec_0x20c # 106f0 - -major_0x104ec_0x208: -bl looks_like_poolextend # 106f4 - -major_0x104ec_0x20c: -lwz r8, 0x0000(r31) # 106f8 -bl major_0x15300 # 106fc -mr r8, r31 # 10700 -bl looks_like_poolextend # 10704 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 10708 - - - -/*********************************************************** - - major_0x1070c - -************************************************************ - -syscall 75 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x1070c: /* < outside referer */ -mr r16, r8 # 1070c -mr r17, r9 # 10710 -addi r8, r1, -0xb50 # 10714 - -# r8 = lock -bl lock # 10718 -mr r8, r16 # 1071c -mr r9, r17 # 10720 -mr r8, r3 # 10724 - -# r8 = id -bl id_kind # 10728 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 1072c -mr r31, r8 # 10730 -bne+ major_0x0b07c_0x28 # 10734 -lwz r16, 0x0020(r31) # 10738 -rlwinm. r8, r16, 0, 16, 16 # 1073c -bne+ major_0x0af60_0xa4 # 10740 -lwz r18, 0x007c(r31) # 10744 -lwz r17, 0x002c(r31) # 10748 -and. r5, r5, r18 # 1074c -and r17, r17, r18 # 10750 -ble+ major_0x0b054 # 10754 -subf. r27, r17, r5 # 10758 - -# r1 = kdp -beq+ syscall_return_assert_lock_unheld # 1075c -bgt- major_0x1070c_0x1c8 # 10760 -rlwinm. r8, r4, 0, 24, 24 # 10764 -lwz r28, 0x0024(r31) # 10768 -lwz r29, 0x0028(r31) # 1076c -bne- major_0x1070c_0x74 # 10770 -add r28, r27, r29 # 10774 -addi r28, r28, 0x01 # 10778 -b major_0x1070c_0x7c # 1077c - -major_0x1070c_0x74: -subf r29, r27, r28 # 10780 -addi r29, r29, -0x01 # 10784 - -major_0x1070c_0x7c: -mr r14, r8 # 10788 -mr r15, r9 # 1078c -addi r8, r1, -0xad0 # 10790 - -# r8 = lock -bl lock # 10794 -mr r8, r14 # 10798 -mr r9, r15 # 1079c -mr r14, r8 # 107a0 -mr r15, r9 # 107a4 -addi r8, r1, -0xb90 # 107a8 - -# r8 = lock -bl lock # 107ac -mr r8, r14 # 107b0 -mr r9, r15 # 107b4 -lwz r27, 0x0068(r31) # 107b8 - -major_0x1070c_0xb0: -mr r8, r28 # 107bc -bl major_0x12248_0x1e4 # 107c0 -beq+ panic_wrapper_0x0f380 # 107c4 -bl major_0x12248_0x2b0 # 107c8 -bns- cr7, major_0x1070c_0xe0 # 107cc -bltl- cr5, major_0x12248_0x2e0 # 107d0 -bltl- cr5, major_0x12248_0x348 # 107d4 -lwz r17, 0x0000(r30) # 107d8 -rlwinm r17, r17, 0, 0, 30 # 107dc -rlwinm r8, r17, 0, 0, 19 # 107e0 -stw r17, 0x0000(r30) # 107e4 - -# r1 = kdp -# r8 = maybe the page -bl free_list_add_page # 107e8 - -major_0x1070c_0xe0: -add r28, r28, r27 # 107ec -cmplw r28, r29 # 107f0 -ble+ major_0x1070c_0xb0 # 107f4 -rlwinm. r8, r4, 0, 24, 24 # 107f8 -lwz r28, 0x0024(r31) # 107fc -beq- major_0x1070c_0x138 # 10800 -lwz r27, 0x0068(r31) # 10804 -add r29, r29, r27 # 10808 - -major_0x1070c_0x100: -mr r8, r28 # 1080c -bl major_0x12248_0x1e4 # 10810 -beq+ panic_wrapper_0x0f380 # 10814 -mr r26, r30 # 10818 -mr r8, r29 # 1081c -bl major_0x12248_0x1e4 # 10820 -beq+ panic_wrapper_0x0f380 # 10824 -lwz r17, 0x0000(r30) # 10828 -stw r17, 0x0000(r26) # 1082c -lwz r16, 0x0028(r31) # 10830 -add r28, r28, r27 # 10834 -add r29, r29, r27 # 10838 -cmplw r29, r16 # 1083c -ble+ major_0x1070c_0x100 # 10840 - -major_0x1070c_0x138: -sync # 10844 -lwz r8, -0x0b90( r1) # 10848 -cmpwi cr1, r8, 0x00 # 1084c -li r8, 0x00 # 10850 -bne+ cr1, major_0x1070c_0x154 # 10854 -mflr r8 # 10858 -bl panic # 1085c - -major_0x1070c_0x154: -stw r8, -0x0b90( r1) # 10860 -lwz r16, 0x0008(r31) # 10864 -rlwinm. r8, r16, 0, 25, 25 # 10868 -bne- major_0x1070c_0x16c # 1086c -rlwinm. r8, r16, 0, 27, 27 # 10870 -bne- major_0x1070c_0x16c # 10874 - -major_0x1070c_0x16c: -sync # 10878 -lwz r8, -0x0ad0( r1) # 1087c -cmpwi cr1, r8, 0x00 # 10880 -li r8, 0x00 # 10884 -bne+ cr1, major_0x1070c_0x188 # 10888 -mflr r8 # 1088c -bl panic # 10890 - -major_0x1070c_0x188: -stw r8, -0x0ad0( r1) # 10894 -b major_0x1070c_0x190 # 10898 - -major_0x1070c_0x190: -rlwinm. r8, r4, 0, 24, 24 # 1089c -lwz r16, 0x0024(r31) # 108a0 -bne- major_0x1070c_0x1b0 # 108a4 -add r17, r16, r5 # 108a8 -addi r17, r17, -0x01 # 108ac -stw r5, 0x002c(r31) # 108b0 -stw r17, 0x0028(r31) # 108b4 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 108b8 - -major_0x1070c_0x1b0: -lwz r17, 0x0028(r31) # 108bc -subf r16, r5, r17 # 108c0 -stw r5, 0x002c(r31) # 108c4 -addi r16, r16, 0x01 # 108c8 -stw r16, 0x0024(r31) # 108cc - -# r1 = kdp -b syscall_return_assert_lock_unheld # 108d0 - -major_0x1070c_0x1c8: -rlwinm. r8, r4, 0, 24, 24 # 108d4 -lwz r28, 0x0024(r31) # 108d8 -lwz r29, 0x0028(r31) # 108dc -bne+ major_0x0af14 # 108e0 -add r28, r27, r29 # 108e4 -addi r28, r28, 0x01 # 108e8 -b major_0x1070c_0x1ec # 108ec -.long 0x7fbbe050 # 108f0 -.long 0x3bbdffff # 108f4 - -major_0x1070c_0x1ec: -b major_0x0af14 # 108f8 - - - -/*********************************************************** - - major_0x108fc - -************************************************************ - -syscall 130 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x108fc: /* < outside referer */ -mr r16, r8 # 108fc -mr r17, r9 # 10900 -addi r8, r1, -0xb50 # 10904 - -# r8 = lock -bl lock # 10908 -mr r8, r16 # 1090c -mr r9, r17 # 10910 -mr r8, r3 # 10914 - -# r8 = id -bl id_kind # 10918 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 1091c -bne+ major_0x0b07c_0x28 # 10920 -mr r31, r8 # 10924 -lis r16, -0x01 # 10928 -ori r16, r16, 0xfff8 # 1092c -lwz r17, 0x0020(r31) # 10930 -and. r16, r16, r4 # 10934 -bne+ major_0x0b054 # 10938 -rlwinm. r8, r17, 0, 16, 16 # 1093c -bne+ major_0x0b054 # 10940 -mr r29, r5 # 10944 -lwz r18, 0x0134( r6) # 10948 -lwz r19, 0x0068(r31) # 1094c -lwz r16, 0x0024(r31) # 10950 -cmplw r18, r19 # 10954 -add r28, r18, r29 # 10958 -bge+ major_0x0b054 # 1095c -lwz r17, 0x007c(r31) # 10960 -addi r28, r28, -0x01 # 10964 -lwz r18, 0x0020(r31) # 10968 -lwz r19, 0x0028(r31) # 1096c -cmplw cr1, r29, r16 # 10970 -cmplw cr2, r28, r19 # 10974 -blt+ cr1, major_0x0b054 # 10978 -bgt+ cr2, major_0x0b054 # 1097c -xor r8, r28, r29 # 10980 -rlwinm. r8, r8, 0, 0, 19 # 10984 -bne+ major_0x0b054 # 10988 -mr r14, r8 # 1098c -mr r15, r9 # 10990 -addi r8, r1, -0xb90 # 10994 - -# r8 = lock -bl lock # 10998 -mr r8, r14 # 1099c -mr r9, r15 # 109a0 -mr r8, r29 # 109a4 -bl major_0x12248_0x1e4 # 109a8 -sync # 109ac -lwz r14, -0x0b90( r1) # 109b0 -cmpwi cr1, r14, 0x00 # 109b4 -li r14, 0x00 # 109b8 -bne+ cr1, major_0x108fc_0xcc # 109bc -mflr r14 # 109c0 -bl panic # 109c4 - -major_0x108fc_0xcc: -stw r14, -0x0b90( r1) # 109c8 -beq+ panic_wrapper_0x0f380 # 109cc -rlwinm r8, r16, 0, 29, 30 # 109d0 -lwz r16, 0x0000(r30) # 109d4 -cmpwi cr7, r8, 0x04 # 109d8 -beq+ cr7, major_0x0b054 # 109dc -lwz r16, 0x0098(r31) # 109e0 - -major_0x108fc_0xe8: -addi r17, r31, 0x90 # 109e4 -cmpw r16, r17 # 109e8 -addi r17, r16, 0x14 # 109ec -beq- major_0x108fc_0x11c # 109f0 -lwz r8, 0x0010(r16) # 109f4 -cmplwi r8, 0x1f8 # 109f8 -add r9, r8, r17 # 109fc -blt- major_0x108fc_0x110 # 10a00 -lwz r16, 0x0008(r16) # 10a04 -b major_0x108fc_0xe8 # 10a08 - -major_0x108fc_0x110: -addi r8, r8, 0x08 # 10a0c -addi r9, r9, 0x08 # 10a10 -b major_0x108fc_0x15c # 10a14 - -major_0x108fc_0x11c: -li r8, 0x214 # 10a18 - -# r1 = kdp -# r8 = size -bl pool_malloc # 10a1c -# r8 = ptr - -mr. r16, r8 # 10a20 -beq+ major_0x0af60 # 10a24 -addi r18, r31, 0x90 # 10a28 -lis r17, 0x4645 # 10a2c -ori r17, r17, 0x4e43 # 10a30 -stw r17, 0x0004(r16) # 10a34 -stw r18, 0x0000(r16) # 10a38 -stw r18, 0x0008(r16) # 10a3c -lwz r19, 0x000c(r18) # 10a40 -stw r19, 0x000c(r16) # 10a44 -stw r16, 0x0008(r19) # 10a48 -stw r16, 0x000c(r18) # 10a4c -li r8, 0x00 # 10a50 -addi r9, r16, 0x14 # 10a54 - -major_0x108fc_0x15c: -stw r8, 0x0010(r16) # 10a58 -stw r29, 0x0000( r9) # 10a5c -stw r28, 0x0004( r9) # 10a60 -mr r14, r8 # 10a64 -mr r15, r9 # 10a68 -addi r8, r1, -0xb90 # 10a6c - -# r8 = lock -bl lock # 10a70 -mr r8, r14 # 10a74 -mr r9, r15 # 10a78 -mr r8, r29 # 10a7c -bl major_0x12248_0x1e4 # 10a80 -beq+ panic_wrapper_0x0f380 # 10a84 -bl major_0x12248_0x2b0 # 10a88 -bns- cr7, major_0x108fc_0x19c # 10a8c -bltl- cr5, major_0x12248_0x2e0 # 10a90 -bltl- cr5, major_0x12248_0x348 # 10a94 - -major_0x108fc_0x19c: -lwz r17, 0x0000(r30) # 10a98 -li r16, 0x06 # 10a9c -rlwimi r17, r16, 0, 29, 30 # 10aa0 -stw r17, 0x0000(r30) # 10aa4 -sync # 10aa8 -lwz r14, -0x0b90( r1) # 10aac -cmpwi cr1, r14, 0x00 # 10ab0 -li r14, 0x00 # 10ab4 -bne+ cr1, major_0x108fc_0x1c8 # 10ab8 -mflr r14 # 10abc -bl panic # 10ac0 - -major_0x108fc_0x1c8: -stw r14, -0x0b90( r1) # 10ac4 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 10ac8 - - - -/*********************************************************** - - NKSetAreaAccess - -************************************************************ - -syscall 76 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -NKSetAreaAccess: /* < outside referer */ -mr r16, r8 # 10acc -mr r17, r9 # 10ad0 -addi r8, r1, -0xb50 # 10ad4 - -# r8 = lock -bl lock # 10ad8 -mr r8, r16 # 10adc -mr r9, r17 # 10ae0 -mr r8, r3 # 10ae4 - -# r8 = id -bl id_kind # 10ae8 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 10aec -bne+ major_0x0b07c_0x28 # 10af0 -mr r31, r8 # 10af4 -lis r16, -0x01 # 10af8 -ori r16, r16, 0xff10 # 10afc -and. r16, r16, r4 # 10b00 -bne+ major_0x0b054 # 10b04 -lis r16, -0x01 # 10b08 -ori r16, r16, 0xff10 # 10b0c -and. r16, r16, r5 # 10b10 -bne+ major_0x0b054 # 10b14 -lwz r29, 0x0134( r6) # 10b18 -lwz r18, 0x013c( r6) # 10b1c -lwz r16, 0x0024(r31) # 10b20 -add r28, r18, r29 # 10b24 -lwz r17, 0x007c(r31) # 10b28 -addi r28, r28, -0x01 # 10b2c -lwz r18, 0x0020(r31) # 10b30 -lwz r19, 0x0028(r31) # 10b34 -rlwinm. r8, r18, 0, 16, 16 # 10b38 -cmplw cr1, r29, r16 # 10b3c -cmplw cr2, r28, r19 # 10b40 -blt+ cr1, major_0x0b054 # 10b44 -bgt+ cr2, major_0x0b054 # 10b48 -bne- NKSetAreaAccess_0x154 # 10b4c -mr r14, r8 # 10b50 -mr r15, r9 # 10b54 -addi r8, r1, -0xb90 # 10b58 - -# r8 = lock -bl lock # 10b5c -mr r8, r14 # 10b60 -mr r9, r15 # 10b64 - -NKSetAreaAccess_0x9c: -mr r8, r29 # 10b68 -bl major_0x12248_0x1e4 # 10b6c -beq+ panic_wrapper_0x0f380 # 10b70 -bl major_0x12248_0x2b0 # 10b74 -bns- cr7, NKSetAreaAccess_0xb8 # 10b78 -bltl- cr5, major_0x12248_0x2e0 # 10b7c -bltl- cr5, major_0x12248_0x348 # 10b80 - -NKSetAreaAccess_0xb8: -lwz r17, 0x0000(r30) # 10b84 -bl major_0x10d38 # 10b88 -and r8, r4, r5 # 10b8c -orc r9, r4, r5 # 10b90 -or r18, r18, r8 # 10b94 -and r18, r18, r9 # 10b98 -lwz r17, 0x0000(r30) # 10b9c -rlwinm. r8, r18, 0, 26, 26 # 10ba0 -bns- cr7, NKSetAreaAccess_0x118 # 10ba4 -bgt- cr6, NKSetAreaAccess_0x118 # 10ba8 -beq- NKSetAreaAccess_0x118 # 10bac -rlwinm r9, r17, 0, 0, 19 # 10bb0 -lwz r8, 0x0068(r31) # 10bb4 - -NKSetAreaAccess_0xec: -addi r8, r8, -0x20 # 10bb8 -dcbf r8, r9 # 10bbc -cmpwi r8, 0x00 # 10bc0 -bgt+ NKSetAreaAccess_0xec # 10bc4 -sync # 10bc8 -lwz r8, 0x0068(r31) # 10bcc - -NKSetAreaAccess_0x104: -addi r8, r8, -0x20 # 10bd0 -icbi r8, r9 # 10bd4 -cmpwi r8, 0x00 # 10bd8 -bgt+ NKSetAreaAccess_0x104 # 10bdc -isync # 10be0 - -NKSetAreaAccess_0x118: -bl major_0x10cb8 # 10be4 -lwz r19, 0x0068(r31) # 10be8 -stw r17, 0x0000(r30) # 10bec -add r29, r29, r19 # 10bf0 -subf. r8, r29, r28 # 10bf4 -bge+ NKSetAreaAccess_0x9c # 10bf8 -sync # 10bfc -lwz r14, -0x0b90( r1) # 10c00 -cmpwi cr1, r14, 0x00 # 10c04 -li r14, 0x00 # 10c08 -bne+ cr1, NKSetAreaAccess_0x14c # 10c0c -mflr r14 # 10c10 -bl panic # 10c14 - -NKSetAreaAccess_0x14c: -stw r14, -0x0b90( r1) # 10c18 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 10c1c - -NKSetAreaAccess_0x154: -bne+ cr1, major_0x0b054 # 10c20 -lwz r18, 0x001c(r31) # 10c24 -and r8, r4, r5 # 10c28 -orc r9, r4, r5 # 10c2c -or r18, r18, r8 # 10c30 -and r18, r18, r9 # 10c34 -stw r18, 0x001c(r31) # 10c38 -lwz r16, 0x0070(r31) # 10c3c -lwz r17, 0x0074(r31) # 10c40 -bl major_0x10cb8 # 10c44 -stw r16, 0x0070(r31) # 10c48 -stw r17, 0x0074(r31) # 10c4c -mr r14, r8 # 10c50 -mr r15, r9 # 10c54 -addi r8, r1, -0xb90 # 10c58 - -# r8 = lock -bl lock # 10c5c -mr r8, r14 # 10c60 -mr r9, r15 # 10c64 -lwz r27, 0x0068(r31) # 10c68 -mr r28, r19 # 10c6c - -NKSetAreaAccess_0x1a4: -mr r8, r29 # 10c70 -lwz r9, 0x006c(r31) # 10c74 -bl major_0x12248_0x45c # 10c78 -beq- NKSetAreaAccess_0x1bc # 10c7c -bl major_0x12248_0x2e0 # 10c80 -bl major_0x12248_0x348 # 10c84 - -NKSetAreaAccess_0x1bc: -add r29, r29, r27 # 10c88 -subf. r8, r29, r28 # 10c8c -bge+ NKSetAreaAccess_0x1a4 # 10c90 -sync # 10c94 -lwz r14, -0x0b90( r1) # 10c98 -cmpwi cr1, r14, 0x00 # 10c9c -li r14, 0x00 # 10ca0 -bne+ cr1, NKSetAreaAccess_0x1e4 # 10ca4 -mflr r14 # 10ca8 -bl panic # 10cac - -NKSetAreaAccess_0x1e4: -stw r14, -0x0b90( r1) # 10cb0 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 10cb4 - - - -/*********************************************************** - - major_0x10cb8 - -************************************************************ - -Xrefs: -createarea -NKSetAreaAccess - -***********************************************************/ - -.align 3 # 10cb8 - -major_0x10cb8: /* < outside referer */ -rlwinm r16, r16, 0, 29, 24 # 10cb8 -rlwinm r17, r17, 0, 27, 23 # 10cbc -rlwinm r16, r16, 0, 0, 29 # 10cc0 -rlwinm r17, r17, 0, 31, 28 # 10cc4 -mtcr r18 # 10cc8 -bge- cr6, major_0x10cb8_0x20 # 10ccc -ori r17, r17, 0x80 # 10cd0 -ori r16, r16, 0x08 # 10cd4 - -major_0x10cb8_0x20: -ble- cr6, major_0x10cb8_0x2c # 10cd8 -ori r16, r16, 0x40 # 10cdc -b major_0x10cb8_0x30 # 10ce0 - -major_0x10cb8_0x2c: -ori r17, r17, 0x20 # 10ce4 - -major_0x10cb8_0x30: -bne- cr6, major_0x10cb8_0x3c # 10ce8 -ori r17, r17, 0x40 # 10cec -ori r16, r16, 0x20 # 10cf0 - -major_0x10cb8_0x3c: -ble- cr7, major_0x10cb8_0x40 # 10cf4 - -major_0x10cb8_0x40: -bge- cr7, major_0x10cb8_0x50 # 10cf8 -ori r17, r17, 0x06 # 10cfc -ori r16, r16, 0x01 # 10d00 -b major_0x10cb8_0x78 # 10d04 - -major_0x10cb8_0x50: -bne- cr7, major_0x10cb8_0x60 # 10d08 -ori r17, r17, 0x00 # 10d0c -ori r16, r16, 0x02 # 10d10 -b major_0x10cb8_0x78 # 10d14 - -major_0x10cb8_0x60: -bns- cr7, major_0x10cb8_0x70 # 10d18 -ori r17, r17, 0x04 # 10d1c -ori r16, r16, 0x03 # 10d20 -b major_0x10cb8_0x78 # 10d24 - -major_0x10cb8_0x70: -ori r17, r17, 0x02 # 10d28 -ori r16, r16, 0x00 # 10d2c - -major_0x10cb8_0x78: -ori r16, r16, 0x10 # 10d30 -blr # 10d34 - - - -/*********************************************************** - - major_0x10d38 - -************************************************************ - -Xrefs: -convert_pmdts_to_areas -NKSetAreaAccess -major_0x10de0 - -***********************************************************/ - -.align 3 # 10d38 - -major_0x10d38: /* < outside referer */ -andi. r16, r17, 0x06 # 10d38 -li r18, 0x00 # 10d3c -cmpwi r16, 0x02 # 10d40 -cmpwi cr1, r16, 0x06 # 10d44 -beq- major_0x10d38_0x28 # 10d48 -li r18, 0x04 # 10d4c -andi. r16, r17, 0x04 # 10d50 -ori r18, r18, 0x01 # 10d54 -bne- major_0x10d38_0x28 # 10d58 -ori r18, r18, 0x02 # 10d5c - -major_0x10d38_0x28: -bne- cr1, major_0x10d38_0x30 # 10d60 -ori r18, r18, 0x08 # 10d64 - -major_0x10d38_0x30: -andi. r16, r17, 0x20 # 10d68 -bne- major_0x10d38_0x3c # 10d6c -ori r18, r18, 0x40 # 10d70 - -major_0x10d38_0x3c: -andi. r16, r17, 0x40 # 10d74 -beq- major_0x10d38_0x48 # 10d78 -ori r18, r18, 0x20 # 10d7c - -major_0x10d38_0x48: -andi. r16, r17, 0x80 # 10d80 -beq- major_0x10d38_0x54 # 10d84 -ori r18, r18, 0x80 # 10d88 - -major_0x10d38_0x54: -blr # 10d8c - -major_0x10d38_0x58: /* < outside referer */ -andi. r16, r17, 0x03 # 10d90 -li r18, 0x04 # 10d94 -cmpwi cr1, r16, 0x01 # 10d98 -beq- major_0x10d38_0x78 # 10d9c -andi. r16, r17, 0x01 # 10da0 -ori r18, r18, 0x01 # 10da4 -bne- major_0x10d38_0x78 # 10da8 -ori r18, r18, 0x02 # 10dac - -major_0x10d38_0x78: -bne- cr1, major_0x10d38_0x80 # 10db0 -ori r18, r18, 0x08 # 10db4 - -major_0x10d38_0x80: -andi. r16, r17, 0x40 # 10db8 -beq- major_0x10d38_0x8c # 10dbc -ori r18, r18, 0x40 # 10dc0 - -major_0x10d38_0x8c: -andi. r16, r17, 0x20 # 10dc4 -beq- major_0x10d38_0x98 # 10dc8 -ori r18, r18, 0x20 # 10dcc - -major_0x10d38_0x98: -andi. r16, r17, 0x08 # 10dd0 -beq- major_0x10d38_0xa4 # 10dd4 -ori r18, r18, 0x80 # 10dd8 - -major_0x10d38_0xa4: -blr # 10ddc - - - -/*********************************************************** - - major_0x10de0 - -************************************************************ - -syscall 123 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 5 # 10de0 - -major_0x10de0: /* < outside referer */ -mr r16, r8 # 10de0 -mr r17, r9 # 10de4 -addi r8, r1, -0xb50 # 10de8 - -# r8 = lock -bl lock # 10dec -mr r8, r16 # 10df0 -mr r9, r17 # 10df4 -mr r8, r3 # 10df8 - -# r8 = id -bl id_kind # 10dfc -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 10e00 -bne+ major_0x0b07c_0x28 # 10e04 -mr r31, r8 # 10e08 -lwz r16, 0x0024(r31) # 10e0c -lwz r17, 0x0028(r31) # 10e10 -lwz r18, 0x0020(r31) # 10e14 -cmplw r4, r16 # 10e18 -cmplw cr1, r4, r17 # 10e1c -blt+ major_0x0b054 # 10e20 -bgt+ cr1, major_0x0b054 # 10e24 -rlwinm. r8, r18, 0, 16, 16 # 10e28 -lwz r5, 0x001c(r31) # 10e2c - -# r1 = kdp -bne+ syscall_return_assert_lock_unheld # 10e30 -mr r14, r8 # 10e34 -mr r15, r9 # 10e38 -addi r8, r1, -0xb90 # 10e3c - -# r8 = lock -bl lock # 10e40 -mr r8, r14 # 10e44 -mr r9, r15 # 10e48 -mr r8, r4 # 10e4c -bl major_0x12248_0x1e4 # 10e50 -beq+ panic_wrapper_0x0f380 # 10e54 -bl major_0x12248_0x2b0 # 10e58 -bltl- cr5, major_0x12248_0x2e0 # 10e5c -bltl- cr5, major_0x12248_0x348 # 10e60 -lwz r17, 0x0000(r30) # 10e64 -sync # 10e68 -lwz r14, -0x0b90( r1) # 10e6c -cmpwi cr1, r14, 0x00 # 10e70 -li r14, 0x00 # 10e74 -bne+ cr1, major_0x10de0_0xa4 # 10e78 -mflr r14 # 10e7c -bl panic # 10e80 - -major_0x10de0_0xa4: -stw r14, -0x0b90( r1) # 10e84 -bl major_0x10d38 # 10e88 -mr r5, r18 # 10e8c - -# r1 = kdp -b syscall_return_assert_lock_unheld # 10e90 - - - -/*********************************************************** - - major_0x10e94 - -************************************************************ - -syscall 77 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x10e94: /* < outside referer */ -mr r16, r8 # 10e94 -mr r17, r9 # 10e98 -addi r8, r1, -0xb50 # 10e9c - -# r8 = lock -bl lock # 10ea0 -mr r8, r16 # 10ea4 -mr r9, r17 # 10ea8 -mr r8, r3 # 10eac - -# r8 = id -bl id_kind # 10eb0 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 10eb4 -bne+ major_0x0b07c_0x28 # 10eb8 -mr r31, r8 # 10ebc -mr. r8, r4 # 10ec0 -beq- major_0x10e94_0x40 # 10ec4 - -# r8 = id -bl id_kind # 10ec8 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0c # 10ecc -bne+ major_0x0b07c_0x28 # 10ed0 - -major_0x10e94_0x40: -stw r4, 0x0018(r31) # 10ed4 -stw r5, 0x0084(r31) # 10ed8 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 10edc - - - -/*********************************************************** - - major_0x10ee0 - -************************************************************ - -syscall 78 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 5 # 10ee0 - -major_0x10ee0: /* < outside referer */ -mr r16, r8 # 10ee0 -mr r17, r9 # 10ee4 -addi r8, r1, -0xb50 # 10ee8 - -# r8 = lock -bl lock # 10eec -mr r8, r16 # 10ef0 -mr r9, r17 # 10ef4 -mr r8, r3 # 10ef8 - -# r8 = id -bl id_kind # 10efc -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 10f00 -bne+ major_0x0b07c_0x28 # 10f04 -mr r31, r8 # 10f08 -cmpwi r4, 0x01 # 10f0c -bne+ major_0x0b054 # 10f10 -cmplwi r5, 0x00 # 10f14 -bne- major_0x10ee0_0x68 # 10f18 -li r16, 0x01 # 10f1c -stw r16, 0x0134( r6) # 10f20 -lwz r16, 0x000c(r31) # 10f24 -stw r16, 0x013c( r6) # 10f28 -lwz r16, 0x0010(r31) # 10f2c -stw r16, 0x0144( r6) # 10f30 -lwz r16, 0x0014(r31) # 10f34 -stw r16, 0x014c( r6) # 10f38 -li r16, 0x10 # 10f3c -stw r16, 0x0154( r6) # 10f40 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 10f44 - -major_0x10ee0_0x68: -cmplwi r5, 0x10 # 10f48 -bne- major_0x10ee0_0x9c # 10f4c -lwz r16, 0x0018(r31) # 10f50 -stw r16, 0x0134( r6) # 10f54 -lwz r16, 0x001c(r31) # 10f58 -stw r16, 0x013c( r6) # 10f5c -lwz r16, 0x0020(r31) # 10f60 -stw r16, 0x0144( r6) # 10f64 -lwz r16, 0x0024(r31) # 10f68 -stw r16, 0x014c( r6) # 10f6c -li r16, 0x10 # 10f70 -stw r16, 0x0154( r6) # 10f74 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 10f78 - -major_0x10ee0_0x9c: -cmplwi r5, 0x20 # 10f7c -bne- major_0x10ee0_0xd0 # 10f80 -lwz r16, 0x002c(r31) # 10f84 -stw r16, 0x0134( r6) # 10f88 -lwz r16, 0x0030(r31) # 10f8c -stw r16, 0x013c( r6) # 10f90 -lwz r16, 0x0034(r31) # 10f94 -stw r16, 0x0144( r6) # 10f98 -lwz r16, 0x0038(r31) # 10f9c -stw r16, 0x014c( r6) # 10fa0 -li r16, 0x10 # 10fa4 -stw r16, 0x0154( r6) # 10fa8 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 10fac - -major_0x10ee0_0xd0: -cmplwi r5, 0x30 # 10fb0 -bne- major_0x10ee0_0xfc # 10fb4 -lwz r16, 0x0068(r31) # 10fb8 -stw r16, 0x0134( r6) # 10fbc -lwz r16, 0x0080(r31) # 10fc0 -stw r16, 0x013c( r6) # 10fc4 -lwz r16, 0x0084(r31) # 10fc8 -stw r16, 0x0144( r6) # 10fcc -li r16, 0x0c # 10fd0 -stw r16, 0x0154( r6) # 10fd4 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 10fd8 - -major_0x10ee0_0xfc: -cmpwi r5, 0x3c # 10fdc -bne+ major_0x0b054 # 10fe0 -li r16, 0x00 # 10fe4 -stw r16, 0x0154( r6) # 10fe8 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 10fec - - - -/*********************************************************** - - major_0x10ff0 - -************************************************************ - -syscall 79 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 4 # 10ff0 - -major_0x10ff0: /* < outside referer */ -mr. r8, r3 # 10ff0 -mfspr r28, 272/*sprg0*/ # 10ff4 -lwz r31, -0x001c(r28) # 10ff8 -beq- major_0x10ff0_0x20 # 10ffc - -# r8 = id -bl id_kind # 11000 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x08 # 11004 -bne+ syscall_return_kMPInvalidIDErr # 11008 -mr r31, r8 # 1100c - -major_0x10ff0_0x20: -lwz r3, 0x0000(r31) # 11010 - -major_0x10ff0_0x24: -mr r8, r4 # 11014 -li r9, 0x0b # 11018 -bl major_0x153e0 # 1101c -cmpwi r8, 0x00 # 11020 -beq+ syscall_return_kMPInvalidIDErr # 11024 -mr r4, r8 # 11028 - -# r8 = id -bl id_kind # 1102c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -lwz r16, 0x0010( r8) # 11030 -cmpw r16, r3 # 11034 -bne+ major_0x10ff0_0x24 # 11038 -b syscall_return_noErr # 1103c - - - -/*********************************************************** - - major_0x11040 - -************************************************************ - -syscall 80 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 6 # 11040 - -major_0x11040: /* < outside referer */ -mr r16, r8 # 11040 -mr r17, r9 # 11044 -addi r8, r1, -0xb50 # 11048 - -# r8 = lock -bl lock # 1104c -mr r8, r16 # 11050 -mr r9, r17 # 11054 -mr. r8, r3 # 11058 -mfspr r9, 272/*sprg0*/ # 1105c -bne- major_0x11040_0x2c # 11060 -lwz r8, -0x001c( r9) # 11064 -b major_0x11040_0x38 # 11068 - -major_0x11040_0x2c: -# r8 = id -bl id_kind # 1106c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x08 # 11070 -bne+ major_0x0b07c_0x28 # 11074 - -major_0x11040_0x38: -mr r9, r4 # 11078 -bl major_0x10320_0xcc # 1107c -lwz r16, 0x0024( r8) # 11080 -li r5, 0x00 # 11084 -cmplw r16, r4 # 11088 -bgt+ major_0x0b054 # 1108c -lwz r5, 0x0000( r8) # 11090 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 11094 - - - -/*********************************************************** - - major_0x11098 - -************************************************************ - -syscall 125 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 11098 - -major_0x11098: /* < outside referer */ -mr r16, r8 # 11098 -mr r17, r9 # 1109c -addi r8, r1, -0xb50 # 110a0 - -# r8 = lock -bl lock # 110a4 -mr r8, r16 # 110a8 -mr r9, r17 # 110ac -mr. r8, r3 # 110b0 -mfspr r9, 272/*sprg0*/ # 110b4 -bne- major_0x11098_0x2c # 110b8 -lwz r8, -0x001c( r9) # 110bc -b major_0x11098_0x38 # 110c0 - -major_0x11098_0x2c: -# r8 = id -bl id_kind # 110c4 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x08 # 110c8 -bne+ major_0x0b07c_0x28 # 110cc - -major_0x11098_0x38: -mr r9, r4 # 110d0 -bl major_0x10320_0xcc # 110d4 -lwz r16, 0x0024( r8) # 110d8 -li r5, 0x00 # 110dc -cmplw r16, r4 # 110e0 -bgt- major_0x11098_0x58 # 110e4 -lwz r8, 0x005c( r8) # 110e8 -addi r8, r8, -0x54 # 110ec - -major_0x11098_0x58: -lwz r9, 0x002c( r8) # 110f0 -cmpwi r9, 0x00 # 110f4 -beq+ major_0x0b054 # 110f8 -lwz r5, 0x0000( r8) # 110fc - -# r1 = kdp -b syscall_return_assert_lock_unheld # 11100 - - - -/*********************************************************** - - major_0x11104 - -************************************************************ - -syscall 81 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x11104: /* < outside referer */ -mr r16, r8 # 11104 -mr r17, r9 # 11108 -addi r8, r1, -0xb50 # 1110c - -# r8 = lock -bl lock # 11110 -mr r8, r16 # 11114 -mr r9, r17 # 11118 -mr r8, r3 # 1111c - -# r8 = id -bl id_kind # 11120 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 11124 -mr r31, r8 # 11128 -bne+ major_0x0b07c_0x28 # 1112c -lwz r16, 0x0024(r31) # 11130 -lwz r17, 0x0028(r31) # 11134 -lwz r18, 0x0020(r31) # 11138 -cmplw r4, r16 # 1113c -cmplw cr1, r4, r17 # 11140 -blt+ major_0x0b054 # 11144 -bgt+ cr1, major_0x0b054 # 11148 -rlwinm. r8, r18, 0, 16, 16 # 1114c -lwz r19, 0x0070(r31) # 11150 -beq- major_0x11104_0x70 # 11154 -lwz r17, 0x0038(r31) # 11158 -rlwinm r19, r19, 0, 0, 19 # 1115c -cmpwi r17, 0x00 # 11160 -subf r18, r16, r4 # 11164 -beq+ major_0x0b054 # 11168 -add r5, r18, r19 # 1116c - -# r1 = kdp -b syscall_return_assert_lock_unheld # 11170 - -major_0x11104_0x70: -li r3, 0x00 # 11174 -mr r14, r8 # 11178 -mr r15, r9 # 1117c -addi r8, r1, -0xb90 # 11180 - -# r8 = lock -bl lock # 11184 -mr r8, r14 # 11188 -mr r9, r15 # 1118c -mr r8, r4 # 11190 -bl major_0x12248_0x1e4 # 11194 -bl major_0x12248_0x2b0 # 11198 -bns- cr7, major_0x11104_0xc8 # 1119c -mr r5, r17 # 111a0 -rlwimi r5, r4, 0, 20, 31 # 111a4 - -major_0x11104_0xa4: -sync # 111a8 -lwz r8, -0x0b90( r1) # 111ac -cmpwi cr1, r8, 0x00 # 111b0 -li r8, 0x00 # 111b4 -bne+ cr1, major_0x11104_0xc0 # 111b8 -mflr r8 # 111bc -bl panic # 111c0 - -major_0x11104_0xc0: -stw r8, -0x0b90( r1) # 111c4 -b major_0x0b0fc_0x8 # 111c8 - -major_0x11104_0xc8: -li r3, -0x7272 # 111cc -b major_0x11104_0xa4 # 111d0 - - - -/*********************************************************** - - major_0x111d4 - -************************************************************ - -syscall 98 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x111d4: /* < outside referer */ -mr r16, r8 # 111d4 -mr r17, r9 # 111d8 -addi r8, r1, -0xb50 # 111dc - -# r8 = lock -bl lock # 111e0 -mr r8, r16 # 111e4 -mr r9, r17 # 111e8 -mr r8, r3 # 111ec - -# r8 = id -bl id_kind # 111f0 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 111f4 -mr r31, r8 # 111f8 -bne+ major_0x0b07c_0x28 # 111fc -lwz r16, 0x0024(r31) # 11200 -lwz r17, 0x0028(r31) # 11204 -mr r29, r5 # 11208 -add r5, r5, r4 # 1120c -lwz r18, 0x0020(r31) # 11210 -addi r5, r5, -0x01 # 11214 -cmplw r4, r16 # 11218 -cmplw cr1, r5, r17 # 1121c -blt+ major_0x0b054 # 11220 -bgt+ cr1, major_0x0b054 # 11224 -lwz r20, 0x0038(r31) # 11228 -rlwinm. r8, r18, 0, 16, 16 # 1122c -cmpwi cr1, r20, 0x00 # 11230 -beq- major_0x111d4_0x84 # 11234 -beq+ cr1, major_0x0b054 # 11238 -lwz r19, 0x0070(r31) # 1123c -subf r18, r16, r4 # 11240 -rlwinm r19, r19, 0, 0, 19 # 11244 -add r16, r18, r19 # 11248 -stw r16, 0x0134( r6) # 1124c -stw r29, 0x013c( r6) # 11250 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 11254 - -major_0x111d4_0x84: -mr r14, r8 # 11258 -mr r15, r9 # 1125c -addi r8, r1, -0xb90 # 11260 - -# r8 = lock -bl lock # 11264 -mr r8, r14 # 11268 -mr r9, r15 # 1126c -mr r8, r4 # 11270 -mr r28, r4 # 11274 -bl major_0x12248_0x1e4 # 11278 -beq+ panic_wrapper_0x0f380 # 1127c -bl major_0x12248_0x2b0 # 11280 -crclr 4*cr3 + eq # 11284 -li r3, 0x00 # 11288 -bso- cr7, major_0x111d4_0xc4 # 1128c -crset 4*cr3 + eq # 11290 -li r3, -0x7272 # 11294 - -major_0x111d4_0xc4: -rlwimi r17, r4, 0, 20, 31 # 11298 -rlwinm r29, r17, 0, 0, 19 # 1129c -stw r17, 0x0134( r6) # 112a0 - -major_0x111d4_0xd0: -lwz r16, 0x0068(r31) # 112a4 -add r28, r28, r16 # 112a8 -add r29, r29, r16 # 112ac -cmplw cr2, r28, r5 # 112b0 -bgt- cr2, major_0x111d4_0x140 # 112b4 -mr r8, r28 # 112b8 -bl major_0x12248_0x1e4 # 112bc -beq+ panic_wrapper_0x0f380 # 112c0 -bl major_0x12248_0x2b0 # 112c4 -rlwinm r17, r17, 0, 0, 19 # 112c8 -crxor r31, r31, r14 # 112cc -bns- cr7, major_0x111d4_0x10c # 112d0 -beq+ cr3, major_0x111d4_0xd0 # 112d4 -cmplw r29, r17 # 112d8 -beq+ major_0x111d4_0xd0 # 112dc - -major_0x111d4_0x10c: -lwz r16, 0x007c(r31) # 112e0 -and r28, r28, r16 # 112e4 -subf r16, r4, r28 # 112e8 - -major_0x111d4_0x118: -stw r16, 0x013c( r6) # 112ec -sync # 112f0 -lwz r8, -0x0b90( r1) # 112f4 -cmpwi cr1, r8, 0x00 # 112f8 -li r8, 0x00 # 112fc -bne+ cr1, major_0x111d4_0x138 # 11300 -mflr r8 # 11304 -bl panic # 11308 - -major_0x111d4_0x138: -stw r8, -0x0b90( r1) # 1130c -b major_0x0b0fc_0x8 # 11310 - -major_0x111d4_0x140: -addi r5, r5, 0x01 # 11314 -beq- cr3, major_0x111d4_0x170 # 11318 -mr r8, r28 # 1131c -bl major_0x12248_0x1e4 # 11320 -beq+ panic_wrapper_0x0f380 # 11324 -bl major_0x12248_0x2b0 # 11328 -rlwinm r17, r17, 0, 0, 19 # 1132c -bns- cr7, major_0x111d4_0x170 # 11330 -cmplw r29, r17 # 11334 -bne- major_0x111d4_0x170 # 11338 -subf r16, r4, r5 # 1133c -b major_0x111d4_0x118 # 11340 - -major_0x111d4_0x170: -lwz r16, 0x007c(r31) # 11344 -and r28, r28, r16 # 11348 -cmplw r5, r28 # 1134c -bge- major_0x111d4_0x184 # 11350 -mr r28, r5 # 11354 - -major_0x111d4_0x184: -subf r16, r4, r28 # 11358 -b major_0x111d4_0x118 # 1135c - - - -/*********************************************************** - - major_0x11360 - -************************************************************ - -syscall 82 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 5 # 11360 - -major_0x11360: /* < outside referer */ -lwz r8, -0x0420( r1) # 11360 -cmpwi r8, 0x00 # 11364 -bne+ syscall_return_kMPInsufficientResourcesErr # 11368 -mr r16, r8 # 1136c -mr r17, r9 # 11370 -addi r8, r1, -0xb50 # 11374 - -# r8 = lock -bl lock # 11378 -mr r8, r16 # 1137c -mr r9, r17 # 11380 -mr r8, r3 # 11384 - -# r8 = id -bl id_kind # 11388 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0c # 1138c -bne+ major_0x0b07c_0x28 # 11390 -stw r3, -0x0420( r1) # 11394 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 11398 - - - -/*********************************************************** - - major_0x1139c - -************************************************************ - -syscall 83 - -************************************************************ - -Xrefs: -syscall -NKMapPage - -***********************************************************/ - -major_0x1139c: /* < outside referer */ -mr r16, r8 # 1139c -mr r17, r9 # 113a0 -addi r8, r1, -0xad0 # 113a4 - -# r8 = lock -bl lock # 113a8 -mr r8, r16 # 113ac -mr r9, r17 # 113b0 -bl major_0x1139c_0x90 # 113b4 -sync # 113b8 -lwz r16, -0x0ad0( r1) # 113bc -cmpwi cr1, r16, 0x00 # 113c0 -li r16, 0x00 # 113c4 -bne+ cr1, major_0x1139c_0x38 # 113c8 -mflr r16 # 113cc -bl panic # 113d0 - -major_0x1139c_0x38: -stw r16, -0x0ad0( r1) # 113d4 -mr. r4, r8 # 113d8 -bne+ syscall_return_noErr # 113dc -mr r16, r8 # 113e0 -mr r17, r9 # 113e4 -addi r8, r1, -0xb50 # 113e8 - -# r8 = lock -bl lock # 113ec -mr r8, r16 # 113f0 -mr r9, r17 # 113f4 - -major_0x1139c_0x5c: /* < outside referer */ -lwz r8, -0x0420( r1) # 113f8 - -# r8 = id -bl id_kind # 113fc -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0c # 11400 -mr r31, r8 # 11404 -bne+ major_0x0af60_0xa4 # 11408 -lwz r8, 0x001c(r31) # 1140c - -# r8 = id -bl id_kind # 11410 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x09 # 11414 -mr r31, r8 # 11418 -bne+ major_0x0af60_0xa4 # 1141c -lwz r8, 0x0020(r31) # 11420 -bl major_0x0d35c # 11424 -b major_0x0af60_0xa4 # 11428 - -major_0x1139c_0x90: /* < outside referer */ -addi r18, r1, -0x450 # 1142c -lwz r8, -0x0448( r1) # 11430 -cmpw r8, r18 # 11434 -beq- major_0x1139c_0xec # 11438 -lwz r16, 0x0008( r8) # 1143c -lwz r17, 0x000c( r8) # 11440 -stw r16, 0x0008(r17) # 11444 -stw r17, 0x000c(r16) # 11448 -li r16, 0x00 # 1144c -stw r16, 0x0008( r8) # 11450 -stw r16, 0x000c( r8) # 11454 -lwz r16, -0x0430( r1) # 11458 -addi r16, r16, -0x01 # 1145c -stw r16, -0x0430( r1) # 11460 -lwz r17, 0x0004( r8) # 11464 -mfspr r16, 22/*dec*/ # 11468 -eqv. r17, r18, r17 # 1146c -stw r16, 0x0000( r8) # 11470 -bne+ panic_wrapper_0x0f380 # 11474 -stw r16, 0x0004( r8) # 11478 -stw r16, 0x0008( r8) # 1147c -stw r16, 0x000c( r8) # 11480 -blr # 11484 - -major_0x1139c_0xec: -li r8, 0x00 # 11488 -blr # 1148c - - - -/*********************************************************** - - major_0x11490 - -************************************************************ - -syscall 84 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 4 # 11490 - -major_0x11490: /* < outside referer */ -mr r16, r8 # 11490 -mr r17, r9 # 11494 -addi r8, r1, -0xad0 # 11498 - -# r8 = lock -bl lock # 1149c -mr r8, r16 # 114a0 -mr r9, r17 # 114a4 -lwz r16, 0x0004( r3) # 114a8 -lwz r17, 0x0000( r3) # 114ac -addi r18, r1, -0x450 # 114b0 -eqv. r16, r16, r17 # 114b4 -cmpw cr1, r17, r18 # 114b8 -bne- major_0x11490_0x3c # 114bc -bne- cr1, major_0x11490_0x3c # 114c0 -li r3, -0x32 # 114c4 -b major_0x11490_0x48 # 114c8 - -major_0x11490_0x3c: -mr r8, r3 # 114cc - -# r1 = kdp -# r8 = maybe the page -bl free_list_add_page # 114d0 -li r3, 0x00 # 114d4 - -major_0x11490_0x48: -sync # 114d8 -lwz r16, -0x0ad0( r1) # 114dc -cmpwi cr1, r16, 0x00 # 114e0 -li r16, 0x00 # 114e4 -bne+ cr1, major_0x11490_0x64 # 114e8 -mflr r16 # 114ec -bl panic # 114f0 - -major_0x11490_0x64: -stw r16, -0x0ad0( r1) # 114f4 -b syscall_return # 114f8 - - - -/*********************************************************** - - free_list_add_page - -************************************************************ - -Xrefs: -setup -major_0x104ec -major_0x1070c -major_0x11490 -NKUnmapPages - -************************************************************ - -> r1 = kdp -> r8 = maybe the page - -***********************************************************/ - -free_list_add_page: /* < outside referer */ -clrlwi. r9, r8, 0x14 # 114fc -addi r9, r1, -0x450 # kdp.-0x450 # 11500 -bne+ panic_wrapper_0x0f380 # 11504 -stw r9, 0x0000( r8) # 11508 -stw r9, 0x0008( r8) # 1150c -lwz r16, 0x000c( r9) # 11510 -stw r16, 0x000c( r8) # 11514 -stw r8, 0x0008(r16) # 11518 -stw r8, 0x000c( r9) # 1151c -not r9, r9 # 11520 -stw r9, 0x0004( r8) # 11524 -lwz r8, -0x0430( r1) # kdp.-0x430 # 11528 -addi r8, r8, 0x01 # 1152c -stw r8, -0x0430( r1) # kdp.-0x430 # 11530 -blr # 11534 - - - -/*********************************************************** - - NKGetFreePageCount - -************************************************************ - -syscall 100 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 11538 - -NKGetFreePageCount: /* < outside referer */ -lwz r3, -0x0430( r1) # 11538 -b syscall_return # 1153c - - - -/*********************************************************** - - NKGetUnheldFreePageCount - -************************************************************ - -syscall 101 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 6 # 11540 - -NKGetUnheldFreePageCount: /* < outside referer */ -lwz r3, -0x042c( r1) # 11540 -b syscall_return # 11544 - - - -/*********************************************************** - - NKMapPage - -************************************************************ - -syscall 85 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 11548 - -NKMapPage: /* < outside referer */ -mr r16, r8 # 11548 -mr r17, r9 # 1154c -addi r8, r1, -0xb50 # 11550 - -# r8 = lock -bl lock # 11554 -mr r8, r16 # 11558 -mr r9, r17 # 1155c -mr r8, r3 # 11560 - -# r8 = id -bl id_kind # 11564 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 11568 -bne+ major_0x0b07c_0x28 # 1156c -mr r31, r8 # 11570 -lwz r16, 0x0008(r31) # 11574 -rlwinm. r8, r16, 0, 28, 28 # 11578 -bne+ major_0x0b054 # 1157c -lwz r16, 0x0024(r31) # 11580 -lwz r17, 0x0028(r31) # 11584 -lwz r19, 0x0020(r31) # 11588 -cmplw r4, r16 # 1158c -cmplw cr1, r4, r17 # 11590 -blt+ major_0x0b054 # 11594 -bgt+ cr1, major_0x0b054 # 11598 -rlwinm. r8, r19, 0, 16, 16 # 1159c -cmplw cr1, r4, r16 # 115a0 -lwz r20, 0x0038(r31) # 115a4 -beq- NKMapPage_0x8c # 115a8 -bne+ cr1, major_0x0b054 # 115ac -cmpwi r20, 0x00 # 115b0 -lwz r8, 0x0070(r31) # 115b4 -bne+ major_0x0af60_0xa4 # 115b8 -rlwimi r8, r5, 0, 0, 19 # 115bc -lwz r18, 0x007c(r31) # 115c0 -lwz r20, 0x002c(r31) # 115c4 -stw r8, 0x0070(r31) # 115c8 -stw r20, 0x0038(r31) # 115cc - -# r1 = kdp -b syscall_return_assert_lock_unheld # 115d0 - -NKMapPage_0x8c: -mr r14, r8 # 115d4 -mr r15, r9 # 115d8 -addi r8, r1, -0xb90 # 115dc - -# r8 = lock -bl lock # 115e0 -mr r8, r14 # 115e4 -mr r9, r15 # 115e8 -mr r8, r4 # 115ec -bl major_0x12248_0x1e4 # 115f0 -beq+ panic_wrapper_0x0f380 # 115f4 -lwz r29, 0x0000(r30) # 115f8 -sync # 115fc -lwz r14, -0x0b90( r1) # 11600 -cmpwi cr1, r14, 0x00 # 11604 -li r14, 0x00 # 11608 -bne+ cr1, NKMapPage_0xd0 # 1160c -mflr r14 # 11610 -bl panic # 11614 - -NKMapPage_0xd0: -stw r14, -0x0b90( r1) # 11618 -clrlwi. r8, r29, 0x1f # 1161c -bne+ major_0x0af60_0xa4 # 11620 -lwz r17, 0x0134( r6) # 11624 -rlwinm. r8, r17, 0, 30, 30 # 11628 -bne- NKMapPage_0x12c # 1162c -mr r16, r8 # 11630 -mr r17, r9 # 11634 -addi r8, r1, -0xad0 # 11638 - -# r8 = lock -bl lock # 1163c -mr r8, r16 # 11640 -mr r9, r17 # 11644 -bl major_0x1139c_0x90 # 11648 -sync # 1164c -lwz r16, -0x0ad0( r1) # 11650 -cmpwi cr1, r16, 0x00 # 11654 -li r16, 0x00 # 11658 -bne+ cr1, NKMapPage_0x120 # 1165c -mflr r16 # 11660 -bl panic # 11664 - -NKMapPage_0x120: -stw r16, -0x0ad0( r1) # 11668 -mr. r5, r8 # 1166c -beq+ major_0x1139c_0x5c # 11670 - -NKMapPage_0x12c: -lwz r17, 0x0134( r6) # 11674 -rlwinm. r8, r17, 0, 29, 29 # 11678 -beq- NKMapPage_0x17c # 1167c -rlwinm. r8, r29, 0, 25, 25 # 11680 -lwz r18, 0x0068(r31) # 11684 - -NKMapPage_0x140: -addi r18, r18, -0x20 # 11688 -bne- NKMapPage_0x174 # 1168c -dcbst r18, r5 # 11690 - -NKMapPage_0x14c: -cmpwi cr1, r18, 0x00 # 11694 -bgt+ cr1, NKMapPage_0x140 # 11698 -sync # 1169c -lwz r18, 0x0068(r31) # 116a0 - -NKMapPage_0x15c: -addi r18, r18, -0x20 # 116a4 -icbi r18, r5 # 116a8 -cmpwi cr1, r18, 0x00 # 116ac -bgt+ cr1, NKMapPage_0x15c # 116b0 -isync # 116b4 -b NKMapPage_0x17c # 116b8 - -NKMapPage_0x174: -dcbf r18, r5 # 116bc -b NKMapPage_0x14c # 116c0 - -NKMapPage_0x17c: -lwz r18, 0x0068(r31) # 116c4 -andi. r29, r29, 0x7e7 # 116c8 -ori r29, r29, 0x01 # 116cc -rlwimi r29, r5, 0, 0, 19 # 116d0 -lwz r17, 0x0038(r31) # 116d4 -stw r29, 0x0000(r30) # 116d8 -add r17, r17, r18 # 116dc -stw r17, 0x0038(r31) # 116e0 -lwz r17, 0x0134( r6) # 116e4 -clrlwi. r8, r17, 0x1f # 116e8 - -# r1 = kdp -beq+ syscall_return_assert_lock_unheld # 116ec -lwz r5, 0x0068(r31) # 116f0 -b NKHoldPages_0x2c # 116f4 - - - -/*********************************************************** - - NKUnmapPages - -************************************************************ - -syscall 86 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 116f8 - -NKUnmapPages: /* < outside referer */ -mr r16, r8 # 116f8 -mr r17, r9 # 116fc -addi r8, r1, -0xb50 # 11700 - -# r8 = lock -bl lock # 11704 -mr r8, r16 # 11708 -mr r9, r17 # 1170c -mr r8, r3 # 11710 - -# r8 = id -bl id_kind # 11714 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 11718 -bne+ major_0x0b07c_0x28 # 1171c -mr r31, r8 # 11720 -lwz r8, 0x0134( r6) # 11724 -lwz r16, 0x0008(r31) # 11728 -rlwinm. r16, r16, 0, 28, 28 # 1172c -bne+ major_0x0b054 # 11730 -clrlwi. r8, r8, 0x1f # 11734 -add r5, r5, r4 # 11738 -lwz r16, 0x0024(r31) # 1173c -lwz r17, 0x0028(r31) # 11740 -lwz r19, 0x0020(r31) # 11744 -crmove r14, r2 # 11748 -addi r5, r5, -0x01 # 1174c -cmplw r4, r16 # 11750 -cmplw cr1, r5, r17 # 11754 -blt+ major_0x0b054 # 11758 -bgt+ cr1, major_0x0b054 # 1175c -lwz r29, 0x0068(r31) # 11760 -lwz r20, 0x0038(r31) # 11764 -rlwinm. r8, r19, 0, 16, 16 # 11768 -cmplw cr1, r4, r16 # 1176c -beq- NKUnmapPages_0xd8 # 11770 -bne+ cr1, major_0x0b054 # 11774 -cmpwi r20, 0x00 # 11778 -li r20, 0x00 # 1177c -ble+ major_0x0af60_0xa4 # 11780 -stw r20, 0x0038(r31) # 11784 -mr r14, r8 # 11788 -mr r15, r9 # 1178c -addi r8, r1, -0xb90 # 11790 - -# r8 = lock -bl lock # 11794 -mr r8, r14 # 11798 -mr r9, r15 # 1179c -li r30, 0x00 # 117a0 - -NKUnmapPages_0xac: -mr r8, r4 # 117a4 -lwz r9, 0x006c(r31) # 117a8 -bl major_0x12248_0x45c # 117ac -beq- NKUnmapPages_0xc4 # 117b0 -bl major_0x12248_0x2e0 # 117b4 -bl major_0x12248_0x348 # 117b8 - -NKUnmapPages_0xc4: -add r4, r4, r29 # 117bc -subf. r8, r4, r5 # 117c0 -bge+ NKUnmapPages_0xac # 117c4 -crclr 4*cr3 + eq # 117c8 -b NKUnmapPages_0x158 # 117cc - -NKUnmapPages_0xd8: -bne- cr3, NKUnmapPages_0xf4 # 117d0 -mr r14, r8 # 117d4 -mr r15, r9 # 117d8 -addi r8, r1, -0xad0 # 117dc - -# r8 = lock -bl lock # 117e0 -mr r8, r14 # 117e4 -mr r9, r15 # 117e8 - -NKUnmapPages_0xf4: -mr r14, r8 # 117ec -mr r15, r9 # 117f0 -addi r8, r1, -0xb90 # 117f4 - -# r8 = lock -bl lock # 117f8 -mr r8, r14 # 117fc -mr r9, r15 # 11800 -lwz r28, 0x0038(r31) # 11804 - -NKUnmapPages_0x110: -mr r8, r4 # 11808 -bl major_0x12248_0x1e4 # 1180c -beq+ panic_wrapper_0x0f380 # 11810 -bl major_0x12248_0x2b0 # 11814 -bns- cr7, NKUnmapPages_0x148 # 11818 -bltl- cr5, major_0x12248_0x2e0 # 1181c -bltl- cr5, major_0x12248_0x348 # 11820 -lwz r18, 0x0000(r30) # 11824 -subf r28, r29, r28 # 11828 -rlwinm r18, r18, 0, 0, 30 # 1182c -stw r18, 0x0000(r30) # 11830 -bne- cr3, NKUnmapPages_0x148 # 11834 -rlwinm r8, r18, 0, 0, 19 # 11838 - -# r1 = kdp -# r8 = maybe the page -bl free_list_add_page # 1183c - -NKUnmapPages_0x148: -add r4, r4, r29 # 11840 -subf. r8, r4, r5 # 11844 -bge+ NKUnmapPages_0x110 # 11848 -stw r28, 0x0038(r31) # 1184c - -NKUnmapPages_0x158: -sync # 11850 -lwz r14, -0x0b90( r1) # 11854 -cmpwi cr1, r14, 0x00 # 11858 -li r14, 0x00 # 1185c -bne+ cr1, NKUnmapPages_0x174 # 11860 -mflr r14 # 11864 -bl panic # 11868 - -NKUnmapPages_0x174: -stw r14, -0x0b90( r1) # 1186c - -# r1 = kdp -bne+ cr3, syscall_return_assert_lock_unheld # 11870 -sync # 11874 -lwz r14, -0x0ad0( r1) # 11878 -cmpwi cr1, r14, 0x00 # 1187c -li r14, 0x00 # 11880 -bne+ cr1, NKUnmapPages_0x198 # 11884 -mflr r14 # 11888 -bl panic # 1188c - -NKUnmapPages_0x198: -stw r14, -0x0ad0( r1) # 11890 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 11894 - - - -/*********************************************************** - - NKMakePhysicallyContiguous - -************************************************************ - -syscall 127 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 11898 - -NKMakePhysicallyContiguous: /* < outside referer */ -mr r16, r8 # 11898 -mr r17, r9 # 1189c -addi r8, r1, -0xb50 # 118a0 - -# r8 = lock -bl lock # 118a4 -mr r8, r16 # 118a8 -mr r9, r17 # 118ac -mr r8, r3 # 118b0 - -# r8 = id -bl id_kind # 118b4 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 118b8 -bne+ major_0x0b07c_0x28 # 118bc -mr r31, r8 # 118c0 -mr r27, r5 # 118c4 -add r5, r5, r4 # 118c8 -lwz r16, 0x0024(r31) # 118cc -lwz r17, 0x0028(r31) # 118d0 -addi r5, r5, -0x01 # 118d4 -cmplw r4, r16 # 118d8 -cmplw cr1, r5, r17 # 118dc -blt+ major_0x0b054 # 118e0 -bgt+ cr1, major_0x0b054 # 118e4 -lwz r19, 0x0020(r31) # 118e8 -lwz r29, 0x0068(r31) # 118ec -rlwinm. r8, r19, 0, 16, 16 # 118f0 -bne+ major_0x0b054 # 118f4 -mr r14, r8 # 118f8 -mr r15, r9 # 118fc -addi r8, r1, -0xb90 # 11900 - -# r8 = lock -bl lock # 11904 -mr r8, r14 # 11908 -mr r9, r15 # 1190c -mr r27, r4 # 11910 -li r28, -0x01 # 11914 - -NKMakePhysicallyContiguous_0x80: -mr r8, r27 # 11918 -bl major_0x12248_0x1e4 # 1191c -beq+ panic_wrapper_0x0f380 # 11920 -bl major_0x12248_0x2b0 # 11924 -bns- cr7, NKMakePhysicallyContiguous_0x150 # 11928 -rlwinm r8, r17, 0, 0, 19 # 1192c -cmpwi r28, -0x01 # 11930 -cmpw cr1, r28, r8 # 11934 -mr r28, r8 # 11938 -beq- NKMakePhysicallyContiguous_0xac # 1193c -bne- cr1, NKMakePhysicallyContiguous_0xe0 # 11940 - -NKMakePhysicallyContiguous_0xac: -add r27, r27, r29 # 11944 -add r28, r28, r29 # 11948 -subf. r8, r27, r5 # 1194c -bge+ NKMakePhysicallyContiguous_0x80 # 11950 -sync # 11954 -lwz r14, -0x0b90( r1) # 11958 -cmpwi cr1, r14, 0x00 # 1195c -li r14, 0x00 # 11960 -bne+ cr1, NKMakePhysicallyContiguous_0xd8 # 11964 -mflr r14 # 11968 -bl panic # 1196c - -NKMakePhysicallyContiguous_0xd8: -stw r14, -0x0b90( r1) # 11970 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 11974 - -NKMakePhysicallyContiguous_0xe0: -sync # 11978 -lwz r14, -0x0b90( r1) # 1197c -cmpwi cr1, r14, 0x00 # 11980 -li r14, 0x00 # 11984 -bne+ cr1, NKMakePhysicallyContiguous_0xfc # 11988 -mflr r14 # 1198c -bl panic # 11990 - -NKMakePhysicallyContiguous_0xfc: -stw r14, -0x0b90( r1) # 11994 -mr r16, r8 # 11998 -mr r17, r9 # 1199c -addi r8, r1, -0xad0 # 119a0 - -# r8 = lock -bl lock # 119a4 -mr r8, r16 # 119a8 -mr r9, r17 # 119ac -addi r18, r1, -0x450 # 119b0 -lwz r8, -0x0448( r1) # 119b4 -cmpw r8, r18 # 119b8 -beq- NKMakePhysicallyContiguous_0x174 # 119bc -b NKMakePhysicallyContiguous_0x174 # 119c0 -.long 0x7c0004ac # 119c4 -.long 0x8201f530 # 119c8 -.long 0x2c900000 # 119cc -.long 0x3a000000 # 119d0 -.long 0x40a6000c # 119d4 -.long 0x7e0802a6 # 119d8 -.long 0x48005905 # 119dc -.long 0x9201f530 # 119e0 -.long 0x4bff9554 # 119e4 - -NKMakePhysicallyContiguous_0x150: -sync # 119e8 -lwz r16, -0x0b90( r1) # 119ec -cmpwi cr1, r16, 0x00 # 119f0 -li r16, 0x00 # 119f4 -bne+ cr1, NKMakePhysicallyContiguous_0x16c # 119f8 -mflr r16 # 119fc -bl panic # 11a00 - -NKMakePhysicallyContiguous_0x16c: -stw r16, -0x0b90( r1) # 11a04 -b major_0x0af60_0xa4 # 11a08 - -NKMakePhysicallyContiguous_0x174: -sync # 11a0c -lwz r16, -0x0ad0( r1) # 11a10 -cmpwi cr1, r16, 0x00 # 11a14 -li r16, 0x00 # 11a18 -bne+ cr1, NKMakePhysicallyContiguous_0x190 # 11a1c -mflr r16 # 11a20 -bl panic # 11a24 - -NKMakePhysicallyContiguous_0x190: -stw r16, -0x0ad0( r1) # 11a28 -b major_0x0af60_0xa4 # 11a2c - - - -/*********************************************************** - - NKLockPages - -************************************************************ - -syscall 87 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 4 # 11a30 - -NKLockPages: /* < outside referer */ -mr r16, r8 # 11a30 -mr r17, r9 # 11a34 -addi r8, r1, -0xb50 # 11a38 - -# r8 = lock -bl lock # 11a3c -mr r8, r16 # 11a40 -mr r9, r17 # 11a44 -mr r8, r3 # 11a48 - -# r8 = id -bl id_kind # 11a4c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 11a50 -bne+ major_0x0b07c_0x28 # 11a54 -mr r31, r8 # 11a58 -mr r27, r5 # 11a5c -add r5, r5, r4 # 11a60 -lwz r16, 0x0024(r31) # 11a64 -lwz r17, 0x0028(r31) # 11a68 -addi r5, r5, -0x01 # 11a6c -cmplw r4, r16 # 11a70 -cmplw cr1, r5, r17 # 11a74 -blt+ major_0x0b054 # 11a78 -bgt+ cr1, major_0x0b054 # 11a7c -lwz r19, 0x0020(r31) # 11a80 -lwz r29, 0x0068(r31) # 11a84 -rlwinm. r8, r19, 0, 16, 16 # 11a88 -bne+ major_0x0b054 # 11a8c -mr r27, r4 # 11a90 -li r28, 0x00 # 11a94 - -NKLockPages_0x68: -mr r8, r27 # 11a98 -bl major_0x12248_0x254 # 11a9c -beq+ major_0x0b054 # 11aa0 -lhz r18, 0x0000(r30) # 11aa4 -rlwinm r17, r18, 24, 25, 31 # 11aa8 -rlwinm. r8, r18, 0, 16, 16 # 11aac -cmpwi cr1, r17, 0x7f # 11ab0 -addi r28, r28, 0x01 # 11ab4 -beq- NKLockPages_0x94 # 11ab8 -addi r28, r28, -0x01 # 11abc -bge+ cr1, major_0x0b0cc # 11ac0 - -NKLockPages_0x94: -add r27, r27, r29 # 11ac4 -subf. r8, r27, r5 # 11ac8 -bge+ NKLockPages_0x68 # 11acc -mr r16, r8 # 11ad0 -mr r17, r9 # 11ad4 -addi r8, r1, -0xad0 # 11ad8 - -# r8 = lock -bl lock # 11adc -mr r8, r16 # 11ae0 -mr r9, r17 # 11ae4 -lwz r16, -0x042c( r1) # 11ae8 -subf. r16, r28, r16 # 11aec -ble- NKLockPages_0xc8 # 11af0 -stw r16, -0x042c( r1) # 11af4 - -NKLockPages_0xc8: -sync # 11af8 -lwz r16, -0x0ad0( r1) # 11afc -cmpwi cr1, r16, 0x00 # 11b00 -li r16, 0x00 # 11b04 -bne+ cr1, NKLockPages_0xe4 # 11b08 -mflr r16 # 11b0c -bl panic # 11b10 - -NKLockPages_0xe4: -stw r16, -0x0ad0( r1) # 11b14 -ble+ major_0x0af60_0xa4 # 11b18 -mr r27, r4 # 11b1c - -NKLockPages_0xf0: -mr r8, r27 # 11b20 -bl major_0x12248_0x254 # 11b24 -beq+ panic_wrapper_0x0f380 # 11b28 -lhz r18, 0x0000(r30) # 11b2c -rlwinm. r17, r18, 0, 16, 16 # 11b30 -bne- NKLockPages_0x10c # 11b34 -li r18, -0x8000 # 11b38 - -NKLockPages_0x10c: -rlwinm r17, r18, 24, 25, 31 # 11b3c -addi r17, r17, 0x01 # 11b40 -rlwimi r18, r17, 8, 17, 23 # 11b44 -sth r18, 0x0000(r30) # 11b48 -add r27, r27, r29 # 11b4c -subf. r8, r27, r5 # 11b50 -bge+ NKLockPages_0xf0 # 11b54 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 11b58 - - - -/*********************************************************** - - NKUnlockPages - -************************************************************ - -syscall 88 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -NKUnlockPages: /* < outside referer */ -mr r16, r8 # 11b5c -mr r17, r9 # 11b60 -addi r8, r1, -0xb50 # 11b64 - -# r8 = lock -bl lock # 11b68 -mr r8, r16 # 11b6c -mr r9, r17 # 11b70 -mr r8, r3 # 11b74 - -# r8 = id -bl id_kind # 11b78 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 11b7c -bne+ major_0x0b07c_0x28 # 11b80 -mr r31, r8 # 11b84 -add r5, r5, r4 # 11b88 -lwz r16, 0x0024(r31) # 11b8c -lwz r17, 0x0028(r31) # 11b90 -addi r5, r5, -0x01 # 11b94 -cmplw r4, r16 # 11b98 -cmplw cr1, r5, r17 # 11b9c -blt+ major_0x0b054 # 11ba0 -bgt+ cr1, major_0x0b054 # 11ba4 -lwz r19, 0x0020(r31) # 11ba8 -lwz r29, 0x0068(r31) # 11bac -rlwinm. r8, r19, 0, 16, 16 # 11bb0 -bne+ major_0x0b054 # 11bb4 -mr r27, r4 # 11bb8 - -NKUnlockPages_0x60: -mr r8, r27 # 11bbc -bl major_0x12248_0x254 # 11bc0 -beq+ major_0x0b054 # 11bc4 -lhz r18, 0x0000(r30) # 11bc8 -rlwinm r17, r18, 24, 25, 31 # 11bcc -rlwinm. r8, r18, 0, 16, 16 # 11bd0 -cmpwi cr1, r17, 0x00 # 11bd4 -beq+ major_0x0b0cc # 11bd8 -addi r28, r28, 0x01 # 11bdc -beq+ cr1, major_0x0b0cc # 11be0 -add r27, r27, r29 # 11be4 -subf. r8, r27, r5 # 11be8 -bge+ NKUnlockPages_0x60 # 11bec -li r28, 0x00 # 11bf0 - -NKUnlockPages_0x98: -mr r8, r4 # 11bf4 -bl major_0x12248_0x254 # 11bf8 -beq+ major_0x0b054 # 11bfc -lhz r18, 0x0000(r30) # 11c00 -rlwinm r17, r18, 24, 25, 31 # 11c04 -addi r17, r17, -0x01 # 11c08 -rlwimi r18, r17, 8, 17, 23 # 11c0c -clrlwi. r8, r18, 0x11 # 11c10 -bne- NKUnlockPages_0xc4 # 11c14 -rlwinm r18, r18, 0, 17, 15 # 11c18 -addi r28, r28, 0x01 # 11c1c - -NKUnlockPages_0xc4: -sth r18, 0x0000(r30) # 11c20 -add r4, r4, r29 # 11c24 -subf. r8, r4, r5 # 11c28 -bge+ NKUnlockPages_0x98 # 11c2c -mr r16, r8 # 11c30 -mr r17, r9 # 11c34 -addi r8, r1, -0xad0 # 11c38 - -# r8 = lock -bl lock # 11c3c -mr r8, r16 # 11c40 -mr r9, r17 # 11c44 -lwz r16, -0x042c( r1) # 11c48 -add r16, r16, r28 # 11c4c -stw r16, -0x042c( r1) # 11c50 -sync # 11c54 -lwz r16, -0x0ad0( r1) # 11c58 -cmpwi cr1, r16, 0x00 # 11c5c -li r16, 0x00 # 11c60 -bne+ cr1, NKUnlockPages_0x114 # 11c64 -mflr r16 # 11c68 -bl panic # 11c6c - -NKUnlockPages_0x114: -stw r16, -0x0ad0( r1) # 11c70 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 11c74 - - - -/*********************************************************** - - NKHoldPages - -************************************************************ - -syscall 89 - -************************************************************ - -Xrefs: -syscall -NKMapPage - -***********************************************************/ - -.align 3 # 11c78 - -NKHoldPages: /* < outside referer */ -mr r16, r8 # 11c78 -mr r17, r9 # 11c7c -addi r8, r1, -0xb50 # 11c80 - -# r8 = lock -bl lock # 11c84 -mr r8, r16 # 11c88 -mr r9, r17 # 11c8c -mr r8, r3 # 11c90 - -# r8 = id -bl id_kind # 11c94 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 11c98 -bne+ major_0x0b07c_0x28 # 11c9c -mr r31, r8 # 11ca0 - -NKHoldPages_0x2c: /* < outside referer */ -add r5, r5, r4 # 11ca4 -lwz r16, 0x0024(r31) # 11ca8 -lwz r17, 0x0028(r31) # 11cac -addi r5, r5, -0x01 # 11cb0 -cmplw r4, r16 # 11cb4 -cmplw cr1, r5, r17 # 11cb8 -blt+ major_0x0b054 # 11cbc -bgt+ cr1, major_0x0b054 # 11cc0 -lwz r19, 0x0020(r31) # 11cc4 -lwz r29, 0x0068(r31) # 11cc8 -rlwinm. r8, r19, 0, 16, 16 # 11ccc -bne+ major_0x0b054 # 11cd0 -mr r27, r4 # 11cd4 -li r28, 0x00 # 11cd8 - -NKHoldPages_0x64: -mr r8, r27 # 11cdc -bl major_0x12248_0x254 # 11ce0 -beq+ major_0x0b054 # 11ce4 -lhz r18, 0x0000(r30) # 11ce8 -clrlwi r17, r18, 0x18 # 11cec -rlwinm. r8, r18, 0, 16, 16 # 11cf0 -cmpwi cr1, r17, 0xff # 11cf4 -addi r28, r28, 0x01 # 11cf8 -beq- NKHoldPages_0x90 # 11cfc -addi r28, r28, -0x01 # 11d00 -bge+ cr1, major_0x0b0cc # 11d04 - -NKHoldPages_0x90: -add r27, r27, r29 # 11d08 -subf. r8, r27, r5 # 11d0c -bge+ NKHoldPages_0x64 # 11d10 -mr r16, r8 # 11d14 -mr r17, r9 # 11d18 -addi r8, r1, -0xad0 # 11d1c - -# r8 = lock -bl lock # 11d20 -mr r8, r16 # 11d24 -mr r9, r17 # 11d28 -lwz r16, -0x042c( r1) # 11d2c -subf. r16, r28, r16 # 11d30 -ble- NKHoldPages_0xc4 # 11d34 -stw r16, -0x042c( r1) # 11d38 - -NKHoldPages_0xc4: -sync # 11d3c -lwz r16, -0x0ad0( r1) # 11d40 -cmpwi cr1, r16, 0x00 # 11d44 -li r16, 0x00 # 11d48 -bne+ cr1, NKHoldPages_0xe0 # 11d4c -mflr r16 # 11d50 -bl panic # 11d54 - -NKHoldPages_0xe0: -stw r16, -0x0ad0( r1) # 11d58 -ble+ major_0x0af60_0xa4 # 11d5c -mr r27, r4 # 11d60 - -NKHoldPages_0xec: -mr r8, r27 # 11d64 -bl major_0x12248_0x254 # 11d68 -beq+ panic_wrapper_0x0f380 # 11d6c -lhz r18, 0x0000(r30) # 11d70 -rlwinm. r17, r18, 0, 16, 16 # 11d74 -bne- NKHoldPages_0x108 # 11d78 -li r18, -0x8000 # 11d7c - -NKHoldPages_0x108: -clrlwi r17, r18, 0x18 # 11d80 -addi r17, r17, 0x01 # 11d84 -rlwimi r18, r17, 0, 24, 31 # 11d88 -sth r18, 0x0000(r30) # 11d8c -add r27, r27, r29 # 11d90 -subf. r8, r27, r5 # 11d94 -bge+ NKHoldPages_0xec # 11d98 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 11d9c - - - -/*********************************************************** - - NKUnholdPages - -************************************************************ - -syscall 90 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 5 # 11da0 - -NKUnholdPages: /* < outside referer */ -mr r16, r8 # 11da0 -mr r17, r9 # 11da4 -addi r8, r1, -0xb50 # 11da8 - -# r8 = lock -bl lock # 11dac -mr r8, r16 # 11db0 -mr r9, r17 # 11db4 -mr r8, r3 # 11db8 - -# r8 = id -bl id_kind # 11dbc -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 11dc0 -bne+ major_0x0b07c_0x28 # 11dc4 -mr r31, r8 # 11dc8 -add r5, r5, r4 # 11dcc -lwz r16, 0x0024(r31) # 11dd0 -lwz r17, 0x0028(r31) # 11dd4 -addi r5, r5, -0x01 # 11dd8 -cmplw r4, r16 # 11ddc -cmplw cr1, r5, r17 # 11de0 -blt+ major_0x0b054 # 11de4 -bgt+ cr1, major_0x0b054 # 11de8 -lwz r19, 0x0020(r31) # 11dec -lwz r29, 0x0068(r31) # 11df0 -rlwinm. r8, r19, 0, 16, 16 # 11df4 -bne+ major_0x0b054 # 11df8 -mr r27, r4 # 11dfc - -NKUnholdPages_0x60: -mr r8, r27 # 11e00 -bl major_0x12248_0x254 # 11e04 -beq+ major_0x0b054 # 11e08 -lhz r18, 0x0000(r30) # 11e0c -clrlwi r17, r18, 0x18 # 11e10 -rlwinm. r8, r18, 0, 16, 16 # 11e14 -cmpwi cr1, r17, 0x00 # 11e18 -beq+ major_0x0b0cc # 11e1c -addi r28, r28, 0x01 # 11e20 -beq+ cr1, major_0x0b0cc # 11e24 -add r27, r27, r29 # 11e28 -subf. r8, r27, r5 # 11e2c -bge+ NKUnholdPages_0x60 # 11e30 -li r28, 0x00 # 11e34 - -NKUnholdPages_0x98: -mr r8, r4 # 11e38 -bl major_0x12248_0x254 # 11e3c -beq+ major_0x0b054 # 11e40 -lhz r18, 0x0000(r30) # 11e44 -clrlwi r17, r18, 0x18 # 11e48 -addi r17, r17, -0x01 # 11e4c -rlwimi r18, r17, 0, 24, 31 # 11e50 -clrlwi. r8, r18, 0x11 # 11e54 -bne- NKUnholdPages_0xc4 # 11e58 -rlwinm r18, r18, 0, 17, 15 # 11e5c -addi r28, r28, 0x01 # 11e60 - -NKUnholdPages_0xc4: -sth r18, 0x0000(r30) # 11e64 -add r4, r4, r29 # 11e68 -subf. r8, r4, r5 # 11e6c -bge+ NKUnholdPages_0x98 # 11e70 -mr r16, r8 # 11e74 -mr r17, r9 # 11e78 -addi r8, r1, -0xad0 # 11e7c - -# r8 = lock -bl lock # 11e80 -mr r8, r16 # 11e84 -mr r9, r17 # 11e88 -lwz r16, -0x042c( r1) # 11e8c -add r16, r16, r28 # 11e90 -stw r16, -0x042c( r1) # 11e94 -sync # 11e98 -lwz r16, -0x0ad0( r1) # 11e9c -cmpwi cr1, r16, 0x00 # 11ea0 -li r16, 0x00 # 11ea4 -bne+ cr1, NKUnholdPages_0x114 # 11ea8 -mflr r16 # 11eac -bl panic # 11eb0 - -NKUnholdPages_0x114: -stw r16, -0x0ad0( r1) # 11eb4 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 11eb8 - - - -/*********************************************************** - - major_0x11ebc - -************************************************************ - -syscall 91 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x11ebc: /* < outside referer */ -mr r16, r8 # 11ebc -mr r17, r9 # 11ec0 -addi r8, r1, -0xb50 # 11ec4 - -# r8 = lock -bl lock # 11ec8 -mr r8, r16 # 11ecc -mr r9, r17 # 11ed0 -mr r8, r3 # 11ed4 - -# r8 = id -bl id_kind # 11ed8 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 11edc -bne+ major_0x0b07c_0x28 # 11ee0 -mr r31, r8 # 11ee4 -lwz r16, 0x0024(r31) # 11ee8 -lwz r17, 0x0028(r31) # 11eec -cmplw r4, r16 # 11ef0 -cmplw cr1, r4, r17 # 11ef4 -blt+ major_0x0b054 # 11ef8 -bgt+ cr1, major_0x0b054 # 11efc -mr r14, r8 # 11f00 -mr r15, r9 # 11f04 -addi r8, r1, -0xb90 # 11f08 - -# r8 = lock -bl lock # 11f0c -mr r8, r14 # 11f10 -mr r9, r15 # 11f14 -mr r8, r4 # 11f18 -bl major_0x12248_0x1e4 # 11f1c -beq- major_0x11ebc_0xcc # 11f20 -bl major_0x12248_0x2b0 # 11f24 -bltl- cr5, major_0x12248_0x2e0 # 11f28 -bltl- cr5, major_0x12248_0x348 # 11f2c -lwz r29, 0x0000(r30) # 11f30 -sync # 11f34 -lwz r14, -0x0b90( r1) # 11f38 -cmpwi cr1, r14, 0x00 # 11f3c -li r14, 0x00 # 11f40 -bne+ cr1, major_0x11ebc_0x94 # 11f44 -mflr r14 # 11f48 -bl panic # 11f4c - -major_0x11ebc_0x94: -stw r14, -0x0b90( r1) # 11f50 -mr r8, r4 # 11f54 -bl major_0x12248_0x254 # 11f58 -li r19, 0x00 # 11f5c -beq- major_0x11ebc_0xac # 11f60 -lhz r19, 0x0000(r30) # 11f64 - -major_0x11ebc_0xac: -andi. r5, r29, 0x319 # 11f68 -rlwinm. r8, r19, 0, 16, 16 # 11f6c -rlwimi r5, r19, 0, 16, 16 # 11f70 - -# r1 = kdp -beq+ syscall_return_assert_lock_unheld # 11f74 -rlwinm. r8, r19, 0, 17, 23 # 11f78 - -# r1 = kdp -beq+ syscall_return_assert_lock_unheld # 11f7c -ori r5, r5, 0x4000 # 11f80 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 11f84 - -major_0x11ebc_0xcc: -sync # 11f88 -lwz r14, -0x0b90( r1) # 11f8c -cmpwi cr1, r14, 0x00 # 11f90 -li r14, 0x00 # 11f94 -bne+ cr1, major_0x11ebc_0xe8 # 11f98 -mflr r14 # 11f9c -bl panic # 11fa0 - -major_0x11ebc_0xe8: -stw r14, -0x0b90( r1) # 11fa4 -b major_0x0af60_0xa4 # 11fa8 - - - -/*********************************************************** - - major_0x11fac - -************************************************************ - -syscall 92 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x11fac: /* < outside referer */ -mr r16, r8 # 11fac -mr r17, r9 # 11fb0 -addi r8, r1, -0xb50 # 11fb4 - -# r8 = lock -bl lock # 11fb8 -mr r8, r16 # 11fbc -mr r9, r17 # 11fc0 -mr r8, r3 # 11fc4 - -# r8 = id -bl id_kind # 11fc8 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 11fcc -bne+ major_0x0b07c_0x28 # 11fd0 -mr r31, r8 # 11fd4 -lwz r16, 0x0008(r31) # 11fd8 -rlwinm. r8, r16, 0, 28, 28 # 11fdc -bne+ major_0x0b054 # 11fe0 -lwz r29, 0x0134( r6) # 11fe4 -li r8, 0x318 # 11fe8 -andc. r9, r5, r8 # 11fec -bne+ major_0x0b054 # 11ff0 -andc. r9, r29, r8 # 11ff4 -bne+ major_0x0b054 # 11ff8 -lwz r16, 0x0024(r31) # 11ffc -lwz r17, 0x0028(r31) # 12000 -cmplw r4, r16 # 12004 -cmplw cr1, r4, r17 # 12008 -blt+ major_0x0b054 # 1200c -bgt+ cr1, major_0x0b054 # 12010 -mr r14, r8 # 12014 -mr r15, r9 # 12018 -addi r8, r1, -0xb90 # 1201c - -# r8 = lock -bl lock # 12020 -mr r8, r14 # 12024 -mr r9, r15 # 12028 -mr r8, r4 # 1202c -bl major_0x12248_0x1e4 # 12030 -beq- major_0x11fac_0xd8 # 12034 -bl major_0x12248_0x2b0 # 12038 -bns- cr7, major_0x11fac_0x9c # 1203c -bltl- cr5, major_0x12248_0x2e0 # 12040 -bltl- cr5, major_0x12248_0x348 # 12044 - -major_0x11fac_0x9c: -lwz r16, 0x0000(r30) # 12048 -and r8, r5, r29 # 1204c -orc r9, r5, r29 # 12050 -or r16, r16, r8 # 12054 -and r16, r16, r9 # 12058 -stw r16, 0x0000(r30) # 1205c -sync # 12060 -lwz r14, -0x0b90( r1) # 12064 -cmpwi cr1, r14, 0x00 # 12068 -li r14, 0x00 # 1206c -bne+ cr1, major_0x11fac_0xd0 # 12070 -mflr r14 # 12074 -bl panic # 12078 - -major_0x11fac_0xd0: -stw r14, -0x0b90( r1) # 1207c - -# r1 = kdp -b syscall_return_assert_lock_unheld # 12080 - -major_0x11fac_0xd8: -sync # 12084 -lwz r14, -0x0b90( r1) # 12088 -cmpwi cr1, r14, 0x00 # 1208c -li r14, 0x00 # 12090 -bne+ cr1, major_0x11fac_0xf4 # 12094 -mflr r14 # 12098 -bl panic # 1209c - -major_0x11fac_0xf4: -stw r14, -0x0b90( r1) # 120a0 -b major_0x0af60_0xa4 # 120a4 - - - -/*********************************************************** - - major_0x120a8 - -************************************************************ - -syscall 93 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 3 # 120a8 - -major_0x120a8: /* < outside referer */ -mr r16, r8 # 120a8 -mr r17, r9 # 120ac -addi r8, r1, -0xb50 # 120b0 - -# r8 = lock -bl lock # 120b4 -mr r8, r16 # 120b8 -mr r9, r17 # 120bc -mr r8, r3 # 120c0 - -# r8 = id -bl id_kind # 120c4 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 120c8 -bne+ major_0x0b07c_0x28 # 120cc -mr r31, r8 # 120d0 -lwz r16, 0x0024(r31) # 120d4 -lwz r17, 0x0028(r31) # 120d8 -cmplw r4, r16 # 120dc -cmplw cr1, r4, r17 # 120e0 -blt+ major_0x0b054 # 120e4 -bgt+ cr1, major_0x0b054 # 120e8 -mr r8, r4 # 120ec -bl major_0x12248_0x254 # 120f0 -beq+ major_0x0b054 # 120f4 -lhz r18, 0x0000(r30) # 120f8 -rlwinm. r8, r18, 0, 16, 16 # 120fc -li r5, 0x00 # 12100 - -# r1 = kdp -bne+ syscall_return_assert_lock_unheld # 12104 -clrlwi r5, r18, 0x11 # 12108 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 1210c - - - -/*********************************************************** - - major_0x12110 - -************************************************************ - -syscall 94 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 4 # 12110 - -major_0x12110: /* < outside referer */ -mr r16, r8 # 12110 -mr r17, r9 # 12114 -addi r8, r1, -0xb50 # 12118 - -# r8 = lock -bl lock # 1211c -mr r8, r16 # 12120 -mr r9, r17 # 12124 -mr r8, r3 # 12128 - -# r8 = id -bl id_kind # 1212c -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 12130 -bne+ major_0x0b07c_0x28 # 12134 -mr r31, r8 # 12138 -lwz r16, 0x0024(r31) # 1213c -lwz r17, 0x0028(r31) # 12140 -cmplw r4, r16 # 12144 -cmplw cr1, r4, r17 # 12148 -blt+ major_0x0b054 # 1214c -bgt+ cr1, major_0x0b054 # 12150 -mr r8, r4 # 12154 -bl major_0x12248_0x254 # 12158 -beq+ major_0x0b054 # 1215c -cmplwi r5, 0x7fff # 12160 -bgt+ major_0x0b054 # 12164 -lhz r18, 0x0000(r30) # 12168 -rlwinm. r8, r18, 0, 16, 16 # 1216c -bne+ major_0x0af60_0xa4 # 12170 -rlwimi r18, r5, 0, 17, 31 # 12174 -sth r18, 0x0000(r30) # 12178 -mr r16, r8 # 1217c -mr r17, r9 # 12180 -addi r8, r1, -0xb90 # 12184 - -# r8 = lock -bl lock # 12188 -mr r8, r16 # 1218c -mr r9, r17 # 12190 -mr r8, r4 # 12194 -bl major_0x12248_0x1e4 # 12198 -beq+ panic_wrapper_0x0f380 # 1219c -bl major_0x12248_0x2b0 # 121a0 -bns- cr7, major_0x12110_0xa0 # 121a4 -bltl- cr5, major_0x12248_0x2e0 # 121a8 -bltl- cr5, major_0x12248_0x348 # 121ac - -major_0x12110_0xa0: -sync # 121b0 -lwz r16, -0x0b90( r1) # 121b4 -cmpwi cr1, r16, 0x00 # 121b8 -li r16, 0x00 # 121bc -bne+ cr1, major_0x12110_0xbc # 121c0 -mflr r16 # 121c4 -bl panic # 121c8 - -major_0x12110_0xbc: -stw r16, -0x0b90( r1) # 121cc - -# r1 = kdp -b syscall_return_assert_lock_unheld # 121d0 - - - -/*********************************************************** - - major_0x121d4 - -************************************************************ - -syscall 129 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -major_0x121d4: /* < outside referer */ -mr r16, r8 # 121d4 -mr r17, r9 # 121d8 -addi r8, r1, -0xb50 # 121dc - -# r8 = lock -bl lock # 121e0 -mr r8, r16 # 121e4 -mr r9, r17 # 121e8 -mr r8, r3 # 121ec - -# r8 = id -bl id_kind # 121f0 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0b # 121f4 -bne+ major_0x0b07c_0x28 # 121f8 -mr r31, r8 # 121fc -lwz r16, 0x0024(r31) # 12200 -lwz r17, 0x0028(r31) # 12204 -cmplw r4, r16 # 12208 -cmplw cr1, r4, r17 # 1220c -blt+ major_0x0b054 # 12210 -bgt+ cr1, major_0x0b054 # 12214 -mr r8, r4 # 12218 -bl major_0x12248_0x254 # 1221c -beq+ major_0x0b054 # 12220 -lhz r18, 0x0000(r30) # 12224 -li r5, 0x00 # 12228 -rlwinm. r8, r18, 0, 16, 16 # 1222c -li r16, 0x00 # 12230 -beq- major_0x121d4_0x6c # 12234 -rlwinm r16, r18, 24, 25, 31 # 12238 -clrlwi r5, r18, 0x18 # 1223c - -major_0x121d4_0x6c: -stw r16, 0x0134( r6) # 12240 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 12244 - - - -/*********************************************************** - - major_0x12248 - -************************************************************ - -syscall 95 - -************************************************************ - -Xrefs: -major_0x032c0 -major_0x035a0 -major_0x04c20 -syscall -NKxprintf -major_0x0c3ac -major_0x1070c -major_0x108fc -NKSetAreaAccess -major_0x10de0 -major_0x11104 -major_0x111d4 -NKMapPage -NKUnmapPages -NKMakePhysicallyContiguous -NKLockPages -NKUnlockPages -NKHoldPages -NKUnholdPages -major_0x11ebc -major_0x11fac -major_0x120a8 -major_0x12110 -major_0x121d4 - -***********************************************************/ - -.align 3 # 12248 - -major_0x12248: /* < outside referer */ -or. r8, r3, r4 # 12248 -bne- major_0x12248_0x44 # 1224c -li r16, 0x00 # 12250 -stw r16, 0x06b4( r1) # 12254 -bl 1f # 12258 -.ascii "Areas capability probe detected^n" # 1225c -.short 0 # 1227d -.align 2 # 1227f -1: mflr r8 # 12280 -bl print_string # 12284 -b syscall_return_paramErr # 12288 - -major_0x12248_0x44: -mr r16, r8 # 1228c -mr r17, r9 # 12290 -addi r8, r1, -0xb50 # 12294 - -# r8 = lock -bl lock # 12298 -mr r8, r16 # 1229c -mr r9, r17 # 122a0 -li r28, -0x01 # 122a4 -li r4, 0x00 # 122a8 -li r5, 0x00 # 122ac -lwz r8, -0x042c( r1) # 122b0 -cmpwi r8, 0x00 # 122b4 -ble+ major_0x0af60_0xa4 # 122b8 -lwz r27, -0x0438( r1) # 122bc -srwi r27, r27, 15 # 122c0 -mfspr r8, 22/*dec*/ # 122c4 -subf r27, r27, r8 # 122c8 -lwz r8, -0x03f8( r1) # 122cc -lwz r9, -0x03f4( r1) # 122d0 -mr r30, r9 # 122d4 -bl major_0x10320_0xcc # 122d8 -mr r31, r8 # 122dc -lwz r29, 0x0024(r31) # 122e0 -cmplw r29, r30 # 122e4 -bgt- major_0x12248_0xa8 # 122e8 -mr r29, r30 # 122ec - -major_0x12248_0xa8: -crset 4*cr2 + eq # 122f0 - -major_0x12248_0xac: -mfspr r9, 22/*dec*/ # 122f4 -subf. r9, r27, r9 # 122f8 -blt- major_0x12248_0x1c8 # 122fc - -major_0x12248_0xb8: -lwz r8, 0x0020(r31) # 12300 -lwz r9, 0x0018(r31) # 12304 -rlwinm. r8, r8, 0, 16, 16 # 12308 -cmpwi cr1, r3, 0x00 # 1230c -bne- major_0x12248_0x19c # 12310 -beq- cr1, major_0x12248_0xe0 # 12314 -cmpwi cr3, r9, 0x00 # 12318 -beq- cr3, major_0x12248_0xe0 # 1231c -cmpw cr1, r9, r3 # 12320 -bne- cr1, major_0x12248_0x19c # 12324 - -major_0x12248_0xe0: -lwz r9, 0x0008(r31) # 12328 -rlwinm. r8, r9, 0, 28, 28 # 1232c -bne- major_0x12248_0x19c # 12330 -rlwinm. r8, r9, 0, 23, 23 # 12334 -bne- major_0x12248_0x19c # 12338 -mr r16, r8 # 1233c -mr r17, r9 # 12340 -addi r8, r1, -0xb90 # 12344 - -# r8 = lock -bl lock # 12348 -mr r8, r16 # 1234c -mr r9, r17 # 12350 -mr r8, r29 # 12354 -bl major_0x12248_0x1e4 # 12358 -beq+ panic_wrapper_0x0f380 # 1235c -sync # 12360 -lwz r16, -0x0b90( r1) # 12364 -cmpwi cr1, r16, 0x00 # 12368 -li r16, 0x00 # 1236c -bne+ cr1, major_0x12248_0x134 # 12370 -mflr r16 # 12374 -bl panic # 12378 - -major_0x12248_0x134: -stw r16, -0x0b90( r1) # 1237c -lwz r16, 0x0000(r30) # 12380 -clrlwi. r8, r16, 0x1f # 12384 -beq- major_0x12248_0x180 # 12388 -mr r8, r29 # 1238c -bl major_0x12248_0x254 # 12390 -beq- major_0x12248_0x1c8 # 12394 -lhz r17, 0x0000(r30) # 12398 -rlwinm. r8, r17, 0, 16, 16 # 1239c -clrlwi r17, r17, 0x11 # 123a0 -bne- major_0x12248_0x180 # 123a4 -cmpw r17, r28 # 123a8 -crclr 4*cr2 + eq # 123ac -ble- major_0x12248_0x180 # 123b0 -mr r28, r17 # 123b4 -lwz r4, 0x0000(r31) # 123b8 -cmplwi r17, 0x7fff # 123bc -mr r5, r29 # 123c0 -bge- major_0x12248_0x1c8 # 123c4 - -major_0x12248_0x180: -lwz r8, 0x0068(r31) # 123c8 -lwz r9, 0x0028(r31) # 123cc -add r29, r29, r8 # 123d0 -subf. r9, r9, r29 # 123d4 -bge- major_0x12248_0x19c # 123d8 -bne+ cr2, major_0x12248_0xac # 123dc -b major_0x12248_0xb8 # 123e0 - -major_0x12248_0x19c: -lwz r8, 0x0054(r31) # 123e4 -lwz r9, 0x005c(r31) # 123e8 -cmpw r8, r9 # 123ec -addi r31, r9, -0x54 # 123f0 -lwz r29, 0x0024(r31) # 123f4 -bne- major_0x12248_0x1c0 # 123f8 -lwz r9, 0x0008( r8) # 123fc -addi r31, r9, -0x54 # 12400 -lwz r29, 0x0024(r31) # 12404 - -major_0x12248_0x1c0: -bne+ cr2, major_0x12248_0xac # 12408 -b major_0x12248_0xb8 # 1240c - -major_0x12248_0x1c8: -cmpwi r4, 0x00 # 12410 -stw r29, -0x03f4( r1) # 12414 -beq+ major_0x0af60_0xa4 # 12418 -lwz r8, 0x0068(r31) # 1241c -add r8, r8, r5 # 12420 -stw r8, -0x03f4( r1) # 12424 - -# r1 = kdp -b syscall_return_assert_lock_unheld # 12428 - -major_0x12248_0x1e4: /* < outside referer */ -lwz r16, 0x0024(r31) # 1242c -lwz r18, 0x0008(r31) # 12430 -lwz r30, 0x0040(r31) # 12434 -subf r17, r16, r8 # 12438 -cmpwi r30, 0x00 # 1243c -rlwinm r17, r17, 22, 10, 29 # 12440 -beqlr- # 12444 -rlwinm. r16, r18, 0, 26, 26 # 12448 -rlwinm r16, r17, 22, 20, 29 # 1244c -beq- major_0x12248_0x214 # 12450 -rlwinm r17, r17, 0, 20, 29 # 12454 -lwzx r30, r30, r16 # 12458 - -major_0x12248_0x214: -add. r30, r30, r17 # 1245c -blr # 12460 -.long 0x821f0024 # 12464 -.long 0x825f0008 # 12468 -.long 0x83df0040 # 1246c -.long 0x56510739 # 12470 -.long 0x7e304050 # 12474 -.long 0x4182ffc4 # 12478 -.long 0x83df0044 # 1247c -.long 0x825f0080 # 12480 -.long 0x3bdeffbc # 12484 -.long 0x7e304050 # 12488 -.long 0x7e319214 # 1248c -.long 0x825e0008 # 12490 -.long 0x83de0040 # 12494 -.long 0x4bffffa4 # 12498 - -major_0x12248_0x254: /* < outside referer */ -lwz r16, 0x0024(r31) # 1249c -lwz r18, 0x0008(r31) # 124a0 -lwz r30, 0x003c(r31) # 124a4 -rlwinm. r17, r18, 0, 28, 28 # 124a8 -subf r17, r16, r8 # 124ac -beq- major_0x12248_0x288 # 124b0 -lwz r30, 0x0044(r31) # 124b4 -lwz r18, 0x0080(r31) # 124b8 -addi r30, r30, -0x44 # 124bc -subf r17, r16, r8 # 124c0 -add r17, r17, r18 # 124c4 -lwz r18, 0x0008(r30) # 124c8 -lwz r30, 0x003c(r30) # 124cc - -major_0x12248_0x288: -cmpwi r30, 0x00 # 124d0 -rlwinm r17, r17, 21, 11, 30 # 124d4 -beqlr- # 124d8 -rlwinm. r16, r18, 0, 30, 30 # 124dc -rlwinm r16, r17, 22, 20, 29 # 124e0 -beq- major_0x12248_0x2a8 # 124e4 -rlwinm r17, r17, 0, 20, 30 # 124e8 -lwzx r30, r30, r16 # 124ec - -major_0x12248_0x2a8: -add. r30, r30, r17 # 124f0 -blr # 124f4 - -major_0x12248_0x2b0: /* < outside referer */ -lwz r19, 0x0000(r30) # 124f8 -lwz r18, 0x06a4( r1) # 124fc -mtcrf 0x07, r19 # 12500 -rlwinm r17, r19, 0, 0, 19 # 12504 -rlwinm r16, r19, 23, 9, 28 # 12508 -bnslr- cr7 # 1250c -bgelr- cr5 # 12510 -lwzux r16, r18, r16 # 12514 -lwz r17, 0x0004(r18) # 12518 -mtcrf 0x80, r16 # 1251c -bge+ panic_wrapper_0x0f380 # 12520 -blr # 12524 - -major_0x12248_0x2e0: /* < outside referer */ -mfspr r14, 287/*pvr*/ # 12528 -clrlwi r16, r16, 0x01 # 1252c -rlwinm. r14, r14, 0, 0, 14 # 12530 -stw r16, 0x0000(r18) # 12534 -sync # 12538 -tlbie r8 # 1253c -beq- major_0x12248_0x304 # 12540 -sync # 12544 -tlbsync # 12548 - -major_0x12248_0x304: -sync # 1254c -isync # 12550 -cmpwi r30, 0x00 # 12554 -lwz r14, 0x0000(r30) # 12558 -lwz r17, 0x0004(r18) # 1255c -oris r16, r16, 0x8000 # 12560 -beqlr- # 12564 -rlwimi r14, r17, 29, 27, 27 # 12568 -rlwimi r14, r17, 27, 28, 28 # 1256c -mtcrf 0x07, r14 # 12570 -stw r14, 0x0000(r30) # 12574 -blr # 12578 - -major_0x12248_0x334: -stw r17, 0x0004(r18) # 1257c -eieio # 12580 -stw r16, 0x0000(r18) # 12584 -sync # 12588 -blr # 1258c - -major_0x12248_0x348: /* < outside referer */ -lwz r14, 0x0000(r30) # 12590 -li r16, -0x01 # 12594 -stw r16, 0x0340( r1) # 12598 -stw r16, 0x0348( r1) # 1259c -stw r16, 0x0350( r1) # 125a0 -stw r16, 0x0358( r1) # 125a4 -lwz r16, 0x0e98( r1) # 125a8 -rlwinm r14, r14, 0, 21, 19 # 125ac -addi r16, r16, 0x01 # 125b0 -stw r16, 0x0e98( r1) # 125b4 -rlwimi r14, r17, 0, 0, 19 # 125b8 -cmpwi r30, 0x00 # 125bc -li r16, 0x00 # 125c0 -li r17, 0x00 # 125c4 -beq+ major_0x12248_0x334 # 125c8 -stw r14, 0x0000(r30) # 125cc -b major_0x12248_0x334 # 125d0 - -major_0x12248_0x38c: /* < outside referer */ -mr. r19, r9 # 125d4 -mfspr r17, 272/*sprg0*/ # 125d8 -bne- major_0x12248_0x39c # 125dc -lwz r19, -0x001c(r17) # 125e0 - -major_0x12248_0x39c: -addi r18, r19, 0x80 # 125e4 -lwz r16, 0x0000(r18) # 125e8 -li r19, -0x01 # 125ec -rlwimi r19, r16, 15, 0, 14 # 125f0 -xor r17, r8, r16 # 125f4 -andc. r17, r17, r19 # 125f8 -beq- major_0x12248_0x444 # 125fc -lwzu r16, 0x0008(r18) # 12600 -rlwimi r19, r16, 15, 0, 14 # 12604 -xor r17, r8, r16 # 12608 -andc. r17, r17, r19 # 1260c -beq- major_0x12248_0x444 # 12610 -lwzu r16, 0x0008(r18) # 12614 -rlwimi r19, r16, 15, 0, 14 # 12618 -xor r17, r8, r16 # 1261c -andc. r17, r17, r19 # 12620 -beq- major_0x12248_0x444 # 12624 -lwzu r16, 0x0008(r18) # 12628 -rlwimi r19, r16, 15, 0, 14 # 1262c -xor r17, r8, r16 # 12630 -andc. r17, r17, r19 # 12634 -beq- major_0x12248_0x444 # 12638 -lwzu r16, 0x0008(r18) # 1263c -rlwimi r19, r16, 15, 0, 14 # 12640 -xor r17, r8, r16 # 12644 -andc. r17, r17, r19 # 12648 -beq- major_0x12248_0x444 # 1264c -lwzu r16, 0x0008(r18) # 12650 -rlwimi r19, r16, 15, 0, 14 # 12654 -xor r17, r8, r16 # 12658 -andc. r17, r17, r19 # 1265c -beq- major_0x12248_0x444 # 12660 -lwzu r16, 0x0008(r18) # 12664 -rlwimi r19, r16, 15, 0, 14 # 12668 -xor r17, r8, r16 # 1266c -andc. r17, r17, r19 # 12670 -beq- major_0x12248_0x444 # 12674 -lwzu r16, 0x0008(r18) # 12678 -rlwimi r19, r16, 15, 0, 14 # 1267c -xor r17, r8, r16 # 12680 -andc. r17, r17, r19 # 12684 -bne- major_0x12248_0x45c # 12688 - -major_0x12248_0x444: -andi. r17, r16, 0x01 # 1268c -rlwinm r19, r19, 0, 8, 19 # 12690 -lwzu r17, 0x0004(r18) # 12694 -and r19, r8, r19 # 12698 -or r17, r17, r19 # 1269c -bnelr- # 126a0 - -major_0x12248_0x45c: /* < outside referer */ -cmpwi r9, 0x00 # 126a4 -addi r16, r9, 0x30 # 126a8 -beq- major_0x12248_0x474 # 126ac -rlwinm r17, r8, 6, 26, 29 # 126b0 -lwzx r17, r16, r17 # 126b4 -b major_0x12248_0x478 # 126b8 - -major_0x12248_0x474: -mfsrin r17, r8 # 126bc - -major_0x12248_0x478: -rlwinm r16, r8, 10, 26, 31 # 126c0 -rlwimi r16, r17, 7, 1, 24 # 126c4 -rlwinm r9, r8, 26, 10, 25 # 126c8 -oris r16, r16, 0x8000 # 126cc -rlwinm r17, r17, 6, 7, 25 # 126d0 -xor r9, r9, r17 # 126d4 -lwz r17, 0x06a0( r1) # 126d8 -lwz r18, 0x06a4( r1) # 126dc -and r9, r9, r17 # 126e0 -or. r18, r18, r9 # 126e4 - -major_0x12248_0x4a0: -lwz r17, 0x0000(r18) # 126e8 -lwz r9, 0x0008(r18) # 126ec -cmpw cr6, r16, r17 # 126f0 -lwz r17, 0x0010(r18) # 126f4 -cmpw cr7, r16, r9 # 126f8 -lwzu r9, 0x0018(r18) # 126fc -bne- cr6, major_0x12248_0x4c4 # 12700 - -major_0x12248_0x4bc: -lwzu r17, -0x0014(r18) # 12704 -blr # 12708 - -major_0x12248_0x4c4: -cmpw cr6, r16, r17 # 1270c -lwzu r17, 0x0008(r18) # 12710 -beq+ cr7, major_0x12248_0x4bc # 12714 -cmpw cr7, r16, r9 # 12718 -lwzu r9, 0x0008(r18) # 1271c -beq+ cr6, major_0x12248_0x4bc # 12720 -cmpw cr6, r16, r17 # 12724 -lwzu r17, 0x0008(r18) # 12728 -beq+ cr7, major_0x12248_0x4bc # 1272c -cmpw cr7, r16, r9 # 12730 -lwzu r9, 0x0008(r18) # 12734 -beq+ cr6, major_0x12248_0x4bc # 12738 -cmpw cr6, r16, r17 # 1273c -lwzu r17, -0x000c(r18) # 12740 -beqlr- cr7 # 12744 -cmpw cr7, r16, r9 # 12748 -lwzu r17, 0x0008(r18) # 1274c -beqlr- cr6 # 12750 -lwzu r17, 0x0008(r18) # 12754 -beqlr- cr7 # 12758 -lwz r17, 0x06a0( r1) # 1275c -xori r16, r16, 0x40 # 12760 -andi. r9, r16, 0x40 # 12764 -addi r18, r18, -0x3c # 12768 -xor r18, r18, r17 # 1276c -bne+ major_0x12248_0x4a0 # 12770 -blr # 12774 - - - -/*********************************************************** - - major_0x12778 - -***********************************************************/ - -.align 3 # 12778 - -.long 0x60000000 # 12778 -.long 0x60000000 # 1277c - - - -/*********************************************************** - - panic_wrapper_0x12780 - -************************************************************ - -Xrefs: -pool_malloc -major_0x129fc -major_0x12a34 - -***********************************************************/ - -.align 7 # 12780 - -panic_wrapper_0x12780: /* < outside referer */ -b panic # 12780 - - - -/*********************************************************** - - pool_init - -************************************************************ - -Allocate one page for the kernel pool. Same layout at Memtop starts at 7 pages below KDP. -Take note of the structure from kdp-ab0 to kdp-aa0 - -************************************************************ - -Xrefs: -setup - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -pool_init: /* < outside referer */ -lwz r8, 0x0630( r1) # kdp.pa_ConfigInfo # 12784 -lwz r8, 0x00a0( r8) # 12788 -lis r9, 0x00 # 1278c -ori r9, r9, 0x7000 # 12790 -subf r9, r9, r8 # 12794 -stw r9, -0x0a9c( r1) # kdp.-0xa9c # 12798 -lis r9, -0x01 # 1279c -ori r9, r9, 0x9000 # 127a0 -add r9, r9, r1 # 127a4 -stw r9, -0x0aa0( r1) # kdp.-0xaa0 # 127a8 - -# bit of a mystery -lis r8, 0x00 # 127ac -ori r8, r8, 0x6458 # 127b0 -add r23, r8, r9 # 127b4 -stw r8, 0x0000( r9) # 127b8 -lis r8, 256 * 135+'B' # 127bc -ori r8, r8, 256 * 'G'+'N' # 127c0 -stw r8, 0x0004( r9) # 127c4 -addi r9, r9, 0x08 # 127c8 -lis r8, 0x00 # 127cc -ori r8, r8, 0x6450 # 127d0 -stw r8, 0x0000( r9) # 127d4 -lis r8, 256 * 'f'+'r' # 127d8 -ori r8, r8, 256 * 'e'+'e' # 127dc -stw r8, 0x0004( r9) # 127e0 -li r8, 0x00 # 127e4 -stw r8, 0x0000(r23) # 127e8 -lis r8, 256 * 135+'E' # 127ec -ori r8, r8, 256 * 'N'+'D' # 127f0 -stw r8, 0x0004(r23) # 127f4 - -# set up linked list -addi r8, r1, -0xab0 # kdp.-0xab0 # 127f8 -stw r9, 0x0008( r8) # 127fc -stw r9, 0x000c( r8) # 12800 -stw r8, 0x0008( r9) # 12804 -stw r8, 0x000c( r9) # 12808 -lis r9, 256 * 'P'+'O' # 1280c -ori r9, r9, 256 * 'O'+'L' # 12810 -stw r9, 0x0004( r8) # 12814 -blr # 12818 - - - -/*********************************************************** - - pool_malloc - -************************************************************ - -Easy to use! 0xfd8 (a page minus 10 words) is the largest request that can be satisfied. - -************************************************************ - -Xrefs: -setup -major_0x02ccc -major_0x0b3cc -major_0x0b960 -major_0x0c5e0 -major_0x0c778 -major_0x0c830 -major_0x0cb00 -major_0x0ce48 -major_0x0d204 -major_0x0d70c -major_0x0d8a0 -major_0x0da20 -major_0x0db04 -mktask -major_0x0ea58 -convert_pmdts_to_areas -NKCreateAddressSpaceSub -major_0x0fb34 -createarea -major_0x10414 -major_0x108fc -say_nanodebugger_activated -index_init -alloc_id - -************************************************************ - -> r1 = kdp -> r8 = size - -< r8 = ptr - -***********************************************************/ - -pool_malloc: /* < outside referer */ -crclr 4*cr7 + eq # 1281c -b pool_malloc_0xc # 12820 - -pool_malloc_with_crset: /* < outside referer */ -crset 4*cr7 + eq # 12824 - -pool_malloc_0xc: -mflr r17 # 12828 -mfspr r18, 272/*sprg0*/ # 1282c -mr r15, r8 # 12830 -mr r16, r9 # 12834 -addi r8, r1, -0xad0 # kdp.pool_lock # 12838 - -# r8 = lock -bl lock # 1283c -mr r8, r15 # 12840 -mr r9, r16 # 12844 -stw r17, -0x0060(r18) # 12848 -stw r8, -0x005c(r18) # 1284c - -pool_malloc_0x34: -cmpwi r8, 0x00 # 12850 -cmpwi cr1, r8, 0xfd8 # 12854 -ble+ panic_wrapper_0x12780 # 12858 -bgt- cr1, pool_malloc_0xb4 # 1285c -addi r8, r8, 0x27 # 12860 -rlwinm r8, r8, 0, 0, 26 # 12864 -addi r14, r1, -0xab0 # kdp.-0xab0 # 12868 -lwz r15, 0x0008(r14) # 1286c - -pool_malloc_0x54: -cmpw r14, r15 # 12870 -bne+ pool_malloc_0xbc # 12874 -li r8, 0x00 # 12878 -li r9, 0x01 # 1287c -lwz r16, -0x0430( r1) # kdp.-0x430 # 12880 -lwz r17, -0x042c( r1) # kdp.-0x42c # 12884 -subf. r16, r9, r16 # 12888 -subf r17, r9, r17 # 1288c -blt- major_0x129cc # 12890 -stw r16, -0x0430( r1) # kdp.-0x430 # 12894 -stw r17, -0x042c( r1) # kdp.-0x42c # 12898 -lwz r8, -0x0448( r1) # kdp.-0x448 # 1289c -lwz r17, 0x0008( r8) # 128a0 -lwz r18, 0x000c( r8) # 128a4 -stw r17, 0x0008(r18) # 128a8 -stw r18, 0x000c(r17) # 128ac -li r17, 0x00 # 128b0 -stw r17, 0x0008( r8) # 128b4 -stw r17, 0x000c( r8) # 128b8 -li r9, 0x00 # 128bc - -# r1 = kdp -# r8 = anywhere in new page (phys) -# r9 = page_virt -bl poolextend # 128c0 -mfspr r18, 272/*sprg0*/ # 128c4 -lwz r8, -0x005c(r18) # 128c8 -b pool_malloc_0x34 # 128cc - -pool_malloc_0xb4: -li r8, 0x00 # 128d0 -b major_0x129cc # 128d4 - -pool_malloc_0xbc: -lwz r16, 0x0000(r15) # 128d8 -cmplw r16, r8 # 128dc -lis r20, 256 * 'f'+'r' # 128e0 -bgt- pool_malloc_0x120 # 128e4 -beq- pool_malloc_0x13c # 128e8 -ori r20, r20, 256 * 'e'+'e' # 128ec -lwz r16, 0x0000(r15) # 128f0 -add r18, r16, r15 # 128f4 -lwz r19, 0x0004(r18) # 128f8 -cmplw cr1, r18, r15 # 128fc -cmpw r19, r20 # 12900 -ble+ cr1, panic_wrapper_0x12780 # 12904 -bne- pool_malloc_0x118 # 12908 -lwz r17, 0x0000(r18) # 1290c -rotlwi r19, r19, 0x08 # 12910 -add r17, r17, r16 # 12914 -stw r17, 0x0000(r15) # 12918 -stw r19, 0x0004(r18) # 1291c -lwz r17, 0x000c(r18) # 12920 -lwz r16, 0x0008(r18) # 12924 -stw r16, 0x0008(r17) # 12928 -stw r17, 0x000c(r16) # 1292c -b pool_malloc_0xbc # 12930 - -pool_malloc_0x118: -lwz r15, 0x0008(r15) # 12934 -b pool_malloc_0x54 # 12938 - -pool_malloc_0x120: -subf r16, r8, r16 # 1293c -cmpwi r16, 0x28 # 12940 -blt- pool_malloc_0x13c # 12944 -stw r16, 0x0000(r15) # 12948 -add r15, r15, r16 # 1294c -stw r8, 0x0000(r15) # 12950 -b pool_malloc_0x14c # 12954 - -pool_malloc_0x13c: -lwz r14, 0x000c(r15) # 12958 -lwz r16, 0x0008(r15) # 1295c -stw r16, 0x0008(r14) # 12960 -stw r14, 0x000c(r16) # 12964 - -pool_malloc_0x14c: -lis r8, 256 * 135+'l' # 12968 -ori r8, r8, 256 * 'o'+'c' # 1296c -stw r8, 0x0004(r15) # 12970 -addi r8, r15, 0x08 # 12974 -beq- cr7, major_0x129cc # 12978 -lwz r16, 0x0000(r15) # 1297c -addi r16, r16, -0x08 # 12980 -li r14, 0x00 # 12984 -add r16, r16, r15 # 12988 -addi r15, r15, 0x04 # 1298c - -pool_malloc_0x174: -stwu r14, 0x0004(r15) # 12990 -cmpw r15, r16 # 12994 -ble+ pool_malloc_0x174 # 12998 -b major_0x129cc # 1299c - - - -/*********************************************************** - - looks_like_poolextend - -************************************************************ - -Xrefs: -major_0x0b3cc -major_0x0b4a4 -major_0x0b960 -major_0x0ba80 -major_0x0c5e0 -major_0x0c680 -major_0x0c778 -major_0x0c968 -major_0x0cb00 -major_0x0cd9c -major_0x0ce48 -major_0x0d158 -major_0x0d204 -major_0x0d278 -major_0x0d70c -major_0x0d798 -major_0x0da20 -major_0x0da8c -mktask -major_0x0e604 -major_0x0e76c -major_0x0ea58 -convert_pmdts_to_areas -NKCreateAddressSpaceSub -major_0x0f9f8 -major_0x0fb34 -major_0x10320 -major_0x10414 -major_0x104ec - -***********************************************************/ - -.align 5 # 129a0 - -looks_like_poolextend: /* < outside referer */ -mflr r17 # 129a0 -mfspr r18, 272/*sprg0*/ # 129a4 -mr r15, r8 # 129a8 -mr r16, r9 # 129ac -addi r8, r1, -0xad0 # 129b0 - -# r8 = lock -bl lock # 129b4 -mr r8, r15 # 129b8 -mr r9, r16 # 129bc -stw r17, -0x0060(r18) # 129c0 -bl major_0x129fc # 129c4 -bl major_0x12a34 # 129c8 - - - -/*********************************************************** - - major_0x129cc - -************************************************************ - -Xrefs: -pool_malloc -looks_like_poolextend - -***********************************************************/ - -major_0x129cc: /* < outside referer */ -mfspr r18, 272/*sprg0*/ # 129cc -sync # 129d0 -lwz r15, -0x0ad0( r1) # 129d4 -cmpwi cr1, r15, 0x00 # 129d8 -li r15, 0x00 # 129dc -bne+ cr1, major_0x129cc_0x20 # 129e0 -mflr r15 # 129e4 -bl panic # 129e8 - -major_0x129cc_0x20: -stw r15, -0x0ad0( r1) # 129ec -lwz r17, -0x0060(r18) # 129f0 -mtlr r17 # 129f4 -blr # 129f8 - - - -/*********************************************************** - - major_0x129fc - -************************************************************ - -Xrefs: -looks_like_poolextend -poolextend - -***********************************************************/ - -major_0x129fc: /* < outside referer */ -addi r15, r8, -0x08 # 129fc -lis r20, 0x6672 # 12a00 -lhz r16, 0x0004(r15) # 12a04 -ori r20, r20, 0x6565 # 12a08 -cmplwi r16, 0x876c # 12a0c -bne+ panic_wrapper_0x12780 # 12a10 -stw r20, 0x0004(r15) # 12a14 -addi r16, r1, -0xab0 # 12a18 -stw r16, 0x0008(r15) # 12a1c -lwz r17, 0x000c(r16) # 12a20 -stw r17, 0x000c(r15) # 12a24 -stw r15, 0x0008(r17) # 12a28 -stw r15, 0x000c(r16) # 12a2c -blr # 12a30 - - - -/*********************************************************** - - major_0x12a34 - -************************************************************ - -Xrefs: -looks_like_poolextend -poolextend - -***********************************************************/ - -major_0x12a34: /* < outside referer */ -lis r20, 0x6672 # 12a34 -lwz r16, 0x0000(r15) # 12a38 -ori r20, r20, 0x6565 # 12a3c -add r18, r16, r15 # 12a40 -lwz r19, 0x0004(r18) # 12a44 -cmplw cr1, r18, r15 # 12a48 -cmpw r19, r20 # 12a4c -ble+ cr1, panic_wrapper_0x12780 # 12a50 -bnelr- # 12a54 -lwz r17, 0x0000(r18) # 12a58 -rotlwi r19, r19, 0x08 # 12a5c -add r17, r17, r16 # 12a60 -stw r17, 0x0000(r15) # 12a64 -stw r19, 0x0004(r18) # 12a68 -lwz r17, 0x000c(r18) # 12a6c -lwz r16, 0x0008(r18) # 12a70 -stw r16, 0x0008(r17) # 12a74 -stw r17, 0x000c(r16) # 12a78 -b major_0x12a34 # 12a7c - - - -/*********************************************************** - - poolextend - -************************************************************ - - 0xed0(r1) = pool extends (I increment) --0xa9c(r1) = virt last page (I update) --0xaa0(r1) = phys last page (I update) -Assumes that cache blocks are 32 bytes! Uh-oh. - -Page gets decorated like this: -000: 00 00 0f e8 -004: 87 'B 'G 'N -008: 00 00 0f e8 -00c: 87 'l 'o 'c -... zeros << r8 passes ptr to here -fe8: phys offset from here to prev page -fec: 87 'E 'N 'D -ff0: logical abs address of prev page -ff4: 00 00 00 00 -ff8: 00 00 00 00 -ffc: 00 00 00 00 - - -************************************************************ - -Xrefs: -major_0x0b144 -pool_malloc - -************************************************************ - -> r1 = kdp -> r8 = anywhere in new page (phys) -> r9 = page_virt - -***********************************************************/ - -.align 7 # 12a80 - -poolextend: /* < outside referer */ -mflr r14 # 12a80 -rlwinm r17, r8, 0, 0, 19 # 12a84 -lwz r16, 0x0ed0( r1) # kdp.0xed0 # 12a88 -addi r16, r16, 0x01 # 12a8c -stw r16, 0x0ed0( r1) # kdp.0xed0 # 12a90 -bl 1f # 12a94 -.ascii "Extend free pool: phys 0x" # 12a98 -.short 0 # 12ab1 -.align 2 # 12ab3 -1: mflr r8 # 12ab4 -bl print_string # 12ab8 -mr r8, r17 # 12abc -bl print_word_hex # 12ac0 -bl 1f # 12ac4 -.ascii " virt 0x" # 12ac8 -.short 0 # 12ad0 -.align 2 # 12ad2 -1: mflr r8 # 12ad4 -bl print_string # 12ad8 -mr r8, r9 # 12adc -bl print_word_hex # 12ae0 -bl 1f # 12ae4 -.ascii " count: " # 12ae8 -.short 0 # 12af0 -.align 2 # 12af2 -1: mflr r8 # 12af4 -bl print_string # 12af8 -mr r8, r16 # 12afc -bl print_decimal # 12b00 -bl 1f # 12b04 -.ascii "^n" # 12b08 -.short 0 # 12b0a -.align 2 # 12b0c -1: mflr r8 # 12b0c -bl print_string # 12b10 -li r16, 0x1000 # 12b14 - -poolextend_zeroloop: -addi r16, r16, -0x20 # 12b18 -cmpwi r16, 0x00 # 12b1c -dcbz r16, r17 # 12b20 -bgt+ poolextend_zeroloop # 12b24 - -# Put the funny stuff in -li r16, 0xfe8 # 12b28 -stw r16, 0x0000(r17) # 12b2c -lis r16, 256 * 135+'B' # 12b30 -ori r16, r16, 256 * 'G'+'N' # 12b34 -stw r16, 0x0004(r17) # 12b38 -addi r15, r17, 0x08 # 12b3c -li r16, 0xfe0 # 12b40 -stw r16, 0x0000(r15) # 12b44 -lis r16, 256 * 135+'l' # 12b48 -ori r16, r16, 256 * 'o'+'c' # 12b4c -stw r16, 0x0004(r15) # 12b50 -addi r15, r17, 0xfe8 # 12b54 -lwz r18, -0x0aa0( r1) # kdp.-0xaa0 # 12b58 -subf r18, r15, r18 # 12b5c -stw r18, 0x0000(r15) # 12b60 -lis r16, 256 * 135+'E' # 12b64 -ori r16, r16, 256 * 'N'+'D' # 12b68 -stw r16, 0x0004(r15) # 12b6c -lwz r16, -0x0a9c( r1) # kdp.-0xa9c # 12b70 -stw r16, 0x0008(r15) # 12b74 - -# Update globals -stw r9, -0x0a9c( r1) # kdp.-0xa9c # 12b78 -stw r17, -0x0aa0( r1) # kdp.-0xaa0 # 12b7c - -# Unknown func calls -addi r8, r17, 0x10 # 12b80 -bl major_0x129fc # 12b84 -bl major_0x12a34 # 12b88 -mtlr r14 # 12b8c -blr # 12b90 - - - -/*********************************************************** - - major_0x12b94 - -***********************************************************/ - -.long 0x7e6802a6 # 12b94 -.long 0x8281f560 # 12b98 -.long 0x39140008 # 12b9c -.long 0x48000025 # 12ba0 -.long 0x82340000 # 12ba4 -.long 0x7e31a214 # 12ba8 -.long 0x82510000 # 12bac -.long 0x2c120000 # 12bb0 -.long 0x7e928a14 # 12bb4 -.long 0x4082ffe4 # 12bb8 -.long 0x7e6803a6 # 12bbc -.long 0x4e800020 # 12bc0 -.long 0x7dc802a6 # 12bc4 -.long 0x3a08fff8 # 12bc8 -.long 0x82300004 # 12bcc -.long 0x3e408745 # 12bd0 -.long 0x62524e44 # 12bd4 -.long 0x7c119000 # 12bd8 -.long 0x39200000 # 12bdc -.long 0x41820158 # 12be0 -.long 0x3e40876c # 12be4 -.long 0x62526f63 # 12be8 -.long 0x7c119000 # 12bec -.long 0x41820038 # 12bf0 -.long 0x3e406672 # 12bf4 -.long 0x62526565 # 12bf8 -.long 0x39200004 # 12bfc -.long 0x7c119000 # 12c00 -.long 0x40820038 # 12c04 -.long 0x8230000c # 12c08 -.long 0x2c110000 # 12c0c -.long 0x39200005 # 12c10 -.long 0x41820028 # 12c14 -.long 0x82300008 # 12c18 -.long 0x2c110000 # 12c1c -.long 0x39200006 # 12c20 -.long 0x41820018 # 12c24 -.long 0x82300000 # 12c28 -.long 0x7e108a14 # 12c2c -.long 0x2c110000 # 12c30 -.long 0x39200007 # 12c34 -.long 0x4181ff94 # 12c38 -.long 0x7d124378 # 12c3c -.long 0x4800001d # 12c40 -.long 0x48656170 # 12c44 -.long 0x20736567 # 12c48 -.long 0x6d656e74 # 12c4c -.long 0x20636f72 # 12c50 -.long 0x72757074 # 12c54 -.long 0x20000000 # 12c58 -.long 0x7d0802a6 # 12c5c -.long 0x48003781 # 12c60 -.long 0x7d284b78 # 12c64 -.long 0x48003985 # 12c68 -.long 0x4800000d # 12c6c -.long 0x61742000 # 12c70 -.long 0 # 12c74 -.long 0x7d0802a6 # 12c78 -.long 0x48003765 # 12c7c -.long 0x7e088378 # 12c80 -.long 0x48003a8d # 12c84 -.long 0x48000009 # 12c88 -.long 0x5e6e0000 # 12c8c -.long 0x7d0802a6 # 12c90 -.long 0x4800374d # 12c94 -.long 0x3a10ffc0 # 12c98 -.long 0x3a200008 # 12c9c -.long 0x7e088378 # 12ca0 -.long 0x48003a6d # 12ca4 -.long 0x48000009 # 12ca8 -.long 0x20000000 # 12cac -.long 0x7d0802a6 # 12cb0 -.long 0x4800372d # 12cb4 -.long 0x81100000 # 12cb8 -.long 0x48003a55 # 12cbc -.long 0x81100004 # 12cc0 -.long 0x48003a4d # 12cc4 -.long 0x81100008 # 12cc8 -.long 0x48003a45 # 12ccc -.long 0x8110000c # 12cd0 -.long 0x48003a3d # 12cd4 -.long 0x4800000d # 12cd8 -.long 0x20202a00 # 12cdc -.long 0 # 12ce0 -.long 0x7d0802a6 # 12ce4 -.long 0x480036f9 # 12ce8 -.long 0x39000010 # 12cec -.long 0x3a10ffff # 12cf0 -.long 0x7d0903a6 # 12cf4 -.long 0x8d100001 # 12cf8 -.long 0x2c080020 # 12cfc -.long 0x41810008 # 12d00 -.long 0x39000020 # 12d04 -.long 0x48003be5 # 12d08 -.long 0x4200ffec # 12d0c -.long 0x4800000d # 12d10 -.long 0x2a5e6e00 # 12d14 -.long 0 # 12d18 -.long 0x7d0802a6 # 12d1c -.long 0x480036c1 # 12d20 -.long 0x3a31ffff # 12d24 -.long 0x3a100001 # 12d28 -.long 0x2c110000 # 12d2c -.long 0x4082ff70 # 12d30 -.long 0x7e489378 # 12d34 -.long 0x7dc803a6 # 12d38 -.long 0x4e800020 # 12d3c - - - -/*********************************************************** - - panic_wrapper_0x12d40 - -************************************************************ - -Xrefs: -say_nanodebugger_activated -major_0x12fa0 -major_0x130f0 - -***********************************************************/ - -.align 6 # 12d40 - -panic_wrapper_0x12d40: /* < outside referer */ -b panic # 12d40 - - - -/*********************************************************** - - say_nanodebugger_activated - -************************************************************ - -Xrefs: -setup - -***********************************************************/ - -say_nanodebugger_activated: /* < outside referer */ -addi r9, r1, -0xa84 # 12d44 -lis r8, 0x544d # 12d48 -ori r8, r8, 0x5251 # 12d4c -stw r8, 0x0004( r9) # 12d50 -stw r9, 0x0008( r9) # 12d54 -stw r9, 0x000c( r9) # 12d58 -li r8, 0x00 # 12d5c -stb r8, 0x0014( r9) # 12d60 -li r8, 0x01 # 12d64 -stb r8, 0x0016( r9) # 12d68 -stb r8, 0x0017( r9) # 12d6c -lis r8, 0x7fff # 12d70 -ori r8, r8, 0xffff # 12d74 -mtspr 22/*dec*/, r8 # 12d78 -stw r8, 0x0038( r9) # 12d7c -oris r8, r8, 0xffff # 12d80 -stw r8, 0x003c( r9) # 12d84 -mfspr r8, 287/*pvr*/ # 12d88 -rlwinm. r8, r8, 0, 0, 14 # 12d8c -beq- say_nanodebugger_activated_0x7c # 12d90 -mflr r30 # 12d94 -li r8, 0x40 # 12d98 - -# r1 = kdp -# r8 = size -bl pool_malloc # 12d9c -# r8 = ptr - -mr. r31, r8 # 12da0 -beq+ panic_wrapper_0x12d40 # 12da4 -stw r31, -0x0434( r1) # 12da8 -li r9, 0x07 # 12dac -stb r9, 0x0014(r31) # 12db0 -li r9, 0x01 # 12db4 -stb r9, 0x0016(r31) # 12db8 -mtlr r30 # 12dbc - -say_nanodebugger_activated_0x7c: -mfspr r8, 287/*pvr*/ # 12dc0 -rlwinm. r8, r8, 0, 0, 14 # 12dc4 -beq- say_nanodebugger_activated_0xb4 # 12dc8 -mflr r30 # 12dcc -li r8, 0x40 # 12dd0 - -# r1 = kdp -# r8 = size -bl pool_malloc # 12dd4 -# r8 = ptr - -mr. r31, r8 # 12dd8 -beq+ panic_wrapper_0x12d40 # 12ddc -stw r31, -0x0364( r1) # 12de0 -li r9, 0x08 # 12de4 -stb r9, 0x0014(r31) # 12de8 -li r9, 0x01 # 12dec -stb r9, 0x0016(r31) # 12df0 -mtlr r30 # 12df4 - -say_nanodebugger_activated_0xb4: -lwz r30, 0x0630( r1) # 12df8 -lhz r31, 0x0378(r30) # 12dfc -cmplwi r31, 0x101 # 12e00 -blt- say_nanodebugger_activated_0x140 # 12e04 -lwz r31, 0x0388(r30) # 12e08 -clrlwi. r8, r31, 0x1f # 12e0c -beq- say_nanodebugger_activated_0x140 # 12e10 -lwz r8, 0x0edc( r1) # 12e14 -ori r8, r8, 0x02 # 12e18 -stw r8, 0x0edc( r1) # 12e1c -mflr r30 # 12e20 -li r8, 0x40 # 12e24 - -# r1 = kdp -# r8 = size -bl pool_malloc # 12e28 -# r8 = ptr - -mr. r31, r8 # 12e2c -beq+ panic_wrapper_0x12d40 # 12e30 -li r9, 0x06 # 12e34 -stb r9, 0x0014(r31) # 12e38 -li r9, 0x01 # 12e3c -stb r9, 0x0016(r31) # 12e40 -bl bizarre # 12e44 -stw r8, 0x0038(r31) # 12e48 -stw r9, 0x003c(r31) # 12e4c -mr r8, r31 # 12e50 -bl major_0x130f0_0x524 # 12e54 -bl 1f # 12e58 -.ascii "Nanodebugger activated.^n" # 12e5c -.short 0 # 12e75 -.align 2 # 12e77 -1: mflr r8 # 12e78 -bl print_string # 12e7c -mtlr r30 # 12e80 - -say_nanodebugger_activated_0x140: -blr # 12e84 - - - -/*********************************************************** - - major_0x12e88 - -************************************************************ - -Xrefs: -major_0x03200 -major_0x130f0 - -***********************************************************/ - -.align 3 # 12e88 - -major_0x12e88: /* < outside referer */ -.long 0x000130f0 # 12e88 -.long 0x00013120 # 12e8c -.long 0x0001318c # 12e90 -.long 0x0001324c # 12e94 -.long 0x000132e8 # 12e98 -.long 0x00013350 # 12e9c -.long 0x000135b8 # 12ea0 -.long 0x000134bc # 12ea4 -.long 0x00013524 # 12ea8 - -major_0x12e88_0x24: /* < outside referer */ -mflr r19 # 12eac -mfspr r18, 272/*sprg0*/ # 12eb0 -stw r19, -0x0258(r18) # 12eb4 - -major_0x12e88_0x30: /* < outside referer */ -mfspr r8, 287/*pvr*/ # 12eb8 -rlwinm. r8, r8, 0, 0, 14 # 12ebc -beq- major_0x12e88_0x54 # 12ec0 - -major_0x12e88_0x3c: -mftbu r8 # 12ec4 -mftb r9, 0x10c # 12ec8 -mftbu r16 # 12ecc -cmpw r8, r16 # 12ed0 -bne+ major_0x12e88_0x3c # 12ed4 -b major_0x12e88_0x90 # 12ed8 - -major_0x12e88_0x54: -mfspr r8, 4/*rtcu*/ # 12edc -mfspr r9, 5/*rtcl*/ # 12ee0 -mfspr r16, 4/*rtcu*/ # 12ee4 -cmpw r8, r16 # 12ee8 -bne+ major_0x12e88_0x54 # 12eec -lis r16, 0x3b9a # 12ef0 -ori r16, r16, 0xca00 # 12ef4 -mfspr r17, 0/*mq*/ # 12ef8 -.long 0x7d1040d6 # 12efc -mfspr r16, 0/*mq*/ # 12f00 -mtspr 0/*mq*/, r17 # 12f04 -mfxer r17 # 12f08 -addc r9, r16, r9 # 12f0c -addze r8, r8 # 12f10 -mtxer r17 # 12f14 - -major_0x12e88_0x90: -lbz r19, -0x0309(r18) # 12f18 -addi r30, r18, -0x320 # 12f1c -cmpwi r19, 0x01 # 12f20 -lwz r16, 0x0038(r30) # 12f24 -bne- major_0x12e88_0xcc # 12f28 -lwz r17, 0x003c(r30) # 12f2c -cmpw r16, r8 # 12f30 -cmplw cr1, r17, r9 # 12f34 -bgt- major_0x12e88_0xcc # 12f38 -blt- major_0x12e88_0xbc # 12f3c -bgt- cr1, major_0x12e88_0xcc # 12f40 - -major_0x12e88_0xbc: -li r19, 0x00 # 12f44 -stw r30, -0x0254(r18) # 12f48 -stb r19, 0x0017(r30) # 12f4c -b major_0x130f0_0x208 # 12f50 - -major_0x12e88_0xcc: -lwz r30, -0x0a7c( r1) # 12f54 -lwz r16, 0x0038(r30) # 12f58 -lwz r17, 0x003c(r30) # 12f5c -cmpw r16, r8 # 12f60 -cmplw cr1, r17, r9 # 12f64 -bgt- major_0x12fa0_0x70 # 12f68 -blt- major_0x12e88_0xec # 12f6c -bgt- cr1, major_0x12fa0_0x70 # 12f70 - -major_0x12e88_0xec: -lwz r19, 0x0008(r30) # 12f74 -lwz r20, 0x000c(r30) # 12f78 -stw r19, 0x0008(r20) # 12f7c -stw r20, 0x000c(r19) # 12f80 -li r19, 0x00 # 12f84 -stw r19, 0x0008(r30) # 12f88 -stw r19, 0x000c(r30) # 12f8c -lwz r19, 0x064c( r1) # 12f90 -lbz r20, 0x0014(r30) # 12f94 -rlwimi r19, r20, 2, 23, 29 # 12f98 -cmplwi r20, 0x09 # 12f9c - - - -/*********************************************************** - - major_0x12fa0 - -************************************************************ - -Xrefs: -major_0x12e88 - -***********************************************************/ - -.align 5 # 12fa0 - -lis r20, major_0x12e88@h # 12fa0 -ori r20, r20, major_0x12e88@l # 12fa4 -li r21, 0x00 # 12fa8 -add r20, r20, r19 # 12fac -bgel+ panic_wrapper_0x12d40 # 12fb0 -stb r21, 0x0017(r30) # 12fb4 -lwz r20, 0x0000(r20) # 12fb8 -add r20, r20, r19 # 12fbc -mtlr r20 # 12fc0 -stw r30, -0x0254(r18) # 12fc4 -blr # 12fc8 -.long 0x7e5042a6 # 12fcc -.long 0x83d2fdac # 12fd0 -.long 0x8a7e0016 # 12fd4 -.long 0x2c130001 # 12fd8 -.long 0x811e0000 # 12fdc -.long 0x4182fed8 # 12fe0 -.long 0x4800231d # 12fe4 -.long 0x7fc8f378 # 12fe8 -.long 0x4bfff9b5 # 12fec -.long 0x811e001c # 12ff0 -.long 0x2c080000 # 12ff4 -.long 0x41820010 # 12ff8 -.long 0x4bfff9a5 # 12ffc -.long 0x39000000 # 13000 -.long 0x911e001c # 13004 -.long 0x7e5042a6 # 13008 -.long 0x4bfffeac # 1300c - -major_0x12fa0_0x70: /* < outside referer */ -lwz r19, -0x0258(r18) # 13010 -mtlr r19 # 13014 -b major_0x13060_0x18 # 13018 - - - -/*********************************************************** - - say_starting_timeslicing - -************************************************************ - -Xrefs: -setup - -***********************************************************/ - -say_starting_timeslicing: /* < outside referer */ -mfspr r19, 272/*sprg0*/ # 1301c -li r8, 0x01 # 13020 -stb r8, -0x0309(r19) # 13024 -li r8, 0x00 # 13028 -stw r8, -0x02e8(r19) # 1302c -stw r8, -0x02e4(r19) # 13030 -mflr r19 # 13034 -bl 1f # 13038 -.ascii "Starting timeslicing^n" # 1303c -.short 0 # 13052 -.align 2 # 13054 -1: mflr r8 # 13054 -bl print_string # 13058 -mtlr r19 # 1305c - - - -/*********************************************************** - - major_0x13060 - -************************************************************ - -Xrefs: -major_0x12fa0 -say_starting_timeslicing -major_0x130f0 -major_0x148ec - -***********************************************************/ - -.align 5 # 13060 - -major_0x13060: /* < outside referer */ -mflr r19 # 13060 -bl bizarre # 13064 -mtlr r19 # 13068 - -major_0x13060_0xc: /* < outside referer */ -lwz r18, -0x0a7c( r1) # 1306c -lwz r16, 0x0038(r18) # 13070 -lwz r17, 0x003c(r18) # 13074 - -major_0x13060_0x18: /* < outside referer */ -mfxer r20 # 13078 -mfspr r19, 272/*sprg0*/ # 1307c -lis r21, 0x7fff # 13080 -lbz r18, -0x0309(r19) # 13084 -ori r21, r21, 0xffff # 13088 -cmpwi r18, 0x01 # 1308c -bne- major_0x13060_0x58 # 13090 -lwz r18, -0x02e8(r19) # 13094 -lwz r19, -0x02e4(r19) # 13098 -cmpw r16, r18 # 1309c -cmplw cr1, r17, r19 # 130a0 -blt- major_0x13060_0x58 # 130a4 -bgt- major_0x13060_0x50 # 130a8 -ble- cr1, major_0x13060_0x58 # 130ac - -major_0x13060_0x50: -mr r17, r19 # 130b0 -mr r16, r18 # 130b4 - -major_0x13060_0x58: -subfc r17, r9, r17 # 130b8 -subfe. r16, r8, r16 # 130bc -mtxer r20 # 130c0 -blt- major_0x13060_0x84 # 130c4 -bne- major_0x13060_0x7c # 130c8 -cmplw r16, r21 # 130cc -bgt- major_0x13060_0x7c # 130d0 -mtspr 22/*dec*/, r17 # 130d4 -blr # 130d8 - -major_0x13060_0x7c: -mtspr 22/*dec*/, r21 # 130dc -blr # 130e0 - -major_0x13060_0x84: -mtspr 22/*dec*/, r21 # 130e4 -mtspr 22/*dec*/, r16 # 130e8 -blr # 130ec - - - -/*********************************************************** - - major_0x130f0 - -************************************************************ - -Xrefs: -major_0x0b664 -NKSetClockStep -NKSetClockDriftCorrection -major_0x0c680 -major_0x0c8b4 -major_0x0c968 -major_0x0cb8c -major_0x0ccf4 -major_0x0cd9c -major_0x0ced4 -major_0x0d06c -major_0x0d158 -major_0x0d278 -major_0x0d35c -major_0x0d504 -major_0x0d798 -major_0x0d8a0 -major_0x0d9a8 -major_0x0dce8 -major_0x0e604 -say_nanodebugger_activated -major_0x12e88 -interrupt_blue - -***********************************************************/ - -.align 4 # 130f0 - -.long 0x48000029 # 130f0 -.long 0x54696d65 # 130f4 -.long 0x72496e66 # 130f8 -.long 0x6f726d61 # 130fc -.long 0x74696f6e # 13100 -.long 0x2e6b696e # 13104 -.long 0x64206973 # 13108 -.long 0x207a6572 # 1310c -.long 0x6f3f3f5e # 13110 -.long 0x6e000000 # 13114 -.long 0x7d0802a6 # 13118 -.long 0x480032c5 # 1311c -.long 0x4bfffc21 # 13120 -.long 0x825e0018 # 13124 -.long 0x92120080 # 13128 -.long 0x92320084 # 1312c -.long 0x811e0018 # 13130 -.long 0x3a000000 # 13134 -.long 0x8a280018 # 13138 -.long 0x82680088 # 1313c -.long 0x2c110000 # 13140 -.long 0x9213011c # 13144 -.long 0x4082003c # 13148 -.long 0x3a080008 # 1314c -.long 0x82300008 # 13150 -.long 0x8270000c # 13154 -.long 0x92330008 # 13158 -.long 0x9271000c # 1315c -.long 0x3a200000 # 13160 -.long 0x92300008 # 13164 -.long 0x9230000c # 13168 -.long 0x3a200001 # 1316c -.long 0x9a280019 # 13170 -.long 0x48000d6d # 13174 -.long 0x48001865 # 13178 -.long 0x4800197d # 1317c -.long 0x4bfffe4c # 13180 -.long 0x82080064 # 13184 -.long 0x561007bd # 13188 -.long 0x4082fe40 # 1318c -.long 0x4bfffbb1 # 13190 -.long 0x825e0018 # 13194 -.long 0x92120080 # 13198 -.long 0x92320084 # 1319c -.long 0x811e0018 # 131a0 -.long 0x3a008d90 # 131a4 -.long 0x8a280018 # 131a8 -.long 0x82480088 # 131ac -.long 0x2c110000 # 131b0 -.long 0x408200a0 # 131b4 -.long 0x9212011c # 131b8 -.long 0x81080008 # 131bc -.long 0x81080000 # 131c0 -.long 0x480021bd # 131c4 -.long 0x2c090004 # 131c8 -.long 0x2c890005 # 131cc -.long 0x41820048 # 131d0 -.long 0x41860034 # 131d4 -.long 0x2c090009 # 131d8 -.long 0x2c890006 # 131dc -.long 0x41820018 # 131e0 -.long 0x4086fb5c # 131e4 -.long 0x82080020 # 131e8 -.long 0x3a10ffff # 131ec -.long 0x92080020 # 131f0 -.long 0x48000030 # 131f4 -.long 0x8208001c # 131f8 -.long 0x3a10ffff # 131fc -.long 0x9208001c # 13200 -.long 0x48000020 # 13204 -.long 0x8208001c # 13208 -.long 0x3a10ffff # 1320c -.long 0x9208001c # 13210 -.long 0x48000010 # 13214 -.long 0x8208002c # 13218 -.long 0x3a10ffff # 1321c -.long 0x9208002c # 13220 -.long 0x811e0018 # 13224 -.long 0x3a080008 # 13228 -.long 0x82300008 # 1322c -.long 0x8250000c # 13230 -.long 0x92320008 # 13234 -.long 0x9251000c # 13238 -.long 0x3a200000 # 1323c -.long 0x92300008 # 13240 -.long 0x9230000c # 13244 -.long 0x48000c99 # 13248 -.long 0x480018ad # 1324c -.long 0x4bfffd7c # 13250 -.long 0x4bfffaec # 13254 -.long 0x811e0018 # 13258 -.long 0x48002125 # 1325c -.long 0x2c090004 # 13260 -.long 0x7d1f4378 # 13264 -.long 0x40820058 # 13268 -.long 0x821f0024 # 1326c -.long 0x811e001c # 13270 -.long 0x2c100000 # 13274 -.long 0x2c880000 # 13278 -.long 0x4182001c # 1327c -.long 0x823f0028 # 13280 -.long 0x7e288b79 # 13284 -.long 0x82310008 # 13288 -.long 0x41820034 # 1328c -.long 0x923f0028 # 13290 -.long 0x48000010 # 13294 -.long 0x41860028 # 13298 -.long 0x3a000000 # 1329c -.long 0x921e001c # 132a0 -.long 0x821e0020 # 132a4 -.long 0x823e0024 # 132a8 -.long 0x825e0028 # 132ac -.long 0x92080010 # 132b0 -.long 0x92280014 # 132b4 -.long 0x92480018 # 132b8 -.long 0x4bff95f9 # 132bc -.long 0x811e0034 # 132c0 -.long 0x480020bd # 132c4 -.long 0x2c090005 # 132c8 -.long 0x7d1f4378 # 132cc -.long 0x40820008 # 132d0 -.long 0x4bff9a21 # 132d4 -.long 0x811e002c # 132d8 -.long 0x480020a5 # 132dc -.long 0x2c090009 # 132e0 -.long 0x7d1f4378 # 132e4 -.long 0x4082000c # 132e8 -.long 0x811e0030 # 132ec -.long 0x4bffa06d # 132f0 -.long 0x4bfffcd8 # 132f4 - -major_0x130f0_0x208: /* < outside referer */ -mfspr r28, 272/*sprg0*/ # 132f8 -lwz r29, -0x0008(r28) # 132fc -mr r8, r29 # 13300 -bl major_0x13e4c # 13304 -lbz r17, 0x0019(r29) # 13308 -cmpwi r17, 0x02 # 1330c -bge- major_0x130f0_0x25c # 13310 -mr r8, r29 # 13314 -lwz r16, 0x0038(r30) # 13318 -lwz r17, 0x003c(r30) # 1331c -bl clear_cr0_lt # 13320 -bge- major_0x130f0_0x248 # 13324 -mr r8, r29 # 13328 -bl major_0x13ed8_0x8 # 1332c -bl major_0x149d4_0x8 # 13330 -b major_0x130f0_0x268 # 13334 - -major_0x130f0_0x248: -li r18, 0x02 # 13338 -stb r18, 0x0019(r29) # 1333c -mr r8, r29 # 13340 -bl major_0x13ed8_0x8 # 13344 -b major_0x130f0_0x268 # 13348 - -major_0x130f0_0x25c: -mr r8, r29 # 1334c -bl major_0x13ed8_0x8 # 13350 -bl major_0x149d4 # 13354 - -major_0x130f0_0x268: -bl major_0x14af8 # 13358 -mfspr r18, 272/*sprg0*/ # 1335c -b major_0x12e88_0x30 # 13360 -.long 0x48000019 # 13364 -.long 0x48656172 # 13368 -.long 0x74626561 # 1336c -.long 0x743a2045 # 13370 -.long 0x78742000 # 13374 -.long 0 # 13378 -.long 0x7d0802a6 # 1337c -.long 0x48003061 # 13380 -.long 0x82010e80 # 13384 -.long 0x7e088378 # 13388 -.long 0x48003261 # 1338c -.long 0x48000011 # 13390 -.long 0x416c6572 # 13394 -.long 0x74732000 # 13398 -.long 0 # 1339c -.long 0x7d0802a6 # 133a0 -.long 0x4800303d # 133a4 -.long 0x82010ee0 # 133a8 -.long 0x7e088378 # 133ac -.long 0x4800323d # 133b0 -.long 0x48000011 # 133b4 -.long 0x426c7565 # 133b8 -.long 0x20637075 # 133bc -.long 0x2d000000 # 133c0 -.long 0x7d0802a6 # 133c4 -.long 0x48003019 # 133c8 -.long 0x8221f710 # 133cc -.long 0xa211001a # 133d0 -.long 0x7e088378 # 133d4 -.long 0x48003385 # 133d8 -.long 0x4800000d # 133dc -.long 0x73746174 # 133e0 -.long 0x652d0000 # 133e4 -.long 0x7d0802a6 # 133e8 -.long 0x48002ff5 # 133ec -.long 0x8a110018 # 133f0 -.long 0x7e088378 # 133f4 -.long 0x48003365 # 133f8 -.long 0x4800000d # 133fc -.long 0x7363722d # 13400 -.long 0 # 13404 -.long 0x7d0802a6 # 13408 -.long 0x48002fd5 # 1340c -.long 0x82010658 # 13410 -.long 0x82410674 # 13414 -.long 0x821000dc # 13418 -.long 0x7e109038 # 1341c -.long 0x7e088378 # 13420 -.long 0x480032ed # 13424 -.long 0x4800000d # 13428 -.long 0x6d63722d # 1342c -.long 0 # 13430 -.long 0x7d0802a6 # 13434 -.long 0x48002fa9 # 13438 -.long 0x8201fbc0 # 1343c -.long 0x7e088378 # 13440 -.long 0x480032cd # 13444 -.long 0x4800000d # 13448 -.long 0x49504c2d # 1344c -.long 0 # 13450 -.long 0x7d0802a6 # 13454 -.long 0x48002f89 # 13458 -.long 0x8201067c # 1345c -.long 0xa2100000 # 13460 -.long 0x7e088378 # 13464 -.long 0x480032cd # 13468 -.long 0x4800000d # 1346c -.long 0x6553522d # 13470 -.long 0 # 13474 -.long 0x7d0802a6 # 13478 -.long 0x48002f65 # 1347c -.long 0x82010658 # 13480 -.long 0x821001cc # 13484 -.long 0x72100007 # 13488 -.long 0x7e088378 # 1348c -.long 0x480032cd # 13490 -.long 0x48000009 # 13494 -.long 0x5e6e0000 # 13498 -.long 0x7d0802a6 # 1349c -.long 0x48002f41 # 134a0 -.long 0x7e6102a6 # 134a4 -.long 0x821e0038 # 134a8 -.long 0x823e003c # 134ac -.long 0x82410f2c # 134b0 -.long 0x56521838 # 134b4 -.long 0x7e319014 # 134b8 -.long 0x7e100194 # 134bc -.long 0x921e0038 # 134c0 -.long 0x923e003c # 134c4 -.long 0x7e6103a6 # 134c8 -.long 0x7fc8f378 # 134cc -.long 0x48000145 # 134d0 -.long 0x4bfffaf8 # 134d4 -.long 0x8241fbc8 # 134d8 -.long 0x82610f88 # 134dc -.long 0x7e729851 # 134e0 -.long 0x4081005c # 134e4 -.long 0x5673aafe # 134e8 -.long 0x7e8102a6 # 134ec -.long 0x7e0d42e6 # 134f0 -.long 0x7e2c42e6 # 134f4 -.long 0x7e4d42e6 # 134f8 -.long 0x7c109000 # 134fc -.long 0x3a400000 # 13500 -.long 0x40a2ffec # 13504 -.long 0x7e5c43a6 # 13508 -.long 0x7e319814 # 1350c -.long 0x7e100194 # 13510 -.long 0x7e1d43a6 # 13514 -.long 0x7e3c43a6 # 13518 -.long 0x8241fbc8 # 1351c -.long 0x5652aafe # 13520 -.long 0x7e319014 # 13524 -.long 0x7e100194 # 13528 -.long 0x921e0038 # 1352c -.long 0x923e003c # 13530 -.long 0x7e8103a6 # 13534 -.long 0x7fc8f378 # 13538 -.long 0x480000d9 # 1353c -.long 0x4bfffa8c # 13540 -.long 0x8261fc94 # 13544 -.long 0x7e8102a6 # 13548 -.long 0x2c930000 # 1354c -.long 0x7e68fe70 # 13550 -.long 0x41860068 # 13554 -.long 0x7e0d42e6 # 13558 -.long 0x7e2c42e6 # 1355c -.long 0x7e4d42e6 # 13560 -.long 0x7c109000 # 13564 -.long 0x3a400000 # 13568 -.long 0x40a2ffec # 1356c -.long 0x7e5c43a6 # 13570 -.long 0x7e719814 # 13574 -.long 0x7e504114 # 13578 -.long 0x7e5d43a6 # 1357c -.long 0x7e7c43a6 # 13580 -.long 0x41850024 # 13584 -.long 0x7e4d42e6 # 13588 -.long 0x7e6c42e6 # 1358c -.long 0x7d0d42e6 # 13590 -.long 0x7c124000 # 13594 -.long 0x40a2fff0 # 13598 -.long 0x7e719810 # 1359c -.long 0x7e509111 # 135a0 -.long 0x4180ffe4 # 135a4 -.long 0x8241fc98 # 135a8 -.long 0x7e319014 # 135ac -.long 0x7e100194 # 135b0 -.long 0x921e0038 # 135b4 -.long 0x923e003c # 135b8 -.long 0x7e8103a6 # 135bc -.long 0x4186fa0c # 135c0 -.long 0x7fc8f378 # 135c4 -.long 0x4800004d # 135c8 -.long 0x4bfffa00 # 135cc -.long 0x7e6102a6 # 135d0 -.long 0x821e0038 # 135d4 -.long 0x823e003c # 135d8 -.long 0x82410f2c # 135dc -.long 0x5652f87e # 135e0 -.long 0x7e319014 # 135e4 -.long 0x7e100194 # 135e8 -.long 0x921e0038 # 135ec -.long 0x923e003c # 135f0 -.long 0x7e6103a6 # 135f4 -.long 0x7fc8f378 # 135f8 -.long 0x48000019 # 135fc -.long 0x48003281 # 13600 -.long 0x2c08ffff # 13604 -.long 0x4182f9c4 # 13608 -.long 0x48003cdd # 1360c -.long 0x4bfff9bc # 13610 - -major_0x130f0_0x524: /* < outside referer */ -lwz r16, 0x0038( r8) # 13614 -lwz r17, 0x003c( r8) # 13618 -lwz r20, -0x0a7c( r1) # 1361c -lwz r18, 0x0038(r20) # 13620 -lwz r19, 0x003c(r20) # 13624 -cmpw r16, r18 # 13628 -cmplw cr1, r17, r19 # 1362c -bgt- major_0x130f0_0x580 # 13630 -blt- major_0x130f0_0x54c # 13634 -bge- cr1, major_0x130f0_0x580 # 13638 - -major_0x130f0_0x54c: -addi r20, r1, -0xa84 # 1363c -li r18, 0x01 # 13640 -stb r18, 0x0017( r8) # 13644 -lwz r19, 0x0000( r8) # 13648 -lwz r9, 0x0000(r20) # 1364c -stw r9, 0x0000( r8) # 13650 -lwz r9, 0x0008(r20) # 13654 -stw r9, 0x0008( r8) # 13658 -stw r20, 0x000c( r8) # 1365c -stw r8, 0x000c( r9) # 13660 -stw r8, 0x0008(r20) # 13664 -stw r19, 0x0000( r8) # 13668 -b major_0x13060 # 1366c - -major_0x130f0_0x580: -lwz r20, -0x0a78( r1) # 13670 - -major_0x130f0_0x584: -lwz r18, 0x0038(r20) # 13674 -lwz r19, 0x003c(r20) # 13678 -cmpw r16, r18 # 1367c -cmplw cr1, r17, r19 # 13680 -bgt- major_0x130f0_0x5a8 # 13684 -blt- major_0x130f0_0x5a0 # 13688 -bge- cr1, major_0x130f0_0x5a8 # 1368c - -major_0x130f0_0x5a0: -lwz r20, 0x000c(r20) # 13690 -b major_0x130f0_0x584 # 13694 - -major_0x130f0_0x5a8: -li r18, 0x01 # 13698 -stb r18, 0x0017( r8) # 1369c -lwz r19, 0x0000( r8) # 136a0 -lwz r9, 0x0000(r20) # 136a4 -stw r9, 0x0000( r8) # 136a8 -lwz r9, 0x0008(r20) # 136ac -stw r9, 0x0008( r8) # 136b0 -stw r20, 0x000c( r8) # 136b4 -stw r8, 0x000c( r9) # 136b8 -stw r8, 0x0008(r20) # 136bc -stw r19, 0x0000( r8) # 136c0 -blr # 136c4 - -major_0x130f0_0x5d8: /* < outside referer */ -lwz r16, 0x0008( r8) # 136c8 -cmpwi r16, 0x00 # 136cc -lwz r18, -0x0a7c( r1) # 136d0 -beq+ panic_wrapper_0x12d40 # 136d4 -lwz r16, 0x0008( r8) # 136d8 -lwz r17, 0x000c( r8) # 136dc -stw r16, 0x0008(r17) # 136e0 -stw r17, 0x000c(r16) # 136e4 -li r16, 0x00 # 136e8 -stw r16, 0x0008( r8) # 136ec -stw r16, 0x000c( r8) # 136f0 -li r16, 0x00 # 136f4 -cmpw r18, r8 # 136f8 -stb r16, 0x0017( r8) # 136fc -beq+ major_0x13060 # 13700 -blr # 13704 - - - -/*********************************************************** - - scale_timebase - -************************************************************ - -Xrefs: -major_0x0c968 -major_0x0cb8c -major_0x0ced4 -major_0x0d504 -major_0x0d8a0 -init_rdyqs - -************************************************************ - -> r1 = kdp -> r8 = multiple (pos: /250; neg: /250000) - -< r8 = hi -< r9 = lo - -***********************************************************/ - -.align 3 # 13708 - -scale_timebase: /* < outside referer */ -mr. r17, r8 # 13708 -li r19, 250 # 1370c -lwz r9, 0x0f2c( r1) # kdp.u32_timebase_freq # 13710 -bgt+ scale_timebase_divisor_250 # 13714 -blt+ scale_timebase_divisor_250000 # 13718 -li r8, 0x00 # 1371c -li r9, 0x00 # 13720 -blr # 13724 - -scale_timebase_divisor_250000: -neg r17, r17 # 13728 -lis r19, 250000@h # 1372c -ori r19, r19, 250000@l # 13730 - -scale_timebase_divisor_250: -divw r19, r9, r19 # 13734 -mullw r9, r19, r17 # 13738 -mulhw r8, r19, r17 # 1373c -srwi r9, r9, 2 # 13740 -rlwimi r9, r8, 30, 0, 1 # 13744 -srwi r8, r8, 2 # 13748 -blr # 1374c - - - -/*********************************************************** - - bizarre - -************************************************************ - -Xrefs: -NKSetClockStep -NKSetClockDriftCorrection -major_0x0c968 -major_0x0cb8c -major_0x0ced4 -major_0x0d504 -major_0x0d70c -major_0x0d9a8 -mktask -say_nanodebugger_activated -major_0x13060 -major_0x142dc -major_0x14548 - -***********************************************************/ - -.align 4 # 13750 - -bizarre: /* < outside referer */ -mfspr r8, 287/*pvr*/ # 13750 -rlwinm. r8, r8, 0, 0, 14 # 13754 -beq- bizarre_0x24 # 13758 - -bizarre_0xc: -mftbu r8 # 1375c -mftb r9, 0x10c # 13760 -mftbu r16 # 13764 -cmpw r8, r16 # 13768 -bne+ bizarre_0xc # 1376c -b bizarre_0x60 # 13770 - -bizarre_0x24: -mfspr r8, 4/*rtcu*/ # 13774 -mfspr r9, 5/*rtcl*/ # 13778 -mfspr r16, 4/*rtcu*/ # 1377c -cmpw r8, r16 # 13780 -bne+ bizarre_0x24 # 13784 -lis r16, 0x3b9a # 13788 -ori r16, r16, 0xca00 # 1378c -mfspr r17, 0/*mq*/ # 13790 -.long 0x7d1040d6 # 13794 -mfspr r16, 0/*mq*/ # 13798 -mtspr 0/*mq*/, r17 # 1379c -mfxer r17 # 137a0 -addc r9, r16, r9 # 137a4 -addze r8, r8 # 137a8 -mtxer r17 # 137ac - -bizarre_0x60: -blr # 137b0 - - - -/*********************************************************** - - major_0x137b4 - -***********************************************************/ - -.long 0x4800000c # 137b4 -.long 0x60000000 # 137b8 -.long 0x60000000 # 137bc - - - -/*********************************************************** - - panic_wrapper_0x137c0 - -************************************************************ - -Xrefs: -major_0x13e4c -major_0x13ed8 -major_0x13f78 -major_0x142dc -major_0x14548 -major_0x149d4 - -***********************************************************/ - -.align 6 # 137c0 - -panic_wrapper_0x137c0: /* < outside referer */ -b panic # 137c0 - - - -/*********************************************************** - - init_rdyqs - -************************************************************ - -Four queues, hardcoded. Not sure why. Each queue knows about 0.001042*tbfreq -- timeslicing quantum? - -************************************************************ - -Xrefs: -setup - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -init_rdyqs: /* < outside referer */ -li r16, 0x00 # 137c4 -stw r16, 0x0ecc( r1) # kdp.0xecc # 137c8 -mflr r20 # 137cc -li r8, -0x412 # 137d0 - -# r1 = kdp -# r8 = multiple (pos: /250; neg: /250000) -bl scale_timebase # 137d4 -# r8 = hi -# r9 = lo - -mr r16, r8 # 137d8 -mr r17, r9 # 137dc -mtlr r20 # 137e0 -li r23, 0x00 # 137e4 -stw r23, -0x0970( r1) # kdp.-0x970 # 137e8 -addi r9, r1, -0x9f0 # kdp.-0x9f0 # 137ec - -init_rdyqs_0x2c: -lis r8, 256 * 'R'+'D' # 137f0 -ori r8, r8, 256 * 'Y'+'Q' # 137f4 -stw r8, 0x0004( r9) # 137f8 -stw r9, 0x0008( r9) # 137fc -stw r9, 0x000c( r9) # 13800 -lis r8, -0x8000 # 13804 -srw r8, r8, r23 # 13808 -stw r8, 0x0000( r9) # 1380c -li r8, 0x00 # 13810 -stw r8, 0x0010( r9) # 13814 -stw r8, 0x0014( r9) # 13818 -stw r16, 0x0018( r9) # 1381c -stw r17, 0x001c( r9) # 13820 -mflr r20 # 13824 -bl 1f # 13828 -.ascii "Init ready queue " # 1382c -.short 0 # 1383d -.align 2 # 1383f -1: mflr r8 # 13840 -bl print_string # 13844 -mr r8, r23 # 13848 -bl print_word_hex # 1384c -mr r8, r16 # 13850 -bl print_word_hex # 13854 -mr r8, r17 # 13858 -bl print_word_hex # 1385c -bl 1f # 13860 -.ascii "^n" # 13864 -.short 0 # 13866 -.align 2 # 13868 -1: mflr r8 # 13868 -bl print_string # 1386c -mtlr r20 # 13870 -slwi r16, r16, 3 # 13874 -rlwimi r16, r17, 3, 29, 31 # 13878 -slwi r17, r17, 3 # 1387c -addi r23, r23, 0x01 # 13880 -cmpwi r23, 0x04 # 13884 -addi r9, r9, 0x20 # 13888 -blt+ init_rdyqs_0x2c # 1388c -lwz r16, 0x0658( r1) # kdp.system_context # 13890 -lwz r17, 0x00cc(r16) # 13894 -andi. r9, r17, 0x0f # 13898 -li r17, 0x02 # 1389c -bnelr- # 138a0 -stw r17, 0x00cc(r16) # 138a4 -blr # 138a8 - - - -/*********************************************************** - - save_registers_from_r14 - -************************************************************ - -Save r14-r31 to 0x174(r6), 8-byte spaced. -Looks very very optimised? -stmw not used because registers are spaced out? - -************************************************************ - -Xrefs: -major_0x02ccc -major_0x03200 -save_all_registers -reset_trap -major_0x04880 -syscall -major_0x142a8 - -************************************************************ - -> r6 = ewa - -< r8 = sprg0 (not used by me) - -***********************************************************/ - -save_registers_from_r14: /* < outside referer */ -li r8, 0x180 # 138ac -dcbtst r8, r6 # 138b0 -stw r14, 0x0174( r6) # ewa.0x174 # 138b4 -stw r15, 0x017c( r6) # ewa.0x17c # 138b8 -li r8, 0x1a0 # 138bc -stw r16, 0x0184( r6) # ewa.0x184 # 138c0 -dcbtst r8, r6 # 138c4 -stw r17, 0x018c( r6) # ewa.0x18c # 138c8 -stw r18, 0x0194( r6) # ewa.0x194 # 138cc -stw r19, 0x019c( r6) # ewa.0x19c # 138d0 - - - -/*********************************************************** - - save_registers_from_r20 - -************************************************************ - -Xrefs: -save_registers_from_r14 -pdm_pih_01 -pbx_pih_03 -gazelle_pih_05 -tnt_pih_02 -gossamer_pih_07 -nwpbg3_pih_0a -cordyceps_pih_04 -newworld_pih_06 -unknown_pih_08 - -************************************************************ - -> r6 = ewa - -< r8 = sprg0 (not used by me) - -***********************************************************/ - -save_registers_from_r20: /* < outside referer */ -li r8, 0x1c0 # 138d4 -stw r20, 0x01a4( r6) # ewa.0x1a4 # 138d8 -dcbtst r8, r6 # 138dc -stw r21, 0x01ac( r6) # ewa.0x1ac # 138e0 -stw r22, 0x01b4( r6) # ewa.0x1b4 # 138e4 -stw r23, 0x01bc( r6) # ewa.0x1bc # 138e8 -li r8, 480 # 138ec -stw r24, 0x01c4( r6) # ewa.0x1c4 # 138f0 -dcbtst r8, r6 # 138f4 -stw r25, 0x01cc( r6) # ewa.0x1cc # 138f8 -stw r26, 0x01d4( r6) # ewa.0x1d4 # 138fc -stw r27, 0x01dc( r6) # ewa.0x1dc # 13900 -stw r28, 0x01e4( r6) # ewa.0x1e4 # 13904 -stw r29, 0x01ec( r6) # ewa.0x1ec # 13908 -stw r30, 0x01f4( r6) # ewa.0x1f4 # 1390c -stw r31, 0x01fc( r6) # ewa.0x1fc # 13910 -mfspr r8, 272/*sprg0*/ # 13914 -blr # 13918 - - - -/*********************************************************** - - restore_registers_from_r14 - -************************************************************ - -Restore r14-r31 from 0x174(r6), 8-byte spaced. -Again, well optimised - -************************************************************ - -Xrefs: -setup -major_0x02ccc -major_0x03200 -major_0x04240 -major_0x04300 -non_skeleton_reset_trap -major_0x04880 -syscall_return -major_0x142dc -interrupt_blue - -************************************************************ - -> r6 = ewa - -***********************************************************/ - -restore_registers_from_r14: /* < outside referer */ -li r31, 0x180 # 1391c -dcbt r31, r6 # 13920 -lwz r14, 0x0174( r6) # ewa.0x174 # 13924 -lwz r15, 0x017c( r6) # ewa.0x17c # 13928 -li r31, 0x1a0 # 1392c -lwz r16, 0x0184( r6) # ewa.0x184 # 13930 -dcbt r31, r6 # 13934 -lwz r17, 0x018c( r6) # ewa.0x18c # 13938 -lwz r18, 0x0194( r6) # ewa.0x194 # 1393c -lwz r19, 0x019c( r6) # ewa.0x19c # 13940 - -restore_registers_from_r14_0x28: /* < outside referer */ -li r31, 0x1c0 # 13944 -lwz r20, 0x01a4( r6) # ewa.0x1a4 # 13948 -dcbt r31, r6 # 1394c -lwz r21, 0x01ac( r6) # ewa.0x1ac # 13950 -lwz r22, 0x01b4( r6) # ewa.0x1b4 # 13954 -lwz r23, 0x01bc( r6) # ewa.0x1bc # 13958 -li r31, 480 # 1395c -lwz r24, 0x01c4( r6) # ewa.0x1c4 # 13960 -dcbt r31, r6 # 13964 -lwz r25, 0x01cc( r6) # ewa.0x1cc # 13968 -lwz r26, 0x01d4( r6) # ewa.0x1d4 # 1396c -lwz r27, 0x01dc( r6) # ewa.0x1dc # 13970 -lwz r28, 0x01e4( r6) # ewa.0x1e4 # 13974 -lwz r29, 0x01ec( r6) # ewa.0x1ec # 13978 -lwz r30, 0x01f4( r6) # ewa.0x1f4 # 1397c -lwz r31, 0x01fc( r6) # ewa.0x1fc # 13980 -blr # 13984 - - - -/*********************************************************** - - major_0x13988 - -************************************************************ - -Xrefs: -major_0x04180 -major_0x14548 -major_0x16bb4 - -***********************************************************/ - -.align 3 # 13988 - -major_0x13988: /* < outside referer */ -mfmsr r8 # 13988 -rlwinm r11, r11, 0, 19, 17 # 1398c -ori r8, r8, 0x2000 # 13990 -mtmsr r8 # 13994 -isync # 13998 -li r8, 0x220 # 1399c -stfd f0, 0x0200( r6) # 139a0 -dcbtst r8, r6 # 139a4 -stfd f1, 0x0208( r6) # 139a8 -stfd f2, 0x0210( r6) # 139ac -stfd f3, 0x0218( r6) # 139b0 -li r8, 0x240 # 139b4 -stfd f4, 0x0220( r6) # 139b8 -dcbtst r8, r6 # 139bc -stfd f5, 0x0228( r6) # 139c0 -stfd f6, 0x0230( r6) # 139c4 -stfd f7, 0x0238( r6) # 139c8 -li r8, 0x260 # 139cc -stfd f8, 0x0240( r6) # 139d0 -dcbtst r8, r6 # 139d4 -stfd f9, 0x0248( r6) # 139d8 -stfd f10, 0x0250( r6) # 139dc -stfd f11, 0x0258( r6) # 139e0 -li r8, 640 # 139e4 -stfd f12, 0x0260( r6) # 139e8 -dcbtst r8, r6 # 139ec -stfd f13, 0x0268( r6) # 139f0 -stfd f14, 0x0270( r6) # 139f4 -stfd f15, 0x0278( r6) # 139f8 -li r8, 0x2a0 # 139fc -stfd f16, 0x0280( r6) # 13a00 -dcbtst r8, r6 # 13a04 -stfd f17, 0x0288( r6) # 13a08 -stfd f18, 0x0290( r6) # 13a0c -stfd f19, 0x0298( r6) # 13a10 -li r8, 0x2c0 # 13a14 -stfd f20, 0x02a0( r6) # 13a18 -dcbtst r8, r6 # 13a1c -stfd f21, 0x02a8( r6) # 13a20 -stfd f22, 0x02b0( r6) # 13a24 -stfd f23, 0x02b8( r6) # 13a28 -li r8, 0x2e0 # 13a2c -stfd f24, 0x02c0( r6) # 13a30 -dcbtst r8, r6 # 13a34 -stfd f25, 0x02c8( r6) # 13a38 -stfd f26, 0x02d0( r6) # 13a3c -stfd f27, 0x02d8( r6) # 13a40 -mffs f0 # 13a44 -stfd f28, 0x02e0( r6) # 13a48 -stfd f29, 0x02e8( r6) # 13a4c -stfd f30, 0x02f0( r6) # 13a50 -stfd f31, 0x02f8( r6) # 13a54 -stfd f0, 0x00e0( r6) # 13a58 -blr # 13a5c - -major_0x13988_0xd8: /* < outside referer */ -li r8, 0x200 # 13a60 -mfspr r11, 256/*vrsave*/ # 13a64 -lvxl v0, r8, r10 # 13a68 -mtcr r11 # 13a6c -mtvscr v0 # 13a70 -lwz r8, -0x0004( r1) # 13a74 -li r9, -0x8e0 # 13a78 -lvx v31, r8, r9 # 13a7c -vor v0, v31, v31 # 13a80 -bge- major_0x13988_0x108 # 13a84 -li r8, 0x00 # 13a88 -lvx v0, r8, r10 # 13a8c - -major_0x13988_0x108: -vor v1, v31, v31 # 13a90 -ble- major_0x13988_0x118 # 13a94 -li r9, 0x10 # 13a98 -lvx v1, r9, r10 # 13a9c - -major_0x13988_0x118: -vor v2, v31, v31 # 13aa0 -bne- major_0x13988_0x128 # 13aa4 -li r8, 0x20 # 13aa8 -lvx v2, r8, r10 # 13aac - -major_0x13988_0x128: -vor v3, v31, v31 # 13ab0 -bns- major_0x13988_0x138 # 13ab4 -li r9, 0x30 # 13ab8 -lvx v3, r9, r10 # 13abc - -major_0x13988_0x138: -vor v4, v31, v31 # 13ac0 -bge- cr1, major_0x13988_0x148 # 13ac4 -li r8, 0x40 # 13ac8 -lvx v4, r8, r10 # 13acc - -major_0x13988_0x148: -vor v5, v31, v31 # 13ad0 -ble- cr1, major_0x13988_0x158 # 13ad4 -li r9, 0x50 # 13ad8 -lvx v5, r9, r10 # 13adc - -major_0x13988_0x158: -vor v6, v31, v31 # 13ae0 -bne- cr1, major_0x13988_0x168 # 13ae4 -li r8, 0x60 # 13ae8 -lvx v6, r8, r10 # 13aec - -major_0x13988_0x168: -vor v7, v31, v31 # 13af0 -bns- cr1, major_0x13988_0x178 # 13af4 -li r9, 0x70 # 13af8 -lvx v7, r9, r10 # 13afc - -major_0x13988_0x178: -vor v8, v31, v31 # 13b00 -bge- cr2, major_0x13988_0x188 # 13b04 -li r8, 0x80 # 13b08 -lvx v8, r8, r10 # 13b0c - -major_0x13988_0x188: -vor v9, v31, v31 # 13b10 -ble- cr2, major_0x13988_0x198 # 13b14 -li r9, 0x90 # 13b18 -lvx v9, r9, r10 # 13b1c - -major_0x13988_0x198: -vor v10, v31, v31 # 13b20 -bne- cr2, major_0x13988_0x1a8 # 13b24 -li r8, 160 # 13b28 -lvx v10, r8, r10 # 13b2c - -major_0x13988_0x1a8: -vor v11, v31, v31 # 13b30 -bns- cr2, major_0x13988_0x1b8 # 13b34 -li r9, 0xb0 # 13b38 -lvx v11, r9, r10 # 13b3c - -major_0x13988_0x1b8: -vor v12, v31, v31 # 13b40 -bge- cr3, major_0x13988_0x1c8 # 13b44 -li r8, 0xc0 # 13b48 -lvx v12, r8, r10 # 13b4c - -major_0x13988_0x1c8: -vor v13, v31, v31 # 13b50 -ble- cr3, major_0x13988_0x1d8 # 13b54 -li r9, 0xd0 # 13b58 -lvx v13, r9, r10 # 13b5c - -major_0x13988_0x1d8: -vor v14, v31, v31 # 13b60 -bne- cr3, major_0x13988_0x1e8 # 13b64 -li r8, 0xe0 # 13b68 -lvx v14, r8, r10 # 13b6c - -major_0x13988_0x1e8: -vor v15, v31, v31 # 13b70 -bns- cr3, major_0x13988_0x1f8 # 13b74 -li r9, 240 # 13b78 -lvx v15, r9, r10 # 13b7c - -major_0x13988_0x1f8: -vor v16, v31, v31 # 13b80 -bge- cr4, major_0x13988_0x208 # 13b84 -li r8, 0x100 # 13b88 -lvx v16, r8, r10 # 13b8c - -major_0x13988_0x208: -vor v17, v31, v31 # 13b90 -ble- cr4, major_0x13988_0x218 # 13b94 -li r9, 0x110 # 13b98 -lvx v17, r9, r10 # 13b9c - -major_0x13988_0x218: -vor v18, v31, v31 # 13ba0 -bne- cr4, major_0x13988_0x228 # 13ba4 -li r8, 0x120 # 13ba8 -lvx v18, r8, r10 # 13bac - -major_0x13988_0x228: -vor v19, v31, v31 # 13bb0 -bns- cr4, major_0x13988_0x238 # 13bb4 -li r9, 0x130 # 13bb8 -lvx v19, r9, r10 # 13bbc - -major_0x13988_0x238: -vor v20, v31, v31 # 13bc0 -bge- cr5, major_0x13988_0x248 # 13bc4 -li r8, 320 # 13bc8 -lvx v20, r8, r10 # 13bcc - -major_0x13988_0x248: -vor v21, v31, v31 # 13bd0 -ble- cr5, major_0x13988_0x258 # 13bd4 -li r9, 0x150 # 13bd8 -lvx v21, r9, r10 # 13bdc - -major_0x13988_0x258: -vor v22, v31, v31 # 13be0 -bne- cr5, major_0x13988_0x268 # 13be4 -li r8, 0x160 # 13be8 -lvx v22, r8, r10 # 13bec - -major_0x13988_0x268: -vor v23, v31, v31 # 13bf0 -bns- cr5, major_0x13988_0x278 # 13bf4 -li r9, 0x170 # 13bf8 -lvx v23, r9, r10 # 13bfc - -major_0x13988_0x278: -vor v24, v31, v31 # 13c00 -bge- cr6, major_0x13988_0x288 # 13c04 -li r8, 0x180 # 13c08 -lvx v24, r8, r10 # 13c0c - -major_0x13988_0x288: -vor v25, v31, v31 # 13c10 -ble- cr6, major_0x13988_0x298 # 13c14 -li r9, 400 # 13c18 -lvx v25, r9, r10 # 13c1c - -major_0x13988_0x298: -vor v26, v31, v31 # 13c20 -bne- cr6, major_0x13988_0x2a8 # 13c24 -li r8, 0x1a0 # 13c28 -lvx v26, r8, r10 # 13c2c - -major_0x13988_0x2a8: -vor v27, v31, v31 # 13c30 -bns- cr6, major_0x13988_0x2b8 # 13c34 -li r9, 0x1b0 # 13c38 -lvx v27, r9, r10 # 13c3c - -major_0x13988_0x2b8: -vor v28, v31, v31 # 13c40 -bge- cr7, major_0x13988_0x2c8 # 13c44 -li r8, 0x1c0 # 13c48 -lvx v28, r8, r10 # 13c4c - -major_0x13988_0x2c8: -vor v29, v31, v31 # 13c50 -ble- cr7, major_0x13988_0x2d8 # 13c54 -li r9, 0x1d0 # 13c58 -lvx v29, r9, r10 # 13c5c - -major_0x13988_0x2d8: -vor v30, v31, v31 # 13c60 -bne- cr7, major_0x13988_0x2e8 # 13c64 -li r8, 480 # 13c68 -lvx v30, r8, r10 # 13c6c - -major_0x13988_0x2e8: -vor v31, v31, v31 # 13c70 -bns- cr7, major_0x13988_0x2f8 # 13c74 -li r9, 0x1f0 # 13c78 -lvx v31, r9, r10 # 13c7c - -major_0x13988_0x2f8: -blr # 13c80 - - - -/*********************************************************** - - major_0x13c84 - -***********************************************************/ - -.long 0x4800000c # 13c84 -.long 0x60000000 # 13c88 -.long 0x60000000 # 13c8c - - - -/*********************************************************** - - major_0x13c90 - -************************************************************ - -Xrefs: -major_0x02980 -major_0x0be10 -major_0x14548 -major_0x16bb4 - -***********************************************************/ - -.align 4 # 13c90 - -major_0x13c90: /* < outside referer */ -mfspr r5, 256/*vrsave*/ # 13c90 -lwz r2, 0x00d8( r6) # 13c94 -cmplwi r2, 0x00 # 13c98 -beqlr- # 13c9c -andis. r3, r11, 0x200 # 13ca0 -stw r5, 0x0210( r2) # 13ca4 -beqlr- # 13ca8 -mfmsr r3 # 13cac -rlwinm r11, r11, 0, 7, 5 # 13cb0 -oris r3, r3, 0x200 # 13cb4 -mtmsr r3 # 13cb8 -isync # 13cbc -li r3, 0x00 # 13cc0 -li r4, 0x10 # 13cc4 -mtcr r5 # 13cc8 -stvx v0, r3, r2 # 13ccc -stvxl v1, r4, r2 # 13cd0 -mfvscr v0 # 13cd4 -li r3, 0x200 # 13cd8 -stvx v0, r3, r2 # 13cdc -bne- major_0x13c90_0x5c # 13ce0 -li r3, 0x20 # 13ce4 -stvx v2, r3, r2 # 13ce8 - -major_0x13c90_0x5c: -bns- major_0x13c90_0x68 # 13cec -li r4, 0x30 # 13cf0 -stvx v3, r4, r2 # 13cf4 - -major_0x13c90_0x68: -bge- cr1, major_0x13c90_0x74 # 13cf8 -li r3, 0x40 # 13cfc -stvx v4, r3, r2 # 13d00 - -major_0x13c90_0x74: -ble- cr1, major_0x13c90_0x80 # 13d04 -li r4, 0x50 # 13d08 -stvx v5, r4, r2 # 13d0c - -major_0x13c90_0x80: -bne- cr1, major_0x13c90_0x8c # 13d10 -li r3, 0x60 # 13d14 -stvx v6, r3, r2 # 13d18 - -major_0x13c90_0x8c: -bns- cr1, major_0x13c90_0x98 # 13d1c -li r4, 0x70 # 13d20 -stvx v7, r4, r2 # 13d24 - -major_0x13c90_0x98: -bge- cr2, major_0x13c90_0xa4 # 13d28 -li r3, 0x80 # 13d2c -stvx v8, r3, r2 # 13d30 - -major_0x13c90_0xa4: -ble- cr2, major_0x13c90_0xb0 # 13d34 -li r4, 0x90 # 13d38 -stvx v9, r4, r2 # 13d3c - -major_0x13c90_0xb0: -bne- cr2, major_0x13c90_0xbc # 13d40 -li r3, 160 # 13d44 -stvx v10, r3, r2 # 13d48 - -major_0x13c90_0xbc: -bns- cr2, major_0x13c90_0xc8 # 13d4c -li r4, 0xb0 # 13d50 -stvx v11, r4, r2 # 13d54 - -major_0x13c90_0xc8: -bge- cr3, major_0x13c90_0xd4 # 13d58 -li r3, 0xc0 # 13d5c -stvx v12, r3, r2 # 13d60 - -major_0x13c90_0xd4: -ble- cr3, major_0x13c90_0xe0 # 13d64 -li r4, 0xd0 # 13d68 -stvx v13, r4, r2 # 13d6c - -major_0x13c90_0xe0: -bne- cr3, major_0x13c90_0xec # 13d70 -li r3, 0xe0 # 13d74 -stvx v14, r3, r2 # 13d78 - -major_0x13c90_0xec: -bns- cr3, major_0x13c90_0xf8 # 13d7c -li r4, 240 # 13d80 -stvx v15, r4, r2 # 13d84 - -major_0x13c90_0xf8: -bge- cr4, major_0x13c90_0x104 # 13d88 -li r3, 0x100 # 13d8c -stvx v16, r3, r2 # 13d90 - -major_0x13c90_0x104: -ble- cr4, major_0x13c90_0x110 # 13d94 -li r4, 0x110 # 13d98 -stvx v17, r4, r2 # 13d9c - -major_0x13c90_0x110: -bne- cr4, major_0x13c90_0x11c # 13da0 -li r3, 0x120 # 13da4 -stvx v18, r3, r2 # 13da8 - -major_0x13c90_0x11c: -bns- cr4, major_0x13c90_0x128 # 13dac -li r4, 0x130 # 13db0 -stvx v19, r4, r2 # 13db4 - -major_0x13c90_0x128: -bge- cr5, major_0x13c90_0x134 # 13db8 -li r3, 320 # 13dbc -stvx v20, r3, r2 # 13dc0 - -major_0x13c90_0x134: -ble- cr5, major_0x13c90_0x140 # 13dc4 -li r4, 0x150 # 13dc8 -stvx v21, r4, r2 # 13dcc - -major_0x13c90_0x140: -bne- cr5, major_0x13c90_0x14c # 13dd0 -li r3, 0x160 # 13dd4 -stvx v22, r3, r2 # 13dd8 - -major_0x13c90_0x14c: -bns- cr5, major_0x13c90_0x158 # 13ddc -li r4, 0x170 # 13de0 -stvx v23, r4, r2 # 13de4 - -major_0x13c90_0x158: -bge- cr6, major_0x13c90_0x164 # 13de8 -li r3, 0x180 # 13dec -stvx v24, r3, r2 # 13df0 - -major_0x13c90_0x164: -ble- cr6, major_0x13c90_0x170 # 13df4 -li r4, 400 # 13df8 -stvx v25, r4, r2 # 13dfc - -major_0x13c90_0x170: -bne- cr6, major_0x13c90_0x17c # 13e00 -li r3, 0x1a0 # 13e04 -stvx v26, r3, r2 # 13e08 - -major_0x13c90_0x17c: -bns- cr6, major_0x13c90_0x188 # 13e0c -li r4, 0x1b0 # 13e10 -stvx v27, r4, r2 # 13e14 - -major_0x13c90_0x188: -bge- cr7, major_0x13c90_0x194 # 13e18 -li r3, 0x1c0 # 13e1c -stvx v28, r3, r2 # 13e20 - -major_0x13c90_0x194: -ble- cr7, major_0x13c90_0x1a0 # 13e24 -li r4, 0x1d0 # 13e28 -stvx v29, r4, r2 # 13e2c - -major_0x13c90_0x1a0: -bne- cr7, major_0x13c90_0x1ac # 13e30 -li r3, 480 # 13e34 -stvx v30, r3, r2 # 13e38 - -major_0x13c90_0x1ac: -bns- cr7, major_0x13c90_0x1b8 # 13e3c -li r4, 0x1f0 # 13e40 -stvx v31, r4, r2 # 13e44 - -major_0x13c90_0x1b8: -blr # 13e48 - - - -/*********************************************************** - - major_0x13e4c - -************************************************************ - -Xrefs: -major_0x02ccc -major_0x0b4a4 -nk_yield_with_hint -major_0x0b664 -NKStopScheduling -major_0x0c968 -major_0x0cb8c -major_0x0ced4 -major_0x0d504 -major_0x0e604 -NKThrowException -major_0x0f2b8 -major_0x130f0 -major_0x142dc -major_0x14bcc -interrupt_blue - -***********************************************************/ - -major_0x13e4c: /* < outside referer */ -lwz r17, 0x0010( r8) # 13e4c -lbz r18, 0x0018( r8) # 13e50 -addi r16, r8, 0x08 # 13e54 -cmpwi cr1, r18, 0x00 # 13e58 -cmpwi r17, 0x00 # 13e5c -beq+ cr1, panic_wrapper_0x137c0 # 13e60 -beq- major_0x13e4c_0x74 # 13e64 -lwz r17, 0x0008(r16) # 13e68 -lwz r18, 0x000c(r16) # 13e6c -stw r17, 0x0008(r18) # 13e70 -stw r18, 0x000c(r17) # 13e74 -li r17, 0x00 # 13e78 -stw r17, 0x0008(r16) # 13e7c -stw r17, 0x000c(r16) # 13e80 -lwz r17, 0x0000(r16) # 13e84 -lwz r16, 0x001c( r8) # 13e88 -lwz r18, 0x0014(r17) # 13e8c -subf r18, r16, r18 # 13e90 -stw r18, 0x0014(r17) # 13e94 -lwz r18, 0x0010(r17) # 13e98 -addi r18, r18, -0x01 # 13e9c -stw r18, 0x0010(r17) # 13ea0 -cmpwi r18, 0x00 # 13ea4 -lwz r16, -0x0970( r1) # 13ea8 -blt+ panic_wrapper_0x137c0 # 13eac -bne- major_0x13e4c_0x74 # 13eb0 -lwz r18, 0x0000(r17) # 13eb4 -andc r16, r16, r18 # 13eb8 -stw r16, -0x0970( r1) # 13ebc - -major_0x13e4c_0x74: -li r16, 0x00 # 13ec0 -stb r16, 0x0018( r8) # 13ec4 -mfspr r17, 272/*sprg0*/ # 13ec8 -li r16, 0x01 # 13ecc -stb r16, -0x0118(r17) # 13ed0 -blr # 13ed4 - - - -/*********************************************************** - - major_0x13ed8 - -************************************************************ - -Xrefs: -setup -major_0x02ccc -major_0x0b4a4 -nk_yield_with_hint -NKStopScheduling -major_0x0c680 -major_0x0c8b4 -major_0x0ccf4 -major_0x0cd9c -major_0x0d06c -major_0x0d158 -major_0x0d278 -major_0x0d35c -major_0x0dce8 -major_0x0e548 -major_0x0ea58 -major_0x0f2b8 -major_0x130f0 -major_0x142dc -major_0x14548 -major_0x14bcc -interrupt_blue - -***********************************************************/ - -.align 3 # 13ed8 - -major_0x13ed8: /* < outside referer */ -crclr 4*cr1 + eq # 13ed8 -b major_0x13ed8_0xc # 13edc - -major_0x13ed8_0x8: /* < outside referer */ -crset 4*cr1 + eq # 13ee0 - -major_0x13ed8_0xc: -lwz r16, 0x0010( r8) # 13ee4 -lis r17, -0x8000 # 13ee8 -cmpwi r16, 0x00 # 13eec -lbz r18, 0x0019( r8) # 13ef0 -bne+ panic_wrapper_0x137c0 # 13ef4 -lwz r16, -0x0970( r1) # 13ef8 -srw r17, r17, r18 # 13efc -mulli r18, r18, 0x20 # 13f00 -or r16, r16, r17 # 13f04 -addi r17, r1, -0x9f0 # 13f08 -stw r16, -0x0970( r1) # 13f0c -add r17, r17, r18 # 13f10 -lwz r18, 0x0010(r17) # 13f14 -addi r18, r18, 0x01 # 13f18 -stw r18, 0x0010(r17) # 13f1c -lwz r16, 0x001c( r8) # 13f20 -lwz r18, 0x0014(r17) # 13f24 -add r18, r18, r16 # 13f28 -stw r18, 0x0014(r17) # 13f2c -addi r16, r8, 0x08 # 13f30 -bne- cr1, major_0x13ed8_0x7c # 13f34 -stw r17, 0x0000(r16) # 13f38 -stw r17, 0x0008(r16) # 13f3c -lwz r18, 0x000c(r17) # 13f40 -stw r18, 0x000c(r16) # 13f44 -stw r16, 0x0008(r18) # 13f48 -stw r16, 0x000c(r17) # 13f4c -b major_0x13ed8_0x94 # 13f50 - -major_0x13ed8_0x7c: -stw r17, 0x0000(r16) # 13f54 -stw r17, 0x000c(r16) # 13f58 -lwz r18, 0x0008(r17) # 13f5c -stw r18, 0x0008(r16) # 13f60 -stw r16, 0x000c(r18) # 13f64 -stw r16, 0x0008(r17) # 13f68 - -major_0x13ed8_0x94: -li r16, 0x01 # 13f6c -stb r16, 0x0018( r8) # 13f70 -blr # 13f74 - - - -/*********************************************************** - - major_0x13f78 - -************************************************************ - -Xrefs: -setup -SIGP -major_0x04a20 -major_0x14548 -major_0x14bcc - -***********************************************************/ - -.align 3 # 13f78 - -major_0x13f78: /* < outside referer */ -lwz r17, 0x0ef8( r1) # 13f78 -addi r17, r17, 0x01 # 13f7c -stw r17, 0x0ef8( r1) # 13f80 -lwz r16, 0x0004( r8) # 13f84 -lis r17, 0x5350 # 13f88 -ori r17, r17, 0x4143 # 13f8c -cmpw r16, r17 # 13f90 -bne+ panic_wrapper_0x137c0 # 13f94 -rlwinm. r16, r7, 0, 12, 12 # 13f98 -isync # 13f9c -lwz r16, 0x0030( r8) # 13fa0 -lwz r17, 0x0034( r8) # 13fa4 -mtsr 0x00, r16 # 13fa8 -mtsr 0x01, r17 # 13fac -lwz r16, 0x0038( r8) # 13fb0 -lwz r17, 0x003c( r8) # 13fb4 -mtsr 0x02, r16 # 13fb8 -mtsr 0x03, r17 # 13fbc -lwz r16, 0x0040( r8) # 13fc0 -lwz r17, 0x0044( r8) # 13fc4 -mtsr 0x04, r16 # 13fc8 -mtsr 0x05, r17 # 13fcc -lwz r16, 0x0048( r8) # 13fd0 -lwz r17, 0x004c( r8) # 13fd4 -mtsr 0x06, r16 # 13fd8 -mtsr 0x07, r17 # 13fdc -lwz r16, 0x0050( r8) # 13fe0 -lwz r17, 0x0054( r8) # 13fe4 -mtsr 0x08, r16 # 13fe8 -mtsr 0x09, r17 # 13fec -lwz r16, 0x0058( r8) # 13ff0 -lwz r17, 0x005c( r8) # 13ff4 -mtsr 0x0a, r16 # 13ff8 -mtsr 0x0b, r17 # 13ffc -lwz r16, 0x0060( r8) # 14000 -lwz r17, 0x0064( r8) # 14004 -mtsr 0x0c, r16 # 14008 -mtsr 0x0d, r17 # 1400c -lwz r16, 0x0068( r8) # 14010 -lwz r17, 0x006c( r8) # 14014 -mtsr 0x0e, r16 # 14018 -mtsr 0x0f, r17 # 1401c -beq- major_0x13f78_0xb0 # 14020 -dssall # 14024 - -major_0x13f78_0xb0: -mfspr r16, 272/*sprg0*/ # 14028 -isync # 1402c -stw r8, -0x001c(r16) # 14030 -mfspr r16, 287/*pvr*/ # 14034 -rlwinm. r16, r16, 0, 0, 14 # 14038 -cmpwi cr1, r9, 0x00 # 1403c -beq- major_0x13f78_0x26c # 14040 -lwz r16, 0x0080( r8) # 14044 -lwz r17, 0x0080( r9) # 14048 -cmplw r16, r17 # 1404c -lwz r17, 0x0084( r8) # 14050 -beq- cr1, major_0x13f78_0xe4 # 14054 -beq- major_0x13f78_0x100 # 14058 - -major_0x13f78_0xe4: -mtspr 536/*dbat0u*/, r0 # 1405c -mtspr 537/*dbat0l*/, r17 # 14060 -rlwinm r17, r17, 0, 29, 27 # 14064 -mtspr 536/*dbat0u*/, r16 # 14068 -mtspr 528/*ibat0u*/, r0 # 1406c -mtspr 529/*ibat0l*/, r17 # 14070 -mtspr 528/*ibat0u*/, r16 # 14074 - -major_0x13f78_0x100: -lwz r16, 0x0088( r8) # 14078 -lwz r17, 0x0088( r9) # 1407c -cmplw r16, r17 # 14080 -lwz r17, 0x008c( r8) # 14084 -beq- cr1, major_0x13f78_0x118 # 14088 -beq- major_0x13f78_0x134 # 1408c - -major_0x13f78_0x118: -mtspr 538/*dbat1u*/, r0 # 14090 -mtspr 539/*dbat1l*/, r17 # 14094 -rlwinm r17, r17, 0, 29, 27 # 14098 -mtspr 538/*dbat1u*/, r16 # 1409c -mtspr 530/*ibat1u*/, r0 # 140a0 -mtspr 531/*ibat1l*/, r17 # 140a4 -mtspr 530/*ibat1u*/, r16 # 140a8 - -major_0x13f78_0x134: -lwz r16, 0x0090( r8) # 140ac -lwz r17, 0x0090( r9) # 140b0 -cmplw r16, r17 # 140b4 -lwz r17, 0x0094( r8) # 140b8 -beq- cr1, major_0x13f78_0x14c # 140bc -beq- major_0x13f78_0x168 # 140c0 - -major_0x13f78_0x14c: -mtspr 540/*dbat2u*/, r0 # 140c4 -mtspr 541/*dbat2l*/, r17 # 140c8 -rlwinm r17, r17, 0, 29, 27 # 140cc -mtspr 540/*dbat2u*/, r16 # 140d0 -mtspr 532/*ibat2u*/, r0 # 140d4 -mtspr 533/*ibat2l*/, r17 # 140d8 -mtspr 532/*ibat2u*/, r16 # 140dc - -major_0x13f78_0x168: -lwz r16, 0x0098( r8) # 140e0 -lwz r17, 0x0098( r9) # 140e4 -cmplw r16, r17 # 140e8 -lwz r17, 0x009c( r8) # 140ec -beq- cr1, major_0x13f78_0x180 # 140f0 -beq- major_0x13f78_0x19c # 140f4 - -major_0x13f78_0x180: -mtspr 542/*dbat3u*/, r0 # 140f8 -mtspr 543/*dbat3l*/, r17 # 140fc -rlwinm r17, r17, 0, 29, 27 # 14100 -mtspr 542/*dbat3u*/, r16 # 14104 -mtspr 534/*ibat3u*/, r0 # 14108 -mtspr 535/*ibat3l*/, r17 # 1410c -mtspr 534/*ibat3u*/, r16 # 14110 - -major_0x13f78_0x19c: -lwz r17, 0x0f68( r1) # 14114 -lwz r16, 0x00a0( r8) # 14118 -rlwinm. r17, r17, 0, 26, 26 # 1411c -lwz r17, 0x00a0( r9) # 14120 -beq- major_0x13f78_0x268 # 14124 -cmplw r16, r17 # 14128 -lwz r17, 0x00a4( r8) # 1412c -beq- cr1, major_0x13f78_0x1c0 # 14130 -beq- major_0x13f78_0x1d8 # 14134 - -major_0x13f78_0x1c0: -mtspr 0x238, r0 # 14138 -mtspr 0x239, r17 # 1413c -mtspr 0x238, r16 # 14140 -mtspr 0x230, r0 # 14144 -mtspr 0x231, r17 # 14148 -mtspr 0x230, r16 # 1414c - -major_0x13f78_0x1d8: -lwz r16, 0x00a8( r8) # 14150 -lwz r17, 0x00a8( r9) # 14154 -cmplw r16, r17 # 14158 -lwz r17, 0x00ac( r8) # 1415c -beq- cr1, major_0x13f78_0x1f0 # 14160 -beq- major_0x13f78_0x208 # 14164 - -major_0x13f78_0x1f0: -mtspr 0x23a, r0 # 14168 -mtspr 0x23b, r17 # 1416c -mtspr 0x23a, r16 # 14170 -mtspr 0x232, r0 # 14174 -mtspr 0x233, r17 # 14178 -mtspr 0x232, r16 # 1417c - -major_0x13f78_0x208: -lwz r16, 0x00b0( r8) # 14180 -lwz r17, 0x00b0( r9) # 14184 -cmplw r16, r17 # 14188 -lwz r17, 0x00b4( r8) # 1418c -beq- cr1, major_0x13f78_0x220 # 14190 -beq- major_0x13f78_0x238 # 14194 - -major_0x13f78_0x220: -mtspr 0x23c, r0 # 14198 -mtspr 0x23d, r17 # 1419c -mtspr 0x23c, r16 # 141a0 -mtspr 0x234, r0 # 141a4 -mtspr 0x235, r17 # 141a8 -mtspr 0x234, r16 # 141ac - -major_0x13f78_0x238: -lwz r16, 0x00b8( r8) # 141b0 -lwz r17, 0x00b8( r9) # 141b4 -cmplw r16, r17 # 141b8 -lwz r17, 0x00bc( r8) # 141bc -beq- cr1, major_0x13f78_0x250 # 141c0 -beq- major_0x13f78_0x268 # 141c4 - -major_0x13f78_0x250: -mtspr 0x23e, r0 # 141c8 -mtspr 0x23f, r17 # 141cc -mtspr 0x23e, r16 # 141d0 -mtspr 0x236, r0 # 141d4 -mtspr 0x237, r17 # 141d8 -mtspr 0x236, r16 # 141dc - -major_0x13f78_0x268: -blr # 141e0 - -major_0x13f78_0x26c: -lwz r16, 0x0080( r8) # 141e4 -lwz r17, 0x0080( r9) # 141e8 -cmplw r16, r17 # 141ec -lwz r17, 0x0084( r8) # 141f0 -beq- cr1, major_0x13f78_0x284 # 141f4 -beq- major_0x13f78_0x29c # 141f8 - -major_0x13f78_0x284: -rlwimi r16, r17, 0, 25, 31 # 141fc -mtspr 528/*ibat0u*/, r16 # 14200 -lwz r16, 0x0080( r8) # 14204 -rlwimi r17, r16, 30, 26, 31 # 14208 -rlwimi r17, r16, 6, 25, 25 # 1420c -mtspr 529/*ibat0l*/, r17 # 14210 - -major_0x13f78_0x29c: -lwz r16, 0x0088( r8) # 14214 -lwz r17, 0x0088( r9) # 14218 -cmplw r16, r17 # 1421c -lwz r17, 0x008c( r8) # 14220 -beq- cr1, major_0x13f78_0x2b4 # 14224 -beq- major_0x13f78_0x2cc # 14228 - -major_0x13f78_0x2b4: -rlwimi r16, r17, 0, 25, 31 # 1422c -mtspr 530/*ibat1u*/, r16 # 14230 -lwz r16, 0x0088( r8) # 14234 -rlwimi r17, r16, 30, 26, 31 # 14238 -rlwimi r17, r16, 6, 25, 25 # 1423c -mtspr 531/*ibat1l*/, r17 # 14240 - -major_0x13f78_0x2cc: -lwz r16, 0x0090( r8) # 14244 -lwz r17, 0x0090( r9) # 14248 -cmplw r16, r17 # 1424c -lwz r17, 0x0094( r8) # 14250 -beq- cr1, major_0x13f78_0x2e4 # 14254 -beq- major_0x13f78_0x2fc # 14258 - -major_0x13f78_0x2e4: -rlwimi r16, r17, 0, 25, 31 # 1425c -mtspr 532/*ibat2u*/, r16 # 14260 -lwz r16, 0x0090( r8) # 14264 -rlwimi r17, r16, 30, 26, 31 # 14268 -rlwimi r17, r16, 6, 25, 25 # 1426c -mtspr 533/*ibat2l*/, r17 # 14270 - -major_0x13f78_0x2fc: -lwz r16, 0x0098( r8) # 14274 -lwz r17, 0x0098( r9) # 14278 -cmplw r16, r17 # 1427c -lwz r17, 0x009c( r8) # 14280 -beq- cr1, major_0x13f78_0x314 # 14284 -beqlr- # 14288 - -major_0x13f78_0x314: -rlwimi r16, r17, 0, 25, 31 # 1428c -mtspr 534/*ibat3u*/, r16 # 14290 -lwz r16, 0x0098( r8) # 14294 -rlwimi r17, r16, 30, 26, 31 # 14298 -rlwimi r17, r16, 6, 25, 25 # 1429c -mtspr 535/*ibat3l*/, r17 # 142a0 -blr # 142a4 - - - -/*********************************************************** - - major_0x142a8 - -************************************************************ - -Xrefs: -skeleton_key - -***********************************************************/ - -.align 3 # 142a8 - -major_0x142a8: /* < outside referer */ -lbz r8, -0x0118( r1) # 142a8 -rlwinm. r9, r7, 0, 16, 16 # 142ac -lwz r1, -0x0004( r1) # 142b0 -cmpwi cr1, r8, 0x00 # 142b4 - -# sprg0 = for r1 and r6 -# r1 = kdp -# r6 = register restore area -# r7 = flag to insert into XER -# r10 = new srr0 (return location) -# r11 = new srr1 -# r12 = lr restore -# r13 = cr restore -bne- int_teardown # 142b8 - -# sprg0 = for r1 and r6 -# r1 = kdp -# r6 = register restore area -# r7 = flag to insert into XER -# r10 = new srr0 (return location) -# r11 = new srr1 -# r12 = lr restore -# r13 = cr restore -beq+ cr1, int_teardown # 142bc - -# r6 = ewa -bl save_registers_from_r14 # 142c0 -# r8 = sprg0 (not used by me) - -mr r27, r8 # 142c4 -mr r28, r9 # 142c8 -addi r8, r1, -0xb50 # 142cc - -# r8 = lock -bl lock # 142d0 -mr r8, r27 # 142d4 -mr r9, r28 # 142d8 - - - -/*********************************************************** - - major_0x142dc - -************************************************************ - -Xrefs: -major_0x02ccc -syscall_return -major_0x142a8 -major_0x14bcc - -***********************************************************/ - -major_0x142dc: /* < outside referer */ -mfspr r14, 272/*sprg0*/ # 142dc -li r8, 0x00 # 142e0 -stb r8, -0x0118(r14) # 142e4 -lwz r31, -0x0008(r14) # 142e8 -lwz r1, -0x0004(r14) # 142ec -lwz r9, 0x0ee4( r1) # 142f0 -addi r9, r9, 0x01 # 142f4 -stw r9, 0x0ee4( r1) # 142f8 -bl major_0x14a98 # 142fc -lbz r27, 0x0019(r31) # 14300 -blt- major_0x142dc_0x58 # 14304 -li r26, 0x01 # 14308 -beq- major_0x142dc_0x38 # 1430c -li r26, 0x00 # 14310 - -major_0x142dc_0x38: -cmpw r27, r26 # 14314 -mr r8, r31 # 14318 -beq- major_0x142dc_0x58 # 1431c -bl major_0x13e4c # 14320 -stb r26, 0x0019(r31) # 14324 -mr r8, r31 # 14328 -bl major_0x13ed8_0x8 # 1432c -bl major_0x149d4_0x8 # 14330 - -major_0x142dc_0x58: -lwz r27, -0x0970( r1) # 14334 - -major_0x142dc_0x5c: -mr r30, r31 # 14338 -cmpwi r27, 0x00 # 1433c -cntlzw r26, r27 # 14340 -beq- major_0x142dc_0x140 # 14344 -addi r25, r1, -0x9f0 # 14348 -mulli r26, r26, 0x20 # 1434c -add r26, r26, r25 # 14350 -lwz r29, 0x0008(r26) # 14354 -addi r30, r29, -0x08 # 14358 - -major_0x142dc_0x80: -lhz r28, -0x0116(r14) # 1435c -lwz r24, 0x0064(r30) # 14360 -lhz r25, 0x001a(r30) # 14364 -rlwinm. r8, r24, 0, 25, 26 # 14368 -cmpw cr1, r25, r28 # 1436c -beq- major_0x142dc_0xb8 # 14370 -beq- cr1, major_0x142dc_0xb8 # 14374 -lwz r29, 0x0008(r29) # 14378 -addi r30, r29, -0x08 # 1437c -cmpw r29, r26 # 14380 -bne+ major_0x142dc_0x80 # 14384 -lwz r25, 0x0000(r26) # 14388 -andc r27, r27, r25 # 1438c -b major_0x142dc_0x5c # 14390 - -major_0x142dc_0xb8: -lbz r25, 0x0018(r31) # 14394 -lbz r28, 0x0019(r30) # 14398 -lbz r27, 0x0019(r31) # 1439c -cmpwi cr1, r25, 0x02 # 143a0 -cmpw cr2, r28, r27 # 143a4 -bne- cr1, major_0x142dc_0xd8 # 143a8 -blt- cr2, major_0x142dc_0xd8 # 143ac -mr r30, r31 # 143b0 - -major_0x142dc_0xd8: /* < outside referer */ -lwz r28, 0x0010(r30) # 143b4 -addi r29, r30, 0x08 # 143b8 -cmpwi r28, 0x00 # 143bc -lwz r26, 0x0008(r30) # 143c0 -beq- major_0x142dc_0x140 # 143c4 -lwz r28, 0x0008(r29) # 143c8 -lwz r27, 0x000c(r29) # 143cc -stw r28, 0x0008(r27) # 143d0 -stw r27, 0x000c(r28) # 143d4 -li r28, 0x00 # 143d8 -stw r28, 0x0008(r29) # 143dc -stw r28, 0x000c(r29) # 143e0 -lwz r27, 0x001c(r30) # 143e4 -lwz r28, 0x0014(r26) # 143e8 -subf r28, r27, r28 # 143ec -stw r28, 0x0014(r26) # 143f0 -lwz r28, 0x0010(r26) # 143f4 -lwz r27, -0x0970( r1) # 143f8 -addi r28, r28, -0x01 # 143fc -cmpwi r28, 0x00 # 14400 -stw r28, 0x0010(r26) # 14404 -bltl+ panic_wrapper_0x137c0 # 14408 -bne- major_0x142dc_0x140 # 1440c -lwz r28, 0x0000(r26) # 14410 -andc r27, r27, r28 # 14414 -stw r27, -0x0970( r1) # 14418 - -major_0x142dc_0x140: -lwz r25, 0x0064(r30) # 1441c -li r26, 0x00 # 14420 -rlwinm. r8, r25, 0, 21, 22 # 14424 -andc r27, r25, r8 # 14428 -beq+ major_0x142dc_0x184 # 1442c -ori r27, r27, 0x200 # 14430 -stb r26, 0x0018(r30) # 14434 -stw r27, 0x0064(r30) # 14438 -addi r25, r1, -0xa34 # 1443c -addi r26, r30, 0x08 # 14440 -stw r25, 0x0000(r26) # 14444 -stw r25, 0x0008(r26) # 14448 -lwz r27, 0x000c(r25) # 1444c -stw r27, 0x000c(r26) # 14450 -stw r26, 0x0008(r27) # 14454 -stw r26, 0x000c(r25) # 14458 -b major_0x142dc_0x58 # 1445c - -major_0x142dc_0x184: -cmpw cr3, r30, r31 # 14460 -rlwinm. r8, r25, 0, 27, 27 # 14464 -bne- cr3, major_0x14548 # 14468 -bne- major_0x14548 # 1446c -bl bizarre # 14470 -bl major_0x148ec # 14474 -lwz r27, 0x0064(r31) # 14478 -mfspr r14, 272/*sprg0*/ # 1447c -rlwinm. r8, r27, 0, 8, 8 # 14480 -rlwimi r11, r27, 24, 29, 29 # 14484 -beq+ major_0x142dc_0x1bc # 14488 -lwz r10, 0x00fc( r6) # 1448c -rlwinm r27, r27, 0, 9, 7 # 14490 -stw r27, 0x0064(r31) # 14494 - -major_0x142dc_0x1bc: -li r27, 0x02 # 14498 -lbz r28, 0x0019(r31) # 1449c -stb r27, 0x0018(r31) # 144a0 -stb r28, -0x0117(r14) # 144a4 -sync # 144a8 -lwz r27, -0x0b50( r1) # 144ac -cmpwi cr1, r27, 0x00 # 144b0 -li r27, 0x00 # 144b4 -bne+ cr1, major_0x142dc_0x1e8 # 144b8 -mflr r27 # 144bc -bl panic # 144c0 - -major_0x142dc_0x1e8: -stw r27, -0x0b50( r1) # 144c4 - -# r6 = ewa -bl restore_registers_from_r14 # 144c8 - - - -/*********************************************************** - - int_teardown - -************************************************************ - -All syscalls get here? -r0,7,8,9,10,11,12,13 restored from r6 area -r1,6 restored from sprg0 area - -Apple used the "reserved" (not first three) bits of XER. -If bit 27 of 0xedc(r1) is set: - Bit 22 of XER is cleared - Bit 10 of r7 is inserted into XER at bit 23 - -************************************************************ - -Xrefs: -non_skeleton_reset_trap -major_0x142a8 -major_0x142dc -major_0x14548 - -************************************************************ - -> sprg0 = for r1 and r6 -> r1 = kdp -> r6 = register restore area -> r7 = flag to insert into XER -> r10 = new srr0 (return location) -> r11 = new srr1 -> r12 = lr restore -> r13 = cr restore - -***********************************************************/ - -int_teardown: /* < outside referer */ -lwz r8, 0x0edc( r1) # kdp.0xedc # 144cc -mfspr r1, 272/*sprg0*/ # 144d0 -mtlr r12 # 144d4 -mtspr 26/*srr0*/, r10 # 144d8 -mtspr 27/*srr1*/, r11 # 144dc -rlwinm. r8, r8, 0, 27, 27 # 144e0 -beq- int_teardown_0x2c # 144e4 -mfxer r8 # 144e8 -rlwinm r8, r8, 0, 23, 21 # 144ec -rlwimi r8, r7, 19, 23, 23 # 144f0 -mtxer r8 # 144f4 - -int_teardown_0x2c: -mtcr r13 # 144f8 -lwz r10, 0x0154( r6) # 144fc -lwz r11, 0x015c( r6) # 14500 -lwz r12, 0x0164( r6) # 14504 -lwz r13, 0x016c( r6) # 14508 -lwz r7, 0x013c( r6) # 1450c -lwz r8, 0x0144( r6) # 14510 -lwz r9, 0x014c( r6) # 14514 -lwz r0, 0x0104( r6) # 14518 -lwz r6, 0x0018( r1) # kdp.0x18 # 1451c -lwz r1, 0x0004( r1) # kdp.0x4 # 14520 -rfi # 14524 -.long 0 # 14528 -.long 0 # 1452c -.long 0 # 14530 -.long 0 # 14534 -.long 0 # 14538 -.long 0 # 1453c -.long 0 # 14540 -.long 0 # 14544 - - - -/*********************************************************** - - major_0x14548 - -************************************************************ - -Xrefs: -major_0x142dc - -***********************************************************/ - -.align 3 # 14548 - -major_0x14548: /* < outside referer */ -lwz r16, 0x0064(r31) # 14548 -stw r30, -0x0260(r14) # 1454c -rlwinm r16, r16, 0, 27, 25 # 14550 -stw r6, 0x0088(r31) # 14554 -mfspr r8, 275/*sprg3*/ # 14558 -stw r16, 0x0064(r31) # 1455c -stw r8, 0x00f0(r31) # 14560 -lwz r8, -0x000c(r14) # 14564 -stw r7, 0x0000( r6) # 14568 -stw r8, 0x0004( r6) # 1456c -mfxer r8 # 14570 -stw r13, 0x00dc( r6) # 14574 -stw r8, 0x00d4( r6) # 14578 -stw r12, 0x00ec( r6) # 1457c -mfctr r8 # 14580 -stw r10, 0x00fc( r6) # 14584 -stw r8, 0x00f4( r6) # 14588 -mfspr r8, 287/*pvr*/ # 1458c -rlwinm. r8, r8, 0, 0, 14 # 14590 -bne- major_0x14548_0x58 # 14594 -mfspr r8, 0/*mq*/ # 14598 -stw r8, 0x00c4( r6) # 1459c - -major_0x14548_0x58: -lwz r8, 0x0004(r14) # 145a0 -stw r8, 0x010c( r6) # 145a4 -stw r2, 0x0114( r6) # 145a8 -stw r3, 0x011c( r6) # 145ac -andi. r8, r11, 0x2000 # 145b0 -stw r4, 0x0124( r6) # 145b4 -lwz r8, 0x0018(r14) # 145b8 -stw r5, 0x012c( r6) # 145bc -stw r8, 0x0134( r6) # 145c0 -bnel+ major_0x13988 # 145c4 -lwz r31, -0x0008(r14) # 145c8 -lwz r30, -0x0260(r14) # 145cc -rlwinm. r8, r7, 0, 12, 12 # 145d0 -bnel+ major_0x13c90 # 145d4 -stw r11, 0x00a4( r6) # 145d8 -lwz r8, 0x00e8(r31) # 145dc -addi r8, r8, 0x01 # 145e0 -stw r8, 0x00e8(r31) # 145e4 -bl bizarre # 145e8 -bl major_0x148ec # 145ec -mfspr r14, 272/*sprg0*/ # 145f0 -li r27, 0x02 # 145f4 -lbz r28, 0x0019(r30) # 145f8 -stb r27, 0x0018(r30) # 145fc -stb r28, -0x0117(r14) # 14600 -cmplw r30, r31 # 14604 -lwz r16, 0x0010(r31) # 14608 -beq- major_0x14548_0xd4 # 1460c -cmpwi r16, 0x00 # 14610 -mr r8, r31 # 14614 -beql+ major_0x13ed8_0x8 # 14618 - -major_0x14548_0xd4: -mfspr r19, 272/*sprg0*/ # 1461c -li r8, 0x00 # 14620 -stb r8, -0x0118(r19) # 14624 -lhz r8, -0x0116(r19) # 14628 -lwz r6, 0x0088(r30) # 1462c -lwz r28, -0x0340(r19) # 14630 -sth r8, 0x001a(r30) # 14634 -stw r28, 0x0078(r30) # 14638 -stw r30, -0x0008(r19) # 1463c -stw r6, -0x0014(r19) # 14640 -lwz r7, 0x0000( r6) # 14644 -lwz r28, 0x0004( r6) # 14648 -stw r7, -0x0010(r19) # 1464c -stw r28, -0x000c(r19) # 14650 -lwz r27, 0x0064(r30) # 14654 -lwz r13, 0x00dc( r6) # 14658 -ori r27, r27, 0x20 # 1465c -lwz r11, 0x00a4( r6) # 14660 -lwz r8, 0x00f0(r30) # 14664 -rlwimi r11, r27, 24, 29, 29 # 14668 -rlwinm r27, r27, 0, 9, 7 # 1466c -mtspr 275/*sprg3*/, r8 # 14670 -stw r27, 0x0064(r30) # 14674 -lwz r18, 0x0070(r30) # 14678 -lwz r9, -0x001c(r19) # 1467c -cmpw r18, r9 # 14680 -beq- major_0x14548_0x148 # 14684 -mr r8, r18 # 14688 -bl major_0x13f78 # 1468c - -major_0x14548_0x148: -mfspr r19, 272/*sprg0*/ # 14690 -mtcr r7 # 14694 -lis r28, 0x00 # 14698 -ori r28, r28, 0x10 # 1469c -bne- cr2, major_0x14548_0x20c # 146a0 -and. r28, r28, r27 # 146a4 -li r8, 0x00 # 146a8 -beq- major_0x14548_0x20c # 146ac -andc r27, r27, r28 # 146b0 -lwz r29, -0x0440( r1) # 146b4 -stw r27, 0x0064(r30) # 146b8 -stw r8, -0x0440( r1) # 146bc -blt- cr2, major_0x14548_0x1cc # 146c0 -bsol+ cr6, panic_wrapper_0x137c0 # 146c4 -clrlwi r8, r7, 0x08 # 146c8 -stw r8, 0x0000( r6) # 146cc -lwz r6, 0x0658( r1) # 146d0 -addi r26, r1, 0x360 # 146d4 -mtspr 275/*sprg3*/, r26 # 146d8 -stw r26, 0x00f0(r30) # 146dc -stw r6, -0x0014(r19) # 146e0 -stw r6, 0x0088(r30) # 146e4 -lwz r7, 0x0000( r6) # 146e8 -lwz r26, 0x0004( r6) # 146ec -mtcr r7 # 146f0 -stw r26, -0x000c(r19) # 146f4 -lwz r13, 0x00dc( r6) # 146f8 -lwz r11, 0x00a4( r6) # 146fc -bsol+ cr6, panic_wrapper_0x137c0 # 14700 -rlwimi r11, r7, 0, 20, 23 # 14704 -rlwimi r7, r8, 0, 9, 16 # 14708 -rlwimi r11, r27, 24, 29, 29 # 1470c -stw r7, -0x0010(r19) # 14710 - -major_0x14548_0x1cc: -lwz r17, 0x00cc( r6) # 14714 -ori r17, r17, 0x100 # 14718 -stw r17, 0x00cc( r6) # 1471c -lhz r17, -0x043c( r1) # 14720 -lwz r18, 0x067c( r1) # 14724 -cmplwi r17, 0xffff # 14728 -lwz r26, 0x0674( r1) # 1472c -beq- major_0x14548_0x1f8 # 14730 -sth r17, 0x0000(r18) # 14734 -li r17, -0x01 # 14738 -sth r17, -0x043c( r1) # 1473c - -major_0x14548_0x1f8: -cmpwi r29, 0x00 # 14740 -or r13, r13, r29 # 14744 -bne- major_0x14548_0x20c # 14748 -lwz r29, 0x0678( r1) # 1474c -and r13, r13, r29 # 14750 - -major_0x14548_0x20c: -lwz r29, 0x00d8( r6) # 14754 -cmpwi r29, 0x00 # 14758 -lwz r8, 0x0210(r29) # 1475c -beq- major_0x14548_0x220 # 14760 -mtspr 256/*vrsave*/, r8 # 14764 - -major_0x14548_0x220: -lwz r8, 0x00d4( r6) # 14768 -lwz r12, 0x00ec( r6) # 1476c -mtxer r8 # 14770 -lwz r8, 0x00f4( r6) # 14774 -lwz r10, 0x00fc( r6) # 14778 -mtctr r8 # 1477c -mfspr r8, 287/*pvr*/ # 14780 -rlwinm. r8, r8, 0, 0, 14 # 14784 -bne- major_0x14548_0x24c # 14788 -lwz r8, 0x00c4( r6) # 1478c -mtspr 0/*mq*/, r8 # 14790 - -major_0x14548_0x24c: -li r9, 0x124 # 14794 -lwz r8, 0x010c( r6) # 14798 -dcbt r9, r6 # 1479c -lwz r2, 0x0114( r6) # 147a0 -stw r8, 0x0004(r19) # 147a4 -lwz r3, 0x011c( r6) # 147a8 -li r9, 0x184 # 147ac -lwz r4, 0x0124( r6) # 147b0 -dcbt r9, r6 # 147b4 -lwz r8, 0x0134( r6) # 147b8 -lwz r5, 0x012c( r6) # 147bc -stw r8, 0x0018(r19) # 147c0 -lwz r14, 0x0174( r6) # 147c4 -lwz r15, 0x017c( r6) # 147c8 -li r9, 420 # 147cc -lwz r16, 0x0184( r6) # 147d0 -dcbt r9, r6 # 147d4 -lwz r17, 0x018c( r6) # 147d8 -lwz r18, 0x0194( r6) # 147dc -lwz r19, 0x019c( r6) # 147e0 -li r9, 0x1c4 # 147e4 -lwz r20, 0x01a4( r6) # 147e8 -dcbt r9, r6 # 147ec -lwz r21, 0x01ac( r6) # 147f0 -lwz r22, 0x01b4( r6) # 147f4 -lwz r23, 0x01bc( r6) # 147f8 -li r9, 0x1e4 # 147fc -lwz r24, 0x01c4( r6) # 14800 -dcbt r9, r6 # 14804 -lwz r25, 0x01cc( r6) # 14808 -lwz r26, 0x01d4( r6) # 1480c -lwz r27, 0x01dc( r6) # 14810 -andi. r8, r11, 0x2900 # 14814 -lwz r28, 0x01e4( r6) # 14818 -lwz r29, 0x01ec( r6) # 1481c -lwz r30, 0x01f4( r6) # 14820 -lwz r31, 0x01fc( r6) # 14824 -beq- major_0x14548_0x380 # 14828 -mfmsr r8 # 1482c -ori r8, r8, 0x2000 # 14830 -ori r11, r11, 0x2000 # 14834 -mtmsr r8 # 14838 -isync # 1483c -lfd f31, 0x00e0( r6) # 14840 -lfd f0, 0x0200( r6) # 14844 -lfd f1, 0x0208( r6) # 14848 -lfd f2, 0x0210( r6) # 1484c -lfd f3, 0x0218( r6) # 14850 -lfd f4, 0x0220( r6) # 14854 -lfd f5, 0x0228( r6) # 14858 -lfd f6, 0x0230( r6) # 1485c -lfd f7, 0x0238( r6) # 14860 -mtfsf 0xff, f31 # 14864 -lfd f8, 0x0240( r6) # 14868 -lfd f9, 0x0248( r6) # 1486c -lfd f10, 0x0250( r6) # 14870 -lfd f11, 0x0258( r6) # 14874 -lfd f12, 0x0260( r6) # 14878 -lfd f13, 0x0268( r6) # 1487c -lfd f14, 0x0270( r6) # 14880 -lfd f15, 0x0278( r6) # 14884 -lfd f16, 0x0280( r6) # 14888 -lfd f17, 0x0288( r6) # 1488c -lfd f18, 0x0290( r6) # 14890 -lfd f19, 0x0298( r6) # 14894 -lfd f20, 0x02a0( r6) # 14898 -lfd f21, 0x02a8( r6) # 1489c -lfd f22, 0x02b0( r6) # 148a0 -lfd f23, 0x02b8( r6) # 148a4 -lfd f24, 0x02c0( r6) # 148a8 -lfd f25, 0x02c8( r6) # 148ac -lfd f26, 0x02d0( r6) # 148b0 -lfd f27, 0x02d8( r6) # 148b4 -lfd f28, 0x02e0( r6) # 148b8 -lfd f29, 0x02e8( r6) # 148bc -lfd f30, 0x02f0( r6) # 148c0 -lfd f31, 0x02f8( r6) # 148c4 - -major_0x14548_0x380: -sync # 148c8 -lwz r8, -0x0b50( r1) # 148cc -cmpwi cr1, r8, 0x00 # 148d0 -li r8, 0x00 # 148d4 -bne+ cr1, major_0x14548_0x39c # 148d8 -mflr r8 # 148dc -bl panic # 148e0 - -major_0x14548_0x39c: -stw r8, -0x0b50( r1) # 148e4 - -# sprg0 = for r1 and r6 -# r1 = kdp -# r6 = register restore area -# r7 = flag to insert into XER -# r10 = new srr0 (return location) -# r11 = new srr1 -# r12 = lr restore -# r13 = cr restore -b int_teardown # 148e8 - - - -/*********************************************************** - - major_0x148ec - -************************************************************ - -Xrefs: -major_0x142dc -major_0x14548 - -***********************************************************/ - -major_0x148ec: /* < outside referer */ -mfxer r20 # 148ec -mfspr r21, 272/*sprg0*/ # 148f0 -lwz r19, 0x00cc(r31) # 148f4 -lwz r18, 0x00c8(r31) # 148f8 -subfc r19, r19, r9 # 148fc -subfe r18, r18, r8 # 14900 -lwz r17, 0x00c4(r31) # 14904 -lwz r16, 0x00c0(r31) # 14908 -addc r17, r17, r19 # 1490c -adde r16, r16, r18 # 14910 -stw r17, 0x00c4(r31) # 14914 -stw r16, 0x00c0(r31) # 14918 -lwz r17, 0x00dc(r31) # 1491c -lwz r16, 0x00d8(r31) # 14920 -andi. r22, r17, 0x01 # 14924 -bne- major_0x148ec_0x58 # 14928 -subfc r17, r19, r17 # 1492c -subfe. r16, r18, r16 # 14930 -bge- major_0x148ec_0x54 # 14934 -li r16, 0x00 # 14938 -li r17, 0x00 # 1493c - -major_0x148ec_0x54: -stw r16, 0x00d8(r31) # 14940 - -major_0x148ec_0x58: -rlwinm r17, r17, 0, 0, 30 # 14944 -stw r17, 0x00dc(r31) # 14948 -lwz r17, 0x00fc(r31) # 1494c -andi. r22, r17, 0x01 # 14950 -bne- major_0x148ec_0x78 # 14954 -subf. r17, r19, r17 # 14958 -bge- major_0x148ec_0x78 # 1495c -li r17, 0x00 # 14960 - -major_0x148ec_0x78: -rlwinm r17, r17, 0, 0, 30 # 14964 -stw r17, 0x00fc(r31) # 14968 -stw r8, 0x00c8(r30) # 1496c -stw r9, 0x00cc(r30) # 14970 -lwz r18, 0x0008(r30) # 14974 -lbz r19, 0x0019(r30) # 14978 -lwz r18, 0x0010(r18) # 1497c -cmpwi cr1, r19, 0x02 # 14980 -cmpwi r18, 0x00 # 14984 -bge- cr1, major_0x148ec_0xb0 # 14988 -lwz r16, 0x00fc(r30) # 1498c -lwz r17, 0x00fc(r30) # 14990 -srawi r16, r16, 31 # 14994 -b major_0x148ec_0xc8 # 14998 - -major_0x148ec_0xb0: -lwz r16, 0x00d8(r30) # 1499c -lwz r17, 0x00dc(r30) # 149a0 -bgt- major_0x148ec_0xc8 # 149a4 -bne- cr1, major_0x148ec_0xc8 # 149a8 -li r16, 0x00 # 149ac -lwz r17, 0x0f2c( r1) # 149b0 - -major_0x148ec_0xc8: -addc r17, r17, r9 # 149b4 -adde r16, r16, r8 # 149b8 -stw r17, -0x02e4(r21) # 149bc -stw r16, -0x02e8(r21) # 149c0 -mtxer r20 # 149c4 -li r16, 0x01 # 149c8 -stb r16, -0x0309(r21) # 149cc -b major_0x13060_0xc # 149d0 - - - -/*********************************************************** - - major_0x149d4 - -************************************************************ - -Xrefs: -setup -NKStopScheduling -major_0x0c8b4 -major_0x0ccf4 -major_0x0d06c -major_0x0d35c -major_0x0e548 -major_0x130f0 -major_0x142dc -major_0x14bcc -interrupt_blue - -***********************************************************/ - -major_0x149d4: /* < outside referer */ -crset 4*cr1 + eq # 149d4 -b major_0x149d4_0xc # 149d8 - -major_0x149d4_0x8: /* < outside referer */ -crclr 4*cr1 + eq # 149dc - -major_0x149d4_0xc: -lwz r18, 0x0010( r8) # 149e0 -lwz r16, 0x0008( r8) # 149e4 -cmpwi r18, 0x00 # 149e8 -lwz r17, 0x001c( r8) # 149ec -beq+ panic_wrapper_0x137c0 # 149f0 -lwz r18, 0x0014(r16) # 149f4 -lwz r19, 0x0018(r16) # 149f8 -lwz r20, 0x001c(r16) # 149fc -cmpw r18, r17 # 14a00 -rlwinm r17, r17, 10, 0, 22 # 14a04 -beq- major_0x149d4_0x5c # 14a08 -divw. r18, r17, r18 # 14a0c -ble- major_0x149d4_0x50 # 14a10 -mulhw r17, r20, r18 # 14a14 -mullw r19, r19, r18 # 14a18 -mullw r20, r20, r18 # 14a1c -add r19, r19, r17 # 14a20 - -major_0x149d4_0x50: -srwi r20, r20, 10 # 14a24 -rlwimi r20, r19, 22, 0, 9 # 14a28 -srwi r19, r19, 10 # 14a2c - -major_0x149d4_0x5c: -lbz r18, 0x0019( r8) # 14a30 -cmpwi r18, 0x02 # 14a34 -ori r20, r20, 0x01 # 14a38 -bge- major_0x149d4_0x74 # 14a3c -stw r20, 0x00fc( r8) # 14a40 -blr # 14a44 - -major_0x149d4_0x74: -lwz r16, 0x00d8( r8) # 14a48 -lwz r17, 0x00dc( r8) # 14a4c -beq- cr1, major_0x149d4_0x94 # 14a50 -cmpwi r16, 0x00 # 14a54 -cmplwi cr2, r17, 0x00 # 14a58 -blt- major_0x149d4_0x94 # 14a5c -bgtlr- # 14a60 -bgtlr- cr2 # 14a64 - -major_0x149d4_0x94: -mfxer r18 # 14a68 -addc r20, r20, r17 # 14a6c -adde r19, r19, r16 # 14a70 -mtxer r18 # 14a74 -rlwinm r20, r20, 0, 0, 30 # 14a78 -li r18, 0x01 # 14a7c -stw r19, 0x00d8( r8) # 14a80 -stw r20, 0x00dc( r8) # 14a84 -stw r18, 0x00fc( r8) # 14a88 -blr # 14a8c - - - -/*********************************************************** - - clear_cr0_lt - -************************************************************ - -Xrefs: -major_0x130f0 - -***********************************************************/ - -.align 4 # 14a90 - -clear_cr0_lt: /* < outside referer */ -crclr 4*cr0 + lt # 14a90 -blr # 14a94 - - - -/*********************************************************** - - major_0x14a98 - -************************************************************ - -Xrefs: -major_0x03200 -major_0x142dc - -***********************************************************/ - -.align 3 # 14a98 - -major_0x14a98: /* < outside referer */ -rlwinm r8, r7, 10, 0, 0 # 14a98 -lwz r18, 0x0658( r1) # 14a9c -nand. r8, r8, r8 # 14aa0 -lwz r17, 0x00cc(r18) # 14aa4 -bltlr- # 14aa8 -cmpwi r17, 0x00 # 14aac -rlwinm r9, r17, 0, 22, 22 # 14ab0 -blt- major_0x14a98_0x54 # 14ab4 -cmpwi r9, 0x200 # 14ab8 -lwz r16, 0x01cc(r18) # 14abc -beq- major_0x14a98_0x48 # 14ac0 -clrlwi r8, r16, 0x1d # 14ac4 -clrlwi r9, r17, 0x1c # 14ac8 -cmpwi r8, 0x06 # 14acc -bgt- major_0x14a98_0x48 # 14ad0 -cmpw r8, r9 # 14ad4 -bltlr- # 14ad8 -cmpw r8, r8 # 14adc - -major_0x14a98_0x48: -ori r17, r17, 0x100 # 14ae0 -stw r17, 0x00cc(r18) # 14ae4 -blr # 14ae8 - -major_0x14a98_0x54: -clrlwi r17, r17, 0x01 # 14aec -stw r17, 0x00cc(r18) # 14af0 -blr # 14af4 - - - -/*********************************************************** - - major_0x14af8 - -************************************************************ - -Xrefs: -setup -major_0x02ccc -major_0x0b4a4 -nk_yield_with_hint -NKStopScheduling -NKMarkPMFTask -major_0x0c680 -major_0x0c8b4 -major_0x0ccf4 -major_0x0cd9c -major_0x0d06c -major_0x0d158 -major_0x0d278 -major_0x0d35c -major_0x0dce8 -major_0x0e548 -major_0x0e604 -major_0x0e894 -NKThrowException -major_0x0ea58 -major_0x0f2b8 -major_0x130f0 -interrupt_blue - -***********************************************************/ - -.align 3 # 14af8 - -major_0x14af8: /* < outside referer */ -lwz r16, 0x0064( r8) # 14af8 -mfspr r15, 272/*sprg0*/ # 14afc -rlwinm. r16, r16, 0, 25, 26 # 14b00 -bne- major_0x14af8_0xa0 # 14b04 -addi r16, r15, -0x340 # 14b08 -lbz r17, 0x0019( r8) # 14b0c -lwz r19, 0x0008(r16) # 14b10 -lwz r14, 0x0024(r19) # 14b14 -cmpwi r14, 0x02 # 14b18 -blt- major_0x14af8_0xa0 # 14b1c -lwz r14, 0x0020(r19) # 14b20 -mr r18, r16 # 14b24 -b major_0x14af8_0x3c # 14b28 - -major_0x14af8_0x34: -lwz r16, 0x0008(r19) # 14b2c - -major_0x14af8_0x38: -addi r16, r16, -0x08 # 14b30 - -major_0x14af8_0x3c: -addi r14, r14, -0x01 # 14b34 -lbz r20, 0x0229(r16) # 14b38 -lwz r21, 0x0018(r16) # 14b3c -cmpw cr1, r17, r20 # 14b40 -rlwinm. r21, r21, 0, 28, 28 # 14b44 -bge- cr1, major_0x14af8_0x60 # 14b48 -beq- major_0x14af8_0x60 # 14b4c -mr r17, r20 # 14b50 -mr r18, r16 # 14b54 - -major_0x14af8_0x60: -lwz r16, 0x0010(r16) # 14b58 -cmpwi cr1, r14, 0x00 # 14b5c -cmpw r16, r19 # 14b60 -ble- cr1, major_0x14af8_0x78 # 14b64 -beq+ major_0x14af8_0x34 # 14b68 -b major_0x14af8_0x38 # 14b6c - -major_0x14af8_0x78: -lbz r16, 0x0019( r8) # 14b70 -cmpw r17, r16 # 14b74 -blelr- # 14b78 -lhz r17, -0x0116(r15) # 14b7c -lhz r18, 0x022a(r18) # 14b80 -cmpw r18, r17 # 14b84 -bne- major_0x14af8_0xb4 # 14b88 - -major_0x14af8_0x94: -li r16, 0x01 # 14b8c -stb r16, -0x0118(r15) # 14b90 -blr # 14b94 - -major_0x14af8_0xa0: /* < outside referer */ -mfspr r15, 272/*sprg0*/ # 14b98 -lhz r18, 0x001a( r8) # 14b9c -lhz r17, -0x0116(r15) # 14ba0 -cmpw r17, r18 # 14ba4 -beq+ major_0x14af8_0x94 # 14ba8 - -major_0x14af8_0xb4: -lwz r9, 0x0ee0( r1) # 14bac -addi r9, r9, 0x01 # 14bb0 -stw r9, 0x0ee0( r1) # 14bb4 -li r16, 0x05 # 14bb8 -stw r16, -0x0238(r15) # 14bbc -stw r18, -0x0234(r15) # 14bc0 -li r8, 0x02 # 14bc4 - -# r7 = flags -# r8 = usually 2? -b SIGP # 14bc8 - - - -/*********************************************************** - - major_0x14bcc - -************************************************************ - -Xrefs: -"lisori_caller" - -***********************************************************/ - -major_0x14bcc: /* < outside referer */ -addi r1, r3, 0x340 # 14bcc -mtspr 272/*sprg0*/, r1 # 14bd0 -lwz r1, -0x0004( r1) # 14bd4 -lwz r8, 0x06a4( r1) # 14bd8 -lwz r9, 0x06a0( r1) # 14bdc -srwi r9, r9, 16 # 14be0 -or r9, r8, r9 # 14be4 -sync # 14be8 -mtspr 25/*sdr1*/, r9 # 14bec -sync # 14bf0 -bl 1f # 14bf4 -.ascii "Sch: Symmetric Multiprocessing^n" # 14bf8 -.short 0 # 14c18 -.align 2 # 14c1a -1: mflr r8 # 14c1c -bl print_string # 14c20 -bl 1f # 14c24 -.ascii "Sch: On CPU " # 14c28 -.short 0 # 14c34 -.align 2 # 14c36 -1: mflr r8 # 14c38 -bl print_string # 14c3c -lhz r8, 0x022a( r3) # 14c40 -bl print_short_hex # 14c44 -bl 1f # 14c48 -.ascii " ID-" # 14c4c -.short 0 # 14c50 -.align 2 # 14c52 -1: mflr r8 # 14c54 -bl print_string # 14c58 -lwz r8, -0x0340( r3) # 14c5c -bl print_word_hex # 14c60 -bl 1f # 14c64 -.ascii " SDR1: " # 14c68 -.short 0 # 14c6f -.align 2 # 14c71 -1: mflr r8 # 14c74 -bl print_string # 14c78 -mr r8, r9 # 14c7c -bl print_word_hex # 14c80 -bl 1f # 14c84 -.ascii " CpuDescriptor: " # 14c88 -.short 0 # 14c98 -.align 2 # 14c9a -1: mflr r8 # 14c9c -bl print_string # 14ca0 -mr r8, r3 # 14ca4 -bl print_word_hex # 14ca8 -bl 1f # 14cac -.ascii " KDP: " # 14cb0 -.short 0 # 14cb6 -.align 2 # 14cb8 -1: mflr r8 # 14cb8 -bl print_string # 14cbc -mr r8, r1 # 14cc0 -bl print_word_hex # 14cc4 -bl 1f # 14cc8 -.ascii "^n" # 14ccc -.short 0 # 14cce -.align 2 # 14cd0 -1: mflr r8 # 14cd0 -bl print_string # 14cd4 -bl flush_tlb # 14cd8 -bl 1f # 14cdc -.ascii "Sch: Starting SMP idle task^n" # 14ce0 -.short 0 # 14cfd -.align 2 # 14cff -1: mflr r8 # 14d00 -bl print_string # 14d04 -mr r27, r8 # 14d08 -mr r28, r9 # 14d0c -addi r8, r1, -0xb50 # 14d10 - -# r8 = lock -bl lock # 14d14 -mr r8, r27 # 14d18 -mr r9, r28 # 14d1c -mfspr r14, 272/*sprg0*/ # 14d20 -lwz r31, 0x001c( r3) # 14d24 -li r8, 0x00 # 14d28 -stb r8, -0x0118(r14) # 14d2c -lwz r6, 0x0088(r31) # 14d30 -stw r31, -0x0008(r14) # 14d34 -stw r6, -0x0014(r14) # 14d38 -lwz r7, 0x0000( r6) # 14d3c -lwz r28, 0x0004( r6) # 14d40 -stw r7, -0x0010(r14) # 14d44 -stw r28, -0x000c(r14) # 14d48 -lwz r8, 0x00f0(r31) # 14d4c -mtspr 275/*sprg3*/, r8 # 14d50 -lwz r10, 0x00fc( r6) # 14d54 -lwz r11, 0x00a4( r6) # 14d58 -lwz r13, 0x00dc( r6) # 14d5c -lwz r12, 0x00ec( r6) # 14d60 -bl 1f # 14d64 -.ascii "EWA " # 14d68 -.short 0 # 14d6c -.align 2 # 14d6e -1: mflr r8 # 14d70 -bl print_string # 14d74 -mr r8, r14 # 14d78 -bl print_word_hex # 14d7c -bl 1f # 14d80 -.ascii "ContextPtr " # 14d84 -.short 0 # 14d8f -.align 2 # 14d91 -1: mflr r8 # 14d94 -bl print_string # 14d98 -mr r8, r6 # 14d9c -bl print_word_hex # 14da0 -bl 1f # 14da4 -.ascii "Flags " # 14da8 -.short 0 # 14dae -.align 2 # 14db0 -1: mflr r8 # 14db0 -bl print_string # 14db4 -mr r8, r7 # 14db8 -bl print_word_hex # 14dbc -bl 1f # 14dc0 -.ascii "Enables " # 14dc4 -.short 0 # 14dcc -.align 2 # 14dce -1: mflr r8 # 14dd0 -bl print_string # 14dd4 -mr r8, r28 # 14dd8 -bl print_word_hex # 14ddc -bl 1f # 14de0 -.ascii "^n" # 14de4 -.short 0 # 14de6 -.align 2 # 14de8 -1: mflr r8 # 14de8 -bl print_string # 14dec -addi r16, r31, 0x08 # 14df0 -lwz r17, 0x0008(r16) # 14df4 -lwz r18, 0x000c(r16) # 14df8 -stw r17, 0x0008(r18) # 14dfc -stw r18, 0x000c(r17) # 14e00 -li r17, 0x00 # 14e04 -stw r17, 0x0008(r16) # 14e08 -stw r17, 0x000c(r16) # 14e0c -li r16, 0x02 # 14e10 -stb r16, 0x0018(r31) # 14e14 -lwz r16, 0x0064(r31) # 14e18 -ori r16, r16, 0x20 # 14e1c -stw r16, 0x0064(r31) # 14e20 -mfspr r14, 272/*sprg0*/ # 14e24 -lbz r8, 0x0019(r31) # 14e28 -stb r8, -0x0117(r14) # 14e2c -lwz r8, 0x0070(r31) # 14e30 -li r9, 0x00 # 14e34 -bl major_0x13f78 # 14e38 -bl 1f # 14e3c -.ascii "Adding idle task 0x" # 14e40 -.short 0 # 14e53 -.align 2 # 14e55 -1: mflr r8 # 14e58 -bl print_string # 14e5c -mr r8, r31 # 14e60 -bl print_word_hex # 14e64 -bl 1f # 14e68 -.ascii "to the ready queue^n" # 14e6c -.short 0 # 14e80 -.align 2 # 14e82 -1: mflr r8 # 14e84 -bl print_string # 14e88 -mr r8, r31 # 14e8c -bl major_0x13ed8_0x8 # 14e90 -bl major_0x149d4_0x8 # 14e94 -lwz r16, 0x0018( r3) # 14e98 -ori r16, r16, 0x08 # 14e9c -stw r16, 0x0018( r3) # 14ea0 -lwz r17, 0x0008( r3) # 14ea4 -lwz r16, 0x0024(r17) # 14ea8 -addi r16, r16, 0x01 # 14eac -stw r16, 0x0024(r17) # 14eb0 -li r8, 0x01 # 14eb4 -mtspr 22/*dec*/, r8 # 14eb8 -bl 1f # 14ebc -.ascii "Sch: Going to " # 14ec0 -.short 0 # 14ece -.align 2 # 14ed0 -1: mflr r8 # 14ed0 -bl print_string # 14ed4 -mr r8, r11 # 14ed8 -bl print_word_hex # 14edc -mr r8, r10 # 14ee0 -bl print_word_hex # 14ee4 -bl 1f # 14ee8 -.ascii "^n" # 14eec -.short 0 # 14eee -.align 2 # 14ef0 -1: mflr r8 # 14ef0 -bl print_string # 14ef4 -mr r30, r31 # 14ef8 -b major_0x142dc_0xd8 # 14efc -.long 0x4bfff434 # 14f00 - -major_0x14bcc_0x338: /* < outside referer */ -li r31, 0x00 # 14f04 -lis r20, 0x6964 # 14f08 -ori r20, r20, 0x6c65 # 14f0c -lis r21, 0x7461 # 14f10 -ori r21, r21, 0x736b # 14f14 -lis r22, 0x5265 # 14f18 -ori r22, r22, 0x6e8e # 14f1c -lis r23, 0x416c # 14f20 -ori r23, r23, 0x616e # 14f24 -lis r24, 0x4a69 # 14f28 -ori r24, r24, 0x6d20 # 14f2c -lis r25, 0x416c # 14f30 -ori r25, r25, 0x6578 # 14f34 -lis r26, 0x4465 # 14f38 -ori r26, r26, 0x7272 # 14f3c -lis r27, 0x6963 # 14f40 -ori r27, r27, 0x6b20 # 14f44 - -major_0x14bcc_0x37c: -mr r30, r1 # 14f48 -mr r1, r2 # 14f4c -mr r2, r5 # 14f50 -mr r5, r6 # 14f54 -mr r6, r7 # 14f58 -mr r7, r8 # 14f5c -mr r8, r9 # 14f60 -mr r9, r10 # 14f64 -mr r10, r11 # 14f68 -mr r11, r12 # 14f6c -mr r12, r13 # 14f70 -mr r13, r14 # 14f74 -mr r14, r15 # 14f78 -mr r15, r16 # 14f7c -mr r16, r17 # 14f80 -mr r17, r18 # 14f84 -mr r18, r19 # 14f88 -mr r19, r20 # 14f8c -mr r20, r21 # 14f90 -mr r21, r22 # 14f94 -mr r22, r23 # 14f98 -mr r23, r24 # 14f9c -mr r24, r25 # 14fa0 -mr r25, r26 # 14fa4 -mr r26, r27 # 14fa8 -mr r27, r28 # 14fac -mr r28, r29 # 14fb0 -mr r29, r30 # 14fb4 -cmpwi r31, 0x00 # 14fb8 -beq- major_0x14bcc_0x400 # 14fbc -addi r31, r31, -0x01 # 14fc0 -cmplwi r31, 0x00 # 14fc4 -bgt- major_0x14bcc_0x434 # 14fc8 - -major_0x14bcc_0x400: -li r3, 0x0c # 14fcc -li r4, 0x01 # 14fd0 -li r0, 0x2e # 14fd4 -sc # 14fd8 -cmpwi r3, 0x00 # 14fdc -beq- major_0x14bcc_0x434 # 14fe0 -li r3, 0x01 # 14fe4 -li r4, 0x00 # 14fe8 -twi 31, r31, 0x05 # 14fec -cmpwi r3, 0x00 # 14ff0 -beq- major_0x14bcc_0x434 # 14ff4 -lis r31, 0x98 # 14ff8 -ori r31, r31, 0x9680 # 14ffc - -major_0x14bcc_0x434: -b major_0x14bcc_0x37c # 15000 - -major_0x14bcc_0x438: /* < outside referer */ -mfmsr r30 # 15004 -andi. r29, r30, 0x7fff # 15008 -mtmsr r29 # 1500c -mfspr r2, 272/*sprg0*/ # 15010 -lwz r1, -0x0004( r2) # 15014 -mr r16, r8 # 15018 -mr r17, r9 # 1501c -addi r8, r1, -0xb50 # 15020 - -# r8 = lock -bl lock # 15024 -mr r8, r16 # 15028 -mr r9, r17 # 1502c -addi r31, r2, -0x340 # 15030 -lwz r16, 0x0018(r31) # 15034 -rlwinm r16, r16, 0, 29, 27 # 15038 -stw r16, 0x0018(r31) # 1503c -sync # 15040 -lwz r17, 0x0008(r31) # 15044 -lwz r16, 0x0024(r17) # 15048 -addi r16, r16, -0x01 # 1504c -stw r16, 0x0024(r17) # 15050 -lwz r8, 0x001c(r31) # 15054 -li r9, 0x00 # 15058 -stw r9, 0x001c(r31) # 1505c -bl major_0x13e4c # 15060 -addi r16, r1, -0xa44 # 15064 -addi r17, r8, 0x08 # 15068 -stw r16, 0x0000(r17) # 1506c -stw r16, 0x0008(r17) # 15070 -lwz r18, 0x000c(r16) # 15074 -stw r18, 0x000c(r17) # 15078 -stw r17, 0x0008(r18) # 1507c -stw r17, 0x000c(r16) # 15080 -bl major_0x0e76c_0x50 # 15084 -sync # 15088 -lwz r16, -0x0b50( r1) # 1508c -cmpwi cr1, r16, 0x00 # 15090 -li r16, 0x00 # 15094 -bne+ cr1, major_0x14bcc_0x4d8 # 15098 -mflr r16 # 1509c -bl panic # 150a0 - -major_0x14bcc_0x4d8: -stw r16, -0x0b50( r1) # 150a4 -bl 1f # 150a8 -.ascii "SIGP kStopProcessor^n" # 150ac -.short 0 # 150c1 -.align 2 # 150c3 -1: mflr r8 # 150c4 -bl print_string # 150c8 -li r3, 0x03 # 150cc -lhz r4, 0x022a(r31) # 150d0 -li r0, 0x2e # 150d4 -twi 31, r31, 0x08 # 150d8 -bl 1f # 150dc -.ascii "Stop didn't work - going to sleep.^n" # 150e0 -.short 0 # 15104 -.align 2 # 15106 -1: mflr r8 # 15108 -bl print_string # 1510c - -major_0x14bcc_0x544: -lis r5, 0x7fff # 15110 -ori r5, r5, 0xffff # 15114 -mtspr 22/*dec*/, r5 # 15118 -li r3, 0x06 # 1511c -li r4, 0x00 # 15120 -twi 31, r31, 0x05 # 15124 -b major_0x14bcc_0x544 # 15128 - - - -/*********************************************************** - - major_0x1512c - -***********************************************************/ - -.long 0x48000014 # 1512c -.long 0x60000000 # 15130 -.long 0x60000000 # 15134 -.long 0x60000000 # 15138 -.long 0x60000000 # 1513c - - - -/*********************************************************** - - panic_wrapper_0x15140 - -************************************************************ - -Xrefs: -index_init - -***********************************************************/ - -.align 6 # 15140 - -panic_wrapper_0x15140: /* < outside referer */ -b panic # 15140 - - - -/*********************************************************** - - index_init - -************************************************************ - -These are the first requests made of the pool! - -************************************************************ - -Xrefs: -setup - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -index_init: /* < outside referer */ -mflr r23 # 15144 -li r8, 520 # 15148 - -# r1 = kdp -# r8 = size -bl pool_malloc # 1514c -# r8 = ptr - -mr. r22, r8 # 15150 -stw r8, -0x0a98( r1) # kdp.-0xa98 # 15154 -beq+ panic_wrapper_0x15140 # 15158 -li r9, 0x00 # 1515c -stw r9, 0x0efc( r1) # kdp.0xefc # 15160 -sth r9, 0x0000(r22) # 15164 -sth r9, 0x0002(r22) # 15168 -lis r9, 256 * 'I'+'N' # 1516c -ori r9, r9, 256 * 'D'+'X' # 15170 -stw r9, 0x0004(r22) # 15174 -li r8, 0xfd8 # 15178 - -# r1 = kdp -# r8 = size -bl pool_malloc # 1517c -# r8 = ptr - -cmpwi r8, 0x00 # 15180 -stw r8, 0x0008(r22) # 15184 -beq+ panic_wrapper_0x15140 # 15188 -mtlr r23 # 1518c -li r9, 0x00 # 15190 -sth r9, 0x0000( r8) # 15194 -li r9, 0x1fa # 15198 -sth r9, 0x0002( r8) # 1519c -lis r9, 256 * 'I'+'D' # 151a0 -ori r9, r9, 256 * 's'+' ' # 151a4 -stw r9, 0x0004( r8) # 151a8 -blr # 151ac - - - -/*********************************************************** - - alloc_id - -************************************************************ - -Xrefs: -setup -major_0x0b3cc -major_0x0b720 -major_0x0b960 -major_0x0c5e0 -major_0x0cb00 -major_0x0ce48 -major_0x0d204 -major_0x0d70c -major_0x0da20 -mktask -NKCreateAddressSpaceSub -createarea - -************************************************************ - -> r1 = kdp -> r9 = kind - -***********************************************************/ - -.align 4 # 151b0 - -alloc_id: /* < outside referer */ -lwz r18, -0x0a98( r1) # kdp.-0xa98 # 151b0 -lhz r19, 0x0000(r18) # 151b4 -mr r21, r19 # 151b8 - -alloc_id_0xc: -lwz r18, -0x0a98( r1) # kdp.-0xa98 # 151bc -rlwinm r20, r19, 25, 23, 29 # 151c0 -addi r20, r20, 0x08 # 151c4 -clrlwi. r19, r19, 0x17 # 151c8 -lwzx r18, r18, r20 # 151cc -slwi r22, r19, 3 # 151d0 -addi r20, r18, 0x08 # 151d4 -cmpwi r18, 0x00 # 151d8 -add r22, r22, r20 # 151dc -bne- alloc_id_0x48 # 151e0 -li r19, 0x00 # 151e4 -b alloc_id_0xc # 151e8 - -alloc_id_0x3c: -add r20, r20, r19 # 151ec -cmpw r20, r21 # 151f0 -beq- alloc_id_0x70 # 151f4 - -alloc_id_0x48: -lbz r23, 0x0000(r22) # 151f8 -cmpwi r23, 0x00 # 151fc -beq- alloc_id_0xf0 # 15200 -addi r19, r19, 0x01 # 15204 -cmpwi cr1, r19, 0x1fa # 15208 -addi r22, r22, 0x08 # 1520c -lhz r20, 0x0000(r18) # 15210 -blt+ cr1, alloc_id_0x3c # 15214 -addi r19, r20, 0x200 # 15218 -b alloc_id_0xc # 1521c - -alloc_id_0x70: -lwz r18, -0x0a98( r1) # kdp.-0xa98 # 15220 -mr r21, r8 # 15224 -lhz r19, 0x0002(r18) # 15228 -mr r22, r9 # 1522c -addi r19, r19, 0x200 # 15230 -rlwinm. r20, r19, 25, 23, 29 # 15234 -li r8, 0x00 # 15238 -beqlr- # 1523c -mflr r23 # 15240 -li r8, 0xfd8 # 15244 - -# r1 = kdp -# r8 = size -bl pool_malloc # 15248 -# r8 = ptr - -mr. r18, r8 # 1524c -mtlr r23 # 15250 -li r8, 0x00 # 15254 -beqlr- # 15258 -lwz r17, -0x0a98( r1) # kdp.-0xa98 # 1525c -lhz r19, 0x0002(r17) # 15260 -addi r19, r19, 0x200 # 15264 -rlwinm r20, r19, 25, 23, 29 # 15268 -addi r20, r20, 0x08 # 1526c -sth r19, 0x0002(r17) # 15270 -stwx r18, r20, r17 # 15274 -sth r19, 0x0000(r18) # 15278 -li r9, 0x1fa # 1527c -sth r9, 0x0002(r18) # 15280 -lis r9, 0x4944 # 15284 -ori r9, r9, 0x7320 # 15288 -stw r9, 0x0004(r18) # 1528c -li r19, 0x00 # 15290 -mr r8, r21 # 15294 -mr r9, r22 # 15298 -addi r22, r18, 0x08 # 1529c - -alloc_id_0xf0: -stw r8, 0x0004(r22) # 152a0 -stb r9, 0x0000(r22) # 152a4 -lwz r9, 0x0efc( r1) # kdp.0xefc # 152a8 -addi r9, r9, 0x01 # 152ac -stw r9, 0x0efc( r1) # kdp.0xefc # 152b0 -lhz r20, 0x0000(r18) # 152b4 -lhz r8, 0x0002(r22) # 152b8 -lwz r21, -0x0a98( r1) # kdp.-0xa98 # 152bc -add r19, r19, r20 # 152c0 -addi r8, r8, 0x01 # 152c4 -lhz r20, 0x0002(r18) # 152c8 -sth r8, 0x0002(r22) # 152cc -addi r20, r20, -0x01 # 152d0 -rlwimi. r8, r19, 16, 0, 15 # 152d4 -sth r20, 0x0002(r18) # 152d8 -sth r19, 0x0000(r21) # 152dc -bnelr+ # 152e0 -lhz r8, 0x0002(r22) # 152e4 -addi r8, r8, 0x01 # 152e8 -sth r8, 0x0002(r22) # 152ec -rlwimi r8, r19, 16, 0, 15 # 152f0 -blr # 152f4 - - - -/*********************************************************** - - major_0x152f8 - -***********************************************************/ - -.align 3 # 152f8 - -.long 0x60000000 # 152f8 -.long 0x60000000 # 152fc - - - -/*********************************************************** - - major_0x15300 - -************************************************************ - -Xrefs: -major_0x0b4a4 -major_0x0b73c -major_0x0ba80 -major_0x0c680 -major_0x0cd9c -major_0x0d158 -major_0x0d278 -major_0x0d798 -major_0x0da8c -mktask -major_0x0e76c -NKCreateAddressSpaceSub -major_0x0f9f8 -major_0x10320 -major_0x104ec - -***********************************************************/ - -.align 8 # 15300 - -major_0x15300: /* < outside referer */ -rlwinm r20, r8, 9, 23, 29 # 15300 -lwz r18, -0x0a98( r1) # 15304 -addi r20, r20, 0x08 # 15308 -rlwinm. r19, r8, 16, 23, 31 # 1530c -lwzx r18, r18, r20 # 15310 -cmplwi cr1, r19, 0x1fa # 15314 -cmpwi r18, 0x00 # 15318 -addi r20, r18, 0x08 # 1531c -slwi r22, r19, 3 # 15320 -add r22, r22, r20 # 15324 -clrlwi r20, r8, 0x10 # 15328 -li r8, 0x00 # 1532c -bgelr- cr1 # 15330 -beqlr- # 15334 -lbz r19, 0x0000(r22) # 15338 -lhz r23, 0x0002(r22) # 1533c -cmpwi r19, 0x00 # 15340 -cmpw cr1, r23, r20 # 15344 -beqlr- # 15348 -bnelr- cr1 # 1534c -lwz r9, 0x0efc( r1) # 15350 -addi r9, r9, -0x01 # 15354 -stw r9, 0x0efc( r1) # 15358 -lhz r20, 0x0002(r18) # 1535c -stb r8, 0x0000(r22) # 15360 -addi r20, r20, 0x01 # 15364 -li r8, 0x01 # 15368 -sth r20, 0x0002(r18) # 1536c -blr # 15370 - - - -/*********************************************************** - - major_0x15374 - -***********************************************************/ - -.long 0x4800000c # 15374 -.long 0x60000000 # 15378 -.long 0x60000000 # 1537c - - - -/*********************************************************** - - id_kind - -************************************************************ - -Xrefs: -major_0x02ccc -major_0x04240 -major_0x04300 -NKRegisterCpuPlugin -major_0x0b3cc -major_0x0b45c -major_0x0b4a4 -major_0x0b750 -nk_get_next_id_owned -major_0x0b8b8 -major_0x0b90c -major_0x0b960 -major_0x0ba80 -major_0x0bb20 -NKStopScheduling -NKSetBlueProcessID -NKRegisterThermalHandler -NKRegisterPMFHandler -NKMarkPMFTask -major_0x0c3ac -NKRegisterExternalHandler -major_0x0c680 -major_0x0c778 -major_0x0c830 -major_0x0c968 -major_0x0cac0 -major_0x0cb8c -major_0x0cc80 -major_0x0ccbc -major_0x0cd9c -major_0x0ced4 -major_0x0d010 -major_0x0d06c -major_0x0d158 -major_0x0d278 -major_0x0d324 -major_0x0d504 -major_0x0d678 -major_0x0d6b4 -major_0x0d798 -major_0x0d818 -major_0x0d8a0 -major_0x0d9a8 -major_0x0da8c -major_0x0dacc -major_0x0db04 -major_0x0dc0c -major_0x0dc88 -major_0x0dd64 -major_0x0e284 -major_0x0e548 -major_0x0e604 -major_0x0e76c -major_0x0e894 -major_0x0e90c -NKThrowException -major_0x0ea58 -major_0x0ec54 -major_0x0ec8c -major_0x0f050 -major_0x0f288 -major_0x0f2b8 -NKSetTaskType -NKCreateAddressSpaceSub -major_0x0f9f8 -NKSetTaskAddressSpace -major_0x0fb34 -major_0x102c8 -major_0x10414 -major_0x104ec -major_0x1070c -major_0x108fc -NKSetAreaAccess -major_0x10de0 -major_0x10e94 -major_0x10ee0 -major_0x10ff0 -major_0x11040 -major_0x11098 -major_0x11104 -major_0x111d4 -major_0x11360 -major_0x1139c -NKMapPage -NKUnmapPages -NKMakePhysicallyContiguous -NKLockPages -NKUnlockPages -NKHoldPages -NKUnholdPages -major_0x11ebc -major_0x11fac -major_0x120a8 -major_0x12110 -major_0x121d4 -interrupt_blue -panic - -************************************************************ - -> r8 = id - -< r8 = something not sure what -< r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -***********************************************************/ - -.align 7 # 15380 - -id_kind: /* < outside referer */ -rlwinm r20, r8, 9, 23, 29 # 15380 -lwz r18, -0x0a98( r1) # 15384 -addi r20, r20, 0x08 # 15388 -rlwinm. r19, r8, 16, 23, 31 # 1538c -lwzx r18, r18, r20 # 15390 -cmplwi cr1, r19, 0x1fa # 15394 -cmpwi r18, 0x00 # 15398 -addi r20, r18, 0x08 # 1539c -slwi r22, r19, 3 # 153a0 -add r22, r22, r20 # 153a4 -clrlwi r20, r8, 0x10 # 153a8 -li r8, 0x00 # 153ac -li r9, 0x00 # 153b0 -bgelr- cr1 # 153b4 -beqlr- # 153b8 -lbz r19, 0x0000(r22) # 153bc -lhz r23, 0x0002(r22) # 153c0 -cmpwi r19, 0x00 # 153c4 -cmpw cr1, r23, r20 # 153c8 -beqlr- # 153cc -bnelr- cr1 # 153d0 -lwz r8, 0x0004(r22) # 153d4 -mr r9, r19 # 153d8 -blr # 153dc - - - -/*********************************************************** - - major_0x153e0 - -************************************************************ - -Xrefs: -nk_get_next_id_unowned -nk_get_next_id_owned -major_0x0b8b8 -major_0x0b90c -major_0x10ff0 -panic - -***********************************************************/ - -.align 5 # 153e0 - -major_0x153e0: /* < outside referer */ -rlwinm r20, r8, 9, 23, 29 # 153e0 -lwz r18, -0x0a98( r1) # 153e4 -addi r20, r20, 0x08 # 153e8 -rlwinm. r19, r8, 16, 23, 31 # 153ec -lwzx r18, r18, r20 # 153f0 -cmplwi cr1, r19, 0x1fa # 153f4 -cmpwi r18, 0x00 # 153f8 -cmpwi cr2, r8, 0x00 # 153fc -addi r20, r18, 0x08 # 15400 -slwi r22, r19, 3 # 15404 -li r8, 0x00 # 15408 -bgelr- cr1 # 1540c -beqlr- # 15410 -add r22, r22, r20 # 15414 -bne- cr2, major_0x153e0_0x48 # 15418 - -major_0x153e0_0x3c: -lbz r23, 0x0000(r22) # 1541c -cmpwi r23, 0x00 # 15420 -bne- major_0x153e0_0x8c # 15424 - -major_0x153e0_0x48: -addi r19, r19, 0x01 # 15428 -cmpwi r19, 0x1fa # 1542c -addi r22, r22, 0x08 # 15430 -blt+ major_0x153e0_0x3c # 15434 -lhz r20, 0x0000(r18) # 15438 -addi r20, r20, 0x200 # 1543c -rlwinm. r20, r20, 25, 23, 29 # 15440 -lwz r18, -0x0a98( r1) # 15444 -beqlr- # 15448 -addi r20, r20, 0x08 # 1544c -li r19, 0x00 # 15450 -lwzx r18, r18, r20 # 15454 -cmpwi r18, 0x00 # 15458 -addi r22, r18, 0x08 # 1545c -bne+ major_0x153e0_0x3c # 15460 -li r8, 0x00 # 15464 -blr # 15468 - -major_0x153e0_0x8c: -cmpwi r9, 0x00 # 1546c -cmpw cr1, r9, r23 # 15470 -beq- major_0x153e0_0x9c # 15474 -bne+ cr1, major_0x153e0_0x48 # 15478 - -major_0x153e0_0x9c: -lhz r20, 0x0000(r18) # 1547c -lhz r8, 0x0002(r22) # 15480 -add r19, r19, r20 # 15484 -rlwimi r8, r19, 16, 0, 15 # 15488 -blr # 1548c - - - -/*********************************************************** - - major_0x15490 - -***********************************************************/ - -.align 4 # 15490 - -.long 0x48000010 # 15490 -.long 0x60000000 # 15494 -.long 0x60000000 # 15498 -.long 0x60000000 # 1549c - - - -/*********************************************************** - - get_pih_addr - -************************************************************ - -ConfigInfo specifies a one-byte primary interrupt handler kind. Look up function address in this table. - -************************************************************ - -Xrefs: -replace_old_kernel -new_world - -************************************************************ - -> r3 = ConfigInfo - -< r12 = clobbered -< r7 = pih_pa - -***********************************************************/ - -.align 5 # 154a0 - -get_pih_addr: /* < outside referer */ -mflr r12 # 154a0 -bl 1f # 154a4 - -pih_tbl: -.short 0 # 154a8 -.short pdm_pih_01 - pih_tbl # 154aa -.short tnt_pih_02 - pih_tbl # 154ac -.short pbx_pih_03 - pih_tbl # 154ae -.short cordyceps_pih_04 - pih_tbl # 154b0 -.short gazelle_pih_05 - pih_tbl # 154b2 -.short newworld_pih_06 - pih_tbl # 154b4 -.short gossamer_pih_07 - pih_tbl # 154b6 -.short unknown_pih_08 - pih_tbl # 154b8 -.short 0 # 154ba -.short nwpbg3_pih_0a - pih_tbl # 154bc -.short 0 # 154be -.align 2 # 154c0 -1: mflr r7 # 154c0 -mtlr r12 # 154c4 -lbz r12, 0x0098( r3) # ConfigInfo.u8_pih_kind # 154c8 -slwi r12, r12, 1 # 154cc -lhzx r12, r7, r12 # 154d0 -add r7, r7, r12 # 154d4 -blr # 154d8 - - - -/*********************************************************** - - major_0x154dc - -***********************************************************/ - -.long 0x60000000 # 154dc - - - -/*********************************************************** - - interrupt_blue - -************************************************************ - -At least I think so. - -************************************************************ - -Xrefs: -NKPropogateExternalInterrupt -pdm_pih_01 -pbx_pih_03 -gazelle_pih_05 -tnt_pih_02 -gossamer_pih_07 -nwpbg3_pih_0a -cordyceps_pih_04 -newworld_pih_06 -unknown_pih_08 - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -.align 5 # 154e0 - -interrupt_blue: /* < outside referer */ -mtspr 275/*sprg3*/, r30 # 154e0 -lwz r23, 0x067c( r1) # kdp.0x67c # 154e4 -lwz r27, -0x0428( r1) # kdp.-0x428 # 154e8 - -interrupt_blue_0xc: /* < outside referer */ -cmpwi cr7, r28, 0x00 # 154ec -li r31, 0x00 # 154f0 -blt- cr7, interrupt_blue_0x50 # 154f4 -beq- cr7, interrupt_blue_0x24 # 154f8 -ori r28, r28, 0x8000 # 154fc -lwz r31, 0x0674( r1) # kdp.0x674 # 15500 - -interrupt_blue_0x24: -andis. r8, r11, 0x02 # 15504 -cmpwi cr1, r27, 0x00 # 15508 -lwz r29, 0x0678( r1) # kdp.0x678 # 1550c -bne- interrupt_blue_0x38 # 15510 -bne- cr1, interrupt_blue_0x78 # 15514 - -interrupt_blue_0x38: -rlwinm. r8, r7, 0, 10, 10 # 15518 -beq- interrupt_blue_0x14c # 1551c -sth r28, 0x0000(r23) # 15520 -or r13, r13, r31 # 15524 -bgt- cr7, interrupt_blue_0x50 # 15528 -and r13, r13, r29 # 1552c - -interrupt_blue_0x50: -sync # 15530 -lwz r8, -0x0b70( r1) # kdp.pih_lock # 15534 -cmpwi cr1, r8, 0x00 # 15538 -li r8, 0x00 # 1553c -bne+ cr1, interrupt_blue_0x6c # 15540 -mflr r8 # 15544 -bl panic # 15548 - -interrupt_blue_0x6c: -stw r8, -0x0b70( r1) # kdp.pih_lock # 1554c -bl restore_registers_from_r14_0x28 # 15550 -b skeleton_key # 15554 - -interrupt_blue_0x78: -sync # 15558 -lwz r8, -0x0b70( r1) # kdp.pih_lock # 1555c -cmpwi cr1, r8, 0x00 # 15560 -li r8, 0x00 # 15564 -bne+ cr1, interrupt_blue_0x94 # 15568 -mflr r8 # 1556c -bl panic # 15570 - -interrupt_blue_0x94: -stw r8, -0x0b70( r1) # kdp.pih_lock # 15574 -bl major_0x15794 # 15578 -mr r8, r8 # 1557c -mr r9, r9 # 15580 -addi r8, r1, -0xb50 # kdp.sch_lock # 15584 - -# r8 = lock -bl lock # 15588 -mr r8, r8 # 1558c -mr r9, r9 # 15590 -mr r8, r27 # 15594 - -# r8 = id -bl id_kind # 15598 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -cmpwi r9, 0x0c # 1559c -mr r30, r8 # 155a0 -bne- interrupt_blue_0x100 # 155a4 -clrlwi r9, r28, 0x11 # 155a8 -stw r9, 0x0010(r30) # 155ac -stw r22, 0x0014(r30) # 155b0 -bl major_0x0db04 # 155b4 -sync # 155b8 -lwz r8, -0x0b50( r1) # kdp.sch_lock # 155bc -cmpwi cr1, r8, 0x00 # 155c0 -li r8, 0x00 # 155c4 -bne+ cr1, interrupt_blue_0xf4 # 155c8 -mflr r8 # 155cc -bl panic # 155d0 - -interrupt_blue_0xf4: -stw r8, -0x0b50( r1) # kdp.sch_lock # 155d4 - -# r6 = ewa -bl restore_registers_from_r14 # 155d8 -b skeleton_key # 155dc - -interrupt_blue_0x100: -li r27, 0x00 # 155e0 -lwz r23, 0x067c( r1) # kdp.0x67c # 155e4 -stw r27, -0x0428( r1) # kdp.-0x428 # 155e8 -sync # 155ec -lwz r8, -0x0b50( r1) # kdp.sch_lock # 155f0 -cmpwi cr1, r8, 0x00 # 155f4 -li r8, 0x00 # 155f8 -bne+ cr1, interrupt_blue_0x128 # 155fc -mflr r8 # 15600 -bl panic # 15604 - -interrupt_blue_0x128: -stw r8, -0x0b50( r1) # kdp.sch_lock # 15608 -bl major_0x15794_0x1c # 1560c -mr r8, r8 # 15610 -mr r9, r9 # 15614 -addi r8, r1, -0xb70 # kdp.pih_lock # 15618 - -# r8 = lock -bl lock # 1561c -mr r8, r8 # 15620 -mr r9, r9 # 15624 -b interrupt_blue_0xc # 15628 - -interrupt_blue_0x14c: -sync # 1562c -lwz r8, -0x0b70( r1) # kdp.pih_lock # 15630 -cmpwi cr1, r8, 0x00 # 15634 -li r8, 0x00 # 15638 -bne+ cr1, interrupt_blue_0x168 # 1563c -mflr r8 # 15640 -bl panic # 15644 - -interrupt_blue_0x168: -stw r8, -0x0b70( r1) # kdp.pih_lock # 15648 -bl major_0x15794 # 1564c -mr r16, r8 # 15650 -mr r17, r9 # 15654 -addi r8, r1, -0xb50 # kdp.sch_lock # 15658 - -# r8 = lock -bl lock # 1565c -mr r8, r16 # 15660 -mr r9, r17 # 15664 -lwz r30, -0x0440( r1) # kdp.-0x440 # 15668 -or r31, r31, r30 # 1566c -stw r31, -0x0440( r1) # kdp.-0x440 # 15670 -sth r28, -0x043c( r1) # kdp.-0x43c # 15674 -lwz r31, -0x08f0( r1) # kdp.-0x8f0 # 15678 -mfspr r30, 272/*sprg0*/ # 1567c -lwz r28, 0x0064(r31) # 15680 -lbz r29, 0x0018(r31) # 15684 -ori r28, r28, 0x10 # 15688 -stw r28, 0x0064(r31) # 1568c -cmpwi r29, 0x00 # 15690 -lhz r16, 0x001a(r31) # 15694 -beq- interrupt_blue_0x1dc # 15698 -lhz r17, -0x0116(r30) # 1569c -cmpw cr1, r16, r17 # 156a0 -rlwinm. r8, r28, 0, 26, 26 # 156a4 -beq- cr1, interrupt_blue_0x1d0 # 156a8 -bne- interrupt_blue_0x230 # 156ac - -interrupt_blue_0x1d0: -mr r8, r31 # 156b0 -bl major_0x13e4c # 156b4 -b interrupt_blue_0x218 # 156b8 - -interrupt_blue_0x1dc: -addi r16, r31, 0x08 # 156bc -lwz r17, 0x0008(r16) # 156c0 -lwz r18, 0x000c(r16) # 156c4 -stw r17, 0x0008(r18) # 156c8 -stw r18, 0x000c(r17) # 156cc -li r17, 0x00 # 156d0 -stw r17, 0x0008(r16) # 156d4 -stw r17, 0x000c(r16) # 156d8 -lbz r17, 0x0037(r31) # 156dc -cmpwi r17, 0x01 # 156e0 -bne- interrupt_blue_0x210 # 156e4 -addi r8, r31, 0x20 # 156e8 -bl major_0x130f0_0x5d8 # 156ec - -interrupt_blue_0x210: -lwz r16, 0x0e80( r1) # kdp.0xe80 # 156f0 -stw r16, -0x08e4( r1) # kdp.-0x8e4 # 156f4 - -interrupt_blue_0x218: -li r16, 0x00 # 156f8 -stb r16, 0x0019(r31) # 156fc -mr r8, r31 # 15700 -bl major_0x13ed8 # 15704 -mr r8, r31 # 15708 -bl major_0x149d4_0x8 # 1570c - -interrupt_blue_0x230: -mr r8, r31 # 15710 -bl major_0x14af8 # 15714 -sync # 15718 -lwz r16, -0x0b50( r1) # kdp.sch_lock # 1571c -cmpwi cr1, r16, 0x00 # 15720 -li r16, 0x00 # 15724 -bne+ cr1, interrupt_blue_0x254 # 15728 -mflr r16 # 1572c -bl panic # 15730 - -interrupt_blue_0x254: -stw r16, -0x0b50( r1) # kdp.sch_lock # 15734 - -# r6 = ewa -bl restore_registers_from_r14 # 15738 -b skeleton_key # 1573c - - - -/*********************************************************** - - NKPropogateExternalInterrupt - -************************************************************ - -syscall 122 - -************************************************************ - -Xrefs: -syscall - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -.align 6 # 15740 - -NKPropogateExternalInterrupt: /* < outside referer */ -rlwinm. r8, r7, 0, 10, 10 # 15740 -cmplwi cr1, r3, 0x07 # 15744 -bne- NKPropogateExternalInterrupt_0x4c # 15748 -bgt- cr1, NKPropogateExternalInterrupt_0x50 # 1574c -mr r8, r8 # 15750 -mr r9, r9 # 15754 -addi r8, r1, -0xb70 # kdp.pih_lock # 15758 - -# r8 = lock -bl lock # 1575c -mr r8, r8 # 15760 -mr r9, r9 # 15764 -lwz r23, 0x067c( r1) # kdp.0x67c # 15768 -lbz r28, 0x0001(r23) # 1576c -cmpw r3, r28 # 15770 -ble- NKPropogateExternalInterrupt_0x3c # 15774 -mr r28, r3 # 15778 - -NKPropogateExternalInterrupt_0x3c: -li r27, 0x00 # 1577c -li r3, 0x00 # 15780 -bl major_0x15794_0x1c # 15784 -b interrupt_blue_0xc # 15788 - -NKPropogateExternalInterrupt_0x4c: -b syscall_return_kMPInsufficientResourcesErr # 1578c - -NKPropogateExternalInterrupt_0x50: -b syscall_return_paramErr # 15790 - - - -/*********************************************************** - - major_0x15794 - -************************************************************ - -Xrefs: -interrupt_blue -NKPropogateExternalInterrupt - -***********************************************************/ - -major_0x15794: /* < outside referer */ -stw r14, 0x0174( r6) # 15794 -stw r15, 0x017c( r6) # 15798 -stw r16, 0x0184( r6) # 1579c -stw r17, 0x018c( r6) # 157a0 -stw r18, 0x0194( r6) # 157a4 -stw r19, 0x019c( r6) # 157a8 -blr # 157ac - -major_0x15794_0x1c: /* < outside referer */ -lwz r14, 0x0174( r6) # 157b0 -lwz r15, 0x017c( r6) # 157b4 -lwz r16, 0x0184( r6) # 157b8 -lwz r17, 0x018c( r6) # 157bc -lwz r18, 0x0194( r6) # 157c0 -lwz r19, 0x019c( r6) # 157c4 -blr # 157c8 - - - -/*********************************************************** - - major_0x157cc - -***********************************************************/ - -.long 0x48000034 # 157cc -.long 0x60000000 # 157d0 -.long 0x60000000 # 157d4 -.long 0x60000000 # 157d8 -.long 0x60000000 # 157dc -.long 0x60000000 # 157e0 -.long 0x60000000 # 157e4 -.long 0x60000000 # 157e8 -.long 0x60000000 # 157ec -.long 0x60000000 # 157f0 -.long 0x60000000 # 157f4 -.long 0x60000000 # 157f8 -.long 0x60000000 # 157fc - - - -/*********************************************************** - - machine_specific_lut - -***********************************************************/ - -.align 11 # 15800 - -machine_specific_lut: /* < outside referer */ -.long 0x00010202 # 15800 -.long 0x04040404 # 15804 -.long 0x03030303 # 15808 -.long 0x04040404 # 1580c -.long 0x04040404 # 15810 -.long 0x04040404 # 15814 -.long 0x04040404 # 15818 -.long 0x04040404 # 1581c -.long 0x07070707 # 15820 -.long 0x07070707 # 15824 -.long 0x07070707 # 15828 -.long 0x07070707 # 1582c -.long 0x07070707 # 15830 -.long 0x07070707 # 15834 -.long 0x07070707 # 15838 -.long 0x07070707 # 1583c - - - -/*********************************************************** - - pdm_pih_01 - -************************************************************ - -Piltdown Man = first ("G1") Power Macs. NuBus. Models 61xx, 71xx, 81xx. - -************************************************************ - -Xrefs: -pih_indirect - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -.align 6 # 15840 - -pdm_pih_01: /* < outside referer */ -mr r8, r8 # 15840 -mr r9, r9 # 15844 -addi r8, r1, -0xb70 # kdp.pih_lock # 15848 - -# r8 = lock -bl lock # 1584c -mr r8, r8 # 15850 -mr r9, r9 # 15854 - -# r6 = ewa -bl save_registers_from_r20 # 15858 -# r8 = sprg0 (not used by me) - -addi r9, r1, -0x750 # kdp.-0x750 # 1585c -andis. r8, r11, 0x02 # 15860 -mfspr r30, 275/*sprg3*/ # 15864 -bne- pdm_pih_01_0x38 # 15868 -lwz r21, 0x0e80( r1) # kdp.0xe80 # 1586c -addi r21, r21, 0x01 # 15870 -stw r21, 0x0e80( r1) # kdp.0xe80 # 15874 - -pdm_pih_01_0x38: -mtspr 275/*sprg3*/, r9 # 15878 -lis r22, 0x50f3 # 1587c -mfmsr r23 # 15880 -ori r20, r23, 0x10 # 15884 -lwz r25, -0x03fc( r1) # kdp.-0x3fc # 15888 -rlwinm r24, r22, 6, 26, 29 # 1588c -addi r25, r25, 0x30 # 15890 -mfsrin r21, r22 # 15894 -lwzx r24, r25, r24 # 15898 -mtsrin r24, r22 # 1589c -isync # 158a0 -mtmsr r20 # 158a4 -isync # 158a8 -li r20, 0xc0 # 158ac -stb r20, -0x6000(r22) # 158b0 -eieio # 158b4 -lbz r20, -0x6000(r22) # 158b8 -mtmsr r23 # 158bc -isync # 158c0 -lwz r23, 0x064c( r1) # kdp.phys_kern_base # 158c4 -rlwimi r23, r20, 0, 26, 31 # 158c8 -lis r28, machine_specific_lut@h # 158cc -ori r28, r28, machine_specific_lut@l # 158d0 -lbzx r28, r28, r23 # 158d4 -mtsrin r21, r22 # 158d8 -isync # 158dc - -# r1 = kdp -b interrupt_blue # 158e0 - - - -/*********************************************************** - - major_0x158e4 - -***********************************************************/ - -.long 0x4800001c # 158e4 -.long 0x60000000 # 158e8 -.long 0x60000000 # 158ec -.long 0x60000000 # 158f0 -.long 0x60000000 # 158f4 -.long 0x60000000 # 158f8 -.long 0x60000000 # 158fc - - - -/*********************************************************** - - pbx_pih_03 - -************************************************************ - -PBX = NuBus PowerBooks. Possibly not including the 5300? - -************************************************************ - -Xrefs: -pih_indirect - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -.align 8 # 15900 - -pbx_pih_03: /* < outside referer */ -mr r8, r8 # 15900 -mr r9, r9 # 15904 -addi r8, r1, -0xb70 # kdp.pih_lock # 15908 - -# r8 = lock -bl lock # 1590c -mr r8, r8 # 15910 -mr r9, r9 # 15914 - -# r6 = ewa -bl save_registers_from_r20 # 15918 -# r8 = sprg0 (not used by me) - -addi r9, r1, -0x750 # kdp.-0x750 # 1591c -andis. r8, r11, 0x02 # 15920 -mfspr r30, 275/*sprg3*/ # 15924 -bne- pbx_pih_03_0x38 # 15928 -lwz r21, 0x0e80( r1) # kdp.0xe80 # 1592c -addi r21, r21, 0x01 # 15930 -stw r21, 0x0e80( r1) # kdp.0xe80 # 15934 - -pbx_pih_03_0x38: -mtspr 275/*sprg3*/, r9 # 15938 -lis r22, 0x50f3 # 1593c -mfmsr r23 # 15940 -lwz r25, -0x03fc( r1) # kdp.-0x3fc # 15944 -rlwinm r24, r22, 6, 26, 29 # 15948 -addi r25, r25, 0x30 # 1594c -mfsrin r21, r22 # 15950 -lwzx r24, r25, r24 # 15954 -mtsrin r24, r22 # 15958 -isync # 1595c -ori r20, r23, 0x10 # 15960 -mtmsr r20 # 15964 -isync # 15968 -lwz r20, -0x6000(r22) # 1596c -ori r20, r20, 0x80 # 15970 -stw r20, -0x6000(r22) # 15974 -eieio # 15978 -lwz r20, -0x6000(r22) # 1597c -rlwimi r20, r20, 3, 26, 28 # 15980 -stw r20, -0x6000(r22) # 15984 -eieio # 15988 -mr r28, r20 # 1598c -mtmsr r23 # 15990 -isync # 15994 -mtsrin r21, r22 # 15998 -isync # 1599c -clrlwi r28, r28, 0x1d # 159a0 - -# r1 = kdp -b interrupt_blue # 159a4 - - - -/*********************************************************** - - major_0x159a8 - -***********************************************************/ - -.align 3 # 159a8 - -.long 0x48000018 # 159a8 -.long 0x60000000 # 159ac -.long 0x60000000 # 159b0 -.long 0x60000000 # 159b4 -.long 0x60000000 # 159b8 -.long 0x60000000 # 159bc - - - -/*********************************************************** - - gazelle_pih_05 - -************************************************************ - -Gazelle = later low-end "G2" Power Macs. 603 series processors. PCI. Models 54xx-55xx, 64xx-65xx. -The 54xx/64xx ROM actually identifies as Alchemy, not Gazelle, and SheepShaver considers this difference when patching the ROM Nanokernels. But, Wikipedia describes these machines as minor upgrades, EveryMac calls them Gazelle, and they use the same PIH type. - -************************************************************ - -Xrefs: -pih_indirect - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -.align 6 # 159c0 - -gazelle_pih_05: /* < outside referer */ -mr r8, r8 # 159c0 -mr r9, r9 # 159c4 -addi r8, r1, -0xb70 # kdp.pih_lock # 159c8 - -# r8 = lock -bl lock # 159cc -mr r8, r8 # 159d0 -mr r9, r9 # 159d4 - -# r6 = ewa -bl save_registers_from_r20 # 159d8 -# r8 = sprg0 (not used by me) - -addi r9, r1, -0x750 # kdp.-0x750 # 159dc -andis. r8, r11, 0x02 # 159e0 -mfspr r30, 275/*sprg3*/ # 159e4 -bne- gazelle_pih_05_0x38 # 159e8 -lwz r21, 0x0e80( r1) # kdp.0xe80 # 159ec -addi r21, r21, 0x01 # 159f0 -stw r21, 0x0e80( r1) # kdp.0xe80 # 159f4 - -gazelle_pih_05_0x38: -mtspr 275/*sprg3*/, r9 # 159f8 -lis r22, -0xd00 # 159fc -mfmsr r20 # 15a00 -ori r23, r20, 0x10 # 15a04 -lwz r25, -0x03fc( r1) # kdp.-0x3fc # 15a08 -rlwinm r24, r22, 6, 26, 29 # 15a0c -addi r25, r25, 0x30 # 15a10 -mfsrin r21, r22 # 15a14 -lwzx r24, r25, r24 # 15a18 -mtsrin r24, r22 # 15a1c -isync # 15a20 -mtmsr r23 # 15a24 -isync # 15a28 -li r26, 0x20 # 15a2c -lwbrx r27, r26, r22 # 15a30 -rlwinm r27, r27, 1, 1, 1 # 15a34 -eieio # 15a38 -lis r23, -0x8000 # 15a3c -li r26, 0x28 # 15a40 -stwbrx r23, r26, r22 # 15a44 -eieio # 15a48 -li r26, 0x24 # 15a4c -lwbrx r23, r26, r22 # 15a50 -eieio # 15a54 -rlwinm r28, r23, 1, 1, 1 # 15a58 -and r28, r27, r28 # 15a5c -or r23, r28, r23 # 15a60 -stwbrx r23, r26, r22 # 15a64 -eieio # 15a68 -li r26, 0x2c # 15a6c -lwbrx r26, r26, r22 # 15a70 -eieio # 15a74 -rlwimi r26, r23, 0, 1, 1 # 15a78 -and r23, r26, r23 # 15a7c -mtmsr r20 # 15a80 -isync # 15a84 -andis. r28, r23, 0x10 # 15a88 -li r28, 0x07 # 15a8c -bne- gazelle_pih_05_0x104 # 15a90 -rlwinm r28, r23, 0, 15, 16 # 15a94 -rlwimi. r28, r23, 0, 22, 31 # 15a98 -li r28, 0x04 # 15a9c -bne- gazelle_pih_05_0x104 # 15aa0 -andis. r28, r23, 0x5fca # 15aa4 -rlwimi. r28, r23, 0, 17, 20 # 15aa8 -li r28, 0x02 # 15aac -bne- gazelle_pih_05_0x104 # 15ab0 -andis. r28, r23, 0x04 # 15ab4 -li r28, 0x01 # 15ab8 -bne- gazelle_pih_05_0x104 # 15abc -li r28, 0x00 # 15ac0 - -gazelle_pih_05_0x104: -mtsrin r21, r22 # 15ac4 -isync # 15ac8 - -# r1 = kdp -b interrupt_blue # 15acc - - - -/*********************************************************** - - major_0x15ad0 - -***********************************************************/ - -.align 4 # 15ad0 - -.long 0x48000030 # 15ad0 -.long 0x60000000 # 15ad4 -.long 0x60000000 # 15ad8 -.long 0x60000000 # 15adc -.long 0x60000000 # 15ae0 -.long 0x60000000 # 15ae4 -.long 0x60000000 # 15ae8 -.long 0x60000000 # 15aec -.long 0x60000000 # 15af0 -.long 0x60000000 # 15af4 -.long 0x60000000 # 15af8 -.long 0x60000000 # 15afc - - - -/*********************************************************** - - tnt_pih_02 - -************************************************************ - -TNT = High-end and mid-range "G2" Power Macs. PCI. 603 and 604 series processors. Models 7200-7600, 8500-8600, 9500-9600. - -************************************************************ - -Xrefs: -pih_indirect - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -.align 8 # 15b00 - -tnt_pih_02: /* < outside referer */ -mr r8, r8 # 15b00 -mr r9, r9 # 15b04 -addi r8, r1, -0xb70 # kdp.pih_lock # 15b08 - -# r8 = lock -bl lock # 15b0c -mr r8, r8 # 15b10 -mr r9, r9 # 15b14 - -# r6 = ewa -bl save_registers_from_r20 # 15b18 -# r8 = sprg0 (not used by me) - -addi r9, r1, -0x750 # kdp.-0x750 # 15b1c -andis. r8, r11, 0x02 # 15b20 -mfspr r30, 275/*sprg3*/ # 15b24 -bne- tnt_pih_02_0x38 # 15b28 -lwz r21, 0x0e80( r1) # kdp.0xe80 # 15b2c -addi r21, r21, 0x01 # 15b30 -stw r21, 0x0e80( r1) # kdp.0xe80 # 15b34 - -tnt_pih_02_0x38: -mtspr 275/*sprg3*/, r9 # 15b38 -lis r22, -0xd00 # 15b3c -mfmsr r20 # 15b40 -ori r23, r20, 0x10 # 15b44 -lwz r25, -0x03fc( r1) # kdp.-0x3fc # 15b48 -rlwinm r24, r22, 6, 26, 29 # 15b4c -addi r25, r25, 0x30 # 15b50 -mfsrin r21, r22 # 15b54 -lwzx r24, r25, r24 # 15b58 -mtsrin r24, r22 # 15b5c -isync # 15b60 -mtmsr r23 # 15b64 -isync # 15b68 -lis r23, -0x8000 # 15b6c -li r26, 0x28 # 15b70 -stwbrx r23, r26, r22 # 15b74 -eieio # 15b78 -li r26, 0x24 # 15b7c -lwbrx r23, r26, r22 # 15b80 -li r26, 0x2c # 15b84 -lwbrx r26, r26, r22 # 15b88 -and r23, r26, r23 # 15b8c -eieio # 15b90 -mtmsr r20 # 15b94 -isync # 15b98 -rlwinm. r28, r23, 0, 11, 11 # 15b9c -li r28, 0x07 # 15ba0 -bne- tnt_pih_02_0xd8 # 15ba4 -rlwinm r28, r23, 0, 15, 16 # 15ba8 -rlwimi. r28, r23, 0, 21, 31 # 15bac -li r28, 0x04 # 15bb0 -bne- tnt_pih_02_0xd8 # 15bb4 -rlwinm. r28, r23, 0, 17, 17 # 15bb8 -li r28, 0x03 # 15bbc -bne- tnt_pih_02_0xd8 # 15bc0 -andis. r28, r23, 0x7fea # 15bc4 -rlwimi. r28, r23, 0, 18, 19 # 15bc8 -li r28, 0x02 # 15bcc -bne- tnt_pih_02_0xd8 # 15bd0 -rlwinm. r28, r23, 14, 31, 31 # 15bd4 - -tnt_pih_02_0xd8: -mtsrin r21, r22 # 15bd8 -isync # 15bdc - -# r1 = kdp -b interrupt_blue # 15be0 - - - -/*********************************************************** - - major_0x15be4 - -***********************************************************/ - -.long 0x4800001c # 15be4 -.long 0x60000000 # 15be8 -.long 0x60000000 # 15bec -.long 0x60000000 # 15bf0 -.long 0x60000000 # 15bf4 -.long 0x60000000 # 15bf8 -.long 0x60000000 # 15bfc - - - -/*********************************************************** - - gossamer_pih_07 - -************************************************************ - -Gossamer = beige G3. PIH 07 also used for GRX = OldWorld PowerBook G3 Series. - -************************************************************ - -Xrefs: -pih_indirect - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -.align 10 # 15c00 - -gossamer_pih_07: /* < outside referer */ -mr r8, r8 # 15c00 -mr r9, r9 # 15c04 -addi r8, r1, -0xb70 # kdp.pih_lock # 15c08 - -# r8 = lock -bl lock # 15c0c -mr r8, r8 # 15c10 -mr r9, r9 # 15c14 - -# r6 = ewa -bl save_registers_from_r20 # 15c18 -# r8 = sprg0 (not used by me) - -addi r9, r1, -0x750 # kdp.-0x750 # 15c1c -andis. r8, r11, 0x02 # 15c20 -mfspr r30, 275/*sprg3*/ # 15c24 -bne- gossamer_pih_07_0x38 # 15c28 -lwz r21, 0x0e80( r1) # kdp.0xe80 # 15c2c -addi r21, r21, 0x01 # 15c30 -stw r21, 0x0e80( r1) # kdp.0xe80 # 15c34 - -gossamer_pih_07_0x38: -mtspr 275/*sprg3*/, r9 # 15c38 -mfmsr r20 # 15c3c -ori r23, r20, 0x10 # 15c40 -lis r22, -0xd00 # 15c44 -lwz r25, -0x03fc( r1) # kdp.-0x3fc # 15c48 -rlwinm r24, r22, 6, 26, 29 # 15c4c -addi r25, r25, 0x30 # 15c50 -mfsrin r21, r22 # 15c54 -lwzx r24, r25, r24 # 15c58 -mtsrin r24, r22 # 15c5c -isync # 15c60 -mtmsr r23 # 15c64 -isync # 15c68 -lis r23, -0x8000 # 15c6c -li r25, 0x28 # 15c70 -stwbrx r23, r25, r22 # 15c74 -eieio # 15c78 -li r25, 0x24 # 15c7c -lwbrx r23, r25, r22 # 15c80 -li r25, 0x2c # 15c84 -lwbrx r25, r25, r22 # 15c88 -and r23, r25, r23 # 15c8c -eieio # 15c90 -lis r24, -0x8000 # 15c94 -li r25, 0x18 # 15c98 -stwbrx r24, r25, r22 # 15c9c -eieio # 15ca0 -li r25, 0x14 # 15ca4 -lwbrx r24, r25, r22 # 15ca8 -li r25, 0x1c # 15cac -lwbrx r25, r25, r22 # 15cb0 -and r24, r25, r24 # 15cb4 -eieio # 15cb8 -mtmsr r20 # 15cbc -isync # 15cc0 -rlwinm. r28, r23, 0, 11, 11 # 15cc4 -li r28, 0x07 # 15cc8 -bne- gossamer_pih_07_0x118 # 15ccc -rlwinm r28, r23, 0, 15, 16 # 15cd0 -rlwimi. r28, r23, 0, 22, 31 # 15cd4 -li r28, 0x04 # 15cd8 -bne- gossamer_pih_07_0x118 # 15cdc -clrlwi. r28, r24, 0x1e # 15ce0 -li r28, 0x04 # 15ce4 -bne- gossamer_pih_07_0x118 # 15ce8 -rlwinm. r28, r24, 0, 21, 21 # 15cec -li r28, 0x03 # 15cf0 -bne- gossamer_pih_07_0x118 # 15cf4 -andis. r28, r23, 0x3fea # 15cf8 -rlwimi. r28, r23, 0, 17, 20 # 15cfc -li r28, 0x02 # 15d00 -bne- gossamer_pih_07_0x118 # 15d04 -rlwinm. r28, r24, 0, 20, 20 # 15d08 -li r28, 0x01 # 15d0c -bne- gossamer_pih_07_0x118 # 15d10 -rlwinm. r28, r23, 14, 31, 31 # 15d14 - -gossamer_pih_07_0x118: -mtsrin r21, r22 # 15d18 -isync # 15d1c - -# r1 = kdp -b interrupt_blue # 15d20 - - - -/*********************************************************** - - major_0x15d24 - -***********************************************************/ - -.long 0x4800001c # 15d24 -.long 0x60000000 # 15d28 -.long 0x60000000 # 15d2c -.long 0x60000000 # 15d30 -.long 0x60000000 # 15d34 -.long 0x60000000 # 15d38 -.long 0x60000000 # 15d3c - - - -/*********************************************************** - - nwpbg3_pih_0a - -************************************************************ - -Only ever seen this on Mikey's (NewWorld) Lombard. So apparently the Trampoline can also change the ROM's default PIH. - -************************************************************ - -Xrefs: -pih_indirect - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -.align 6 # 15d40 - -nwpbg3_pih_0a: /* < outside referer */ -mr r8, r8 # 15d40 -mr r9, r9 # 15d44 -addi r8, r1, -0xb70 # kdp.pih_lock # 15d48 - -# r8 = lock -bl lock # 15d4c -mr r8, r8 # 15d50 -mr r9, r9 # 15d54 - -# r6 = ewa -bl save_registers_from_r20 # 15d58 -# r8 = sprg0 (not used by me) - -addi r9, r1, -0x750 # kdp.-0x750 # 15d5c -andis. r8, r11, 0x02 # 15d60 -mfspr r30, 275/*sprg3*/ # 15d64 -bne- nwpbg3_pih_0a_0x38 # 15d68 -lwz r21, 0x0e80( r1) # kdp.0xe80 # 15d6c -addi r21, r21, 0x01 # 15d70 -stw r21, 0x0e80( r1) # kdp.0xe80 # 15d74 - -nwpbg3_pih_0a_0x38: -mtspr 275/*sprg3*/, r9 # 15d78 -lwz r26, -0x0020( r1) # kdp.irp # 15d7c -mfmsr r20 # 15d80 -ori r23, r20, 0x10 # 15d84 -lwz r22, 0x0ec0(r26) # 15d88 -lwz r25, -0x03fc( r1) # kdp.-0x3fc # 15d8c -rlwinm r24, r22, 6, 26, 29 # 15d90 -addi r25, r25, 0x30 # 15d94 -mfsrin r21, r22 # 15d98 -lwzx r24, r25, r24 # 15d9c -mtsrin r24, r22 # 15da0 -isync # 15da4 -mtmsr r23 # 15da8 -isync # 15dac -li r23, 0x80 # 15db0 -stw r23, 0x0018(r22) # 15db4 -eieio # 15db8 -lwz r23, 0x0014(r22) # 15dbc -lwz r25, 0x001c(r22) # 15dc0 -and r23, r25, r23 # 15dc4 -lwz r24, 0x0004(r22) # 15dc8 -lwz r25, 0x000c(r22) # 15dcc -and r24, r25, r24 # 15dd0 -mtmsr r20 # 15dd4 -isync # 15dd8 -stw r23, 0x0f28(r26) # 15ddc -stw r24, 0x0f2c(r26) # 15de0 -lis r25, 0x00 # 15de4 -ori r25, r25, 0x3f60 # 15de8 -li r28, 0x07 # 15dec - -nwpbg3_pih_0a_0xb0: -lwz r26, 0x001c(r25) # 15df0 -and. r26, r24, r26 # 15df4 -bne- nwpbg3_pih_0a_0xd4 # 15df8 -lwzu r26, -0x0004(r25) # 15dfc -and. r26, r23, r26 # 15e00 -bne- nwpbg3_pih_0a_0xd4 # 15e04 -addi r28, r28, -0x01 # 15e08 -cmplwi r28, 0x00 # 15e0c -bne+ nwpbg3_pih_0a_0xb0 # 15e10 - -nwpbg3_pih_0a_0xd4: -mtsrin r21, r22 # 15e14 -isync # 15e18 - -# r1 = kdp -b interrupt_blue # 15e1c - - - -/*********************************************************** - - major_0x15e20 - -***********************************************************/ - -.align 5 # 15e20 - -.long 0x48000020 # 15e20 -.long 0x60000000 # 15e24 -.long 0x60000000 # 15e28 -.long 0x60000000 # 15e2c -.long 0x60000000 # 15e30 -.long 0x60000000 # 15e34 -.long 0x60000000 # 15e38 -.long 0x60000000 # 15e3c - - - -/*********************************************************** - - cordyceps_pih_04 - -************************************************************ - -Cordyceps = early low-end "G2" Power Macs. 603 series processors. PCI. Models 52xx-53xx, 62xx-63xx. - -************************************************************ - -Xrefs: -pih_indirect - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -.align 6 # 15e40 - -cordyceps_pih_04: /* < outside referer */ -mr r8, r8 # 15e40 -mr r9, r9 # 15e44 -addi r8, r1, -0xb70 # kdp.pih_lock # 15e48 - -# r8 = lock -bl lock # 15e4c -mr r8, r8 # 15e50 -mr r9, r9 # 15e54 - -# r6 = ewa -bl save_registers_from_r20 # 15e58 -# r8 = sprg0 (not used by me) - -addi r9, r1, -0x750 # kdp.-0x750 # 15e5c -andis. r8, r11, 0x02 # 15e60 -mfspr r30, 275/*sprg3*/ # 15e64 -bne- cordyceps_pih_04_0x38 # 15e68 -lwz r21, 0x0e80( r1) # kdp.0xe80 # 15e6c -addi r21, r21, 0x01 # 15e70 -stw r21, 0x0e80( r1) # kdp.0xe80 # 15e74 - -cordyceps_pih_04_0x38: -mtspr 275/*sprg3*/, r9 # 15e78 -lis r22, 0x5300 # 15e7c -mfmsr r23 # 15e80 -mfspr r26, 536/*dbat0u*/ # 15e84 -mfspr r27, 537/*dbat0l*/ # 15e88 -ori r20, r22, 0x03 # 15e8c -mtspr 536/*dbat0u*/, r20 # 15e90 -ori r20, r22, 0x2a # 15e94 -mtspr 537/*dbat0l*/, r20 # 15e98 -isync # 15e9c -ori r20, r23, 0x10 # 15ea0 -mtmsr r20 # 15ea4 -isync # 15ea8 -lwz r20, 0x001c(r22) # 15eac -sync # 15eb0 -lis r20, 0x00 # 15eb4 -stw r20, 0x001c(r22) # 15eb8 -eieio # 15ebc -lwz r20, 0x001c(r22) # 15ec0 -lwz r20, 0x001c(r22) # 15ec4 -sync # 15ec8 -lwz r28, 0x0024(r22) # 15ecc -sync # 15ed0 -xori r28, r28, 0x07 # 15ed4 -mtmsr r23 # 15ed8 -isync # 15edc -mtspr 537/*dbat0l*/, r27 # 15ee0 -mtspr 536/*dbat0u*/, r26 # 15ee4 -clrlwi r28, r28, 0x1d # 15ee8 - -# r1 = kdp -b interrupt_blue # 15eec - - - -/*********************************************************** - - major_0x15ef0 - -***********************************************************/ - -.align 4 # 15ef0 - -.long 0x48000010 # 15ef0 -.long 0x60000000 # 15ef4 -.long 0x60000000 # 15ef8 -.long 0x60000000 # 15efc - - - -/*********************************************************** - - newworld_pih_06 - -************************************************************ - -Trampoline leaves ConfigInfo value unchanged. PIH 06 also specified in Pippin ROM. - -************************************************************ - -Xrefs: -pih_indirect - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -.align 8 # 15f00 - -newworld_pih_06: /* < outside referer */ -mr r8, r8 # 15f00 -mr r9, r9 # 15f04 -addi r8, r1, -0xb70 # kdp.pih_lock # 15f08 - -# r8 = lock -bl lock # 15f0c -mr r8, r8 # 15f10 -mr r9, r9 # 15f14 - -# r6 = ewa -bl save_registers_from_r20 # 15f18 -# r8 = sprg0 (not used by me) - -addi r9, r1, -0x750 # kdp.-0x750 # 15f1c -andis. r8, r11, 0x02 # 15f20 -mfspr r30, 275/*sprg3*/ # 15f24 -bne- newworld_pih_06_0x38 # 15f28 -lwz r21, 0x0e80( r1) # kdp.0xe80 # 15f2c -addi r21, r21, 0x01 # 15f30 -stw r21, 0x0e80( r1) # kdp.0xe80 # 15f34 - -newworld_pih_06_0x38: -mtspr 275/*sprg3*/, r9 # 15f38 -mfmsr r23 # 15f3c -lwz r20, -0x0020( r1) # kdp.irp # 15f40 -lhz r27, 0x0910( r1) # kdp.0x910 # 15f44 -lwz r22, 0x0f18(r20) # 15f48 -li r28, 0x00 # 15f4c -lwz r25, -0x03fc( r1) # kdp.-0x3fc # 15f50 -rlwinm r24, r22, 6, 26, 29 # 15f54 -addi r25, r25, 0x30 # 15f58 -mfsrin r21, r22 # 15f5c -lwzx r24, r25, r24 # 15f60 -mtsrin r24, r22 # 15f64 -isync # 15f68 -cmpwi cr1, r27, 0x00 # 15f6c -andis. r26, r11, 0x02 # 15f70 -beq- cr1, newworld_pih_06_0x23c # 15f74 -beq- newworld_pih_06_0x150 # 15f78 -lbz r29, 0x0f93(r20) # 15f7c -stb r28, 0x0f93(r20) # 15f80 -addi r26, r1, 0x912 # kdp.0x912 # 15f84 -cmpwi cr1, r29, 0x07 # 15f88 -cmplwi r27, 0x01 # 15f8c -bne+ cr1, newworld_pih_06_0xa8 # 15f90 -addi r27, r27, -0x01 # 15f94 -ble- newworld_pih_06_0x1fc # 15f98 -lbzx r26, r26, r27 # 15f9c -lbz r28, 0x3f00(r26) # 15fa0 -b newworld_pih_06_0x1fc # 15fa4 - -newworld_pih_06_0xa8: -cmplwi r27, 0x01 # 15fa8 -addi r27, r27, -0x01 # 15fac -ble- newworld_pih_06_0x1fc # 15fb0 -add r26, r26, r27 # 15fb4 -addi r27, r20, 0xf93 # 15fb8 -lbz r24, 0x0000(r26) # 15fbc - -newworld_pih_06_0xc0: -lbzu r28, -0x0001(r27) # 15fc0 -cmpw r24, r28 # 15fc4 -cmpwi cr1, r28, 0xfe # 15fc8 -beq- newworld_pih_06_0xdc # 15fcc -bne+ cr1, newworld_pih_06_0xc0 # 15fd0 -li r28, -0x01 # 15fd4 -b newworld_pih_06_0x1fc # 15fd8 - -newworld_pih_06_0xdc: -li r28, 0xff # 15fdc -stb r28, 0x0000(r27) # 15fe0 -addi r27, r20, 0xf28 # 15fe4 -rlwinm r20, r24, 29, 29, 29 # 15fe8 -clrlwi r24, r24, 0x1b # 15fec -lis r28, -0x8000 # 15ff0 -add r27, r27, r20 # 15ff4 -srw r28, r28, r24 # 15ff8 -lwz r24, 0x0000(r27) # 15ffc -andc r24, r24, r28 # 16000 -addi r26, r26, -0x01 # 16004 -stw r24, 0x0000(r27) # 16008 -lbz r26, 0x0000(r26) # 1600c -li r28, 0x00 # 16010 -ori r29, r23, 0x10 # 16014 -lis r27, 0x02 # 16018 -ori r27, r27, 0xb0 # 1601c -mtmsr r29 # 16020 -isync # 16024 -stwx r28, r22, r27 # 16028 -mtmsr r23 # 1602c -isync # 16030 -lhz r27, 0x0910( r1) # kdp.0x910 # 16034 -cmpwi r26, 0xff # 16038 -addi r27, r27, -0x01 # 1603c -beq+ newworld_pih_06_0x148 # 16040 -lbz r28, 0x3f00(r26) # 16044 - -newworld_pih_06_0x148: -sth r27, 0x0910( r1) # kdp.0x910 # 16048 -b newworld_pih_06_0x1fc # 1604c - -newworld_pih_06_0x150: -lhz r27, 0x0f88(r20) # 16050 -ori r20, r23, 0x10 # 16054 -lis r26, 0x02 # 16058 -ori r26, r26, 160 # 1605c -mtmsr r20 # 16060 -isync # 16064 -lwbrx r26, r22, r26 # 16068 -clrlwi r26, r26, 0x14 # 1606c -cmplwi r26, 0x40 # 16070 -cmplwi cr1, r26, 0x41 # 16074 -li r29, 0x00 # 16078 -beq- newworld_pih_06_0x208 # 1607c -bge- cr1, newworld_pih_06_0x218 # 16080 -cmplw r26, r27 # 16084 -lis r27, 0x02 # 16088 -ori r27, r27, 0xb0 # 1608c -bne+ newworld_pih_06_0x198 # 16090 -stwx r29, r22, r27 # 16094 - -newworld_pih_06_0x198: -mtmsr r23 # 16098 -isync # 1609c -lwz r20, -0x0020( r1) # kdp.irp # 160a0 -lbz r28, 0x3f00(r26) # 160a4 -cmpwi r28, 0x07 # 160a8 -bne+ newworld_pih_06_0x1b8 # 160ac -stb r28, 0x0f93(r20) # 160b0 -b newworld_pih_06_0x1fc # 160b4 - -newworld_pih_06_0x1b8: -lhz r27, 0x0910( r1) # kdp.0x910 # 160b8 -add r24, r27, r1 # 160bc -addi r27, r27, 0x01 # 160c0 -stb r26, 0x0912(r24) # 160c4 -rlwinm r25, r26, 29, 29, 29 # 160c8 -clrlwi r26, r26, 0x1b # 160cc -lis r24, -0x8000 # 160d0 -sth r27, 0x0910( r1) # kdp.0x910 # 160d4 -addi r27, r20, 0xf28 # 160d8 -add r27, r27, r25 # 160dc -lwz r25, 0x0000(r27) # 160e0 -srw r24, r24, r26 # 160e4 -or r25, r25, r24 # 160e8 -li r24, 0xff # 160ec -stw r25, 0x0000(r27) # 160f0 -addi r27, r20, 0xf8c # 160f4 -stbx r24, r28, r27 # 160f8 - -newworld_pih_06_0x1fc: -mtsrin r21, r22 # 160fc -isync # 16100 - -# r1 = kdp -b interrupt_blue # 16104 - -newworld_pih_06_0x208: -mtmsr r23 # 16108 -isync # 1610c -li r28, -0x01 # 16110 -b newworld_pih_06_0x1fc # 16114 - -newworld_pih_06_0x218: -lis r27, 0x02 # 16118 -ori r27, r27, 0xb0 # 1611c -li r29, 0x00 # 16120 -stwx r29, r22, r27 # 16124 -eieio # 16128 -mtmsr r23 # 1612c -isync # 16130 -li r28, -0x01 # 16134 -b newworld_pih_06_0x1fc # 16138 - -newworld_pih_06_0x23c: -addi r27, r27, 0x01 # 1613c -li r28, -0x01 # 16140 -sth r27, 0x0910( r1) # kdp.0x910 # 16144 -stw r28, 0x0912( r1) # kdp.0x912 # 16148 -stw r28, 0x0f90(r20) # 1614c -xoris r28, r28, 0x100 # 16150 -stw r28, 0x0f8c(r20) # 16154 -li r28, 0x00 # 16158 -b newworld_pih_06_0x1fc # 1615c - - - -/*********************************************************** - - major_0x16160 - -***********************************************************/ - -.align 5 # 16160 - -.long 0x48000020 # 16160 -.long 0x60000000 # 16164 -.long 0x60000000 # 16168 -.long 0x60000000 # 1616c -.long 0x60000000 # 16170 -.long 0x60000000 # 16174 -.long 0x60000000 # 16178 -.long 0x60000000 # 1617c - - - -/*********************************************************** - - unknown_pih_08 - -************************************************************ - -Xrefs: -pih_indirect - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -.align 7 # 16180 - -unknown_pih_08: /* < outside referer */ -mr r8, r8 # 16180 -mr r9, r9 # 16184 -addi r8, r1, -0xb70 # kdp.pih_lock # 16188 - -# r8 = lock -bl lock # 1618c -mr r8, r8 # 16190 -mr r9, r9 # 16194 - -# r6 = ewa -bl save_registers_from_r20 # 16198 -# r8 = sprg0 (not used by me) - -addi r9, r1, -0x750 # kdp.-0x750 # 1619c -andis. r8, r11, 0x02 # 161a0 -mfspr r30, 275/*sprg3*/ # 161a4 -bne- unknown_pih_08_0x38 # 161a8 -lwz r21, 0x0e80( r1) # kdp.0xe80 # 161ac -addi r21, r21, 0x01 # 161b0 -stw r21, 0x0e80( r1) # kdp.0xe80 # 161b4 - -unknown_pih_08_0x38: -mtspr 275/*sprg3*/, r9 # 161b8 -mfmsr r23 # 161bc -lwz r20, -0x0020( r1) # kdp.irp # 161c0 -lhz r27, 0x0910( r1) # kdp.0x910 # 161c4 -lwz r22, 0x0f18(r20) # 161c8 -li r28, 0x00 # 161cc -lwz r25, -0x03fc( r1) # kdp.-0x3fc # 161d0 -rlwinm r24, r22, 6, 26, 29 # 161d4 -addi r25, r25, 0x30 # 161d8 -mfsrin r21, r22 # 161dc -lwzx r24, r25, r24 # 161e0 -mtsrin r24, r22 # 161e4 -isync # 161e8 -cmpwi cr1, r27, 0x00 # 161ec -andis. r26, r11, 0x02 # 161f0 -beq- cr1, unknown_pih_08_0x23c # 161f4 -beq- unknown_pih_08_0x170 # 161f8 -cmplwi r27, 0x01 # 161fc -ble- unknown_pih_08_0x1f8 # 16200 -addi r27, r27, -0x01 # 16204 -addi r26, r1, 0x912 # kdp.0x912 # 16208 -add r26, r26, r27 # 1620c -addi r27, r20, 0xee0 # 16210 -lbz r24, 0x0000(r26) # 16214 -mr r29, r24 # 16218 -cmpwi r24, 0x20 # 1621c -blt+ unknown_pih_08_0xac # 16220 -addi r27, r27, 0x04 # 16224 -addi r24, r24, -0x20 # 16228 - -unknown_pih_08_0xac: -lwz r27, 0x0000(r27) # 1622c -lis r28, -0x8000 # 16230 -srw r28, r28, r24 # 16234 -and. r27, r27, r28 # 16238 -bne- unknown_pih_08_0xc8 # 1623c -li r28, -0x01 # 16240 -b unknown_pih_08_0x1f8 # 16244 - -unknown_pih_08_0xc8: -addi r27, r20, 0xec4 # 16248 -cmpwi r29, 0x20 # 1624c -blt+ unknown_pih_08_0xd8 # 16250 -addi r27, r27, 0x04 # 16254 - -unknown_pih_08_0xd8: -lwz r24, 0x0000(r27) # 16258 -andc r24, r24, r28 # 1625c -stw r24, 0x0000(r27) # 16260 -addi r27, r20, 0xee0 # 16264 -cmpwi r29, 0x20 # 16268 -blt+ unknown_pih_08_0xf4 # 1626c -addi r27, r27, 0x04 # 16270 - -unknown_pih_08_0xf4: -lwz r29, 0x0000(r27) # 16274 -andc r29, r29, r28 # 16278 -stw r29, 0x0000(r27) # 1627c -addi r26, r26, -0x01 # 16280 -lbz r26, 0x0000(r26) # 16284 -cmpwi r26, 0xff # 16288 -beq- unknown_pih_08_0x114 # 1628c -b unknown_pih_08_0x118 # 16290 - -unknown_pih_08_0x114: -li r26, 0x800 # 16294 - -unknown_pih_08_0x118: -ori r28, r23, 0x10 # 16298 -lis r27, 0x02 # 1629c -ori r27, r27, 0xb0 # 162a0 -mtmsr r28 # 162a4 -isync # 162a8 -li r28, 0x00 # 162ac -stwx r28, r22, r27 # 162b0 -eieio # 162b4 -cmpwi r26, 0x800 # 162b8 -beq- unknown_pih_08_0x158 # 162bc -lis r28, 0x01 # 162c0 -ori r28, r28, 0x00 # 162c4 -rlwinm r27, r26, 5, 16, 31 # 162c8 -add r28, r28, r27 # 162cc -lwbrx r28, r22, r28 # 162d0 -rlwinm r28, r28, 16, 28, 31 # 162d4 - -unknown_pih_08_0x158: -mtmsr r23 # 162d8 -isync # 162dc -lhz r27, 0x0910( r1) # kdp.0x910 # 162e0 -addi r27, r27, -0x01 # 162e4 -sth r27, 0x0910( r1) # kdp.0x910 # 162e8 -b unknown_pih_08_0x1f8 # 162ec - -unknown_pih_08_0x170: -ori r27, r23, 0x10 # 162f0 -lis r26, 0x02 # 162f4 -ori r26, r26, 160 # 162f8 -lis r28, 0x01 # 162fc -ori r28, r28, 0x00 # 16300 -mtmsr r27 # 16304 -isync # 16308 -lwbrx r26, r22, r26 # 1630c -clrlwi r26, r26, 0x14 # 16310 -cmplwi r26, 0x31 # 16314 -cmplwi cr1, r26, 0x28 # 16318 -beq- unknown_pih_08_0x204 # 1631c -bge- cr1, unknown_pih_08_0x214 # 16320 -rlwinm r27, r26, 5, 16, 31 # 16324 -add r28, r28, r27 # 16328 -lwbrx r28, r22, r28 # 1632c -rlwinm r28, r28, 16, 28, 31 # 16330 -mtmsr r23 # 16334 -isync # 16338 -lhz r27, 0x0910( r1) # kdp.0x910 # 1633c -add r24, r27, r1 # 16340 -addi r27, r27, 0x01 # 16344 -stb r26, 0x0912(r24) # 16348 -sth r27, 0x0910( r1) # kdp.0x910 # 1634c -addi r27, r20, 0xec4 # 16350 -cmpwi r26, 0x20 # 16354 -blt+ unknown_pih_08_0x1e4 # 16358 -addi r27, r27, 0x04 # 1635c -addi r26, r26, -0x20 # 16360 - -unknown_pih_08_0x1e4: -lwz r25, 0x0000(r27) # 16364 -lis r24, -0x8000 # 16368 -srw r24, r24, r26 # 1636c -or r25, r25, r24 # 16370 -stw r25, 0x0000(r27) # 16374 - -unknown_pih_08_0x1f8: -mtsrin r21, r22 # 16378 -isync # 1637c - -# r1 = kdp -b interrupt_blue # 16380 - -unknown_pih_08_0x204: -mtmsr r23 # 16384 -isync # 16388 -li r28, -0x01 # 1638c -b unknown_pih_08_0x1f8 # 16390 - -unknown_pih_08_0x214: -lis r27, 0x02 # 16394 -ori r27, r27, 0xb0 # 16398 -li r29, 0x00 # 1639c -stwx r29, r22, r27 # 163a0 -eieio # 163a4 -mtmsr r23 # 163a8 -isync # 163ac -li r28, 0x06 # 163b0 -li r28, -0x01 # 163b4 -b unknown_pih_08_0x1f8 # 163b8 - -unknown_pih_08_0x23c: -addi r27, r27, 0x01 # 163bc -li r28, -0x01 # 163c0 -sth r27, 0x0910( r1) # kdp.0x910 # 163c4 -stw r28, 0x0912( r1) # kdp.0x912 # 163c8 -li r28, 0x00 # 163cc -stw r28, 0x0ee4(r20) # 163d0 -stw r28, 0x0ee0(r20) # 163d4 -b unknown_pih_08_0x1f8 # 163d8 - - - -/*********************************************************** - - major_0x163dc - -***********************************************************/ - -.long 0x60000000 # 163dc - - - -/*********************************************************** - - print_string - -************************************************************ - -Not done figuring this out, with the serial and stuff. - -************************************************************ - -Xrefs: -replace_old_kernel -new_world -setup -undo_failed_kernel_replacement -lock -spinlock_what -major_0x02ccc -memretry_machine_check -major_0x03940 -major_0x04300 -reset_trap -non_skeleton_reset_trap -major_0x04c20 -major_0x08794 -NKRegisterCpuPlugin -major_0x0bb20 -major_0x0bc2c -major_0x0bccc -NKxprintf -major_0x0c070 -NKSetClockStep -NKSetClockDriftCorrection -convert_pmdts_to_areas -NKCreateAddressSpaceSub -createarea -major_0x10320 -major_0x12248 -poolextend -say_nanodebugger_activated -say_starting_timeslicing -init_rdyqs -major_0x14bcc -panic -print_xpt_info -print_sprgs -print_sprs -print_segment_registers -print_gprs -print_memory -print_memory_logical - -***********************************************************/ - -.align 5 # 163e0 - -print_string: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 163e0 -stmw r24, -0x0108( r1) # 163e4 -mflr r24 # 163e8 -mfcr r25 # 163ec -stw r24, -0x0110( r1) # 163f0 -stw r25, -0x010c( r1) # 163f4 -lwz r1, -0x0004( r1) # 163f8 -lwz r28, -0x0900( r1) # 163fc -lwz r29, 0x0edc( r1) # 16400 -mr r30, r8 # 16404 -mr r31, r9 # 16408 -addi r8, r1, -0xaf0 # 1640c - -# r8 = lock -bl lock # 16410 -mr r8, r30 # 16414 -mr r9, r31 # 16418 -cmpwi cr7, r28, 0x00 # 1641c -andi. r29, r29, 0x02 # 16420 -beq- cr7, print_string_skip_serial # 16424 -crmove r30, r2 # 16428 -beq- print_string_skip_serial # 1642c -mfmsr r31 # 16430 -bl serial_io # 16434 -bl serial_flush # 16438 - -print_string_skip_serial: -addi r8, r8, -0x01 # 1643c - -print_string_next_char: -bl serial_busywait # 16440 -lbzu r29, 0x0001( r8) # 16444 -cmpwi r29, 0x00 # 16448 -beq- print_common # 1644c -cmpwi r29, 10 # 16450 -beq- print_string_newline # 16454 -cmpwi r29, 13 # 16458 -beq- print_string_newline # 1645c -cmpwi r29, '\' # 16460 -beq- print_string_escape_code # 16464 -cmpwi r29, '^' # 16468 -bne- print_string_normal_char # 1646c - -print_string_escape_code: -lbzu r29, 0x0001( r8) # 16470 -cmpwi r29, 'n' # 16474 -beq- print_string_newline # 16478 -cmpwi r29, 'r' # 1647c -beq- print_string_newline # 16480 -cmpwi r29, 'b' # 16484 -bne- print_string_literal_backslash_or_caret # 16488 -li r29, 0x07 # 1648c -b print_string_normal_char # 16490 - -print_string_literal_backslash_or_caret: -lbzu r29, -0x0001( r8) # 16494 -addi r8, r8, 0x01 # 16498 - -print_string_normal_char: -mr r24, r29 # 1649c - -# r1 = kdp -bl screenlog_putchar # 164a0 -beq- cr7, print_string_0xe4 # 164a4 -ori r30, r31, 0x10 # 164a8 -mtmsr r30 # 164ac -isync # 164b0 -stb r24, 0x0006(r28) # 164b4 -eieio # 164b8 -mtmsr r31 # 164bc -isync # 164c0 - -print_string_0xe4: -b print_string_next_char # 164c4 - -print_string_newline: -li r29, 0x0d # 164c8 - -# r1 = kdp -bl screenlog_putchar # 164cc -li r29, 0x0a # 164d0 - -# r1 = kdp -bl screenlog_putchar # 164d4 - -# r1 = kdp -bl screenlog_redraw # 164d8 -beq- cr7, print_string_0x13c # 164dc -ori r30, r31, 0x10 # 164e0 -mtmsr r30 # 164e4 -isync # 164e8 -li r29, 0x0d # 164ec -stb r29, 0x0006(r28) # 164f0 -eieio # 164f4 - -print_string_0x118: -lbz r29, 0x0002(r28) # 164f8 -eieio # 164fc -andi. r29, r29, 0x04 # 16500 -beq+ print_string_0x118 # 16504 -li r29, 0x0a # 16508 -stb r29, 0x0006(r28) # 1650c -eieio # 16510 -mtmsr r31 # 16514 -isync # 16518 - -print_string_0x13c: -b print_string_next_char # 1651c - - - -/*********************************************************** - - print_common - -************************************************************ - -Xrefs: -print_string -print_decimal -print_digity_common -getchar -print_char - -***********************************************************/ - -.align 5 # 16520 - -print_common: /* < outside referer */ -beq- cr7, print_common_0x8c # 16520 -mtmsr r31 # 16524 -isync # 16528 -lwz r29, -0x0438( r1) # 1652c -srwi r29, r29, 8 # 16530 -mfspr r30, 22/*dec*/ # 16534 -subf r29, r29, r30 # 16538 -ori r30, r31, 0x10 # 1653c -mtmsr r30 # 16540 -isync # 16544 - -print_common_0x28: -mfspr r30, 22/*dec*/ # 16548 -subf. r30, r29, r30 # 1654c -ble- print_common_0x50 # 16550 -li r30, 0x01 # 16554 -stb r30, 0x0002(r28) # 16558 -eieio # 1655c -lbz r30, 0x0002(r28) # 16560 -eieio # 16564 -andi. r30, r30, 0x01 # 16568 -beq+ print_common_0x28 # 1656c - -print_common_0x50: -sync # 16570 -mtmsr r31 # 16574 -isync # 16578 -mfspr r30, 287/*pvr*/ # 1657c -rlwinm. r30, r30, 0, 0, 14 # 16580 -li r31, 0x00 # 16584 -beq- print_common_0x78 # 16588 -mtspr 542/*dbat3u*/, r31 # 1658c -mtspr 543/*dbat3l*/, r31 # 16590 -b print_common_0x80 # 16594 - -print_common_0x78: -mtspr 535/*ibat3l*/, r31 # 16598 -mtspr 534/*ibat3u*/, r31 # 1659c - -print_common_0x80: -isync # 165a0 -mtspr 26/*srr0*/, r26 # 165a4 -mtspr 27/*srr1*/, r27 # 165a8 - -print_common_0x8c: -sync # 165ac -lwz r30, -0x0af0( r1) # 165b0 -cmpwi cr1, r30, 0x00 # 165b4 -li r30, 0x00 # 165b8 -bne+ cr1, print_common_0xa8 # 165bc -mflr r30 # 165c0 -bl panic # 165c4 - -print_common_0xa8: -stw r30, -0x0af0( r1) # 165c8 - - - -/*********************************************************** - - print_return - -************************************************************ - -Restores registers from EWA and returns. - -************************************************************ - -Xrefs: -print_common -getchar - -***********************************************************/ - -print_return: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 165cc -lwz r24, -0x0110( r1) # 165d0 -lwz r25, -0x010c( r1) # 165d4 -mtlr r24 # 165d8 -mtcr r25 # 165dc -lmw r24, -0x0108( r1) # 165e0 -lwz r1, -0x0004( r1) # 165e4 -blr # 165e8 - - - -/*********************************************************** - - print_decimal - -************************************************************ - -Xrefs: -setup -major_0x0bed8 -major_0x0c070 -NKSetClockStep -NKSetClockDriftCorrection -poolextend - -***********************************************************/ - -print_decimal: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 165ec -stmw r24, -0x0108( r1) # 165f0 -mflr r24 # 165f4 -mfcr r25 # 165f8 -stw r24, -0x0110( r1) # 165fc -stw r25, -0x010c( r1) # 16600 -lwz r1, -0x0004( r1) # 16604 -lwz r28, -0x0900( r1) # 16608 -lwz r29, 0x0edc( r1) # 1660c -mr r30, r8 # 16610 -mr r31, r9 # 16614 -addi r8, r1, -0xaf0 # 16618 - -# r8 = lock -bl lock # 1661c -mr r8, r30 # 16620 -mr r9, r31 # 16624 -cmpwi cr7, r28, 0x00 # 16628 -andi. r29, r29, 0x02 # 1662c -beq- cr7, print_decimal_0x58 # 16630 -crmove r30, r2 # 16634 -beq- print_decimal_0x58 # 16638 -bl serial_io # 1663c -bl serial_flush # 16640 - -print_decimal_0x58: -cmpwi r8, 0x00 # 16644 -li r25, 0x2d # 16648 -blt- print_decimal_0x9c # 1664c - -print_decimal_0x64: -mr. r24, r8 # 16650 -li r25, 0x30 # 16654 -beq- print_decimal_0x9c # 16658 -lis r24, 0x3b9a # 1665c -ori r24, r24, 0xca00 # 16660 - -print_decimal_0x78: -divw. r25, r8, r24 # 16664 -bne- print_decimal_0x8c # 16668 -li r25, 0x0a # 1666c -divw r24, r24, r25 # 16670 -b print_decimal_0x78 # 16674 - -print_decimal_0x8c: -divw r29, r8, r24 # 16678 -addi r25, r29, 0x30 # 1667c -mullw r29, r29, r24 # 16680 -subf r8, r29, r8 # 16684 - -print_decimal_0x9c: -bl serial_busywait # 16688 -mr r29, r25 # 1668c - -# r1 = kdp -bl screenlog_putchar # 16690 -beq- cr7, print_decimal_0xc8 # 16694 -ori r30, r31, 0x10 # 16698 -mtmsr r30 # 1669c -isync # 166a0 -stb r25, 0x0006(r28) # 166a4 -eieio # 166a8 -mtmsr r31 # 166ac -isync # 166b0 - -print_decimal_0xc8: -cmpwi r8, 0x00 # 166b4 -bge- print_decimal_0xd8 # 166b8 -neg r8, r8 # 166bc -b print_decimal_0x64 # 166c0 - -print_decimal_0xd8: -li r25, 0x0a # 166c4 -divw. r24, r24, r25 # 166c8 -bne+ print_decimal_0x8c # 166cc -li r29, 0x20 # 166d0 - -# r1 = kdp -bl screenlog_putchar # 166d4 -beq- cr7, print_decimal_0x120 # 166d8 -ori r30, r31, 0x10 # 166dc -mtmsr r30 # 166e0 -isync # 166e4 - -print_decimal_0xfc: -lbz r30, 0x0002(r28) # 166e8 -eieio # 166ec -andi. r30, r30, 0x04 # 166f0 -beq+ print_decimal_0xfc # 166f4 -li r29, 0x20 # 166f8 -stb r29, 0x0006(r28) # 166fc -eieio # 16700 -mtmsr r31 # 16704 -isync # 16708 - -print_decimal_0x120: -b print_common # 1670c - - - -/*********************************************************** - - print_word_hex - -************************************************************ - -Xrefs: -replace_old_kernel -setup -lock -spinlock_what -major_0x02ccc -memretry_machine_check -major_0x03940 -reset_trap -major_0x04c20 -major_0x08794 -major_0x0beac -NKCreateAddressSpaceSub -createarea -poolextend -init_rdyqs -major_0x14bcc -panic -print_xpt_info -print_sprgs -print_sprs -print_segment_registers -print_gprs -print_memory -print_memory_logical - -***********************************************************/ - -.align 4 # 16710 - -print_word_hex: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 16710 -stmw r24, -0x0108( r1) # 16714 -mflr r24 # 16718 -mfcr r25 # 1671c -stw r24, -0x0110( r1) # 16720 -stw r25, -0x010c( r1) # 16724 -li r24, 0x08 # 16728 -crset 4*cr6 + eq # 1672c -b print_digity_common # 16730 - - - -/*********************************************************** - - print_short_hex - -************************************************************ - -Xrefs: -replace_old_kernel -new_world -major_0x0beac -major_0x14bcc -panic - -***********************************************************/ - -print_short_hex: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 16734 -stmw r24, -0x0108( r1) # 16738 -mflr r24 # 1673c -mfcr r25 # 16740 -stw r24, -0x0110( r1) # 16744 -stw r25, -0x010c( r1) # 16748 -li r24, 0x04 # 1674c -rotlwi r8, r8, 0x10 # 16750 -crset 4*cr6 + eq # 16754 -b print_digity_common # 16758 - - - -/*********************************************************** - - print_twodig_decimal - -************************************************************ - -Xrefs: -setup -major_0x0beac - -***********************************************************/ - -print_twodig_decimal: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 1675c -stmw r24, -0x0108( r1) # 16760 -mflr r24 # 16764 -mfcr r25 # 16768 -stw r24, -0x0110( r1) # 1676c -stw r25, -0x010c( r1) # 16770 -li r24, 0x02 # 16774 -rotlwi r8, r8, 0x18 # 16778 -crset 4*cr6 + eq # 1677c -b print_digity_common # 16780 - - - -/*********************************************************** - - print_unknown - -************************************************************ - -Xrefs: -print_memory_logical - -***********************************************************/ - -print_unknown: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 16784 -stmw r24, -0x0108( r1) # 16788 -mflr r24 # 1678c -mfcr r25 # 16790 -stw r24, -0x0110( r1) # 16794 -stw r25, -0x010c( r1) # 16798 -li r24, 0x02 # 1679c -rotlwi r8, r8, 0x18 # 167a0 -crclr 4*cr6 + eq # 167a4 -b print_digity_common # 167a8 - - - -/*********************************************************** - - print_digity_common - -************************************************************ - -Xrefs: -print_word_hex -print_short_hex -print_twodig_decimal -print_unknown - -***********************************************************/ - -print_digity_common: /* < outside referer */ -lwz r1, -0x0004( r1) # 167ac -lwz r28, -0x0900( r1) # 167b0 -lwz r29, 0x0edc( r1) # 167b4 -mr r30, r8 # 167b8 -mr r31, r9 # 167bc -addi r8, r1, -0xaf0 # 167c0 - -# r8 = lock -bl lock # 167c4 -mr r8, r30 # 167c8 -mr r9, r31 # 167cc -cmpwi cr7, r28, 0x00 # 167d0 -andi. r29, r29, 0x02 # 167d4 -beq- cr7, print_digity_common_0x40 # 167d8 -crmove r30, r2 # 167dc -beq- print_digity_common_0x40 # 167e0 -bl serial_io # 167e4 -bl serial_flush # 167e8 - -print_digity_common_0x40: -bl serial_busywait # 167ec -li r25, 0x30 # 167f0 -rlwimi r25, r8, 4, 28, 31 # 167f4 -rotlwi r8, r8, 0x04 # 167f8 -cmpwi r25, 0x39 # 167fc -ble- print_digity_common_0x5c # 16800 -addi r25, r25, 0x27 # 16804 - -print_digity_common_0x5c: -mr r29, r25 # 16808 - -# r1 = kdp -bl screenlog_putchar # 1680c -beq- cr7, print_digity_common_0x84 # 16810 -ori r30, r31, 0x10 # 16814 -mtmsr r30 # 16818 -isync # 1681c -stb r25, 0x0006(r28) # 16820 -eieio # 16824 -mtmsr r31 # 16828 -isync # 1682c - -print_digity_common_0x84: -addi r24, r24, -0x01 # 16830 -mr. r24, r24 # 16834 -bne+ print_digity_common_0x40 # 16838 -bne- cr6, print_digity_common_0xd0 # 1683c -li r29, 0x20 # 16840 - -# r1 = kdp -bl screenlog_putchar # 16844 -beq- cr7, print_digity_common_0xd0 # 16848 -ori r30, r31, 0x10 # 1684c -mtmsr r30 # 16850 -isync # 16854 - -print_digity_common_0xac: -lbz r30, 0x0002(r28) # 16858 -eieio # 1685c -andi. r30, r30, 0x04 # 16860 -beq+ print_digity_common_0xac # 16864 -li r29, 0x20 # 16868 -stb r29, 0x0006(r28) # 1686c -eieio # 16870 -mtmsr r31 # 16874 -isync # 16878 - -print_digity_common_0xd0: -b print_common # 1687c - - - -/*********************************************************** - - getchar - -************************************************************ - -Xrefs: -panic -print_memory -print_memory_logical - -***********************************************************/ - -.align 7 # 16880 - -getchar: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 16880 -stmw r24, -0x0108( r1) # 16884 -mflr r24 # 16888 -mfcr r25 # 1688c -stw r24, -0x0110( r1) # 16890 -stw r25, -0x010c( r1) # 16894 -lwz r1, -0x0004( r1) # 16898 -lwz r28, -0x0900( r1) # 1689c -cmpwi cr7, r28, 0x00 # 168a0 -li r8, -0x01 # 168a4 -beq+ cr7, print_return # 168a8 -mr r30, r8 # 168ac -mr r31, r9 # 168b0 -addi r8, r1, -0xaf0 # 168b4 - -# r8 = lock -bl lock # 168b8 -mr r8, r30 # 168bc -mr r9, r31 # 168c0 -bl serial_io # 168c4 -ori r30, r31, 0x10 # 168c8 -mtmsr r30 # 168cc -isync # 168d0 -lbz r30, 0x0002(r28) # 168d4 -eieio # 168d8 -andi. r30, r30, 0x01 # 168dc -beq+ print_common # 168e0 -lbz r8, 0x0006(r28) # 168e4 -b print_common # 168e8 - - - -/*********************************************************** - - print_char - -************************************************************ - -Xrefs: -spinlock_what -panic -print_memory -print_memory_logical - -***********************************************************/ - -print_char: /* < outside referer */ -mfspr r1, 272/*sprg0*/ # 168ec -stmw r24, -0x0108( r1) # 168f0 -mflr r24 # 168f4 -mfcr r25 # 168f8 -stw r24, -0x0110( r1) # 168fc -stw r25, -0x010c( r1) # 16900 -lwz r1, -0x0004( r1) # 16904 -lwz r28, -0x0900( r1) # 16908 -lwz r29, 0x0edc( r1) # 1690c -mr r30, r8 # 16910 -mr r31, r9 # 16914 -addi r8, r1, -0xaf0 # 16918 - -# r8 = lock -bl lock # 1691c -mr r8, r30 # 16920 -mr r9, r31 # 16924 -cmpwi cr7, r28, 0x00 # 16928 -andi. r29, r29, 0x02 # 1692c -beq- cr7, print_char_0x58 # 16930 -crmove r30, r2 # 16934 -beq- print_char_0x58 # 16938 -bl serial_io # 1693c -bl serial_flush # 16940 - -print_char_0x58: -mr r29, r8 # 16944 - -# r1 = kdp -bl screenlog_putchar # 16948 -beq- cr7, print_char_0x90 # 1694c -ori r30, r31, 0x10 # 16950 -mtmsr r30 # 16954 -isync # 16958 - -print_char_0x70: -lbz r30, 0x0002(r28) # 1695c -eieio # 16960 -andi. r30, r30, 0x04 # 16964 -beq+ print_char_0x70 # 16968 -stb r8, 0x0006(r28) # 1696c -eieio # 16970 -mtmsr r31 # 16974 -isync # 16978 - -print_char_0x90: -b print_common # 1697c - - - -/*********************************************************** - - serial_flush - -************************************************************ - -This and the following func are a bit speculative, but whatever. - -************************************************************ - -Xrefs: -print_string -print_decimal -print_digity_common -print_char - -***********************************************************/ - -.align 7 # 16980 - -serial_flush: /* < outside referer */ -ori r30, r31, 0x10 # 16980 -mtmsr r30 # 16984 -isync # 16988 -lbz r29, 0x0002(r28) # 1698c -li r29, 0x09 # 16990 -stb r29, 0x0002(r28) # 16994 -eieio # 16998 -li r29, 0x80 # 1699c -stb r29, 0x0002(r28) # 169a0 -eieio # 169a4 -lbz r29, 0x0002(r28) # 169a8 -li r29, 0x04 # 169ac -stb r29, 0x0002(r28) # 169b0 -eieio # 169b4 -li r29, 0x48 # 169b8 -stb r29, 0x0002(r28) # 169bc -eieio # 169c0 -lbz r29, 0x0002(r28) # 169c4 -li r29, 0x03 # 169c8 -stb r29, 0x0002(r28) # 169cc -eieio # 169d0 -li r29, 0xc0 # 169d4 -stb r29, 0x0002(r28) # 169d8 -eieio # 169dc -lbz r29, 0x0002(r28) # 169e0 -li r29, 0x05 # 169e4 -stb r29, 0x0002(r28) # 169e8 -eieio # 169ec -li r29, 0x60 # 169f0 -stb r29, 0x0002(r28) # 169f4 -eieio # 169f8 -lbz r29, 0x0002(r28) # 169fc -li r29, 0x09 # 16a00 -stb r29, 0x0002(r28) # 16a04 -eieio # 16a08 -li r29, 0x00 # 16a0c -stb r29, 0x0002(r28) # 16a10 -eieio # 16a14 -lbz r29, 0x0002(r28) # 16a18 -li r29, 0x0a # 16a1c -stb r29, 0x0002(r28) # 16a20 -eieio # 16a24 -li r29, 0x00 # 16a28 -stb r29, 0x0002(r28) # 16a2c -eieio # 16a30 -lbz r29, 0x0002(r28) # 16a34 -li r29, 0x0b # 16a38 -stb r29, 0x0002(r28) # 16a3c -eieio # 16a40 -li r29, 0x50 # 16a44 -stb r29, 0x0002(r28) # 16a48 -eieio # 16a4c -lbz r29, 0x0002(r28) # 16a50 -li r29, 0x0c # 16a54 -stb r29, 0x0002(r28) # 16a58 -eieio # 16a5c -li r29, 0x00 # 16a60 -stb r29, 0x0002(r28) # 16a64 -eieio # 16a68 -lbz r29, 0x0002(r28) # 16a6c -li r29, 0x0d # 16a70 -stb r29, 0x0002(r28) # 16a74 -eieio # 16a78 -li r29, 0x00 # 16a7c -stb r29, 0x0002(r28) # 16a80 -eieio # 16a84 -lbz r29, 0x0002(r28) # 16a88 -li r29, 0x0e # 16a8c -stb r29, 0x0002(r28) # 16a90 -eieio # 16a94 -li r29, 0x01 # 16a98 -stb r29, 0x0002(r28) # 16a9c -eieio # 16aa0 -lbz r29, 0x0002(r28) # 16aa4 -li r29, 0x03 # 16aa8 -stb r29, 0x0002(r28) # 16aac -eieio # 16ab0 -li r29, 0xc1 # 16ab4 -stb r29, 0x0002(r28) # 16ab8 -eieio # 16abc -lbz r29, 0x0002(r28) # 16ac0 -li r29, 0x05 # 16ac4 -stb r29, 0x0002(r28) # 16ac8 -eieio # 16acc -li r29, 0xea # 16ad0 -stb r29, 0x0002(r28) # 16ad4 -eieio # 16ad8 -mtmsr r31 # 16adc -isync # 16ae0 -blr # 16ae4 - - - -/*********************************************************** - - serial_io - -************************************************************ - -See disclaimer above. - -************************************************************ - -Xrefs: -print_string -print_decimal -print_digity_common -getchar -print_char - -***********************************************************/ - -.align 3 # 16ae8 - -serial_io: /* < outside referer */ -mfspr r26, 26/*srr0*/ # 16ae8 -mfspr r27, 27/*srr1*/ # 16aec -isync # 16af0 -mfspr r30, 287/*pvr*/ # 16af4 -rlwinm. r30, r30, 0, 0, 14 # 16af8 -rlwinm r29, r28, 0, 0, 14 # 16afc -beq- serial_io_0x38 # 16b00 -li r30, 0x03 # 16b04 -or r30, r30, r29 # 16b08 -li r31, 0x3a # 16b0c -or r31, r31, r29 # 16b10 -mtspr 543/*dbat3l*/, r31 # 16b14 -mtspr 542/*dbat3u*/, r30 # 16b18 -b serial_io_0x50 # 16b1c - -serial_io_0x38: -li r30, 0x32 # 16b20 -or r30, r30, r29 # 16b24 -li r31, 0x40 # 16b28 -or r31, r31, r29 # 16b2c -mtspr 534/*ibat3u*/, r30 # 16b30 -mtspr 535/*ibat3l*/, r31 # 16b34 - -serial_io_0x50: -isync # 16b38 -mfmsr r31 # 16b3c -blr # 16b40 - - - -/*********************************************************** - - serial_busywait - -************************************************************ - -See disclaimer above. - -************************************************************ - -Xrefs: -print_string -print_decimal -print_digity_common - -***********************************************************/ - -serial_busywait: /* < outside referer */ -beqlr- cr7 # 16b44 -ori r30, r31, 0x10 # 16b48 -mtmsr r30 # 16b4c -isync # 16b50 - -serial_busywait_0x10: -lbz r30, 0x0002(r28) # 16b54 -eieio # 16b58 -andi. r30, r30, 0x04 # 16b5c -beq+ serial_busywait_0x10 # 16b60 -mtmsr r31 # 16b64 -isync # 16b68 -blr # 16b6c - - - -/*********************************************************** - - major_0x16b70 - -***********************************************************/ - -.align 4 # 16b70 - -.long 0x48000010 # 16b70 -.long 0x60000000 # 16b74 -.long 0x60000000 # 16b78 -.long 0x60000000 # 16b7c - - - -/*********************************************************** - - major_0x16b80 - -************************************************************ - -Xrefs: -major_0x16b90 -major_0x16bb4 - -***********************************************************/ - -.align 7 # 16b80 - -.long 0x48000760 # 16b80 - -major_0x16b80_0x4: /* < outside referer */ -b syscall_return_paramErr # 16b84 - -major_0x16b80_0x8: /* < outside referer */ -b syscall_return_kMPInsufficientResourcesErr # 16b88 - -major_0x16b80_0xc: /* < outside referer */ -b syscall_return # 16b8c - - - -/*********************************************************** - - major_0x16b90 - -************************************************************ - -syscall 102 - -************************************************************ - -Xrefs: -syscall - -***********************************************************/ - -.align 4 # 16b90 - -major_0x16b90: /* < outside referer */ -mfspr r9, 272/*sprg0*/ # 16b90 -lwz r8, -0x0338( r9) # 16b94 -lwz r9, 0x0024( r8) # 16b98 -cmpwi r9, 0x01 # 16b9c -bgt+ major_0x16b80_0x8 # 16ba0 -bl major_0x16bb4_0x4bc # 16ba4 -mr r4, r8 # 16ba8 -mr r5, r9 # 16bac -b syscall_return_noErr # 16bb0 - - - -/*********************************************************** - - major_0x16bb4 - -************************************************************ - -syscall 103 - -************************************************************ - -Xrefs: -syscall -major_0x16b90 - -***********************************************************/ - -major_0x16bb4: /* < outside referer */ -mfspr r9, 272/*sprg0*/ # 16bb4 -lwz r8, -0x0338( r9) # 16bb8 -lwz r9, 0x0024( r8) # 16bbc -cmpwi r9, 0x01 # 16bc0 -bgt+ major_0x16b80_0x8 # 16bc4 -clrlwi. r8, r5, 0x14 # 16bc8 -bne+ major_0x16b80_0x4 # 16bcc -bl major_0x16bb4_0x4bc # 16bd0 -cmpw r3, r8 # 16bd4 -blt+ major_0x16b80_0x4 # 16bd8 -cmpw r4, r9 # 16bdc -blt+ major_0x16b80_0x4 # 16be0 -bl flush_tlb # 16be4 -mfspr r9, 272/*sprg0*/ # 16be8 -mfxer r8 # 16bec -stw r13, 0x00dc( r6) # 16bf0 -stw r8, 0x00d4( r6) # 16bf4 -stw r12, 0x00ec( r6) # 16bf8 -mfctr r8 # 16bfc -stw r10, 0x00fc( r6) # 16c00 -stw r8, 0x00f4( r6) # 16c04 -mfspr r8, 287/*pvr*/ # 16c08 -rlwinm. r8, r8, 0, 0, 14 # 16c0c -bne- major_0x16bb4_0x68 # 16c10 -mfspr r8, 0/*mq*/ # 16c14 -stw r8, 0x00c4( r6) # 16c18 - -major_0x16bb4_0x68: -lwz r8, 0x0004( r9) # 16c1c -stw r8, 0x010c( r6) # 16c20 -stw r2, 0x0114( r6) # 16c24 -stw r3, 0x011c( r6) # 16c28 -andi. r8, r11, 0x2000 # 16c2c -stw r4, 0x0124( r6) # 16c30 -lwz r8, 0x0018( r9) # 16c34 -stw r5, 0x012c( r6) # 16c38 -stw r8, 0x0134( r6) # 16c3c -bnel+ major_0x13988 # 16c40 -rlwinm. r8, r7, 0, 12, 12 # 16c44 -bnel+ major_0x13c90 # 16c48 -lwz r3, 0x011c( r6) # 16c4c -lwz r4, 0x0124( r6) # 16c50 -lwz r5, 0x012c( r6) # 16c54 -stw r11, 0x00a4( r6) # 16c58 -mr r27, r5 # 16c5c -addi r29, r1, 800 # 16c60 -bl major_0x054b8 # 16c64 -beq+ major_0x16b80_0x8 # 16c68 -rlwimi r27, r31, 0, 0, 19 # 16c6c -mr r17, r27 # 16c70 -addi r15, r17, 0x34 # 16c74 -srwi r3, r3, 12 # 16c78 - -major_0x16bb4_0xc8: -mr r27, r5 # 16c7c -addi r29, r1, 800 # 16c80 -bl major_0x054b8 # 16c84 -beq+ major_0x16b80_0x8 # 16c88 -rlwimi r27, r31, 0, 0, 19 # 16c8c -stwu r27, 0x0004(r15) # 16c90 -addi r3, r3, -0x01 # 16c94 -addi r5, r5, 0x1000 # 16c98 -cmpwi r3, 0x00 # 16c9c -bge+ major_0x16bb4_0xc8 # 16ca0 -addi r15, r15, 0x04 # 16ca4 -subf r15, r17, r15 # 16ca8 -stw r15, 0x0034(r17) # 16cac -mfspr r15, 272/*sprg0*/ # 16cb0 -stw r15, 0x0024(r17) # 16cb4 -mfspr r8, 275/*sprg3*/ # 16cb8 -stw r8, 0x0028(r17) # 16cbc - -major_0x16bb4_0x10c: -mftbu r8 # 16cc0 -mftb r9, 0x10c # 16cc4 -mftbu r16 # 16cc8 -cmpw r16, r8 # 16ccc -bne+ major_0x16bb4_0x10c # 16cd0 -stw r8, -0x0278(r15) # 16cd4 -stw r9, -0x0274(r15) # 16cd8 -mr r29, r17 # 16cdc -li r16, 0x06 # 16ce0 -stw r16, -0x0238(r15) # 16ce4 -lhz r16, -0x0116(r15) # 16ce8 -stw r16, -0x0234(r15) # 16cec -li r8, 0x02 # 16cf0 - -# r7 = flags -# r8 = usually 2? -bl SIGP # 16cf4 -mr r17, r29 # 16cf8 -mfspr r8, 25/*sdr1*/ # 16cfc -stw r8, 0x002c(r17) # 16d00 -rlwinm r9, r8, 16, 7, 15 # 16d04 -cntlzw r18, r9 # 16d08 -li r9, -0x01 # 16d0c -srw r9, r9, r18 # 16d10 -addi r9, r9, 0x01 # 16d14 -stw r9, 0x000c(r17) # 16d18 -rlwinm r8, r8, 0, 0, 15 # 16d1c -stw r8, 0x0010(r17) # 16d20 -lis r8, 0x00 # 16d24 -ori r8, r8, 0xc000 # 16d28 -stw r8, 0x0018(r17) # 16d2c -lis r9, 0x00 # 16d30 -ori r9, r9, 0xa000 # 16d34 -subf r8, r9, r1 # 16d38 -stw r8, 0x001c(r17) # 16d3c -addi r9, r1, 120 # 16d40 -lis r31, 0x00 # 16d44 -li r14, 0x00 # 16d48 -lwz r29, 0x0034(r17) # 16d4c -add r29, r29, r17 # 16d50 - -major_0x16bb4_0x1a0: -lwzu r30, 0x0008( r9) # 16d54 - -major_0x16bb4_0x1a4: -lwz r18, 0x0004(r30) # 16d58 -lhz r15, 0x0000(r30) # 16d5c -andi. r19, r18, 0xe00 # 16d60 -lhz r16, 0x0002(r30) # 16d64 -cmplwi r19, 0xc00 # 16d68 -bne- major_0x16bb4_0x1dc # 16d6c -addi r16, r16, 0x01 # 16d70 -slwi r16, r16, 2 # 16d74 -stw r16, 0x0000(r29) # 16d78 -rlwinm r18, r18, 22, 0, 29 # 16d7c -stw r18, 0x0004(r29) # 16d80 -addi r29, r29, 0x0c # 16d84 -addi r14, r14, 0x01 # 16d88 -b major_0x16bb4_0x1fc # 16d8c - -major_0x16bb4_0x1dc: -cmpwi r15, 0x00 # 16d90 -bne- major_0x16bb4_0x1fc # 16d94 -cmplwi r16, 0xffff # 16d98 -bne- major_0x16bb4_0x1fc # 16d9c -addis r31, r31, 0x1000 # 16da0 -cmpwi r31, 0x00 # 16da4 -bne+ major_0x16bb4_0x1a0 # 16da8 -b major_0x16bb4_0x204 # 16dac - -major_0x16bb4_0x1fc: -addi r30, r30, 0x08 # 16db0 -b major_0x16bb4_0x1a4 # 16db4 - -major_0x16bb4_0x204: -lwz r16, -0x0aa0( r1) # 16db8 - -major_0x16bb4_0x208: -lwz r31, 0x0000(r16) # 16dbc -add r18, r31, r16 # 16dc0 -lwz r19, 0x0000(r18) # 16dc4 -addi r31, r31, 0x18 # 16dc8 -stw r31, 0x0000(r29) # 16dcc -stw r16, 0x0004(r29) # 16dd0 -addi r29, r29, 0x0c # 16dd4 -addi r14, r14, 0x01 # 16dd8 -cmpwi r19, 0x00 # 16ddc -beq- major_0x16bb4_0x238 # 16de0 -add r16, r19, r18 # 16de4 -b major_0x16bb4_0x208 # 16de8 - -major_0x16bb4_0x238: -addi r19, r1, -0x450 # 16dec -lwz r31, -0x0448( r1) # 16df0 - -major_0x16bb4_0x240: -cmpw r31, r19 # 16df4 -beq- major_0x16bb4_0x264 # 16df8 -li r18, 0x10 # 16dfc -stw r18, 0x0000(r29) # 16e00 -stw r31, 0x0004(r29) # 16e04 -addi r29, r29, 0x0c # 16e08 -addi r14, r14, 0x01 # 16e0c -lwz r31, 0x0008(r31) # 16e10 -b major_0x16bb4_0x240 # 16e14 - -major_0x16bb4_0x264: -stw r14, 0x0030(r17) # 16e18 -lwz r30, 0x0034(r17) # 16e1c -add r30, r30, r17 # 16e20 - -major_0x16bb4_0x270: -subf r8, r17, r29 # 16e24 -stw r8, 0x0008(r30) # 16e28 -lwz r24, 0x0004(r30) # 16e2c -mr r25, r8 # 16e30 -lwz r26, 0x0000(r30) # 16e34 -add r29, r29, r26 # 16e38 -bl major_0x16bb4_0x60c # 16e3c -addi r30, r30, 0x0c # 16e40 -addi r14, r14, -0x01 # 16e44 -cmpwi r14, 0x00 # 16e48 -bne+ major_0x16bb4_0x270 # 16e4c -subf r8, r17, r29 # 16e50 -stw r8, 0x0020(r17) # 16e54 -lwz r24, 0x001c(r17) # 16e58 -mr r25, r8 # 16e5c -lwz r26, 0x0018(r17) # 16e60 -add r29, r29, r26 # 16e64 -bl major_0x16bb4_0x60c # 16e68 -subf r8, r17, r29 # 16e6c -stw r8, 0x0014(r17) # 16e70 -lwz r24, 0x0010(r17) # 16e74 -mr r25, r8 # 16e78 -lwz r26, 0x000c(r17) # 16e7c -add r29, r29, r26 # 16e80 -bl major_0x16bb4_0x60c # 16e84 -bl major_0x16bb4_0x314 # 16e88 -mflr r9 # 16e8c -stw r9, 0x0000(r17) # 16e90 -lwz r8, -0x0900( r1) # 16e94 -stw r8, 0x0008(r17) # 16e98 -li r8, 0x00 # 16e9c -stw r8, 0x0004(r17) # 16ea0 -mfspr r15, 272/*sprg0*/ # 16ea4 -li r16, 0x11 # 16ea8 -stw r16, -0x0238(r15) # 16eac -lhz r16, -0x0116(r15) # 16eb0 -stw r16, -0x0234(r15) # 16eb4 -li r8, 0x02 # 16eb8 - -# r7 = flags -# r8 = usually 2? -bl SIGP # 16ebc -li r3, 0x00 # 16ec0 -b major_0x16b80_0xc # 16ec4 - -major_0x16bb4_0x314: -blrl # 16ec8 -.long 0x7c711b78 # 16ecc -.long 0x83110014 # 16ed0 -.long 0x83310010 # 16ed4 -.long 0x8351000c # 16ed8 -.long 0x48000349 # 16edc -.long 0x8311002c # 16ee0 -.long 0x7f1903a6 # 16ee4 -.long 0x83110020 # 16ee8 -.long 0x8331001c # 16eec -.long 0x83510018 # 16ef0 -.long 0x48000331 # 16ef4 -.long 0x81d10030 # 16ef8 -.long 0x83d10034 # 16efc -.long 0x7fde8a14 # 16f00 -.long 0x831e0008 # 16f04 -.long 0x833e0004 # 16f08 -.long 0x835e0000 # 16f0c -.long 0x48000315 # 16f10 -.long 0x3bde000c # 16f14 -.long 0x39ceffff # 16f18 -.long 0x2c0e0000 # 16f1c -.long 0x4082ffe4 # 16f20 -.long 0x82110024 # 16f24 -.long 0x7e1043a6 # 16f28 -.long 0x81110028 # 16f2c -.long 0x7d1343a6 # 16f30 -.long 0x8030fffc # 16f34 -.long 0x80d0ffec # 16f38 -.long 0x80f0fff0 # 16f3c -.long 0x3900ffff # 16f40 -.long 0x91110004 # 16f44 -.long 0x8110fd88 # 16f48 -.long 0x8130fd8c # 16f4c -.long 0x3a000001 # 16f50 -.long 0x7e1c43a6 # 16f54 -.long 0x7d1d43a6 # 16f58 -.long 0x7d3c43a6 # 16f5c -.long 0x7e1603a6 # 16f60 -.long 0x48000025 # 16f64 -.long 0x52657375 # 16f68 -.long 0x6d696e67 # 16f6c -.long 0x20736176 # 16f70 -.long 0x6564206b # 16f74 -.long 0x65726e65 # 16f78 -.long 0x6c207374 # 16f7c -.long 0x6174655e # 16f80 -.long 0x6e000000 # 16f84 -.long 0x7d0802a6 # 16f88 -.long 0x4bfff455 # 16f8c -.long 0x810600d4 # 16f90 -.long 0x81a600dc # 16f94 -.long 0x7d0103a6 # 16f98 -.long 0x818600ec # 16f9c -.long 0x810600f4 # 16fa0 -.long 0x814600fc # 16fa4 -.long 0x7d0903a6 # 16fa8 -.long 0x816600a4 # 16fac -.long 0x7d1f42a6 # 16fb0 -.long 0x5508001d # 16fb4 -.long 0x4082000c # 16fb8 -.long 0x810600c4 # 16fbc -.long 0x7d0003a6 # 16fc0 -.long 0x8081ffe0 # 16fc4 -.long 0x38400001 # 16fc8 -.long 0xb0410910 # 16fcc -.long 0x3840ffff # 16fd0 -.long 0x90410912 # 16fd4 -.long 0x90440f90 # 16fd8 -.long 0x6c420100 # 16fdc -.long 0x90440f8c # 16fe0 -.long 0x38400000 # 16fe4 -.long 0x90440f28 # 16fe8 -.long 0x90440f2c # 16fec -.long 0x80460114 # 16ff0 -.long 0x80860124 # 16ff4 -.long 0x80a6012c # 16ff8 -.long 0x83a600d8 # 16ffc -.long 0x2c1d0000 # 17000 -.long 0x811d0210 # 17004 -.long 0x41820008 # 17008 -.long 0x7d0043a6 # 1700c -.long 0x4bfee5d1 # 17010 -.long 0x3ba105e0 # 17014 -.long 0x4bfee291 # 17018 -.long 0x7df042a6 # 1701c -.long 0x810fffe4 # 17020 -.long 0x39200000 # 17024 -.long 0x4bffcf51 # 17028 -.long 0x4c00012c # 1702c -.long 0x7df042a6 # 17030 -.long 0x3a000007 # 17034 -.long 0x920ffdc8 # 17038 -.long 0xa20ffeea # 1703c -.long 0x920ffdcc # 17040 -.long 0x39000002 # 17044 -.long 0x4bfed899 # 17048 -.long 0x7df042a6 # 1704c -.long 0x3a000011 # 17050 -.long 0x920ffdc8 # 17054 -.long 0xa20ffeea # 17058 -.long 0x920ffdcc # 1705c -.long 0x39000002 # 17060 -.long 0x4bfed87d # 17064 -.long 0x38600000 # 17068 -.long 0x4bfffb20 # 1706c - -major_0x16bb4_0x4bc: /* < outside referer */ -li r24, 0x00 # 17070 -mfspr r16, 25/*sdr1*/ # 17074 -rlwinm r16, r16, 16, 7, 15 # 17078 -cntlzw r17, r16 # 1707c -li r16, -0x01 # 17080 -srw r16, r16, r17 # 17084 -addi r8, r16, 0x01 # 17088 -addi r9, r1, 120 # 1708c -lis r31, 0x00 # 17090 -li r19, 0x00 # 17094 -li r14, 0x00 # 17098 - -major_0x16bb4_0x4e8: -lwzu r17, 0x0008( r9) # 1709c - -major_0x16bb4_0x4ec: -lwz r18, 0x0004(r17) # 170a0 -lhz r15, 0x0000(r17) # 170a4 -andi. r18, r18, 0xe00 # 170a8 -lhz r16, 0x0002(r17) # 170ac -cmplwi r18, 0xc00 # 170b0 -bne- major_0x16bb4_0x514 # 170b4 -addi r16, r16, 0x01 # 170b8 -add r19, r19, r16 # 170bc -addi r14, r14, 0x01 # 170c0 -b major_0x16bb4_0x534 # 170c4 - -major_0x16bb4_0x514: -cmpwi r15, 0x00 # 170c8 -bne- major_0x16bb4_0x534 # 170cc -cmplwi r16, 0xffff # 170d0 -bne- major_0x16bb4_0x534 # 170d4 -addis r31, r31, 0x1000 # 170d8 -cmpwi r31, 0x00 # 170dc -bne+ major_0x16bb4_0x4e8 # 170e0 -b major_0x16bb4_0x53c # 170e4 - -major_0x16bb4_0x534: -addi r17, r17, 0x08 # 170e8 -b major_0x16bb4_0x4ec # 170ec - -major_0x16bb4_0x53c: -slwi r19, r19, 2 # 170f0 -add r8, r8, r19 # 170f4 -cmpwi r14, 0x00 # 170f8 -beq+ major_0x16b80_0x8 # 170fc -mulli r9, r14, 0x0c # 17100 -add r8, r8, r9 # 17104 -add r24, r24, r9 # 17108 -li r9, 0x00 # 1710c -li r14, 0x00 # 17110 -lwz r16, -0x0aa0( r1) # 17114 - -major_0x16bb4_0x564: -lwz r17, 0x0000(r16) # 17118 -add r18, r17, r16 # 1711c -lwz r19, 0x0000(r18) # 17120 -add r9, r9, r17 # 17124 -addi r9, r9, 0x18 # 17128 -addi r14, r14, 0x01 # 1712c -cmpwi r19, 0x00 # 17130 -add r16, r19, r18 # 17134 -beq- major_0x16bb4_0x58c # 17138 -b major_0x16bb4_0x564 # 1713c - -major_0x16bb4_0x58c: -addi r16, r1, -0x450 # 17140 -lwz r18, -0x0448( r1) # 17144 - -major_0x16bb4_0x594: -cmpw r18, r16 # 17148 -beq- major_0x16bb4_0x5ac # 1714c -addi r9, r9, 0x10 # 17150 -addi r14, r14, 0x01 # 17154 -lwz r18, 0x0008(r18) # 17158 -b major_0x16bb4_0x594 # 1715c - -major_0x16bb4_0x5ac: -add r8, r8, r9 # 17160 -mulli r9, r14, 0x0c # 17164 -add r8, r8, r9 # 17168 -add r24, r24, r9 # 1716c -lis r9, 0x00 # 17170 -ori r9, r9, 0xc000 # 17174 -add r8, r8, r9 # 17178 -lis r9, 0x00 # 1717c -ori r9, r9, 0x3c # 17180 -add r8, r8, r9 # 17184 -add r24, r24, r9 # 17188 -srwi r9, r8, 12 # 1718c -slwi r9, r9, 2 # 17190 -addi r9, r9, 0x04 # 17194 -add r8, r8, r9 # 17198 -add r24, r24, r9 # 1719c -mr r9, r24 # 171a0 -blr # 171a4 - -major_0x16bb4_0x5f4: -srwi r23, r28, 12 # 171a8 -slwi r23, r23, 2 # 171ac -add r23, r23, r17 # 171b0 -lwz r23, 0x0038(r23) # 171b4 -rlwimi r23, r28, 0, 20, 31 # 171b8 -blr # 171bc - -major_0x16bb4_0x60c: -cmpwi r26, 0x00 # 171c0 -beqlr- # 171c4 -mflr r22 # 171c8 -addi r24, r24, -0x01 # 171cc -mr r28, r25 # 171d0 - -major_0x16bb4_0x620: -bl major_0x16bb4_0x5f4 # 171d4 -clrlwi r25, r23, 0x14 # 171d8 -subfic r25, r25, 0x1000 # 171dc -cmplw r25, r26 # 171e0 -blt- major_0x16bb4_0x638 # 171e4 -mr r25, r26 # 171e8 - -major_0x16bb4_0x638: -mr r19, r23 # 171ec -mr r20, r25 # 171f0 -addi r23, r23, -0x01 # 171f4 -mtctr r25 # 171f8 - -major_0x16bb4_0x648: -lbzu r27, 0x0001(r24) # 171fc -stbu r27, 0x0001(r23) # 17200 -bdnz+ major_0x16bb4_0x648 # 17204 -bl major_0x16bb4_0x6d4 # 17208 -subf r26, r25, r26 # 1720c -add r28, r28, r25 # 17210 -cmpwi r26, 0x00 # 17214 -bne+ major_0x16bb4_0x620 # 17218 -mtlr r22 # 1721c -blr # 17220 -.long 0x2c1a0000 # 17224 -.long 0x4d820020 # 17228 -.long 0x7f33cb78 # 1722c -.long 0x7f54d378 # 17230 -.long 0x7ec802a6 # 17234 -.long 0x3b39ffff # 17238 -.long 0x7f1cc378 # 1723c -.long 0x4bffff69 # 17240 -.long 0x56f8053e # 17244 -.long 0x23181000 # 17248 -.long 0x7c18d040 # 1724c -.long 0x41800008 # 17250 -.long 0x7f58d378 # 17254 -.long 0x3af7ffff # 17258 -.long 0x7f0903a6 # 1725c -.long 0x8f770001 # 17260 -.long 0x9f790001 # 17264 -.long 0x4200fff8 # 17268 -.long 0x7f9cc214 # 1726c -.long 0x7f58d050 # 17270 -.long 0x2c1a0000 # 17274 -.long 0x4082ffc8 # 17278 -.long 0x4800000d # 1727c -.long 0x7ec803a6 # 17280 -.long 0x4e800020 # 17284 - -major_0x16bb4_0x6d4: -sync # 17288 -isync # 1728c -lhz r21, 0x0f4a( r1) # 17290 -addi r15, r21, -0x01 # 17294 -add r20, r19, r20 # 17298 -add r20, r20, r15 # 1729c -neg r15, r21 # 172a0 -and r19, r19, r15 # 172a4 -and r20, r20, r15 # 172a8 - -major_0x16bb4_0x6f8: -dcbst r0, r19 # 172ac -sync # 172b0 -icbi r0, r19 # 172b4 -add r19, r19, r21 # 172b8 -cmpw r19, r20 # 172bc -blt+ major_0x16bb4_0x6f8 # 172c0 -sync # 172c4 -isync # 172c8 -blr # 172cc - - - -/*********************************************************** - - major_0x172d0 - -***********************************************************/ - -.align 4 # 172d0 - -.long 0x48000010 # 172d0 -.long 0x60000000 # 172d4 -.long 0x60000000 # 172d8 -.long 0x60000000 # 172dc - - - -/*********************************************************** - - panic - -************************************************************ - -Xrefs: -"lisori_caller" -panic_wrapper_0x02940 -panic_wrapper_0x02960 -major_0x02ccc -major_0x03200 -major_0x035a0 -memretry_machine_check -major_0x03940 -dsi_vector -major_0x04240 -major_0x04300 -panic_wrapper_0x04c00 -funny_debug_place -major_0x07658 -panic_wrapper_0x08620 -major_0x08794 -panic_wrapper_0x0a620 -rtas_call -major_0x0af14 -syscall_return_assert_lock_unheld -major_0x0af60 -major_0x0b02c -major_0x0b054 -major_0x0b07c -major_0x0b0cc -major_0x0b0fc -major_0x0b144 -major_0x0b4a4 -nk_yield_with_hint -major_0x0bc2c -NKStopScheduling -major_0x0c3ac -panic_wrapper_0x0c5d4 -major_0x0d35c -major_0x0d798 -panic_wrapper_0x0e280 -major_0x0e604 -NKThrowException -panic_wrapper_0x0f380 -major_0x0f7b8 -major_0x0fb34 -createarea -major_0x102c8 -major_0x10414 -major_0x104ec -major_0x1070c -major_0x108fc -NKSetAreaAccess -major_0x10de0 -major_0x11104 -major_0x111d4 -major_0x1139c -major_0x11490 -NKMapPage -NKUnmapPages -NKMakePhysicallyContiguous -NKLockPages -NKUnlockPages -NKHoldPages -NKUnholdPages -major_0x11ebc -major_0x11fac -major_0x12110 -major_0x12248 -panic_wrapper_0x12780 -major_0x129cc -panic_wrapper_0x12d40 -panic_wrapper_0x137c0 -major_0x142dc -major_0x14548 -major_0x14bcc -panic_wrapper_0x15140 -interrupt_blue -print_common - -***********************************************************/ - -.align 5 # 172e0 - -panic: /* < outside referer */ -crset 4*cr1 + eq # 172e0 -b panic_0xc # 172e4 -.long 0x4cc63182 # 172e8 - -panic_0xc: -mfspr r1, 272/*sprg0*/ # 172ec -stmw r29, -0x02e0( r1) # 172f0 -lwz r1, -0x0004( r1) # 172f4 -mflr r29 # 172f8 -mr r30, r8 # 172fc -mr r31, r9 # 17300 -addi r8, r1, -0xb30 # 17304 - -# r8 = lock -bl lock # 17308 -mr r8, r30 # 1730c -mr r9, r31 # 17310 -stw r29, 0x0904( r1) # 17314 -stw r0, 0x0700( r1) # 17318 -mfspr r0, 273/*sprg1*/ # 1731c -stw r0, 0x0704( r1) # 17320 -stw r2, 0x0708( r1) # 17324 -mfspr r2, 272/*sprg0*/ # 17328 -lmw r29, -0x02e0( r2) # 1732c -stmw r3, 0x070c( r1) # 17330 -mfcr r0 # 17334 -stw r0, 0x0780( r1) # 17338 -mfspr r0, 287/*pvr*/ # 1733c -rlwinm. r0, r0, 0, 0, 14 # 17340 -bne- panic_0x70 # 17344 -mfspr r0, 0/*mq*/ # 17348 -stw r0, 0x0784( r1) # 1734c - -panic_0x70: -mfxer r0 # 17350 -stw r0, 0x0788( r1) # 17354 -mfspr r0, 274/*sprg2*/ # 17358 -stw r0, 0x078c( r1) # 1735c -mfctr r0 # 17360 -stw r0, 0x0790( r1) # 17364 -mfspr r0, 287/*pvr*/ # 17368 -stw r0, 0x0794( r1) # 1736c -mfspr r0, 18/*dsisr*/ # 17370 -stw r0, 0x0798( r1) # 17374 -mfspr r0, 19/*dar*/ # 17378 -stw r0, 0x079c( r1) # 1737c -mfspr r0, 287/*pvr*/ # 17380 -rlwinm. r0, r0, 0, 0, 14 # 17384 -bne- panic_0xcc # 17388 - -panic_0xac: -mfspr r0, 4/*rtcu*/ # 1738c -mfspr r2, 5/*rtcl*/ # 17390 -mfspr r3, 4/*rtcu*/ # 17394 -cmpw r0, r3 # 17398 -bne+ panic_0xac # 1739c -stw r0, 0x07a0( r1) # 173a0 -stw r2, 0x07a4( r1) # 173a4 -b panic_0xe8 # 173a8 - -panic_0xcc: -mftbu r0 # 173ac -mftb r2, 0x10c # 173b0 -mftbu r3 # 173b4 -cmpw r0, r3 # 173b8 -bne+ panic_0xcc # 173bc -stw r0, 0x07a0( r1) # 173c0 -stw r2, 0x07a4( r1) # 173c4 - -panic_0xe8: -mfspr r0, 22/*dec*/ # 173c8 -stw r0, 0x07a8( r1) # 173cc -mfspr r0, 1008/*hid0*/ # 173d0 -stw r0, 0x07ac( r1) # 173d4 -mfspr r0, 25/*sdr1*/ # 173d8 -stw r0, 0x07b0( r1) # 173dc -mfspr r0, 26/*srr0*/ # 173e0 -stw r0, 0x07b4( r1) # 173e4 -mfspr r0, 27/*srr1*/ # 173e8 -stw r0, 0x07b8( r1) # 173ec -mfmsr r0 # 173f0 -stw r0, 0x07bc( r1) # 173f4 -mfsr r0, 0x00 # 173f8 -stw r0, 0x07c0( r1) # 173fc -mfsr r0, 0x01 # 17400 -stw r0, 0x07c4( r1) # 17404 -mfsr r0, 0x02 # 17408 -stw r0, 0x07c8( r1) # 1740c -mfsr r0, 0x03 # 17410 -stw r0, 0x07cc( r1) # 17414 -mfsr r0, 0x04 # 17418 -stw r0, 0x07d0( r1) # 1741c -mfsr r0, 0x05 # 17420 -stw r0, 0x07d4( r1) # 17424 -mfsr r0, 0x06 # 17428 -stw r0, 0x07d8( r1) # 1742c -mfsr r0, 0x07 # 17430 -stw r0, 0x07dc( r1) # 17434 -mfsr r0, 0x08 # 17438 -stw r0, 0x07e0( r1) # 1743c -mfsr r0, 0x09 # 17440 -stw r0, 0x07e4( r1) # 17444 -mfsr r0, 0x0a # 17448 -stw r0, 0x07e8( r1) # 1744c -mfsr r0, 0x0b # 17450 -stw r0, 0x07ec( r1) # 17454 -mfsr r0, 0x0c # 17458 -stw r0, 0x07f0( r1) # 1745c -mfsr r0, 0x0d # 17460 -stw r0, 0x07f4( r1) # 17464 -mfsr r0, 0x0e # 17468 -stw r0, 0x07f8( r1) # 1746c -mfsr r0, 0x0f # 17470 -stw r0, 0x07fc( r1) # 17474 -mfmsr r0 # 17478 -ori r0, r0, 0x2000 # 1747c -mtmsr r0 # 17480 -isync # 17484 -stfd f0, 0x0800( r1) # 17488 -stfd f1, 0x0808( r1) # 1748c -stfd f2, 0x0810( r1) # 17490 -stfd f3, 0x0818( r1) # 17494 -stfd f4, 0x0820( r1) # 17498 -stfd f5, 0x0828( r1) # 1749c -stfd f6, 0x0830( r1) # 174a0 -stfd f7, 0x0838( r1) # 174a4 -stfd f8, 0x0840( r1) # 174a8 -stfd f9, 0x0848( r1) # 174ac -stfd f10, 0x0850( r1) # 174b0 -stfd f11, 0x0858( r1) # 174b4 -stfd f12, 0x0860( r1) # 174b8 -stfd f13, 0x0868( r1) # 174bc -stfd f14, 0x0870( r1) # 174c0 -stfd f15, 0x0878( r1) # 174c4 -stfd f16, 0x0880( r1) # 174c8 -stfd f17, 0x0888( r1) # 174cc -stfd f18, 0x0890( r1) # 174d0 -stfd f19, 0x0898( r1) # 174d4 -stfd f20, 0x08a0( r1) # 174d8 -stfd f21, 0x08a8( r1) # 174dc -stfd f22, 0x08b0( r1) # 174e0 -stfd f23, 0x08b8( r1) # 174e4 -stfd f24, 0x08c0( r1) # 174e8 -stfd f25, 0x08c8( r1) # 174ec -stfd f26, 0x08d0( r1) # 174f0 -stfd f27, 0x08d8( r1) # 174f4 -stfd f28, 0x08e0( r1) # 174f8 -stfd f29, 0x08e8( r1) # 174fc -stfd f30, 0x08f0( r1) # 17500 -stfd f31, 0x08f8( r1) # 17504 -mffs f31 # 17508 -lwz r0, 0x08fc( r1) # 1750c -stfd f31, 0x08fc( r1) # 17510 -stw r0, 0x08fc( r1) # 17514 -bne- cr1, panic_0x260 # 17518 - -panic_0x23c: -lwz r1, 0x0000( r0) # 1751c -addi r1, r1, 0x01 # 17520 -stw r1, 0x0000( r0) # 17524 -li r1, 0x00 # 17528 -dcbst r1, r1 # 1752c -bl getchar # 17530 - -# gets kdp from print!!! -cmpwi r8, -0x01 # 17534 -bne- panic_0x260 # 17538 -b panic_0x23c # 1753c - -panic_0x260: -lwz r8, 0x0edc( r1) # kdp.0xedc # 17540 -ori r8, r8, 0x02 # 17544 -stw r8, 0x0edc( r1) # kdp.0xedc # 17548 -bl 1f # 1754c -.ascii "\xBD NanoKernel debugger^n" # 17550 -.short 0 # 17567 -.align 2 # 17569 -1: mflr r8 # 1756c -bl print_string # 17570 - -panic_prompt: -bl 1f # 17574 -.ascii "\xBD " # 17578 -.short 0 # 1757a -.align 2 # 1757c -1: mflr r8 # 1757c -bl print_string # 17580 -li r17, 0x00 # 17584 -stw r17, -0x08fc( r1) # kdp.-0x8fc # 17588 - -panic_0x2ac: -bl getchar # 1758c -cmpwi r8, -0x01 # 17590 -beq+ panic_0x2ac # 17594 -mr r16, r8 # 17598 -cmpwi r16, 0x08 # 1759c -cmpwi cr1, r17, 0x00 # 175a0 -bne- panic_0x2ec # 175a4 -ble+ cr1, panic_0x2ac # 175a8 -addi r17, r17, -0x01 # 175ac -li r8, 0x08 # 175b0 -bl print_char # 175b4 -li r8, 0x20 # 175b8 -bl print_char # 175bc -li r8, 0x08 # 175c0 -bl print_char # 175c4 -b panic_0x2ac # 175c8 - -panic_0x2ec: -cmpwi cr2, r17, 0x5f # 175cc -addi r18, r1, -0x960 # kdp.-0x960 # 175d0 -blt- cr2, panic_0x31c # 175d4 -bl 1f # 175d8 -.ascii "^b" # 175dc -.short 0 # 175de -.align 2 # 175e0 -1: mflr r8 # 175e0 -bl print_string # 175e4 -b panic_0x2ac # 175e8 - -panic_0x30c: -addi r17, r17, 0x01 # 175ec -mr r8, r16 # 175f0 -bl print_char # 175f4 -b panic_0x2ac # 175f8 - -panic_0x31c: -cmpwi r16, 0x0d # 175fc -stbx r16, r17, r18 # 17600 -bne+ panic_0x30c # 17604 -li r16, 0x00 # 17608 -stbx r16, r17, r18 # 1760c -bl 1f # 17610 -.ascii "^n" # 17614 -.short 0 # 17616 -.align 2 # 17618 -1: mflr r8 # 17618 -bl print_string # 1761c -addi r15, r1, -0x960 # kdp.-0x960 # 17620 - -# r15 = start -bl next_cmd_word # 17624 -# r15 = ptr -# r16 = char - -cmpwi r16, 0x00 # 17628 -beq+ panic_prompt # 1762c -bl panic_load_commands # 17630 -mflr r16 # 17634 -bl load_panic_tbl # 17638 -mflr r17 # 1763c - -# r16 = command strings -# r17 = lut -bl cmd_lookup # 17640 -# cr0 = found -# r17 = ptr to lut entry - -bne- panic_bad_command # 17644 -bl load_panic_tbl # 17648 -mflr r16 # 1764c -lwz r17, 0x0000(r17) # 17650 -add r16, r16, r17 # 17654 -mtlr r16 # 17658 -blr # 1765c - -panic_bad_command: -bl 1f # 17660 -.ascii "???^n" # 17664 -.short 0 # 17669 -.align 2 # 1766b -1: mflr r8 # 1766c -bl print_string # 17670 -b panic_prompt # 17674 - -panic_load_commands: -blrl # 17678 -.ascii "dm\x00" # 1767c -.ascii "dml\x00" # 1767f -.ascii "g\x00" # 17683 -.ascii "id\x00" # 17685 -.ascii "kd\x00" # 17688 -.ascii "td\x00" # 1768b -.ascii "?\x00" # 1768e -.ascii "help\x00" # 17690 -.byte 0xff # 17695 -.align 2 # 17696 - -load_panic_tbl: -blrl # 17698 - -panic_tbl: -.long cmd_dumpmem_physical - panic_tbl # 1769c -.long cmd_dumpmem_logical - panic_tbl # 176a0 -.long cmd_goto - panic_tbl # 176a4 -.long cmd_opaque_id_info - panic_tbl # 176a8 -.long cmd_display_kern_data - panic_tbl # 176ac -.long cmd_dump_registers - panic_tbl # 176b0 -.long cmd_help - panic_tbl # 176b4 -.long cmd_help - panic_tbl # 176b8 -.long 0 # 176bc - -cmd_help: -bl 1f # 176c0 -.ascii "Commands:^n" # 176c4 -.short 0 # 176cf -.align 2 # 176d1 -1: mflr r8 # 176d4 -bl print_string # 176d8 -bl 1f # 176dc -.ascii " dm address [length] -- Display physical^n" -.short 0 # 1770c -.align 2 # 1770e -1: mflr r8 # 17710 -bl print_string # 17714 -bl 1f # 17718 -.ascii " dml address [length] -- Display logical^n" -.short 0 # 17747 -.align 2 # 17749 -1: mflr r8 # 1774c -bl print_string # 17750 -bl 1f # 17754 -.ascii " g [address] -- Go resume^n" # 17758 -.short 0 # 1777d -.align 2 # 1777f -1: mflr r8 # 17780 -bl print_string # 17784 -bl 1f # 17788 -.ascii " id [-all -p -t -tm -q -s -r -c -sp -e -cg -a -n -nc]^n" -.short 0 # 177c3 -.align 2 # 177c5 -1: mflr r8 # 177c8 -bl print_string # 177cc -bl 1f # 177d0 -.ascii " id idvalue -- Obtain opaque ID info^n" -.short 0 # 17805 -.align 2 # 17807 -1: mflr r8 # 17808 -bl print_string # 1780c -bl 1f # 17810 -.ascii " kd -- Display kernel data^n" -.short 0 # 17843 -.align 2 # 17845 -1: mflr r8 # 17848 -bl print_string # 1784c -bl 1f # 17850 -.ascii " td -- Dump registers^n" # 17854 -.short 0 # 1787e -.align 2 # 17880 -1: mflr r8 # 17880 -bl print_string # 17884 -b panic_prompt # 17888 - -cmd_dumpmem_physical: -# r15 = start -bl next_cmd_word # 1788c -# r15 = ptr -# r16 = char - -cmpwi r16, 0x00 # 17890 -beq- panic_missing_physical_addr # 17894 -bl major_0x187b0 # 17898 -bne- panic_bad_length_1 # 1789c -mr r30, r16 # 178a0 -li r31, 0x10 # 178a4 - -# r15 = start -bl next_cmd_word # 178a8 -# r15 = ptr -# r16 = char - -cmpwi r16, 0x00 # 178ac -beq- panic_0x5e0 # 178b0 -bl major_0x187b0 # 178b4 -bne- panic_bad_length_1 # 178b8 -mr r31, r16 # 178bc - -panic_0x5e0: -addi r31, r31, 0x03 # 178c0 -rlwinm r31, r31, 0, 0, 29 # 178c4 -mr r16, r30 # 178c8 -mr r17, r31 # 178cc -bl print_memory # 178d0 -b panic_prompt # 178d4 - -panic_missing_physical_addr: -bl 1f # 178d8 -.ascii "Need a physical address^n" # 178dc -.short 0 # 178f5 -.align 2 # 178f7 -1: mflr r8 # 178f8 -bl print_string # 178fc -b panic_prompt # 17900 - -panic_bad_length_1: -bl 1f # 17904 -.ascii "Length must be a hexadecimal value^n" # 17908 -.short 0 # 1792c -.align 2 # 1792e -1: mflr r8 # 17930 -bl print_string # 17934 -b panic_prompt # 17938 - -cmd_dumpmem_logical: -bl 1f # 1793c -.ascii "Logical memory^n" # 17940 -.short 0 # 17950 -.align 2 # 17952 -1: mflr r8 # 17954 -bl print_string # 17958 - -# r15 = start -bl next_cmd_word # 1795c -# r15 = ptr -# r16 = char - -cmpwi r16, 0x00 # 17960 -beq- panic_missing_logical_addr # 17964 -bl major_0x187b0 # 17968 -bne- panic_bad_length_2 # 1796c -mr r30, r16 # 17970 -li r31, 0x10 # 17974 - -# r15 = start -bl next_cmd_word # 17978 -# r15 = ptr -# r16 = char - -cmpwi r16, 0x00 # 1797c -beq- panic_0x6b0 # 17980 -bl major_0x187b0 # 17984 -bne- panic_bad_length_2 # 17988 -mr r31, r16 # 1798c - -panic_0x6b0: -addi r31, r31, 0x03 # 17990 -rlwinm r31, r31, 0, 0, 29 # 17994 -mr r16, r30 # 17998 -mr r17, r31 # 1799c -bl print_memory_logical # 179a0 -b panic_prompt # 179a4 - -panic_missing_logical_addr: -bl 1f # 179a8 -.ascii "Need a logical address^n" # 179ac -.short 0 # 179c4 -.align 2 # 179c6 -1: mflr r8 # 179c8 -bl print_string # 179cc -b panic_prompt # 179d0 - -panic_bad_length_2: -bl 1f # 179d4 -.ascii "Length must be a hexadecimal value^n" # 179d8 -.short 0 # 179fc -.align 2 # 179fe -1: mflr r8 # 17a00 -bl print_string # 17a04 -b panic_prompt # 17a08 - -cmd_goto: -# r15 = start -bl next_cmd_word # 17a0c -# r15 = ptr -# r16 = char - -cmpwi r16, 0x00 # 17a10 -lwz r31, 0x0904( r1) # kdp.0x904 # 17a14 -beq- panic_0x748 # 17a18 -bl major_0x187b0 # 17a1c -bne- panic_bad_resume_address # 17a20 -stw r16, 0x0904( r1) # kdp.0x904 # 17a24 - -panic_0x748: -bl 1f # 17a28 -.ascii "Resuming at " # 17a2c -.short 0 # 17a38 -.align 2 # 17a3a -1: mflr r8 # 17a3c -bl print_string # 17a40 -lwz r31, 0x0904( r1) # kdp.0x904 # 17a44 -mr r8, r31 # 17a48 -bl print_word_hex # 17a4c -bl 1f # 17a50 -.ascii " - wish me luck.^n" # 17a54 -.short 0 # 17a66 -.align 2 # 17a68 -1: mflr r8 # 17a68 -bl print_string # 17a6c -bl major_0x187b0_0x78 # 17a70 -lwz r8, 0x0904( r1) # kdp.0x904 # 17a74 -sync # 17a78 -lwz r9, -0x0b30( r1) # kdp.thud_lock # 17a7c -cmpwi cr1, r9, 0x00 # 17a80 -li r9, 0x00 # 17a84 -bne+ cr1, panic_0x7b4 # 17a88 -mflr r9 # 17a8c -bl panic # 17a90 - -panic_0x7b4: -stw r9, -0x0b30( r1) # kdp.thud_lock # 17a94 -mtlr r8 # 17a98 -blr # 17a9c - -panic_bad_resume_address: -bl 1f # 17aa0 -.ascii "Need hexadecimal value for resume address^n" -.short 0 # 17acf -.align 2 # 17ad1 -1: mflr r8 # 17ad4 -bl print_string # 17ad8 -b panic_prompt # 17adc - -cmd_opaque_id_info: -# r15 = start -bl next_cmd_word # 17ae0 -# r15 = ptr -# r16 = char - -cmpwi r16, 0x00 # 17ae4 -beq- panic_missing_opaque_id # 17ae8 -bl panic_load_id_args # 17aec -mflr r16 # 17af0 -li r17, 0x00 # 17af4 - -# r16 = command strings -# r17 = lut -bl cmd_lookup # 17af8 -# cr0 = found -# r17 = ptr to lut entry - -bne- panic_0x884 # 17afc -li r29, 0x00 # 17b00 -li r30, 0x00 # 17b04 -srwi r31, r17, 2 # 17b08 - -panic_0x82c: -mr r8, r30 # 17b0c -mr r9, r31 # 17b10 -bl major_0x153e0 # 17b14 -mr. r30, r8 # 17b18 -beq- panic_0x868 # 17b1c -mr r8, r8 # 17b20 -bl print_word_hex # 17b24 -addi r29, r29, 0x01 # 17b28 -andi. r29, r29, 0x07 # 17b2c -bne+ panic_0x82c # 17b30 -bl 1f # 17b34 -.ascii "^n" # 17b38 -.short 0 # 17b3a -.align 2 # 17b3c -1: mflr r8 # 17b3c -bl print_string # 17b40 -b panic_0x82c # 17b44 - -panic_0x868: -cmpwi r29, 0x00 # 17b48 -beq+ panic_prompt # 17b4c -bl 1f # 17b50 -.ascii "^n" # 17b54 -.short 0 # 17b56 -.align 2 # 17b58 -1: mflr r8 # 17b58 -bl print_string # 17b5c -b panic_prompt # 17b60 - -panic_0x884: -bl major_0x187b0 # 17b64 -bne- panic_bad_opaque_id # 17b68 -mr r30, r16 # 17b6c -mr r8, r16 # 17b70 - -# r8 = id -bl id_kind # 17b74 -# r8 = something not sure what -# r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log - -mr r31, r8 # 17b78 -bl 1f # 17b7c -.ascii "ID " # 17b80 -.short 0 # 17b83 -.align 2 # 17b85 -1: mflr r8 # 17b88 -bl print_string # 17b8c -mr r8, r30 # 17b90 -bl print_word_hex # 17b94 -bl panic_load_id_kind_strings # 17b98 -mflr r17 # 17b9c -slwi r18, r9, 4 # 17ba0 -add r8, r17, r18 # 17ba4 -bl print_string # 17ba8 -cmpwi r9, 0x00 # 17bac -beq- panic_0x978 # 17bb0 -bl 1f # 17bb4 -.ascii " at " # 17bb8 -.short 0 # 17bbc -.align 2 # 17bbe -1: mflr r8 # 17bc0 -bl print_string # 17bc4 -mr r8, r31 # 17bc8 -bl print_word_hex # 17bcc -bl 1f # 17bd0 -.ascii "^n" # 17bd4 -.short 0 # 17bd6 -.align 2 # 17bd8 -1: mflr r8 # 17bd8 -bl print_string # 17bdc -mr r16, r31 # 17be0 -bl panic_load_more_jumps # 17be4 -mflr r17 # 17be8 -slwi r18, r9, 2 # 17bec -lwzx r17, r17, r18 # 17bf0 -bl print_memory # 17bf4 -b panic_prompt # 17bf8 - -panic_missing_opaque_id: -bl 1f # 17bfc -.ascii "Need an opaque ID^n" # 17c00 -.short 0 # 17c13 -.align 2 # 17c15 -1: mflr r8 # 17c18 -bl print_string # 17c1c -b panic_prompt # 17c20 - -panic_bad_opaque_id: -bl 1f # 17c24 -.ascii "ID must be a hexadecimal value^n" # 17c28 -.short 0 # 17c48 -.align 2 # 17c4a -1: mflr r8 # 17c4c -bl print_string # 17c50 -b panic_prompt # 17c54 - -panic_0x978: -bl 1f # 17c58 -.ascii "^n" # 17c5c -.short 0 # 17c5e -.align 2 # 17c60 -1: mflr r8 # 17c60 -bl print_string # 17c64 -b panic_prompt # 17c68 - -panic_load_id_kind_strings: -blrl # 17c6c -.ascii "is invalid. \x00" # 17c70 -.ascii "Process \x00" # 17c80 -.ascii "Task \x00" # 17c90 -.ascii "Timer \x00" # 17ca0 -.ascii "Queue \x00" # 17cb0 -.ascii "Semaphore \x00" # 17cc0 -.ascii "Critical Region\x00" # 17cd0 -.ascii "Cpu \x00" # 17ce0 -.ascii "Address Space \x00" # 17cf0 -.ascii "Event Group \x00" # 17d00 -.ascii "Coherence Group\x00" # 17d10 -.ascii "Area \x00" # 17d20 -.ascii "Notification \x00" # 17d30 -.ascii "Console Log \x00" # 17d40 -.align 2 # 17d50 - -panic_load_more_jumps: -blrl # 17d50 -.long 0 # 17d54 -.long 0x00000020 # 17d58 -.long 0x00000400 # 17d5c -.long 0x00000040 # 17d60 -.long 0x00000034 # 17d64 -.long 0x00000020 # 17d68 -.long 0x00000024 # 17d6c -.long 0x000003c0 # 17d70 -.long 0x000000c0 # 17d74 -.long 0x00000020 # 17d78 -.long 0x00000058 # 17d7c -.long 0x000000a0 # 17d80 -.long 0x00000028 # 17d84 -.long 0x00000010 # 17d88 - -panic_load_id_args: -blrl # 17d8c -.ascii "-all\x00" # 17d90 -.ascii "-p\x00" # 17d95 -.ascii "-t\x00" # 17d98 -.ascii "-tm\x00" # 17d9b -.ascii "-q\x00" # 17d9f -.ascii "-s\x00" # 17da2 -.ascii "-r\x00" # 17da5 -.ascii "-c\x00" # 17da8 -.ascii "-sp\x00" # 17dab -.ascii "-e\x00" # 17daf -.ascii "-cg\x00" # 17db2 -.ascii "-a\x00" # 17db6 -.ascii "-n\x00" # 17db9 -.ascii "-nc\x00" # 17dbc -.byte 0xff # 17dc0 -.align 2 # 17dc1 - -cmd_display_kern_data: -mfspr r17, 272/*sprg0*/ # 17dc4 -bl 1f # 17dc8 -.ascii "Kernel version " # 17dcc -.short 0 # 17ddb -.align 2 # 17ddd -1: mflr r8 # 17de0 -bl print_string # 17de4 -lhz r8, 0x0fe4( r1) # kdp.u16_version # 17de8 -bl print_short_hex # 17dec -bl 1f # 17df0 -.ascii "Code base " # 17df4 -.short 0 # 17dfe -.align 2 # 17e00 -1: mflr r8 # 17e00 -bl print_string # 17e04 -lwz r8, 0x064c( r1) # kdp.phys_kern_base # 17e08 -bl print_word_hex # 17e0c -bl 1f # 17e10 -.ascii "PSA " # 17e14 -.short 0 # 17e18 -.align 2 # 17e1a -1: mflr r8 # 17e1c -bl print_string # 17e20 -addi r8, r17, -0xb90 # ewa.psa # 17e24 -bl print_word_hex # 17e28 -bl 1f # 17e2c -.ascii "KDP " # 17e30 -.short 0 # 17e34 -.align 2 # 17e36 -1: mflr r8 # 17e38 -bl print_string # 17e3c -mr r8, r1 # 17e40 -bl print_word_hex # 17e44 -bl 1f # 17e48 -.ascii "EDP " # 17e4c -.short 0 # 17e50 -.align 2 # 17e52 -1: mflr r8 # 17e54 -bl print_string # 17e58 -lwz r8, 0x0634( r1) # kdp.pa_edp # 17e5c -bl print_word_hex # 17e60 -bl 1f # 17e64 -.ascii "^nCurrent EWA " # 17e68 -.short 0 # 17e76 -.align 2 # 17e78 -1: mflr r8 # 17e78 -bl print_string # 17e7c -mr r8, r17 # 17e80 -bl print_word_hex # 17e84 -bl 1f # 17e88 -.ascii " is CPU " # 17e8c -.short 0 # 17e94 -.align 2 # 17e96 -1: mflr r8 # 17e98 -bl print_string # 17e9c -lhz r8, -0x0116(r17) # ewa.cpu_which # 17ea0 -bl print_short_hex # 17ea4 -bl 1f # 17ea8 -.ascii " ID-" # 17eac -.short 0 # 17eb0 -.align 2 # 17eb2 -1: mflr r8 # 17eb4 -bl print_string # 17eb8 -lwz r8, -0x0340(r17) # ewa.cpu_id # 17ebc -bl print_word_hex # 17ec0 -lwz r18, -0x0008(r17) # ewa.cur_task_struct # 17ec4 -bl 1f # 17ec8 -.ascii "^nCurrent task " # 17ecc -.short 0 # 17edb -.align 2 # 17edd -1: mflr r8 # 17ee0 -bl print_string # 17ee4 -mr r8, r18 # 17ee8 -bl print_word_hex # 17eec -bl 1f # 17ef0 -.ascii "ID-" # 17ef4 -.short 0 # 17ef7 -.align 2 # 17ef9 -1: mflr r8 # 17efc -bl print_string # 17f00 -lwz r8, 0x0000(r18) # task.id # 17f04 -bl print_word_hex # 17f08 -bl 1f # 17f0c -.ascii "name \"" # 17f10 -.short 0 # 17f16 -.align 2 # 17f18 -1: mflr r8 # 17f18 -bl print_string # 17f1c -lwz r8, 0x0074(r18) # task.fourcc # 17f20 -rotlwi r8, r8, 0x08 # 17f24 -bl print_char # 17f28 -rotlwi r8, r8, 0x08 # 17f2c -bl print_char # 17f30 -rotlwi r8, r8, 0x08 # 17f34 -bl print_char # 17f38 -rotlwi r8, r8, 0x08 # 17f3c -bl print_char # 17f40 -bl 1f # 17f44 -.ascii "\" Owning process " # 17f48 -.short 0 # 17f59 -.align 2 # 17f5b -1: mflr r8 # 17f5c -bl print_string # 17f60 -lwz r8, 0x006c(r18) # task.owning_process_struct -bl print_word_hex # 17f68 -bl 1f # 17f6c -.ascii " ID-" # 17f70 -.short 0 # 17f74 -.align 2 # 17f76 -1: mflr r8 # 17f78 -bl print_string # 17f7c -lwz r8, 0x0060(r18) # task.owning_process_id # 17f80 -bl print_word_hex # 17f84 -bl 1f # 17f88 -.ascii "^nAddress Space " # 17f8c -.short 0 # 17f9c -.align 2 # 17f9e -1: mflr r8 # 17fa0 -bl print_string # 17fa4 -lwz r18, -0x001c(r17) # ewa.address_space_struct # 17fa8 -mr r8, r18 # 17fac -bl print_word_hex # 17fb0 -bl 1f # 17fb4 -.ascii " ID-" # 17fb8 -.short 0 # 17fbc -.align 2 # 17fbe -1: mflr r8 # 17fc0 -bl print_string # 17fc4 -lwz r8, 0x0000(r18) # addrspc.id # 17fc8 -bl print_word_hex # 17fcc -bl 1f # 17fd0 -.ascii "^n" # 17fd4 -.short 0 # 17fd6 -.align 2 # 17fd8 -1: mflr r8 # 17fd8 -bl print_string # 17fdc -bl print_xpt_info # 17fe0 -b panic_prompt # 17fe4 - -cmd_dump_registers: -bl 1f # 17fe8 -.ascii "Kernel registers:^n" # 17fec -.short 0 # 17fff -.align 2 # 18001 -1: mflr r8 # 18004 -bl print_string # 18008 -bl print_sprgs # 1800c -bl print_sprs # 18010 -bl 1f # 18014 -.ascii "^n" # 18018 -.short 0 # 1801a -.align 2 # 1801c -1: mflr r8 # 1801c -bl print_string # 18020 -bl print_segment_registers # 18024 -bl 1f # 18028 -.ascii "^n" # 1802c -.short 0 # 1802e -.align 2 # 18030 -1: mflr r8 # 18030 -bl print_string # 18034 -bl print_gprs # 18038 -b panic_prompt # 1803c - - - -/*********************************************************** - - major_0x18040 - -***********************************************************/ - -.align 6 # 18040 - -.long 0x7e0802a6 # 18040 -.long 0x822107b4 # 18044 -.long 0x56318436 # 18048 -.long 0x2c116800 # 1804c -.long 0x408200f0 # 18050 -.long 0x8221071c # 18054 -.long 0x5631843e # 18058 -.long 0x7231ffa0 # 1805c -.long 0x2c1102a0 # 18060 -.long 0x40820040 # 18064 -.long 0x48000031 # 18068 -.long 0x43617573 # 1806c -.long 0x65642062 # 18070 -.long 0x7920656d # 18074 -.long 0x756c6174 # 18078 -.long 0x6f722074 # 1807c -.long 0x65726d69 # 18080 -.long 0x6e617469 # 18084 -.long 0x6f6e2072 # 18088 -.long 0x65717565 # 1808c -.long 0x73745e6e # 18090 -.long 0 # 18094 -.long 0x7d0802a6 # 18098 -.long 0x4bffe345 # 1809c -.long 0x4800003c # 180a0 -.long 0x48000031 # 180a4 -.long 0x43617573 # 180a8 -.long 0x65642062 # 180ac -.long 0x7920756e # 180b0 -.long 0x68616e64 # 180b4 -.long 0x6c656420 # 180b8 -.long 0x656d756c # 180bc -.long 0x61746f72 # 180c0 -.long 0x20657863 # 180c4 -.long 0x65707469 # 180c8 -.long 0x6f6e5e6e # 180cc -.long 0 # 180d0 -.long 0x7d0802a6 # 180d4 -.long 0x4bffe309 # 180d8 -.long 0x8221079c # 180dc -.long 0x82410704 # 180e0 -.long 0x7e328850 # 180e4 -.long 0x2c110100 # 180e8 -.long 0x2c91ff00 # 180ec -.long 0x41810050 # 180f0 -.long 0x4184004c # 180f4 -.long 0x48000041 # 180f8 -.long 0x4c6f6f6b # 180fc -.long 0x73206c69 # 18100 -.long 0x6b652069 # 18104 -.long 0x6e746572 # 18108 -.long 0x72757074 # 1810c -.long 0x20737461 # 18110 -.long 0x636b206f # 18114 -.long 0x76657266 # 18118 -.long 0x6c6f7720 # 1811c -.long 0x6279206f # 18120 -.long 0x73206f72 # 18124 -.long 0x20617070 # 18128 -.long 0x6c696361 # 1812c -.long 0x74696f6e # 18130 -.long 0x5e6e0000 # 18134 -.long 0x7d0802a6 # 18138 -.long 0x4bffe2a5 # 1813c -.long 0x7e0803a6 # 18140 -.long 0x4e800020 # 18144 - - - -/*********************************************************** - - print_xpt_info - -************************************************************ - -Xrefs: -panic - -***********************************************************/ - -.align 3 # 18148 - -print_xpt_info: /* < outside referer */ -mflr r16 # 18148 -lwz r18, 0x064c( r1) # 1814c -lis r18, (nk_end - nk_start)@h # 18150 -ori r18, r18, (nk_end - nk_start)@l # 18154 -add r19, r18, r19 # 18158 -bl 1f # 1815c -.ascii "Termination caller " # 18160 -.short 0 # 18173 -.align 2 # 18175 -1: mflr r8 # 18178 -bl print_string # 1817c -lwz r20, 0x0904( r1) # 18180 -mr r8, r20 # 18184 -bl print_word_hex # 18188 -subf. r21, r18, r20 # 1818c -cmplw cr1, r20, r19 # 18190 -blt- print_xpt_info_0x84 # 18194 -bge- cr1, print_xpt_info_0x84 # 18198 -bl 1f # 1819c -.ascii "( NK+" # 181a0 -.short 0 # 181a5 -.align 2 # 181a7 -1: mflr r8 # 181a8 -bl print_string # 181ac -mr r8, r21 # 181b0 -bl print_word_hex # 181b4 -bl 1f # 181b8 -.ascii ")^n" # 181bc -.short 0 # 181bf -.align 2 # 181c1 -1: mflr r8 # 181c4 -bl print_string # 181c8 - -print_xpt_info_0x84: -bl 1f # 181cc -.ascii " Last exception at " # 181d0 -.short 0 # 181e3 -.align 2 # 181e5 -1: mflr r8 # 181e8 -bl print_string # 181ec -mfspr r8, 27/*srr1*/ # 181f0 -bl print_word_hex # 181f4 -mfspr r8, 26/*srr0*/ # 181f8 -bl print_word_hex # 181fc -mfspr r8, 26/*srr0*/ # 18200 -subf. r21, r18, r8 # 18204 -cmplw cr1, r8, r19 # 18208 -blt- print_xpt_info_0xf8 # 1820c -bge- cr1, print_xpt_info_0xf8 # 18210 -bl 1f # 18214 -.ascii "( NK+" # 18218 -.short 0 # 1821d -.align 2 # 1821f -1: mflr r8 # 18220 -bl print_string # 18224 -mr r8, r21 # 18228 -bl print_word_hex # 1822c -bl 1f # 18230 -.ascii ")" # 18234 -.short 0 # 18235 -.align 2 # 18237 -1: mflr r8 # 18238 -bl print_string # 1823c - -print_xpt_info_0xf8: -bl 1f # 18240 -.ascii "^n" # 18244 -.short 0 # 18246 -.align 2 # 18248 -1: mflr r8 # 18248 -bl print_string # 1824c -mtlr r16 # 18250 -blr # 18254 - - - -/*********************************************************** - - print_sprgs - -************************************************************ - -Goldmine. Tells me what the SPRGs do! - -************************************************************ - -Xrefs: -panic - -***********************************************************/ - -.align 3 # 18258 - -print_sprgs: /* < outside referer */ -mflr r16 # 18258 -bl 1f # 1825c -.ascii "SPRGs ewa: " # 18260 -.short 0 # 1826c -.align 2 # 1826e -1: mflr r8 # 18270 -bl print_string # 18274 -mfspr r8, 272/*sprg0*/ # 18278 -bl print_word_hex # 1827c -bl 1f # 18280 -.ascii " r1: " # 18284 -.short 0 # 18289 -.align 2 # 1828b -1: mflr r8 # 1828c -bl print_string # 18290 -mfspr r8, 273/*sprg1*/ # 18294 -bl print_word_hex # 18298 -bl 1f # 1829c -.ascii " lr: " # 182a0 -.short 0 # 182a5 -.align 2 # 182a7 -1: mflr r8 # 182a8 -bl print_string # 182ac -mfspr r8, 274/*sprg2*/ # 182b0 -bl print_word_hex # 182b4 -bl 1f # 182b8 -.ascii " vecBase: " # 182bc -.short 0 # 182c6 -.align 2 # 182c8 -1: mflr r8 # 182c8 -bl print_string # 182cc -mfspr r8, 275/*sprg3*/ # 182d0 -bl print_word_hex # 182d4 -bl 1f # 182d8 -.ascii "^n" # 182dc -.short 0 # 182de -.align 2 # 182e0 -1: mflr r8 # 182e0 -bl print_string # 182e4 -mtlr r16 # 182e8 -blr # 182ec - - - -/*********************************************************** - - print_sprs - -************************************************************ - -Both user-mode and supervisor-only - -************************************************************ - -Xrefs: -panic - -***********************************************************/ - -.align 4 # 182f0 - -print_sprs: /* < outside referer */ -mflr r16 # 182f0 -bl 1f # 182f4 -.ascii " cr: " # 182f8 -.short 0 # 18304 -.align 2 # 18306 -1: mflr r8 # 18308 -bl print_string # 1830c -lwz r8, 0x0780( r1) # 18310 -bl print_word_hex # 18314 -bl 1f # 18318 -.ascii "xer: " # 1831c -.short 0 # 18321 -.align 2 # 18323 -1: mflr r8 # 18324 -bl print_string # 18328 -lwz r8, 0x0788( r1) # 1832c -bl print_word_hex # 18330 -bl 1f # 18334 -.ascii "ctr: " # 18338 -.short 0 # 1833d -.align 2 # 1833f -1: mflr r8 # 18340 -bl print_string # 18344 -lwz r8, 0x0790( r1) # 18348 -bl print_word_hex # 1834c -bl 1f # 18350 -.ascii "lr: " # 18354 -.short 0 # 18358 -.align 2 # 1835a -1: mflr r8 # 1835c -bl print_string # 18360 -lwz r8, 0x078c( r1) # 18364 -bl print_word_hex # 18368 -bl 1f # 1836c -.ascii "^n dsisr: " # 18370 -.short 0 # 18380 -.align 2 # 18382 -1: mflr r8 # 18384 -bl print_string # 18388 -lwz r8, 0x0798( r1) # 1838c -bl print_word_hex # 18390 -bl 1f # 18394 -.ascii "dar:" # 18398 -.short 0 # 1839c -.align 2 # 1839e -1: mflr r8 # 183a0 -bl print_string # 183a4 -lwz r8, 0x079c( r1) # 183a8 -bl print_word_hex # 183ac -bl 1f # 183b0 -.ascii "pvr: " # 183b4 -.short 0 # 183b9 -.align 2 # 183bb -1: mflr r8 # 183bc -bl print_string # 183c0 -lwz r8, 0x0794( r1) # 183c4 -bl print_word_hex # 183c8 -bl 1f # 183cc -.ascii "^n" # 183d0 -.short 0 # 183d2 -.align 2 # 183d4 -1: mflr r8 # 183d4 -bl print_string # 183d8 -mtlr r16 # 183dc -blr # 183e0 - - - -/*********************************************************** - - print_segment_registers - -************************************************************ - -Xrefs: -panic - -***********************************************************/ - -print_segment_registers: /* < outside referer */ -mflr r16 # 183e4 -bl 1f # 183e8 -.ascii " sr0-sr7 " # 183ec -.short 0 # 183f6 -.align 2 # 183f8 -1: mflr r8 # 183f8 -bl print_string # 183fc -li r17, 0x08 # 18400 -mtctr r17 # 18404 -li r18, 0x00 # 18408 - -print_segment_registers_0x28: -mfsrin r8, r18 # 1840c -addis r18, r18, 0x1000 # 18410 -bl print_word_hex # 18414 -bdnz+ print_segment_registers_0x28 # 18418 -bl 1f # 1841c -.ascii "^n sr8-sr15 " # 18420 -.short 0 # 1842c -.align 2 # 1842e -1: mflr r8 # 18430 -bl print_string # 18434 -li r17, 0x08 # 18438 -mtctr r17 # 1843c - -print_segment_registers_0x5c: -mfsrin r8, r18 # 18440 -addis r18, r18, 0x1000 # 18444 -bl print_word_hex # 18448 -bdnz+ print_segment_registers_0x5c # 1844c -bl 1f # 18450 -.ascii "^n" # 18454 -.short 0 # 18456 -.align 2 # 18458 -1: mflr r8 # 18458 -bl print_string # 1845c -mtlr r16 # 18460 -blr # 18464 - - - -/*********************************************************** - - print_gprs - -************************************************************ - -Xrefs: -panic - -***********************************************************/ - -.align 3 # 18468 - -print_gprs: /* < outside referer */ -mflr r16 # 18468 -addi r17, r1, 0x6fc # 1846c -bl 1f # 18470 -.ascii " r0-r7 " # 18474 -.short 0 # 1847e -.align 2 # 18480 -1: mflr r8 # 18480 -bl print_string # 18484 -li r18, 0x08 # 18488 -mtctr r18 # 1848c - -print_gprs_0x28: -lwzu r8, 0x0004(r17) # 18490 -bl print_word_hex # 18494 -bdnz+ print_gprs_0x28 # 18498 -bl 1f # 1849c -.ascii "^n r8-r15 " # 184a0 -.short 0 # 184ac -.align 2 # 184ae -1: mflr r8 # 184b0 -bl print_string # 184b4 -li r18, 0x08 # 184b8 -mtctr r18 # 184bc - -print_gprs_0x58: -lwzu r8, 0x0004(r17) # 184c0 -bl print_word_hex # 184c4 -bdnz+ print_gprs_0x58 # 184c8 -bl 1f # 184cc -.ascii "^n r16-r23 " # 184d0 -.short 0 # 184dc -.align 2 # 184de -1: mflr r8 # 184e0 -bl print_string # 184e4 -li r18, 0x08 # 184e8 -mtctr r18 # 184ec - -print_gprs_0x88: -lwzu r8, 0x0004(r17) # 184f0 -bl print_word_hex # 184f4 -bdnz+ print_gprs_0x88 # 184f8 -bl 1f # 184fc -.ascii "^n r24-r31 " # 18500 -.short 0 # 1850c -.align 2 # 1850e -1: mflr r8 # 18510 -bl print_string # 18514 -li r18, 0x08 # 18518 -mtctr r18 # 1851c - -print_gprs_0xb8: -lwzu r8, 0x0004(r17) # 18520 -bl print_word_hex # 18524 -bdnz+ print_gprs_0xb8 # 18528 -bl 1f # 1852c -.ascii "^n" # 18530 -.short 0 # 18532 -.align 2 # 18534 -1: mflr r8 # 18534 -bl print_string # 18538 -mtlr r16 # 1853c -blr # 18540 - - - -/*********************************************************** - - print_memory - -************************************************************ - -Xrefs: -panic - -***********************************************************/ - -print_memory: /* < outside referer */ -mflr r18 # 18544 -srwi r17, r17, 4 # 18548 - -print_memory_0x8: -mr r8, r16 # 1854c -bl print_word_hex # 18550 -bl 1f # 18554 -.ascii " " # 18558 -.short 0 # 18559 -.align 2 # 1855b -1: mflr r8 # 1855c -bl print_string # 18560 -lwz r8, 0x0000(r16) # 18564 -bl print_word_hex # 18568 -lwz r8, 0x0004(r16) # 1856c -bl print_word_hex # 18570 -lwz r8, 0x0008(r16) # 18574 -bl print_word_hex # 18578 -lwz r8, 0x000c(r16) # 1857c -bl print_word_hex # 18580 -bl 1f # 18584 -.ascii " *" # 18588 -.short 0 # 1858b -.align 2 # 1858d -1: mflr r8 # 18590 -bl print_string # 18594 -li r8, 0x10 # 18598 -addi r16, r16, -0x01 # 1859c -mtctr r8 # 185a0 - -print_memory_0x60: -lbzu r8, 0x0001(r16) # 185a4 -cmpwi r8, 0xff # 185a8 -beq- print_memory_0x74 # 185ac -cmpwi r8, 0x20 # 185b0 -bgt- print_memory_0x78 # 185b4 - -print_memory_0x74: -li r8, 0x20 # 185b8 - -print_memory_0x78: -bl print_char # 185bc -bdnz+ print_memory_0x60 # 185c0 -bl 1f # 185c4 -.ascii "*^n" # 185c8 -.short 0 # 185cb -.align 2 # 185cd -1: mflr r8 # 185d0 -bl print_string # 185d4 -addi r16, r16, 0x01 # 185d8 -addi r17, r17, -0x01 # 185dc -bl getchar # 185e0 -cmpwi r8, -0x01 # 185e4 -bne- print_memory_0xb0 # 185e8 -cmpwi r17, 0x00 # 185ec -bne+ print_memory_0x8 # 185f0 - -print_memory_0xb0: -bl 1f # 185f4 -.ascii "^n" # 185f8 -.short 0 # 185fa -.align 2 # 185fc -1: mflr r8 # 185fc -bl print_string # 18600 -mtlr r18 # 18604 -blr # 18608 - - - -/*********************************************************** - - print_memory_logical - -************************************************************ - -Xrefs: -panic - -***********************************************************/ - -print_memory_logical: /* < outside referer */ -mflr r18 # 1860c -srwi r17, r17, 4 # 18610 - -print_memory_logical_0x8: -mr r8, r16 # 18614 -bl print_word_hex # 18618 -bl 1f # 1861c -.ascii " " # 18620 -.short 0 # 18621 -.align 2 # 18623 -1: mflr r8 # 18624 -bl print_string # 18628 -li r19, 0x10 # 1862c - -print_memory_logical_0x24: -mr r27, r16 # 18630 -bl major_0x04c20 # 18634 -beq- print_memory_logical_0x5c # 18638 -blt- print_memory_logical_0x48 # 1863c -bl 1f # 18640 -.ascii ".." # 18644 -.short 0 # 18646 -.align 2 # 18648 -1: mflr r8 # 18648 -bl print_string # 1864c -b print_memory_logical_0x6c # 18650 - -print_memory_logical_0x48: -bl 1f # 18654 -.ascii "--" # 18658 -.short 0 # 1865a -.align 2 # 1865c -1: mflr r8 # 1865c -bl print_string # 18660 -b print_memory_logical_0x6c # 18664 - -print_memory_logical_0x5c: -bl major_0x05524 # 18668 -rlwimi r31, r27, 0, 20, 31 # 1866c -lbz r8, 0x0000(r31) # 18670 -bl print_unknown # 18674 - -print_memory_logical_0x6c: -addi r16, r16, 0x01 # 18678 -addi r19, r19, -0x01 # 1867c -andi. r8, r19, 0x03 # 18680 -bne- print_memory_logical_0x84 # 18684 -li r8, 0x20 # 18688 -bl print_char # 1868c - -print_memory_logical_0x84: -cmpwi r19, 0x00 # 18690 -bgt+ print_memory_logical_0x24 # 18694 -bl 1f # 18698 -.ascii " *" # 1869c -.short 0 # 1869f -.align 2 # 186a1 -1: mflr r8 # 186a4 -bl print_string # 186a8 -li r8, 0x10 # 186ac -addi r16, r16, -0x10 # 186b0 -mtctr r8 # 186b4 - -print_memory_logical_0xac: -mr r27, r16 # 186b8 -bl major_0x04c20 # 186bc -li r8, 0x20 # 186c0 -bne- print_memory_logical_0xdc # 186c4 -bl major_0x05524 # 186c8 -rlwimi r31, r27, 0, 20, 31 # 186cc -lbz r8, 0x0000(r31) # 186d0 -cmpwi r8, 0xff # 186d4 -beq- print_memory_logical_0xd8 # 186d8 -cmpwi r8, 0x20 # 186dc -bgt- print_memory_logical_0xdc # 186e0 - -print_memory_logical_0xd8: -li r8, 0x20 # 186e4 - -print_memory_logical_0xdc: -bl print_char # 186e8 -addi r16, r16, 0x01 # 186ec -bdnz+ print_memory_logical_0xac # 186f0 -bl 1f # 186f4 -.ascii "*^n" # 186f8 -.short 0 # 186fb -.align 2 # 186fd -1: mflr r8 # 18700 -bl print_string # 18704 -addi r17, r17, -0x01 # 18708 -bl getchar # 1870c -cmpwi r8, -0x01 # 18710 -bne- print_memory_logical_0x114 # 18714 -cmpwi r17, 0x00 # 18718 -bne+ print_memory_logical_0x8 # 1871c - -print_memory_logical_0x114: -bl 1f # 18720 -.ascii "^n" # 18724 -.short 0 # 18726 -.align 2 # 18728 -1: mflr r8 # 18728 -bl print_string # 1872c -mtlr r18 # 18730 -blr # 18734 - - - -/*********************************************************** - - cmd_lookup - -************************************************************ - -Xrefs: -panic - -************************************************************ - -> r16 = command strings -> r17 = lut - -< cr0 = found -< r17 = ptr to lut entry - -***********************************************************/ - -.align 3 # 18738 - -cmd_lookup: /* < outside referer */ -addi r15, r15, -0x01 # 18738 -addi r16, r16, -0x01 # 1873c -mr r18, r15 # 18740 - -cmd_lookup_0xc: -lbzu r21, 0x0001(r16) # 18744 -lbzu r20, 0x0001(r15) # 18748 -cmpwi r21, 0xff # 1874c -cmpwi cr1, r21, 0x00 # 18750 -beq- cmd_lookup_0x44 # 18754 -beq- cr1, cmd_lookup_0x50 # 18758 -cmpw r20, r21 # 1875c -beq+ cmd_lookup_0xc # 18760 - -cmd_lookup_0x2c: -lbzu r21, 0x0001(r16) # 18764 -cmpwi r21, 0x00 # 18768 -bne+ cmd_lookup_0x2c # 1876c - -cmd_lookup_0x38: -addi r17, r17, 0x04 # 18770 -mr r15, r18 # 18774 -b cmd_lookup_0xc # 18778 - -cmd_lookup_0x44: -addi r15, r18, 0x01 # 1877c -cmpw r15, r18 # 18780 -blr # 18784 - -cmd_lookup_0x50: -cmpwi r20, 0x20 # 18788 -beqlr- # 1878c -cmpwi r20, 0x00 # 18790 -beqlr- # 18794 -b cmd_lookup_0x38 # 18798 - - - -/*********************************************************** - - next_cmd_word - -************************************************************ - -Xrefs: -panic - -************************************************************ - -> r15 = start - -< r15 = ptr -< r16 = char - -***********************************************************/ - -next_cmd_word: /* < outside referer */ -addi r15, r15, -0x01 # 1879c - -next_cmd_word_0x4: -lbzu r16, 0x0001(r15) # 187a0 -cmpwi r16, 0x20 # 187a4 -beq+ next_cmd_word_0x4 # 187a8 -blr # 187ac - - - -/*********************************************************** - - major_0x187b0 - -************************************************************ - -Xrefs: -panic - -***********************************************************/ - -.align 4 # 187b0 - -major_0x187b0: /* < outside referer */ -addi r15, r15, -0x01 # 187b0 -li r16, 0x00 # 187b4 - -major_0x187b0_0x8: -lbzu r17, 0x0001(r15) # 187b8 -cmplwi r17, 0x30 # 187bc -cmplwi cr1, r17, 0x39 # 187c0 -blt- major_0x187b0_0x28 # 187c4 -bgt- cr1, major_0x187b0_0x28 # 187c8 -slwi r16, r16, 4 # 187cc -rlwimi r16, r17, 0, 28, 31 # 187d0 -b major_0x187b0_0x8 # 187d4 - -major_0x187b0_0x28: -cmplwi r17, 0x61 # 187d8 -cmplwi cr1, r17, 0x66 # 187dc -blt- major_0x187b0_0x48 # 187e0 -bgt- cr1, major_0x187b0_0x48 # 187e4 -addi r17, r17, -0x57 # 187e8 -slwi r16, r16, 4 # 187ec -rlwimi r16, r17, 0, 28, 31 # 187f0 -b major_0x187b0_0x8 # 187f4 - -major_0x187b0_0x48: -cmplwi r17, 0x41 # 187f8 -cmplwi cr1, r17, 0x46 # 187fc -blt- major_0x187b0_0x68 # 18800 -bgt- cr1, major_0x187b0_0x68 # 18804 -addi r17, r17, -0x37 # 18808 -slwi r16, r16, 4 # 1880c -rlwimi r16, r17, 0, 28, 31 # 18810 -b major_0x187b0_0x8 # 18814 - -major_0x187b0_0x68: -cmpwi r17, 0x00 # 18818 -beqlr- # 1881c -cmpwi r17, 0x20 # 18820 -blr # 18824 - -major_0x187b0_0x78: /* < outside referer */ -lwz r1, -0x0004( r1) # 18828 -mfmsr r0 # 1882c -ori r0, r0, 0x2000 # 18830 -mtmsr r0 # 18834 -isync # 18838 -lfd f31, 0x08fc( r1) # 1883c -mtfsf 0xff, f31 # 18840 -lfd f0, 0x0800( r1) # 18844 -lfd f1, 0x0808( r1) # 18848 -lfd f2, 0x0810( r1) # 1884c -lfd f3, 0x0818( r1) # 18850 -lfd f4, 0x0820( r1) # 18854 -lfd f5, 0x0828( r1) # 18858 -lfd f6, 0x0830( r1) # 1885c -lfd f7, 0x0838( r1) # 18860 -lfd f8, 0x0840( r1) # 18864 -lfd f9, 0x0848( r1) # 18868 -lfd f10, 0x0850( r1) # 1886c -lfd f11, 0x0858( r1) # 18870 -lfd f12, 0x0860( r1) # 18874 -lfd f13, 0x0868( r1) # 18878 -lfd f14, 0x0870( r1) # 1887c -lfd f15, 0x0878( r1) # 18880 -lfd f16, 0x0880( r1) # 18884 -lfd f17, 0x0888( r1) # 18888 -lfd f18, 0x0890( r1) # 1888c -lfd f19, 0x0898( r1) # 18890 -lfd f20, 0x08a0( r1) # 18894 -lfd f21, 0x08a8( r1) # 18898 -lfd f22, 0x08b0( r1) # 1889c -lfd f23, 0x08b8( r1) # 188a0 -lfd f24, 0x08c0( r1) # 188a4 -lfd f25, 0x08c8( r1) # 188a8 -lfd f26, 0x08d0( r1) # 188ac -lfd f27, 0x08d8( r1) # 188b0 -lfd f28, 0x08e0( r1) # 188b4 -lfd f29, 0x08e8( r1) # 188b8 -lfd f30, 0x08f0( r1) # 188bc -lfd f31, 0x08f8( r1) # 188c0 -lwz r0, 0x07c0( r1) # 188c4 -mtsr 0x00, r0 # 188c8 -lwz r0, 0x07c4( r1) # 188cc -mtsr 0x01, r0 # 188d0 -lwz r0, 0x07c8( r1) # 188d4 -mtsr 0x02, r0 # 188d8 -lwz r0, 0x07cc( r1) # 188dc -mtsr 0x03, r0 # 188e0 -lwz r0, 0x07d0( r1) # 188e4 -mtsr 0x04, r0 # 188e8 -lwz r0, 0x07d4( r1) # 188ec -mtsr 0x05, r0 # 188f0 -lwz r0, 0x07d8( r1) # 188f4 -mtsr 0x06, r0 # 188f8 -lwz r0, 0x07dc( r1) # 188fc -mtsr 0x07, r0 # 18900 -lwz r0, 0x07e0( r1) # 18904 -mtsr 0x08, r0 # 18908 -lwz r0, 0x07e4( r1) # 1890c -mtsr 0x09, r0 # 18910 -lwz r0, 0x07e8( r1) # 18914 -mtsr 0x0a, r0 # 18918 -lwz r0, 0x07ec( r1) # 1891c -mtsr 0x0b, r0 # 18920 -lwz r0, 0x07f0( r1) # 18924 -mtsr 0x0c, r0 # 18928 -lwz r0, 0x07f4( r1) # 1892c -mtsr 0x0d, r0 # 18930 -lwz r0, 0x07f8( r1) # 18934 -mtsr 0x0e, r0 # 18938 -lwz r0, 0x07fc( r1) # 1893c -mtsr 0x0f, r0 # 18940 -lwz r0, 0x07a8( r1) # 18944 -mtspr 22/*dec*/, r0 # 18948 -lwz r0, 0x07b4( r1) # 1894c -mtspr 26/*srr0*/, r0 # 18950 -lwz r0, 0x07b8( r1) # 18954 -mtspr 27/*srr1*/, r0 # 18958 -lwz r0, 0x07bc( r1) # 1895c -mtmsr r0 # 18960 -mfspr r0, 287/*pvr*/ # 18964 -rlwinm. r0, r0, 0, 0, 14 # 18968 -bne- major_0x187b0_0x1c8 # 1896c -lwz r0, 0x0784( r1) # 18970 -mtspr 0/*mq*/, r0 # 18974 - -major_0x187b0_0x1c8: -lwz r0, 0x0788( r1) # 18978 -mtxer r0 # 1897c -lwz r0, 0x078c( r1) # 18980 -mtspr 274/*sprg2*/, r0 # 18984 -lwz r0, 0x0790( r1) # 18988 -mtctr r0 # 1898c -lwz r0, 0x0794( r1) # 18990 -mtspr 287/*pvr*/, r0 # 18994 -lwz r0, 0x0798( r1) # 18998 -mtspr 18/*dsisr*/, r0 # 1899c -lwz r0, 0x079c( r1) # 189a0 -mtspr 19/*dar*/, r0 # 189a4 -lwz r0, 0x0780( r1) # 189a8 -mtcr r0 # 189ac -lwz r0, 0x0700( r1) # 189b0 -lwz r2, 0x0704( r1) # 189b4 -mtspr 273/*sprg1*/, r2 # 189b8 -lmw r2, 0x0708( r1) # 189bc -blr # 189c0 - - - -/*********************************************************** - - major_0x189c4 - -***********************************************************/ - -.long 0x4800001c # 189c4 -.long 0x60000000 # 189c8 -.long 0x60000000 # 189cc -.long 0x60000000 # 189d0 -.long 0x60000000 # 189d4 -.long 0x60000000 # 189d8 -.long 0x60000000 # 189dc - - - -/*********************************************************** - - major_0x189e0 - -***********************************************************/ - -.align 5 # 189e0 - -.long 0x48000020 # 189e0 -.long 0x60000000 # 189e4 -.long 0x60000000 # 189e8 -.long 0x60000000 # 189ec -.long 0x60000000 # 189f0 -.long 0x60000000 # 189f4 -.long 0x60000000 # 189f8 -.long 0x60000000 # 189fc - - - -/*********************************************************** - - screenlog_init - -************************************************************ - -Xrefs: -replace_old_kernel -new_world -undo_failed_kernel_replacement - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -.align 9 # 18a00 - -screenlog_init: /* < outside referer */ -stmw r29, -0x0110( r1) # kdp.-0x110 # 18a00 -lis r30, -0x01 # 18a04 -ori r30, r30, 0x7000 # 18a08 -add r30, r30, r1 # 18a0c -addi r31, r30, 0x2000 # 18a10 -addi r30, r30, 0x04 # 18a14 - -screenlog_init_0x18: -cmplw r30, r31 # 18a18 -addi r29, r31, 0x04 # 18a1c -bge- screenlog_init_0x2c # 18a20 -stwu r29, -0x1000(r31) # 18a24 -b screenlog_init_0x18 # 18a28 - -screenlog_init_0x2c: -addi r31, r30, 0x1000 # 18a2c -stw r30, -0x0004(r31) # 18a30 -stw r30, -0x0404( r1) # kdp.-0x404 # 18a34 -stw r30, -0x0400( r1) # kdp.-0x400 # 18a38 -li r29, 0x16 # 18a3c -sth r29, -0x0360( r1) # kdp.uint16_log_window_y # 18a40 -li r29, 0x18 # 18a44 -sth r29, -0x035e( r1) # kdp.uint16_log_window_x # 18a48 -li r29, 0x1f6 # 18a4c -sth r29, -0x035c( r1) # kdp.uint16_log_window_height -li r29, 0x24c # 18a54 -sth r29, -0x035a( r1) # kdp.uint16_log_window_width -li r29, 0x5e # 18a5c -sth r29, -0x0358( r1) # kdp.-0x358 # 18a60 -li r29, 0x30 # 18a64 -sth r29, -0x0356( r1) # kdp.-0x356 # 18a68 -lmw r29, -0x0110( r1) # kdp.-0x110 # 18a6c -blr # 18a70 - - - -/*********************************************************** - - screenlog_putchar - -************************************************************ - -Xrefs: -print_string -print_decimal -print_digity_common -print_char - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -screenlog_putchar: /* < outside referer */ -lwz r30, -0x0404( r1) # kdp.-0x404 # 18a74 -stb r29, 0x0000(r30) # 18a78 -addi r30, r30, 0x01 # 18a7c -andi. r29, r30, 0xfff # 18a80 -stw r30, -0x0404( r1) # kdp.-0x404 # 18a84 -bnelr- # 18a88 -lwz r30, -0x1000(r30) # 18a8c -stw r30, -0x0404( r1) # kdp.-0x404 # 18a90 -blr # 18a94 - - - -/*********************************************************** - - screenlog_redraw - -************************************************************ - -Xrefs: -major_0x0c52c -print_string - -************************************************************ - -> r1 = kdp - -***********************************************************/ - -.align 3 # 18a98 - -screenlog_redraw: /* < outside referer */ -stmw r2, -0x03e8( r1) # kdp.-0x3e8 # 18a98 -mflr r14 # 18a9c -mfcr r15 # 18aa0 -stw r14, -0x03f0( r1) # kdp.-0x3f0 # 18aa4 -stw r15, -0x03ec( r1) # kdp.-0x3ec # 18aa8 -addi r26, r1, -0x690 # kdp.-0x690 # 18aac -mfspr r2, 275/*sprg3*/ # 18ab0 -mtspr 275/*sprg3*/, r26 # 18ab4 -lwz r26, 0x0edc( r1) # kdp.0xedc # 18ab8 -andi. r26, r26, 0x08 # 18abc -beq- major_0x18bec # 18ac0 -lwz r14, -0x0404( r1) # kdp.-0x404 # 18ac4 -lwz r15, -0x0400( r1) # kdp.-0x400 # 18ac8 -cmpw r14, r15 # 18acc -beq- major_0x18bec # 18ad0 -bl major_0x18c18 # 18ad4 - -screenlog_redraw_0x40: -li r9, 0x00 # 18ad8 -li r10, 0x00 # 18adc -li r25, 0x20 # 18ae0 -bl major_0x18e54 # 18ae4 -bl major_0x19018 # 18ae8 -mflr r21 # 18aec -bl major_0x18e24 # 18af0 -bl funny_thing # 18af4 -bl major_0x18e24 # 18af8 -bl funny_thing # 18afc -lwz r14, -0x0404( r1) # kdp.-0x404 # 18b00 -lwz r15, -0x0400( r1) # kdp.-0x400 # 18b04 -li r16, 0x00 # 18b08 - -screenlog_redraw_0x74: -cmpw r14, r15 # 18b0c -beq- screenlog_redraw_0x118 # 18b10 -lbz r25, 0x0000(r15) # 18b14 -addi r15, r15, 0x01 # 18b18 -andi. r17, r15, 0xfff # 18b1c -bne+ screenlog_redraw_0x90 # 18b20 -lwz r15, -0x1000(r15) # 18b24 - -screenlog_redraw_0x90: -cmplwi r25, 0x0d # 18b28 -cmplwi cr1, r25, 0x0a # 18b2c -beq+ screenlog_redraw_0x74 # 18b30 -beq- cr1, screenlog_redraw_0xc0 # 18b34 -cmpwi r25, 0x00 # 18b38 -cmpwi cr1, r25, 0x07 # 18b3c -beq+ screenlog_redraw_0x74 # 18b40 -beq- cr1, screenlog_redraw_0xe4 # 18b44 -bl major_0x18e54 # 18b48 -lhz r17, -0x0358( r1) # kdp.-0x358 # 18b4c -cmpw r9, r17 # 18b50 -blt+ screenlog_redraw_0x74 # 18b54 - -screenlog_redraw_0xc0: -cmpwi r16, 0x00 # 18b58 -bne- screenlog_redraw_0xcc # 18b5c -mr r16, r15 # 18b60 - -screenlog_redraw_0xcc: -bl funny_thing # 18b64 -lhz r17, -0x0356( r1) # kdp.-0x356 # 18b68 -cmpw r10, r17 # 18b6c -blt+ screenlog_redraw_0x74 # 18b70 -stw r16, -0x0400( r1) # kdp.-0x400 # 18b74 -b screenlog_redraw_0x40 # 18b78 - -screenlog_redraw_0xe4: -lhz r17, -0x0356( r1) # kdp.-0x356 # 18b7c -addi r17, r17, -0x01 # 18b80 -cmpw r10, r17 # 18b84 -blt+ screenlog_redraw_0x74 # 18b88 -lwz r17, -0x0438( r1) # kdp.-0x438 # 18b8c -slwi r25, r17, 2 # 18b90 -add r25, r25, r17 # 18b94 -mfspr r17, 22/*dec*/ # 18b98 -subf r17, r25, r17 # 18b9c - -screenlog_redraw_0x108: -mfspr r25, 22/*dec*/ # 18ba0 -subf. r25, r17, r25 # 18ba4 -bge+ screenlog_redraw_0x108 # 18ba8 -b screenlog_redraw_0x74 # 18bac - -screenlog_redraw_0x118: -bl funny_thing_0x8 # 18bb0 -mfspr r31, 287/*pvr*/ # 18bb4 -rlwinm. r31, r31, 0, 0, 14 # 18bb8 -li r31, 0x00 # 18bbc -bne- screenlog_redraw_0x140 # 18bc0 -mtspr 535/*ibat3l*/, r31 # 18bc4 -isync # 18bc8 -mtspr 534/*ibat3u*/, r18 # 18bcc -mtspr 535/*ibat3l*/, r19 # 18bd0 -b screenlog_redraw_0x150 # 18bd4 - -screenlog_redraw_0x140: -mtspr 542/*dbat3u*/, r31 # 18bd8 -isync # 18bdc -mtspr 543/*dbat3l*/, r19 # 18be0 -mtspr 542/*dbat3u*/, r18 # 18be4 - -screenlog_redraw_0x150: -isync # 18be8 - - - -/*********************************************************** - - major_0x18bec - -************************************************************ - -Xrefs: -screenlog_redraw -major_0x18c18 - -***********************************************************/ - -major_0x18bec: /* < outside referer */ -mtspr 275/*sprg3*/, r2 # 18bec -lwz r14, -0x03f0( r1) # 18bf0 -lwz r15, -0x03ec( r1) # 18bf4 -mtlr r14 # 18bf8 -mtcr r15 # 18bfc -lmw r2, -0x03e8( r1) # 18c00 -blr # 18c04 - - - -/*********************************************************** - - major_0x18c08 - -************************************************************ - -Xrefs: -major_0x18c18 - -***********************************************************/ - -.align 3 # 18c08 - -major_0x18c08: /* < outside referer */ -mfsrin r31, r27 # 18c08 -cmpwi r31, 0x00 # 18c0c -beqlr- # 18c10 -b major_0x05524 # 18c14 - - - -/*********************************************************** - - major_0x18c18 - -************************************************************ - -Xrefs: -screenlog_redraw - -***********************************************************/ - -.align 3 # 18c18 - -major_0x18c18: /* < outside referer */ -mflr r13 # 18c18 -lwz r27, -0x08f8( r1) # 18c1c -cmpwi r27, 0x00 # 18c20 -bne- major_0x18c18_0x40 # 18c24 -lwz r27, 0x0630( r1) # 18c28 -lhz r31, 0x0378(r27) # 18c2c -cmpwi r31, 0x00 # 18c30 -beq- major_0x18c18_0x40 # 18c34 -lwz r31, 0x037c(r27) # 18c38 -cmpwi r31, 0x00 # 18c3c -beq- major_0x18c18_0x40 # 18c40 -stw r31, -0x08f8( r1) # 18c44 -lhz r31, 0x0384(r27) # 18c48 -sth r31, -0x08f4( r1) # 18c4c -lhz r31, 0x0386(r27) # 18c50 -sth r31, -0x08f2( r1) # 18c54 - -major_0x18c18_0x40: -li r27, 0x8a4 # 18c58 -bl major_0x18c08 # 18c5c -beq- major_0x18c18_0xe0 # 18c60 -rlwimi. r27, r31, 0, 0, 19 # 18c64 -ble- major_0x18c18_0xe0 # 18c68 -lwz r27, 0x0000(r27) # 18c6c -cmpwi r27, 0x00 # 18c70 -ble- major_0x18c18_0xe0 # 18c74 -bl major_0x18c08 # 18c78 -beq- major_0x18c18_0xe0 # 18c7c -rlwimi r27, r31, 0, 0, 19 # 18c80 -lwz r27, 0x0000(r27) # 18c84 -cmpwi r27, 0x00 # 18c88 -ble- major_0x18c18_0xe0 # 18c8c -addi r27, r27, 0x16 # 18c90 -bl major_0x18c08 # 18c94 -beq- major_0x18c18_0xe0 # 18c98 -rlwimi r27, r31, 0, 0, 19 # 18c9c -lwz r27, 0x0000(r27) # 18ca0 -cmpwi r27, 0x00 # 18ca4 -ble- major_0x18c18_0xe0 # 18ca8 -bl major_0x18c08 # 18cac -beq- major_0x18c18_0xe0 # 18cb0 -rlwimi r27, r31, 0, 0, 19 # 18cb4 -lwz r27, 0x0000(r27) # 18cb8 -cmpwi r27, 0x00 # 18cbc -ble- major_0x18c18_0xe0 # 18cc0 -bl major_0x18c08 # 18cc4 -beq- major_0x18c18_0xe0 # 18cc8 -rlwimi r27, r31, 0, 0, 19 # 18ccc -lwz r3, 0x0000(r27) # 18cd0 -lhz r5, 0x0004(r27) # 18cd4 -andi. r5, r5, 0x7fff # 18cd8 -lhz r6, 0x0020(r27) # 18cdc -srwi r6, r6, 3 # 18ce0 -cmplwi r6, 0x08 # 18ce4 -bgt- major_0x18c18_0xe0 # 18ce8 -stw r3, -0x08f8( r1) # 18cec -sth r5, -0x08f4( r1) # 18cf0 -sth r6, -0x08f2( r1) # 18cf4 - -major_0x18c18_0xe0: -lwz r3, -0x08f8( r1) # 18cf8 -lhz r5, -0x08f4( r1) # 18cfc -lhz r6, -0x08f2( r1) # 18d00 -cmpwi r3, 0x00 # 18d04 -bne- major_0x18d5c # 18d08 -b major_0x18bec # 18d0c - - - -/*********************************************************** - - major_0x18d10 - -***********************************************************/ - -.align 4 # 18d10 - -.long 0x3c608180 # 18d10 -.long 0x60630200 # 18d14 -.long 0x38a00340 # 18d18 -.long 0x38c00001 # 18d1c -.long 0x4800003c # 18d20 -.long 0x3c60a600 # 18d24 -.long 0x60638000 # 18d28 -.long 0x38a00400 # 18d2c -.long 0x38c00001 # 18d30 -.long 0x48000028 # 18d34 -.long 0x3c609600 # 18d38 -.long 0x60638000 # 18d3c -.long 0x38a00400 # 18d40 -.long 0x38c00001 # 18d44 -.long 0x48000014 # 18d48 -.long 0x3c609600 # 18d4c -.long 0x60638000 # 18d50 -.long 0x38a00400 # 18d54 -.long 0x38c00001 # 18d58 - - - -/*********************************************************** - - major_0x18d5c - -************************************************************ - -Xrefs: -major_0x18c18 - -***********************************************************/ - -major_0x18d5c: /* < outside referer */ -cmpwi cr4, r6, 0x02 # 18d5c -bl major_0x19ab0 # 18d60 -blt- cr4, major_0x18d5c_0x18 # 18d64 -bl major_0x19b00 # 18d68 -beq- cr4, major_0x18d5c_0x18 # 18d6c -bl load_log_colours # 18d70 - -major_0x18d5c_0x18: -mflr r24 # 18d74 -mfspr r31, 287/*pvr*/ # 18d78 -rlwinm. r31, r31, 0, 0, 14 # 18d7c -li r31, 0x00 # 18d80 -bne- major_0x18d5c_0x3c # 18d84 -mfspr r19, 535/*ibat3l*/ # 18d88 -mfspr r18, 534/*ibat3u*/ # 18d8c -mtspr 535/*ibat3l*/, r31 # 18d90 -b major_0x18d5c_0x48 # 18d94 - -major_0x18d5c_0x3c: -mfspr r18, 542/*dbat3u*/ # 18d98 -mfspr r19, 543/*dbat3l*/ # 18d9c -mtspr 542/*dbat3u*/, r31 # 18da0 - -major_0x18d5c_0x48: -isync # 18da4 -rlwinm r29, r3, 0, 0, 7 # 18da8 -beq- major_0x18d5c_0x70 # 18dac -li r30, 0x7e # 18db0 -or r30, r30, r29 # 18db4 -li r31, 0x32 # 18db8 -or r31, r31, r29 # 18dbc -mtspr 543/*dbat3l*/, r31 # 18dc0 -mtspr 542/*dbat3u*/, r30 # 18dc4 -b major_0x18d5c_0x88 # 18dc8 - -major_0x18d5c_0x70: -li r30, 0x32 # 18dcc -or r30, r30, r29 # 18dd0 -li r31, 0x5f # 18dd4 -or r31, r31, r29 # 18dd8 -mtspr 534/*ibat3u*/, r30 # 18ddc -mtspr 535/*ibat3l*/, r31 # 18de0 - -major_0x18d5c_0x88: -isync # 18de4 -mfmsr r22 # 18de8 -lhz r29, -0x0360( r1) # 18dec -lhz r30, -0x035c( r1) # 18df0 -subf r29, r29, r30 # 18df4 -li r30, 0x0a # 18df8 -divw r29, r29, r30 # 18dfc -sth r29, -0x0356( r1) # 18e00 -lhz r29, -0x035e( r1) # 18e04 -lhz r30, -0x035a( r1) # 18e08 -subf r29, r29, r30 # 18e0c -li r30, 0x06 # 18e10 -divw r29, r29, r30 # 18e14 -sth r29, -0x0358( r1) # 18e18 -mtlr r13 # 18e1c -blr # 18e20 - - - -/*********************************************************** - - major_0x18e24 - -************************************************************ - -Xrefs: -screenlog_redraw - -***********************************************************/ - -major_0x18e24: /* < outside referer */ -mflr r12 # 18e24 - -major_0x18e24_0x4: -lhz r25, -0x0358( r1) # 18e28 -cmpw cr1, r9, r25 # 18e2c -lbz r25, 0x0000(r21) # 18e30 -cmplwi r25, 0x00 # 18e34 -addi r21, r21, 0x01 # 18e38 -beq- major_0x18e24_0x28 # 18e3c -bge+ cr1, major_0x18e24_0x4 # 18e40 -bl major_0x18e54 # 18e44 -b major_0x18e24_0x4 # 18e48 - -major_0x18e24_0x28: -mtlr r12 # 18e4c -blr # 18e50 - - - -/*********************************************************** - - major_0x18e54 - -************************************************************ - -Xrefs: -screenlog_redraw -major_0x18e24 -funny_thing - -***********************************************************/ - -major_0x18e54: /* < outside referer */ -mflr r13 # 18e54 -cmpwi cr4, r6, 0x02 # 18e58 -bl load_log_font # 18e5c -mflr r23 # 18e60 -add r23, r25, r23 # 18e64 -mulli r27, r5, 0x0a # 18e68 -mullw r27, r27, r10 # 18e6c -mulli r7, r9, 0x06 # 18e70 -mullw r7, r7, r6 # 18e74 -add r7, r7, r27 # 18e78 -add r7, r7, r3 # 18e7c -lhz r27, -0x0360( r1) # 18e80 -lhz r28, -0x035e( r1) # 18e84 -mullw r27, r5, r27 # 18e88 -mullw r28, r6, r28 # 18e8c -add r7, r7, r27 # 18e90 -add r7, r7, r28 # 18e94 -subf. r27, r3, r7 # 18e98 -blt- major_0x18e54_0x174 # 18e9c -li r8, 0x00 # 18ea0 - -major_0x18e54_0x50: -beq- cr4, major_0x18e54_0x9c # 18ea4 -bgt- cr4, major_0x18e54_0xe0 # 18ea8 -lbz r27, 0x0000(r23) # 18eac -rlwinm r27, r27, 28, 28, 29 # 18eb0 -lwzx r28, r24, r27 # 18eb4 -lbz r27, 0x0000(r23) # 18eb8 -rlwinm r27, r27, 0, 26, 29 # 18ebc -lwzx r27, r24, r27 # 18ec0 -ori r22, r22, 0x10 # 18ec4 -mtmsr r22 # 18ec8 -isync # 18ecc -sth r28, 0x0000( r7) # 18ed0 -sth r27, 0x0004( r7) # 18ed4 -srwi r27, r27, 16 # 18ed8 -sth r27, 0x0002( r7) # 18edc -rlwinm r22, r22, 0, 28, 26 # 18ee0 -mtmsr r22 # 18ee4 -isync # 18ee8 -b major_0x18e54_0x160 # 18eec - -major_0x18e54_0x9c: -lbz r28, 0x0000(r23) # 18ef0 -rlwinm r27, r28, 28, 28, 29 # 18ef4 -lwzx r27, r24, r27 # 18ef8 -rlwinm r29, r28, 30, 28, 29 # 18efc -lwzx r29, r24, r29 # 18f00 -rlwinm r30, r28, 0, 28, 29 # 18f04 -lwzx r30, r24, r30 # 18f08 -ori r22, r22, 0x10 # 18f0c -mtmsr r22 # 18f10 -isync # 18f14 -stw r27, 0x0000( r7) # 18f18 -stw r29, 0x0004( r7) # 18f1c -stw r30, 0x0008( r7) # 18f20 -rlwinm r22, r22, 0, 28, 26 # 18f24 -mtmsr r22 # 18f28 -isync # 18f2c -b major_0x18e54_0x160 # 18f30 - -major_0x18e54_0xe0: -lbz r28, 0x0000(r23) # 18f34 -rlwinm r27, r28, 27, 29, 29 # 18f38 -lwzx r27, r24, r27 # 18f3c -rlwinm r29, r28, 28, 29, 29 # 18f40 -lwzx r29, r24, r29 # 18f44 -rlwinm r30, r28, 29, 29, 29 # 18f48 -lwzx r30, r24, r30 # 18f4c -rlwinm r31, r28, 30, 29, 29 # 18f50 -lwzx r31, r24, r31 # 18f54 -ori r22, r22, 0x10 # 18f58 -mtmsr r22 # 18f5c -isync # 18f60 -stw r27, 0x0000( r7) # 18f64 -stw r29, 0x0004( r7) # 18f68 -stw r30, 0x0008( r7) # 18f6c -stw r31, 0x000c( r7) # 18f70 -rlwinm r22, r22, 0, 28, 26 # 18f74 -mtmsr r22 # 18f78 -isync # 18f7c -rlwinm r27, r28, 31, 29, 29 # 18f80 -lwzx r27, r24, r27 # 18f84 -rlwinm r29, r28, 0, 29, 29 # 18f88 -lwzx r29, r24, r29 # 18f8c -ori r22, r22, 0x10 # 18f90 -mtmsr r22 # 18f94 -isync # 18f98 -stw r27, 0x0010( r7) # 18f9c -stw r29, 0x0014( r7) # 18fa0 -rlwinm r22, r22, 0, 28, 26 # 18fa4 -mtmsr r22 # 18fa8 -isync # 18fac -b major_0x18e54_0x160 # 18fb0 - -major_0x18e54_0x160: -addi r8, r8, 0x01 # 18fb4 -cmplwi r8, 0x0a # 18fb8 -add r7, r7, r5 # 18fbc -addi r23, r23, 0x100 # 18fc0 -blt+ major_0x18e54_0x50 # 18fc4 - -major_0x18e54_0x174: -addi r9, r9, 0x01 # 18fc8 -mtlr r13 # 18fcc -blr # 18fd0 - - - -/*********************************************************** - - funny_thing - -************************************************************ - -Xrefs: -screenlog_redraw - -***********************************************************/ - -funny_thing: /* < outside referer */ -crclr 4*cr2 + eq # 18fd4 -b funny_thing_0xc # 18fd8 - -funny_thing_0x8: /* < outside referer */ -crset 4*cr2 + eq # 18fdc - -funny_thing_0xc: -mflr r12 # 18fe0 - -funny_thing_0x10: -lhz r25, -0x0358( r1) # 18fe4 -cmpw r9, r25 # 18fe8 -bge- funny_thing_0x28 # 18fec -li r25, 0x20 # 18ff0 -bl major_0x18e54 # 18ff4 -b funny_thing_0x10 # 18ff8 - -funny_thing_0x28: -beq- cr2, funny_thing_0x3c # 18ffc -li r9, 0x00 # 19000 -addi r10, r10, 0x01 # 19004 -li r25, 0x20 # 19008 -bl major_0x18e54 # 1900c - -funny_thing_0x3c: -mtlr r12 # 19010 -blr # 19014 - - - -/*********************************************************** - - major_0x19018 - -************************************************************ - -Xrefs: -screenlog_redraw - -***********************************************************/ - -.align 3 # 19018 - -major_0x19018: /* < outside referer */ -blrl # 19018 -.long 0x20202020 # 1901c -.long 0x20202020 # 19020 -.long 0x20202020 # 19024 -.long 0x20204e61 # 19028 -.long 0x6e6f4b65 # 1902c -.long 0x726e656c # 19030 -.long 0x204c6f67 # 19034 -.long 0x20002020 # 19038 -.long 0x20202020 # 1903c -.long 0x20202020 # 19040 -.long 0x20202020 # 19044 -.long 0x2d2d2d2d # 19048 -.long 0x2d2d2d2d # 1904c -.long 0x2d2d2d2d # 19050 -.long 0x2d2d2000 # 19054 -.long 0x4e800021 # 19058 -.long 0x20202020 # 1905c -.long 0x20202020 # 19060 -.long 0x20202020 # 19064 -.long 0x20205379 # 19068 -.long 0x7374656d # 1906c -.long 0x20546572 # 19070 -.long 0x6d696e61 # 19074 -.long 0x74696f6e # 19078 -.long 0x20002020 # 1907c -.long 0x20202020 # 19080 -.long 0x20202020 # 19084 -.long 0x20202020 # 19088 -.long 0x2d2d2d2d # 1908c -.long 0x2d2d2d2d # 19090 -.long 0x2d2d2d2d # 19094 -.long 0x2d2d2d2d # 19098 -.long 0x2d2d2000 # 1909c - - - -/*********************************************************** - - load_log_font - -************************************************************ - -Xrefs: -major_0x18e54 - -***********************************************************/ - -.align 5 # 190a0 - -load_log_font: /* < outside referer */ -blrl # 190a0 -.long 0x907070f0 # 190a4 -.long 0xf0f06000 # 190a8 -.long 0xe0008090 # 190ac -.long 0xf0007070 # 190b0 -.long 0xe0e0e0e0 # 190b4 -.long 0xe09070f0 # 190b8 -.long 0x70f070f0 # 190bc -.long 0xf070e090 # 190c0 -.long 0 # 190c4 -.long 0x20000000 # 190c8 -.long 0 # 190cc -.long 0 # 190d0 -.long 0 # 190d4 -.long 0 # 190d8 -.long 0 # 190dc -.long 0 # 190e0 -.long 0 # 190e4 -.long 0 # 190e8 -.long 0 # 190ec -.long 0 # 190f0 -.long 0 # 190f4 -.long 0 # 190f8 -.long 0 # 190fc -.long 0 # 19100 -.long 0 # 19104 -.long 0 # 19108 -.long 0 # 1910c -.long 0 # 19110 -.long 0 # 19114 -.long 0 # 19118 -.long 0x00000008 # 1911c -.long 0x20400000 # 19120 -.long 0x50200010 # 19124 -.long 0x68505000 # 19128 -.long 0 # 1912c -.long 0 # 19130 -.long 0 # 19134 -.long 0 # 19138 -.long 0 # 1913c -.long 0 # 19140 -.long 0 # 19144 -.long 0x70000000 # 19148 -.long 0 # 1914c -.long 0 # 19150 -.long 0 # 19154 -.long 0 # 19158 -.long 0x00001800 # 1915c -.long 0 # 19160 -.long 0 # 19164 -.long 0x18000000 # 19168 -.long 0x00000040 # 1916c -.long 0x68680000 # 19170 -.long 0 # 19174 -.long 0 # 19178 -.long 0x00500000 # 1917c -.long 0 # 19180 -.long 0 # 19184 -.long 0 # 19188 -.long 0 # 1918c -.long 0 # 19190 -.long 0 # 19194 -.long 0 # 19198 -.long 0 # 1919c -.long 0 # 191a0 -.long 0xd0808080 # 191a4 -.long 0x80809000 # 191a8 -.long 0x90008090 # 191ac -.long 0x80088080 # 191b0 -.long 0x90909090 # 191b4 -.long 0x90d08080 # 191b8 -.long 0x80808080 # 191bc -.long 0x80809090 # 191c0 -.long 0x00205050 # 191c4 -.long 0x70786020 # 191c8 -.long 0x10200000 # 191cc -.long 0x00000008 # 191d0 -.long 0x70207070 # 191d4 -.long 0x10f870f8 # 191d8 -.long 0x70700000 # 191dc -.long 0x00000070 # 191e0 -.long 0x7070f070 # 191e4 -.long 0xf0f8f870 # 191e8 -.long 0x88700888 # 191ec -.long 0x80888870 # 191f0 -.long 0xf070f070 # 191f4 -.long 0xf8888888 # 191f8 -.long 0x8888f830 # 191fc -.long 0x40302000 # 19200 -.long 0x20008000 # 19204 -.long 0x08001800 # 19208 -.long 0x80202080 # 1920c -.long 0x20000000 # 19210 -.long 0 # 19214 -.long 0x20000000 # 19218 -.long 0x00000010 # 1921c -.long 0x20200000 # 19220 -.long 0x00500020 # 19224 -.long 0xb8000010 # 19228 -.long 0x40200068 # 1922c -.long 0x30001040 # 19230 -.long 0x20001040 # 19234 -.long 0x20006810 # 19238 -.long 0x40200068 # 1923c -.long 0x10402000 # 19240 -.long 0x00300060 # 19244 -.long 0x88007830 # 19248 -.long 0 # 1924c -.long 0 # 19250 -.long 0x00001040 # 19254 -.long 0x880020f8 # 19258 -.long 0xf8002038 # 1925c -.long 0x30700000 # 19260 -.long 0x20200000 # 19264 -.long 0x20000000 # 19268 -.long 0x00000020 # 1926c -.long 0xb0b00000 # 19270 -.long 0x00005050 # 19274 -.long 0x20600000 # 19278 -.long 0x50000000 # 1927c -.long 0x00003030 # 19280 -.long 0 # 19284 -.long 0x40202010 # 19288 -.long 0x00201020 # 1928c -.long 0x00201020 # 19290 -.long 0x30201020 # 19294 -.long 0x20002068 # 19298 -.long 0x70482020 # 1929c -.long 0x00280050 # 192a0 -.long 0xb06060e0 # 192a4 -.long 0xe0e0f020 # 192a8 -.long 0xe0208090 # 192ac -.long 0xe0086060 # 192b0 -.long 0x90909090 # 192b4 -.long 0x90b060e0 # 192b8 -.long 0x80e060e0 # 192bc -.long 0xe0b0e090 # 192c0 -.long 0x002050f8 # 192c4 -.long 0xa8a89020 # 192c8 -.long 0x20102020 # 192cc -.long 0x00000008 # 192d0 -.long 0x88608888 # 192d4 -.long 0x30808008 # 192d8 -.long 0x88880000 # 192dc -.long 0x10004088 # 192e0 -.long 0x88888888 # 192e4 -.long 0x88808088 # 192e8 -.long 0x88200890 # 192ec -.long 0x80d8c888 # 192f0 -.long 0x88888888 # 192f4 -.long 0x20888888 # 192f8 -.long 0x88880820 # 192fc -.long 0x40105000 # 19300 -.long 0x10008000 # 19304 -.long 0x08002000 # 19308 -.long 0x80000080 # 1930c -.long 0x20000000 # 19310 -.long 0 # 19314 -.long 0x20000000 # 19318 -.long 0x00000010 # 1931c -.long 0x20206800 # 19320 -.long 0x702070f8 # 19324 -.long 0x88708820 # 19328 -.long 0x205050b0 # 1932c -.long 0x48002020 # 19330 -.long 0x50502020 # 19334 -.long 0x5050b020 # 19338 -.long 0x205050b0 # 1933c -.long 0x20205050 # 19340 -.long 0x20480090 # 19344 -.long 0x4800a848 # 19348 -.long 0xe0e0f410 # 1934c -.long 0x50007870 # 19350 -.long 0x00202020 # 19354 -.long 0x50001048 # 19358 -.long 0x50002048 # 1935c -.long 0x48880000 # 19360 -.long 0x00000018 # 19364 -.long 0x20082000 # 19368 -.long 0x00000070 # 1936c -.long 0x70707800 # 19370 -.long 0x0000a050 # 19374 -.long 0x40200000 # 19378 -.long 0x00880884 # 1937c -.long 0x00004048 # 19380 -.long 0x20000000 # 19384 -.long 0xa0505020 # 19388 -.long 0x50102050 # 1938c -.long 0x50102050 # 19390 -.long 0x20102050 # 19394 -.long 0x100050b0 # 19398 -.long 0x00300050 # 1939c -.long 0x00500020 # 193a0 -.long 0x90101080 # 193a4 -.long 0x80809070 # 193a8 -.long 0x9030f0a0 # 193ac -.long 0x80281010 # 193b0 -.long 0x90909090 # 193b4 -.long 0x90901080 # 193b8 -.long 0x80801080 # 193bc -.long 0x8090a090 # 193c0 -.long 0x00200050 # 193c4 -.long 0xa0b0a000 # 193c8 -.long 0x4008a820 # 193cc -.long 0x00000010 # 193d0 -.long 0x98200808 # 193d4 -.long 0x50f0f008 # 193d8 -.long 0x88882020 # 193dc -.long 0x20f82008 # 193e0 -.long 0xe8888880 # 193e4 -.long 0x88808080 # 193e8 -.long 0x882008a0 # 193ec -.long 0x80a8a888 # 193f0 -.long 0x88888880 # 193f4 -.long 0x20888888 # 193f8 -.long 0x50881020 # 193fc -.long 0x20108800 # 19400 -.long 0x0078f070 # 19404 -.long 0x78707078 # 19408 -.long 0xf0202090 # 1940c -.long 0x20f0b070 # 19410 -.long 0xf078b078 # 19414 -.long 0x708888a8 # 19418 -.long 0x8888f810 # 1941c -.long 0x2020b000 # 19420 -.long 0x88708880 # 19424 -.long 0xc8888800 # 19428 -.long 0 # 1942c -.long 0x30700000 # 19430 -.long 0 # 19434 -.long 0 # 19438 -.long 0 # 1943c -.long 0 # 19440 -.long 0x70482080 # 19444 -.long 0xa000a888 # 19448 -.long 0x10105c20 # 1944c -.long 0x0010a088 # 19450 -.long 0xd8204010 # 19454 -.long 0xf8901820 # 19458 -.long 0x50f82048 # 1945c -.long 0x48887070 # 19460 -.long 0x20200010 # 19464 -.long 0x20702000 # 19468 -.long 0x00000088 # 1946c -.long 0x8888a000 # 19470 -.long 0x0000a0a0 # 19474 -.long 0x60402020 # 19478 -.long 0x88881030 # 1947c -.long 0x0000e8e8 # 19480 -.long 0x70000000 # 19484 -.long 0x40000000 # 19488 -.long 0 # 1948c -.long 0 # 19490 -.long 0x58000000 # 19494 -.long 0x00200000 # 19498 -.long 0x00000020 # 1949c -.long 0 # 194a0 -.long 0x90e0e0f0 # 194a4 -.long 0xf0f09070 # 194a8 -.long 0xe0f80040 # 194ac -.long 0x8068e0e0 # 194b0 -.long 0xe0e0e0e0 # 194b4 -.long 0xe090e0f0 # 194b8 -.long 0x70f0e0f0 # 194bc -.long 0x80609060 # 194c0 -.long 0x002000f8 # 194c4 -.long 0x70504000 # 194c8 -.long 0x400870f8 # 194cc -.long 0x00f80010 # 194d0 -.long 0xa8201030 # 194d4 -.long 0x90088810 # 194d8 -.long 0x70880000 # 194dc -.long 0x40001010 # 194e0 -.long 0xa8f8f080 # 194e4 -.long 0x88f0f098 # 194e8 -.long 0xf82008c0 # 194ec -.long 0x80889888 # 194f0 -.long 0xf088f070 # 194f4 -.long 0x20888888 # 194f8 -.long 0x20502020 # 194fc -.long 0x20100000 # 19500 -.long 0x00888888 # 19504 -.long 0x88882088 # 19508 -.long 0x882020a0 # 1950c -.long 0x20a8c888 # 19510 -.long 0x8888c880 # 19514 -.long 0x208888a8 # 19518 -.long 0x50881020 # 1951c -.long 0x20100000 # 19520 -.long 0x88888080 # 19524 -.long 0xa8888878 # 19528 -.long 0x78787878 # 1952c -.long 0x78887070 # 19530 -.long 0x70702020 # 19534 -.long 0x2020b070 # 19538 -.long 0x70707070 # 1953c -.long 0x88888888 # 19540 -.long 0x203070e0 # 19544 -.long 0x9030a890 # 19548 -.long 0xc8685c00 # 1954c -.long 0x00f8a098 # 19550 -.long 0xa8f82020 # 19554 -.long 0x20902810 # 19558 -.long 0x50502038 # 1955c -.long 0x3088a898 # 19560 -.long 0x4020f820 # 19564 -.long 0x70885048 # 19568 -.long 0x90000088 # 1956c -.long 0x8888a050 # 19570 -.long 0 # 19574 -.long 0x00000050 # 19578 -.long 0x88882048 # 1957c -.long 0x00004848 # 19580 -.long 0x20200000 # 19584 -.long 0x1c70f870 # 19588 -.long 0xf8f87070 # 1958c -.long 0x70707070 # 19590 -.long 0xf0708888 # 19594 -.long 0x88200000 # 19598 -.long 0 # 1959c -.long 0 # 195a0 -.long 0x48484848 # 195a4 -.long 0x003048f8 # 195a8 -.long 0x38307800 # 195ac -.long 0x78f83830 # 195b0 -.long 0x00107070 # 195b4 -.long 0x10484870 # 195b8 -.long 0x00007038 # 195bc -.long 0x38383838 # 195c0 -.long 0x00200050 # 195c4 -.long 0x2868a800 # 195c8 -.long 0x4008a820 # 195cc -.long 0x00000020 # 195d0 -.long 0xc8202008 # 195d4 -.long 0xf8088820 # 195d8 -.long 0x88782000 # 195dc -.long 0x20f82020 # 195e0 -.long 0xf0888880 # 195e4 -.long 0x88808088 # 195e8 -.long 0x882088a0 # 195ec -.long 0x80888888 # 195f0 -.long 0x80888808 # 195f4 -.long 0x208888a8 # 195f8 -.long 0x50204020 # 195fc -.long 0x10100000 # 19600 -.long 0x00888880 # 19604 -.long 0x88f82088 # 19608 -.long 0x882020e0 # 1960c -.long 0x20a88888 # 19610 -.long 0x88888070 # 19614 -.long 0x208888a8 # 19618 -.long 0x20882010 # 1961c -.long 0x20200000 # 19620 -.long 0xf88880f0 # 19624 -.long 0x98888888 # 19628 -.long 0x88888888 # 1962c -.long 0x88808888 # 19630 -.long 0x88882020 # 19634 -.long 0x2020c888 # 19638 -.long 0x88888888 # 1963c -.long 0x88888888 # 19640 -.long 0x2000a880 # 19644 -.long 0x48307890 # 19648 -.long 0xa8880000 # 1964c -.long 0x0020f0a8 # 19650 -.long 0xd8201040 # 19654 -.long 0xf8904820 # 19658 -.long 0x50502000 # 1965c -.long 0x0088b8a8 # 19660 -.long 0x802008a0 # 19664 -.long 0x20705090 # 19668 -.long 0x480000f8 # 1966c -.long 0xf888b0a8 # 19670 -.long 0x70f80000 # 19674 -.long 0x0000f888 # 19678 -.long 0x88504048 # 1967c -.long 0x10404848 # 19680 -.long 0x20000000 # 19684 -.long 0xe0888088 # 19688 -.long 0x80802020 # 1968c -.long 0x20208888 # 19690 -.long 0xf8888888 # 19694 -.long 0x88200000 # 19698 -.long 0 # 1969c -.long 0 # 196a0 -.long 0x48484848 # 196a4 -.long 0x384850f8 # 196a8 -.long 0x40204038 # 196ac -.long 0x40601048 # 196b0 -.long 0x40300808 # 196b4 -.long 0x30504848 # 196b8 -.long 0x48884840 # 196bc -.long 0x40404040 # 196c0 -.long 0 # 196c4 -.long 0xa8a89000 # 196c8 -.long 0x20102020 # 196cc -.long 0x00000020 # 196d0 -.long 0x88204088 # 196d4 -.long 0x10888820 # 196d8 -.long 0x88080000 # 196dc -.long 0x10004000 # 196e0 -.long 0x80888888 # 196e4 -.long 0x88808088 # 196e8 -.long 0x88208890 # 196ec -.long 0x80888888 # 196f0 -.long 0x80888888 # 196f4 -.long 0x208850d8 # 196f8 -.long 0x88208020 # 196fc -.long 0x10100000 # 19700 -.long 0x00988880 # 19704 -.long 0x88802088 # 19708 -.long 0x88202090 # 1970c -.long 0x20a88888 # 19710 -.long 0x88888008 # 19714 -.long 0x209850a8 # 19718 -.long 0x50884010 # 1971c -.long 0x20200000 # 19720 -.long 0x88f88080 # 19724 -.long 0x88888888 # 19728 -.long 0x88888888 # 1972c -.long 0x8880f8f8 # 19730 -.long 0xf8f82020 # 19734 -.long 0x20208888 # 19738 -.long 0x88888888 # 1973c -.long 0x88888888 # 19740 -.long 0x2000a080 # 19744 -.long 0x28002888 # 19748 -.long 0xc8680000 # 1974c -.long 0x00f8a0c8 # 19750 -.long 0x00200000 # 19754 -.long 0x20904848 # 19758 -.long 0x50502078 # 1975c -.long 0x7850a0c8 # 19760 -.long 0x88200840 # 19764 -.long 0x20808890 # 19768 -.long 0x48000088 # 1976c -.long 0x8888a0b8 # 19770 -.long 0 # 19774 -.long 0x00000050 # 19778 -.long 0x88208030 # 1977c -.long 0x20204848 # 19780 -.long 0x20000000 # 19784 -.long 0x00f8f0f8 # 19788 -.long 0xf0f02020 # 1978c -.long 0x20208888 # 19790 -.long 0xf8888888 # 19794 -.long 0x88200000 # 19798 -.long 0 # 1979c -.long 0 # 197a0 -.long 0x48783030 # 197a4 -.long 0x10487020 # 197a8 -.long 0x30007010 # 197ac -.long 0x70201048 # 197b0 -.long 0x40101030 # 197b4 -.long 0x78703070 # 197b8 -.long 0x68d87040 # 197bc -.long 0x30303030 # 197c0 -.long 0x00200000 # 197c4 -.long 0x70906800 # 197c8 -.long 0x10200000 # 197cc -.long 0x20002040 # 197d0 -.long 0x7020f870 # 197d4 -.long 0x10707020 # 197d8 -.long 0x70700020 # 197dc -.long 0x00000020 # 197e0 -.long 0x7088f070 # 197e4 -.long 0xf0f88070 # 197e8 -.long 0x88707088 # 197ec -.long 0xf8888870 # 197f0 -.long 0x80708870 # 197f4 -.long 0x20702088 # 197f8 -.long 0x8820f830 # 197fc -.long 0x083000f8 # 19800 -.long 0x0068f078 # 19804 -.long 0x78782078 # 19808 -.long 0x88202088 # 1980c -.long 0x20a88870 # 19810 -.long 0xf07880f0 # 19814 -.long 0x18682050 # 19818 -.long 0x8878f810 # 1981c -.long 0x20200000 # 19820 -.long 0x88888880 # 19824 -.long 0x88888898 # 19828 -.long 0x98989898 # 1982c -.long 0x98788080 # 19830 -.long 0x80802020 # 19834 -.long 0x20208888 # 19838 -.long 0x88888888 # 1983c -.long 0x98989898 # 19840 -.long 0x0000a888 # 19844 -.long 0x90002888 # 19848 -.long 0xb0100000 # 1984c -.long 0x0040a088 # 19850 -.long 0x00f87070 # 19854 -.long 0x20e830f8 # 19858 -.long 0x50502000 # 1985c -.long 0x00d87870 # 19860 -.long 0x70200040 # 19864 -.long 0x2000f848 # 19868 -.long 0x90a80088 # 1986c -.long 0x8888a0a0 # 19870 -.long 0 # 19874 -.long 0x00002020 # 19878 -.long 0x78200084 # 1987c -.long 0x10404848 # 19880 -.long 0x70002050 # 19884 -.long 0x48888088 # 19888 -.long 0x80802020 # 1988c -.long 0x20208888 # 19890 -.long 0x50888888 # 19894 -.long 0x88200000 # 19898 -.long 0 # 1989c -.long 0x20001000 # 198a0 -.long 0x30484848 # 198a4 -.long 0x10584800 # 198a8 -.long 0x08004010 # 198ac -.long 0x40001048 # 198b0 -.long 0x40102008 # 198b4 -.long 0x10481048 # 198b8 -.long 0x58a84840 # 198bc -.long 0x08080808 # 198c0 -.long 0 # 198c4 -.long 0x20000000 # 198c8 -.long 0 # 198cc -.long 0x20000040 # 198d0 -.long 0 # 198d4 -.long 0 # 198d8 -.long 0x00000020 # 198dc -.long 0 # 198e0 -.long 0 # 198e4 -.long 0 # 198e8 -.long 0 # 198ec -.long 0 # 198f0 -.long 0x00080000 # 198f4 -.long 0 # 198f8 -.long 0 # 198fc -.long 0x08000000 # 19900 -.long 0 # 19904 -.long 0x00000008 # 19908 -.long 0x00002000 # 1990c -.long 0 # 19910 -.long 0x80080000 # 19914 -.long 0 # 19918 -.long 0x00080008 # 1991c -.long 0x20400000 # 19920 -.long 0x888870f8 # 19924 -.long 0x88707068 # 19928 -.long 0x68686868 # 1992c -.long 0x68207878 # 19930 -.long 0x78782020 # 19934 -.long 0x20208870 # 19938 -.long 0x70707070 # 1993c -.long 0x68686868 # 19940 -.long 0x000070f0 # 19944 -.long 0x880028b0 # 19948 -.long 0x00e00000 # 1994c -.long 0x0000b870 # 19950 -.long 0 # 19954 -.long 0x00800000 # 19958 -.long 0x00002000 # 1995c -.long 0 # 19960 -.long 0 # 19964 -.long 0x20000000 # 19968 -.long 0x00000088 # 1996c -.long 0x88707858 # 19970 -.long 0 # 19974 -.long 0 # 19978 -.long 0x08200000 # 1997c -.long 0 # 19980 -.long 0x20002050 # 19984 -.long 0xb488f888 # 19988 -.long 0xf8f87070 # 1998c -.long 0x70708888 # 19990 -.long 0x00887070 # 19994 -.long 0x70000000 # 19998 -.long 0 # 1999c -.long 0x10002000 # 199a0 -.long 0x00484848 # 199a4 -.long 0x10384800 # 199a8 -.long 0x70004010 # 199ac -.long 0x40003830 # 199b0 -.long 0x70387870 # 199b4 -.long 0x10481070 # 199b8 -.long 0x48887038 # 199bc -.long 0x70707070 # 199c0 -.long 0 # 199c4 -.long 0 # 199c8 -.long 0 # 199cc -.long 0x40000000 # 199d0 -.long 0 # 199d4 -.long 0 # 199d8 -.long 0x00000040 # 199dc -.long 0 # 199e0 -.long 0 # 199e4 -.long 0 # 199e8 -.long 0 # 199ec -.long 0 # 199f0 -.long 0 # 199f4 -.long 0 # 199f8 -.long 0 # 199fc -.long 0 # 19a00 -.long 0 # 19a04 -.long 0x00000070 # 19a08 -.long 0x0000c000 # 19a0c -.long 0 # 19a10 -.long 0x80080000 # 19a14 -.long 0 # 19a18 -.long 0x00700000 # 19a1c -.long 0 # 19a20 -.long 0 # 19a24 -.long 0 # 19a28 -.long 0 # 19a2c -.long 0x00400000 # 19a30 -.long 0 # 19a34 -.long 0 # 19a38 -.long 0 # 19a3c -.long 0 # 19a40 -.long 0x00002000 # 19a44 -.long 0x70000080 # 19a48 -.long 0 # 19a4c -.long 0 # 19a50 -.long 0 # 19a54 -.long 0x00800000 # 19a58 -.long 0x0000c000 # 19a5c -.long 0 # 19a60 -.long 0 # 19a64 -.long 0xc0000000 # 19a68 -.long 0 # 19a6c -.long 0 # 19a70 -.long 0 # 19a74 -.long 0 # 19a78 -.long 0x70000000 # 19a7c -.long 0 # 19a80 -.long 0x000040a0 # 19a84 -.long 0x48000000 # 19a88 -.long 0 # 19a8c -.long 0x00007070 # 19a90 -.long 0x00700000 # 19a94 -.long 0 # 19a98 -.long 0 # 19a9c -.long 0x30003000 # 19aa0 - - - -/*********************************************************** - - major_0x19aa4 - -***********************************************************/ - -.long 0x4800000c # 19aa4 -.long 0x60000000 # 19aa8 -.long 0x60000000 # 19aac - - - -/*********************************************************** - - major_0x19ab0 - -************************************************************ - -Xrefs: -major_0x18d5c - -***********************************************************/ - -.align 4 # 19ab0 - -major_0x19ab0: /* < outside referer */ -blrl # 19ab0 -.long 0x06060606 # 19ab4 -.long 0x060606ff # 19ab8 -.long 0x0606ff06 # 19abc -.long 0x0606ffff # 19ac0 -.long 0x06ff0606 # 19ac4 -.long 0x06ff06ff # 19ac8 -.long 0x06ffff06 # 19acc -.long 0x06ffffff # 19ad0 -.long 0xff060606 # 19ad4 -.long 0xff0606ff # 19ad8 -.long 0xff06ff06 # 19adc -.long 0xff06ffff # 19ae0 -.long 0xffff0606 # 19ae4 -.long 0xffff06ff # 19ae8 -.long 0xffffff06 # 19aec -.long 0xffffffff # 19af0 - - - -/*********************************************************** - - major_0x19af4 - -***********************************************************/ - -.long 0x4800000c # 19af4 -.long 0x60000000 # 19af8 -.long 0x60000000 # 19afc - - - -/*********************************************************** - - major_0x19b00 - -************************************************************ - -Xrefs: -major_0x18d5c - -***********************************************************/ - -.align 8 # 19b00 - -major_0x19b00: /* < outside referer */ -blrl # 19b00 -.long 0xff7eff7e # 19b04 -.long 0xff7e0000 # 19b08 -.long 0x0000ff7e # 19b0c -.long 0 # 19b10 - - - -/*********************************************************** - - major_0x19b14 - -***********************************************************/ - -.long 0x4800000c # 19b14 -.long 0x60000000 # 19b18 -.long 0x60000000 # 19b1c - - - -/*********************************************************** - - load_log_colours - -************************************************************ - -Each word is RGB with the high byte ignored. Background and text. - -************************************************************ - -Xrefs: -major_0x18d5c - -***********************************************************/ - -.align 5 # 19b20 - -load_log_colours: /* < outside referer */ -blrl # 19b20 -.long 0xfffffeee # 19b24 -.long 0x44444444 # 19b28 - - - -/*********************************************************** - - major_0x19b2c - -***********************************************************/ - -.long 0x48000014 # 19b2c -.long 0x60000000 # 19b30 -.long 0x60000000 # 19b34 -.long 0x60000000 # 19b38 -.long 0x60000000 # 19b3c -nk_end: /* < outside referer */ - -.align 6 # 19b40 diff --git a/kernel-disasm-script.py b/kernel-disasm-script.py new file mode 100755 index 0000000..78ac708 --- /dev/null +++ b/kernel-disasm-script.py @@ -0,0 +1,1350 @@ +#!/usr/bin/env python3 + +import ppcdisasm as da +from sys import argv +from os import path +from functools import partial +import argparse + +parser = argparse.ArgumentParser() + +parser.add_argument('SRC', help='probably called 02.28') +parser.add_argument('--disasm', action='store', metavar='DEST', help='put in cdg5/kern.asm!') +parser.add_argument('--dump-constants', action='store', metavar='DEST') + +cmdline = parser.parse_args() + + +# +# READ THE KERNEL +# + +with open(cmdline.SRC, 'rb') as f: + p = da.Project(f.read()) + + +# +# Data structures that I know about +# + +# TLAs: +# KDP = kernel data page +# EDP = emulator data page +# EWA = exception working area? +# IRP = interrupt *response* page? + +# 0x564 : 0x6e0 (the end) is code! +# some of this info from SheepShaver, so possibly dodgy +p.struct('ConfigInfo', { + 0x008: 'bl_fffff93c', + 0x024: 'bl_fffff93c', + 0x040: 'bl_fffff93c_from_start', + 0x044: 'DiagPEFBundleOffset', + 0x04c: 'KernelCodeOffset', + 0x05c: 'OpcodeTableOffset_bl_fffff93c', # replaced in NKv2? + 0x064: 'rom_version_string_16char', + 0x078: '00000100', + 0x080: 'emu_offset_80', + 0x084: 'emu_offset_e8c0', + 0x098: 'u8_pih_kind', + 0x09c: 'logi_InfoRecord', # 5fffe000 + 0x0a0: 'logi_KernelData', # 68ffe000 + 0x0a4: 'logi_EmulatorData', # 68fff000 + 0x0a8: 'logi_DispatchTable', # 68080000 + 0x0ac: 'logi_EmulatorCode', # 68060000 + 0x35c: '40820160', + 0x360: 'phys_ram_base', + 0xfd8: '68k_reset_vector', # out of range of struct +}) + +p.struct('sys_info', { + 0x00: 'u32_ram_size', + 0x2c: 'phys_toolboxrom', +}) + +p.struct('hw_info', { + 0x038: 'rtas_private_data', +}) + +p.struct('irp', { + 0xdc0: 'phys_ram', + 0xf00: 'irp_start', +}) + +p.struct('kdp', { + -0xb90: 'htab_lock', + -0xb70: 'pih_lock', + -0xb50: 'sch_lock', + -0xb30: 'thud_lock', + -0xb10: 'rtas_lock', + -0xaf0: 'dbug_lock', + -0xad0: 'pool_lock', + + -0x41c: 'system_address_space', + -0x360: 'uint16_log_window_y', + -0x35e: 'uint16_log_window_x', + -0x35c: 'uint16_log_window_height', + -0x35a: 'uint16_log_window_width', + -0x020: 'irp', + 0x288: 'bat0l', + 0x28c: 'bat0u', + 0x298: 'bat1l', + 0x29c: 'bat1u', + 0x2a8: 'bat2l', + 0x2ac: 'bat2u', + 0x2b8: 'bat3l', + 0x2bc: 'bat3u', + 0x5b0: 'pih_proc_ptr', + 0x630: 'pa_ConfigInfo', + 0x634: 'pa_edp', + 0x640: 'phys_ram_base', + 0x644: 'configinfo_40820160', + 0x64c: 'phys_kern_base', + 0x648: 'emu_e8c0', + 0x650: 'phys_funny_debug_place', + 0x658: 'system_context', + 0x6a8: 'phys_pages', + 0x6ac: 'logi_pages', + 0x6b4: 'VMMaxVirtualPages', + 0xb50: 'big_lock', + 0x908: 'rtas_proc', # 'RTAS' or 0 + 0x90c: 'rtas_private_data', + 0xec4: 'blue_task', + + # start of processor_info + 0xf20: 'u32_pvr', + 0xf24: 'u32_cpu_clock_freq', + 0xf28: 'u32_bus_freq', + 0xf2c: 'u32_timebase_freq', + # below here gets overwritten on old cpus + 0xf30: 'u32_cpuinfo_page_size', + 0xf34: 'u32_cpuinfo_dcache_size', + 0xf38: 'u32_cpuinfo_icache_size', + 0xf3c: 'u16_cpuinfo_coherency_block_size', + 0xf3e: 'u16_cpuinfo_reservation_granule_size', + 0xf40: 'u16_cpuinfo_unified_caches', + 0xf42: 'u16_cpuinfo_icache_line_size', + 0xf44: 'u16_cpuinfo_dcache_line_size', + 0xf46: 'u16_cpuinfo_dcache_block_size_touch', + 0xf48: 'u16_cpuinfo_icache_block_size', + 0xf4a: 'u16_cpuinfo_dcache_block_size', + 0xf4c: 'u16_cpuinfo_icache_assoc', + 0xf4e: 'u16_cpuinfo_dcache_assoc', + 0xf50: 'u16_cpuinfo_tlb_size', + 0xf52: 'u16_cpuinfo_tlb_assoc', + # + # 108 bytes yet unaccounted for ... 0xfc0 + # but in Trampoline processor info, mostly empty + # Probably related to L2 cache. + # end of processor_info + + 0xfe4: 'u16_version', + + 0x1184: 'la_emulator_entry', + 0x119c: 'la_opcode_tbl', +}) + +p.struct('ewa', { # same as a system context! + -0xb90: 'psa', # what's a PSA? + -0x340: 'cpu_id', + -0x338: 'sch_info_struct', + -0x116: 'cpu_which', + -0x01c: 'address_space_struct', + -0x008: 'cur_task_struct', + 0x0d4: 'xer', +}) + +p.struct('task', { + 0x00: 'id', + 0x60: 'owning_process_id', + 0x6c: 'owning_process_struct', + 0x74: 'fourcc', +}) + +p.struct('addrspc', { + 0x00: 'id', +}) + +p.struct('lock', { + 0x00: 'count', + 0x04: 'fourcc', + 0x10: 'holder', +}) + +# Strings (and sometimes arrays) between a bl and an mflr are common +# +# An alternative way to customise control flow is to add an edge before disassembly. +# + +blrls_with_data = [ + 0x17678, + 0x19018, + 0x19058, + 0x190a0, + 0x19ab0, + 0x19b00, + 0x19b20, +] + +returned_blrls = [ + 0x0665c, + 0x00bcc, + 0x00c08, + 0x00c58, + 0x00cb0, + 0x00d14, + 0x00d90, + 0x00da8, + 0x00e60, + 0x00e9c, + 0x00f88, + 0x010b8, + 0x010c4, + 0x048ac, +] + +def bl_literals(insn): + if insn.mnemonic == 'blrl': + if insn.address in blrls_with_data: + return False + elif insn.address in returned_blrls: + return True + else: + return False + + if 'lr' in insn.mnemonic or 'ctr' in insn.mnemonic: + return False + + # Try something different: + data_start = insn.address + insn.size + data_end = insn.operands[-1].imm + + if p.data[data_end] >> 2 != 0x1f: return True + + if not 4 <= (data_end - data_start) < 80: return True + + data = p.data[data_start : data_end] + if b'\x60\x00\x00\x00' in data: return True + if b'\0' not in data[::4] and not data.endswith(b'\0\0'): return True + + p.label(data_end, '1') + + # String literal? + if b'\0' not in data.rstrip(b'\0') and data.endswith(b'\0\0'): + nul_stripped = data.rstrip(b'\0') + str_end = data_start + len(nul_stripped) + + for i in range(data_start, data_end): + p.semantic_list[i] = None + p._insert_semantic(da._SemanticString(data_start, nul_stripped)) + p._insert_semantic(da._SemanticFixedSize(str_end, b'\0\0')) + + return False + +p.linkreg_data_checker = bl_literals + + +# +# Boot entry point +# +p.flow_graph.add_edge('boot_newworld', 0x00000, obj=da._FlowEdge()) +p.flow_graph.add_edge('boot_oldworld', 0x00040, obj=da._FlowEdge()) +p.flow_graph.add_edge('temp', 0x08804, obj=da._FlowEdge()) + +p.flow_graph.add_edge(0x0003c, 'ConfigInfo.bl_fffff93c_from_start', obj=da._FlowEdge()) + + +# +# This is pretty messy, because it needs to be done before disassembly time. +# + +lisori_caller_name = 'lisori_caller' + +lisori_offsets_and_callers = [ + # Earliest lisoris + (0x000e8, [lisori_caller_name, ]), + (0x00810, [lisori_caller_name, ]), + + # To functions from setup + (0x01394, [lisori_caller_name, ]), + (0x013a4, [lisori_caller_name, ]), + (0x014e8, [lisori_caller_name, ]), + (0x01530, [lisori_caller_name, ]), + (0x01554, [lisori_caller_name, ]), + (0x01568, [lisori_caller_name, ]), + (0x0157c, [lisori_caller_name, ]), + (0x01590, [lisori_caller_name, ]), + (0x015a4, [lisori_caller_name, ]), + (0x015b4, [lisori_caller_name, ]), + (0x015c4, [lisori_caller_name, ]), + (0x015d8, [lisori_caller_name, ]), + (0x015ec, [lisori_caller_name, ]), + (0x01600, [lisori_caller_name, ]), + (0x01614, [lisori_caller_name, ]), + (0x01628, [lisori_caller_name, ]), + (0x0163c, [lisori_caller_name, ]), + (0x01658, [lisori_caller_name, ]), + (0x0166c, [lisori_caller_name, ]), + (0x01684, [lisori_caller_name, ]), + (0x01694, [lisori_caller_name, ]), + (0x016a4, [lisori_caller_name, ]), + (0x016b4, [lisori_caller_name, ]), + (0x016c4, [lisori_caller_name, ]), + (0x016dc, [lisori_caller_name, ]), + (0x016ec, [lisori_caller_name, ]), + (0x016fc, [lisori_caller_name, ]), + (0x0170c, [lisori_caller_name, ]), + (0x01724, [lisori_caller_name, ]), + (0x01734, [lisori_caller_name, ]), + (0x01744, [lisori_caller_name, ]), + (0x01754, [lisori_caller_name, ]), + (0x01764, [lisori_caller_name, ]), + (0x01784, [lisori_caller_name, ]), + (0x01794, [lisori_caller_name, ]), + (0x017a4, [lisori_caller_name, ]), + (0x017b4, [lisori_caller_name, ]), + (0x017c4, [lisori_caller_name, ]), + (0x017d4, [lisori_caller_name, ]), + (0x017e4, [lisori_caller_name, ]), + (0x017f4, [lisori_caller_name, ]), + (0x01804, [lisori_caller_name, ]), + (0x01814, [lisori_caller_name, ]), + (0x01f04, [lisori_caller_name, ]), + + # And the rest + (0x0687c, [lisori_caller_name, ]), + (0x07658, [lisori_caller_name, ]), + (0x0795c, [lisori_caller_name, ]), + (0x07a88, [lisori_caller_name, ]), + (0x07d10, []), + (0x07dac, []), + (0x08788, []), + (0x08794, []), + #(0x098f4, [lisori_caller_name, ]), + (0x09ce4, [lisori_caller_name, ]), + (0x09d00, [lisori_caller_name, ]), + (0x0aef4, []), + (0x0bc2c, [lisori_caller_name, ]), + (0x0bccc, [lisori_caller_name, ]), + (0x0bdc8, [lisori_caller_name, ]), + (0x12fa0, []), +] + +for offset, callers in lisori_offsets_and_callers: + callee = p.read_lisori(offset) + for caller in callers: + p.flow_graph.add_edge(caller, callee, obj=da._FlowEdge()) + +# +# syscall jump points +# +tbl_base = 0x0acb8 +syscall_count = 134 +syscall_majors = [] + +syscall_names = { + 2: 'NKRegisterCpuPlugin', + 46: 'NKCpuPlugin', + 45: 'NKStopScheduling', + 99: 'NKSetBlueProcessID', + 126: 'NKSetTaskType', + 57: 'NKThrowException', + 68: 'NKGetPageSizeClasses', + 69: 'NKGetPageSize', + 117: 'NKCurrentAddressSpace', + 118: 'NKHomeAddressSpace', + 119: 'NKSetTaskAddressSpace', + 76: 'NKSetAreaAccess', + 100: 'NKGetFreePageCount', + 101: 'NKGetUnheldFreePageCount', + 85: 'NKMapPage', + 86: 'NKUnmapPages', + 127: 'NKMakePhysicallyContiguous', + 87: 'NKLockPages', + 88: 'NKUnlockPages', + 89: 'NKHoldPages', + 90: 'NKUnholdPages', + 104: 'NKRegisterThermalHandler', + 105: 'NKRegisterPMFHandler', + 106: 'NKMarkPMFTask', + 121: 'NKRegisterExternalHandler', + # 122: 'NKPropogateExternalInterrupt', + 131: 'NKSetClockStep', + 132: 'NKSetClockDriftCorrection', + + # As it turns out, these would only work on debug builds! + # 109: 'NKSetPrInfoPageSize', + # 110: 'NKSetPrInfoILockSizes', + # 111: 'NKSetPrInfoTransCache', + # 112: 'NKSetPrInfoL1Cache', + # 113: 'NKSetPrInfoL2Cache', +} + +for i in range(syscall_count): + entry_offset = tbl_base + i*4 + + entry = p.semantic_list[entry_offset].get_imm_val(0) + target_offset = i*4 + entry + syscall_majors.append(target_offset) + + new_expr = '(%d:^-.) + (%d:^-0:^)' % (tbl_base, target_offset) + + p.indirect_imm(entry_offset, 0, new_expr) + p.flow_graph.add_edge(0x0af08, target_offset, obj=da._FlowEdge(taken_branch=True)) + p.major_list.split_at(target_offset) + p.major_cmt_dict[target_offset].append('syscall %d' % i) + + +p.flow_graph.add_edge(0x0af08, 0x0af0c, obj=da._FlowEdge()) + + +# +# Debugger command jumps (indirect via blrl-loaded list) +# +tbl_base = 0x1769c + +cmd_names = [ + 'dumpmem_physical', + 'dumpmem_logical', + 'goto', + 'opaque_id_info', + 'display_kern_data', + 'dump_registers', + 'help', + 'help', +] + +for i in range(8): + entry_offset = tbl_base + i*4 + entry = p.semantic_list[entry_offset].get_imm_val(0) + target_offset = tbl_base + entry + + p.indirect_imm(entry_offset, 0, '%d:^ - %d:^' % (target_offset, tbl_base)) + p.flow_graph.add_edge(tbl_base-4, target_offset, obj=da._FlowEdge(taken_branch=True)) + p.label(target_offset, 'cmd_%s' % cmd_names[i]) + + +p.flow_graph.add_edge('who_the_hell_knows', 0x05800, obj=da._FlowEdge()) + +# +# Another thing that rather awkwardly must go *before* the disassembly stage +# +list_base = 0x154a8 +for short_offset in range(list_base, 0x154c0, 2): + entry_b = p.data[short_offset : short_offset+2] + entry = int.from_bytes(entry_b, byteorder='big') + target = list_base + entry + p._insert_semantic(da._SemanticFixedSize(short_offset, entry_b)) + + if not entry: continue + p.flow_graph.add_edge(0x04668, target, obj=da._FlowEdge(taken_branch=True)) + p.indirect_imm(short_offset, 0, '%d:^ - %d:^' % (target, list_base)) + + +for target in range(0x07674, 0x076b4, 4): + p.flow_graph.add_edge(0x07670, target, da._FlowEdge(taken_branch=True)) + +# +# Copied code! +# +p.flow_graph.add_edge(0x00bcc, 0x00fd4, obj=da._FlowEdge(taken_branch=True)) +p.flow_graph.add_edge(0x00c08, 0x00fd4, obj=da._FlowEdge(taken_branch=True)) +p.flow_graph.add_edge(0x00c58, 0x00fd4, obj=da._FlowEdge(taken_branch=True)) +p.flow_graph.add_edge(0x00cb0, 0x00fd4, obj=da._FlowEdge(taken_branch=True)) +p.flow_graph.add_edge(0x00d14, 0x00fd4, obj=da._FlowEdge(taken_branch=True)) + +p.flow_graph.add_edge(0x00e60, 0x01088, obj=da._FlowEdge(taken_branch=True)) +p.flow_graph.add_edge(0x00e9c, 0x01088, obj=da._FlowEdge(taken_branch=True)) +p.flow_graph.add_edge(0x00e60, 0x01088, obj=da._FlowEdge(taken_branch=True)) +p.flow_graph.add_edge(0x00f88, 0x01088, obj=da._FlowEdge(taken_branch=True)) + +# +# Duh. +# +p.disasm() + + +# +# Use the best-guess function-finder +# +p.guess_majors() + +# +# Need to use setup_lisoris from before, now that I can do indirects +# +for offset, callers in lisori_offsets_and_callers: + try: + p.indirect_lisori(offset) + except ValueError: + print('Lisori at 0x%05x not yet disassembled?' % offset) + p.major_list.split_at(offset) + + +# +# And stuff I've figured out by iterating frantically +# + +p.major(0x00000, 0x00040, 'nk_start') +p.arg('r3', 'ConfigInfo') +p.arg('r4', 'processor_info') +p.arg('r5', 'sys_info') +p.arg('r6', 'boot_r6') +p.arg('r7', 'rtas_fourcc') +p.arg('r8', 'rtas_proc') +p.arg('r9', 'boot_hw_info') +p.cmt('Entry point from Trampoline on NewWorld.') +p.cmt('Only continues loading if the DR (data address translation) bit of the MSR is unset. Be not fooled by the linking call, which never returns. If DR is set, then we RFI to a location *in* the ConfigInfo struct with DR and IR unset, and r9 containing the address of our caller ') + + +p.major(0x00040, 0x00400, 'replace_old_kernel') +p.indirect_imm(0x000d8, 0) +p.label(0x000d8, '88') +p.label(0x000dc, '99') +p.indirect_imm(0x000e0, 2, '0:^ - 0x000d8:^ - 4') + +p.major(0x00400, 0x00484, '') + +p.major(0x00484, 0x004a8, 'wipe_irp') +p.arg('r1', 'kdp') +p.cmt('Fill the irp with 0x68f1.') + +p.major(0x004a8, 0x00fd4, 'new_world') +p.arg('r3', 'ConfigInfo') +p.arg('r4', 'processor_info') +p.arg('r5', 'sys_info') +p.arg('r6', 'boot_r6') +p.arg('r7', 'rtas_fourcc', end=0x00680) +p.arg('r8', 'rtas_proc', end=0x00710) +p.arg('r9', 'boot_hw_info') +p.cmt('1. Fill segment registers very basically.') +p.cmt('2. Zero the BAT.') +p.cmt('3. Lay out the kernel\'s memory and copy some tables.') +p.cmt('4. Print the first debug message: "Hello from..."') +p.cmt('5. Choose an interrupt handler.') +p.cmt('6. Copy some ConfigInfo stuff.') +p.cmt('7. Override info for old CPUs then go to main setup.') +p.cmt('8. Do something with caches for newer G4s.') +p.cmt(0x004ac, 'Load seg reg 0 with 0x20000000 and all others with zeros') +p.cmt(0x004f8, 'Get all but lowest bit of CPU version') +p.cmt(0x00504, 'CPU is 601:') +p.label(0x00548, 'end_if_601') +p.label(0x00520, 'not_601') +p.cmt(0x00550, 'search sys_info for the physical address of the Toolbox ROM') +p.cmt(0x0055c, 'now r11=toolbox and r12=ram') +p.cmt('Some really tricky stuff happens here with the memory data.') +p.cmt('The location of the KDP and the irp get chosen.') +p.ptr(0x00618, 0x00fd4, 'r1', 'kdp') +p.ptr(0x00680, 0x0070c, 'r9', 'hw_info') +p.label(0x006ac, 'no_rtas') +p.label(0x006b4, 'end_if_rtas') +p.indirect_imm(0x00800, 0) +p.label(0x00800, '88') +p.label(0x00804, '99') +p.indirect_imm(0x00808, 2, '0:^ - 0x00800:^ - 4') +p.cmt(0x00a1c, 'check for several (some unknown) pre-7410 CPUs, and load their info') +p.indirect_imm(0x00a20, 2, '0x0120c:^ - 0:^') +p.cmt(0x00a90, 'get base of page table (why?)') +p.cmt(0x00a94, 'r21 = SDR1 & 0xffff0000') +p.cmt(0x00a98, 'r22 = (SDR1 << 16) & 0x007F0000') +p.indirect_imm(0x00b74, 1, '(0x01088:$ - 0x00fd4:^) / 4') +p.indirect_imm(0x00b80, 2, '0x01088:$ - 0:^') +p.indirect_imm(0x00dbc, 1, '(0x0114c:$ - 0x01088:^) / 4') +p.indirect_imm(0x00dc8, 2, '0x0114c:$ - 0:^') +p.label(0x00fd0, 'skip_cache_hackery_never') + +p.major(0x00fd4, 0x01088, 'copied_code_1') + +p.major(0x01088, 0x0114c, 'copied_code_2') + +p.major(0x0114c, 0x0115c, 'cpu_pre_7410_infobytes_1') +p.major(0x0115c, 0x0116c, 'cpu_7410plus_infobytes_1') +p.major(0x0116c, 0x0117c, 'cpu_pre_7410_infobytes_2') +p.major(0x0117c, 0x0118c, 'cpu_7410plus_infobytes_2') +p.major(0x0118c, 0x011cc, 'cpu_pre_7410_infolongs') +p.major(0x011cc, 0x0120c, 'cpu_7410plus_infolongs') + +p.major(0x0120c, 0x01350, 'cpuinfo_override_table') +p.cmt('For 7400(only) and earlier CPUs. Overwrites info in KDP copied from bootloader.') + +p.major(0x01350, 0x01360, 'new_world_hardcode_cpu_info') +p.cmt('All G3s and earler, plus the G4-7400 (only). Overwrite part of the CPU info that we got from the bootloader (the important bits), and go to setup.') +p.arg('r3', 'ConfigInfo') +p.arg('r4', 'processor_info') +p.arg('r5', 'sys_info') +p.arg('r6', 'boot_r6') +p.arg('r9', 'cpuinfo_size') +p.arg('r10', 'kdp_cpuinfo') +p.arg('r11', 'static_cpuinfo') + +p.major(0x01360, 0x01430, 'new_world_final_common') +p.arg('r1', 'kdp') + +p.major(0x01430, 0x01434, 'setup_new_world') +p.cmt('Sometimes (?) on NewWorld machines, blue issues a 68k reset trap to reinit the kernel. Rene says that this is necessary to set up address spaces.') +p.arg('r1', 'kdp') + +p.major(0x01434, 0x02674, 'setup') +p.cmt('Final common pathway. Prints a whole heap of stuff.') +p.cmt('cr5.eq is set for OldWorld, unset for NewWorld') +p.cmt('') +p.cmt('SPRG0: ("EWA" -- core-specific Exception Work Area)') +p.cmt('"Software may load a unique physical address in this register to identify an area of memory reserved for use by the first-level exception handler. This area must be unique for each processor in the system."') +p.cmt('') +p.cmt('SPRG1: ("r1" = "KDP" = kernel data page)') +p.cmt('"This register may be used as a scratch register by the first-level exception handler to save the content of a GPR. That GPR then can be loaded from SPRG0 and used as a base register to save other GPRs to memory."') +p.cmt('') +p.cmt('SPRG2: ("LR" = interrupt-saved link register') +p.cmt('"This register may be used by the operating system as needed."') +p.cmt('') +p.cmt('SPRG3: ("vecBase" = pointer to one of six 48-member vector tables in KDP or KCP)') +p.cmt('"This register may be used by the operating system as needed."') +p.arg('r1', 'kdp') +p.cmt(0x014b8, 'Copy 64b from 0xfc0(kdp) to 0xfc0(irp)...') +p.cmt(0x014dc, '...done') +p.cmt(0x014e8, 'Fill SIX vector tables, in kdp and below, with CRASHes...') +p.cmt(0x01530, '...done') +p.cmt(0x01530, 'Fill ONE vector table, below kdp, with something ELSE...') +p.cmt(0x01548, '...done') +p.cmt(0x0154c, 'Point SPRG3=vecBase at one of those tables.') +p.ptr(0x0154c, 0x01680, 'r9', 'kdp', p.semantic_list[0x0154c-4].get_imm_val(2)) +p.ptr(0x01554, 0x01680, 'r8', 'kdp', p.semantic_list[0x01554-4].get_imm_val(2)) +p.ptr(0x01684, 0x016d0, 'r8', 'kdp', p.semantic_list[0x01684-4].get_imm_val(2)) +p.ptr(0x016d4, 0x01720, 'r8', 'kdp', p.semantic_list[0x016d4-4].get_imm_val(2)) +p.ptr(0x01724, 0x01770, 'r8', 'kdp', p.semantic_list[0x01724-4].get_imm_val(2)) +p.ptr(0x01774, 0x01824, 'r8', 'kdp', p.semantic_list[0x01774-4].get_imm_val(2)) +p.label(0x01778, 'loop_memset') +p.cmt(0x01824, 'super boring stuff over. now cpu-specific stuff!') +p.cmt('(I have only listed CPUs that I think Apple used)') +p.cmt('PVR = version << 16 | revision') +p.cmt('') +p.cmt('Pre-G3:') +p.cmt('0001 = 601') +p.cmt('0003 = 603') +p.cmt('0006 = 603e') +p.cmt('0007 = 606ev/606r') +p.cmt('0004 = 604') +p.cmt('0004 = 604e') +p.cmt('') +p.cmt('G3:') +p.cmt('0008 = 750/750CX/750CXe/755') +p.cmt('0007 = 750FX') +p.cmt('') +p.cmt('G4:') +p.cmt('000c = 7400') +p.cmt('800c = 7410') +p.cmt('8000 = 7450') +p.cmt('8001 = 7445/7455') +p.cmt('8002 = 7447/7457 (upgrades only!)') +p.cmt('') +p.cmt('G5:') +p.cmt('0039 = 970') +p.cmt('003c = 970FX') +p.cmt(0x01834, 'pre-7410 CPUs (not that a 7400 is anything like a G3)') +p.cmt(0x01838, 'the only CPUs >= 0x0010 are G5s') +p.label(0x01840, 'skip_zeroing_G5') +p.label(0x01870, 'G4_7410_or_later') +p.cmt(0x01870, 'clear the high (8000) bit and have fun') +p.cmt(0x0187c, 'treat 8010 (doesnt exist) as 8FF0 -- why??') +p.label(0x01880, 'skip_spoofing_weird_G4') +p.cmt(0x018b0, 'im not even going to complain that this compiler is so dumb') +p.label(0x018b4, 'post_cpu_specific') +p.cmt(0x018b4, 'fill a buncha r1 stuff with 0xFFFFFFFF') + +p.cmt(0x018c8, 'Initialise the seven kernel locks with zero in the count field...') +p.cmt(0x018e8, '...and a name in the fourcc field.') +for x in range(0x018e8, 0x0193c, 12): + p.indirect_str_lisori(x) + p.cmt(x + 12, '') + +p.cmt(0x01954, 'Now what?') +p.indirect_str_lisori(0x01984) +p.indirect_str(0x0199c, 1) +p.indirect_str(0x019a4, 2) +p.indirect_str(0x01d3c, 1) +p.indirect_str(0x01d40, 2) +p.indirect_str(0x01ebc, 1) +p.indirect_str(0x01ec0, 2) +p.label(0x024e4, '*_skip_grabbing_more_pages') +p.label(0x0255c, 'finish_old_world') + +p.major(0x02674, 0x026cc, 'undo_failed_kernel_replacement') +p.cmt('Inits or reinits the log') + +p.major(0x026cc, 0x026f0, 'old_world_rfi_to_userspace_boot') +p.arg('r1', 'kdp') + +p.major(0x02700, 0x0289c, 'lock') +p.cmt('Gets something from -0x340(ewa)') +p.cmt('Lock struct: word@0=count, word@16=holder') +p.cmt('Return pretty quick-smart if we get the lock.') +p.cmt('If hands must be dirtied, put r22-r31 into EWA.') +p.arg('r8', 'lock') +p.ptr(0x0270c, 0x02714, 'r9', 'kdp') +p.ptr(0x02730, 0x0289c, 'r9', 'kdp') +p.label(0x02730, '*_already_held') + +p.major(0x0289c, 0x02940, 'spinlock_what') + +p.major(0x02940, 0x02944, 'panic_wrapper_0x02940') + +p.major(0x02960, 0x02964, 'panic_wrapper_0x02960') + +p.major(0x02cb0, 0x02ccc, 'skeleton_key') +p.cmt('Called when a Gary reset trap is called. When else?') + +p.major(0x03b40, 0x03bd8, 'dsi_vector') + +p.major(0x03d40, 0x03d98, 'int_prepare') +p.arg('r6', 'saved at *(ewa + 0x18)') +p.arg('sprg1', 'saved at *(ewa + 4)') +p.arg('rN (0,7,8,9,10,11,12,13, not r1)', 'saved at *(*(ewa - 0x14) + 0x104 + 8*N)') +p.ret('r0', '0') +p.ret('r1', '*(ewa - 4)') +p.ret('r6', 'kdp') +p.ret('r7', '*(ewa - 0x10) # flags?') +p.ret('r8', 'ewa') +p.ret('r10', 'srr0') +p.ret('r11', 'srr1') +p.ret('r12', 'sprg2') +p.ret('r13', 'cr') + +p.major(0x03ce0, 0x03d34, 'save_all_registers') + +p.major(0x037c8, 0x03934, 'memretry_machine_check') + +p.major(0x04508, 0x04518, 'wordfill') +p.arg('r8', 'dest') +p.arg('r22', 'len in bytes') +p.arg('r23', 'fillword') + +p.major(0x04520, 0x045b0, 'reset_trap') +p.cmt('Handle a 68k reset trap.') +p.cmt('Some messing around with 601 RTC vs later timebase registers.') +p.cmt("If Gary Davidian's first name and birthdate were in the 68k's A0/A1 (the 'skeleton key'), do something. Otherwise, farm it out to non_skeleton_reset_trap.") +p.arg('r3', 'a0') +p.arg('r4', 'a1') +p.indirect_str(0x0452c, 2) +p.label(0x0453c, '*_cpu_not_601') +p.label(0x04540, '*_endif') +p.indirect_str(0x04544, 1) + +p.major(0x045b0, 0x04660, 'non_skeleton_reset_trap') +p.cmt("A 68k reset trap without Gary Davidian's magic numbers.") + +p.major(0x04660, 0x0466c, 'pih_indirect') +p.arg('r1', 'kdp') + +p.major(0x04680, 0x046d0, 'regsave_debug') +p.cmt('r2-r5 and r14-r31 (real registers) and r6-r13 (regsave) into compact area, then debug.') +p.arg('r1', 'compact area') + +p.major(0x048e0, 0x04a20, 'SIGP') +p.cmt('Really need to figure out what this does...') +p.arg('r7', 'flags') +p.arg('r8', 'usually 2?') + +p.major(0x04ac0, 0x04b54, 'sc_vector') +p.cmt('Not fully sure about this one') +p.label(0x04b38, '*_not_special') + +p.major(0x04b80, 0x04bbc, 'return_to_kern_from_dummy_interrupt') + +p.major(0x04c00, 0x04c04, 'panic_wrapper_0x04c00') + +p.major(0x05278, 0x054b8, '') + +p.major(0x05524, 0x055e0, '') + +p.major(0x055e0, 0x05618, 'flush_tlb') + +p.major(0x05800, 0x05808, 'funny_debug_place') + +p.major(0x06870, 0x06a14, '') +p.cmt('Mess with some whacko undocumented SPRs. QEMU complains. Called by setup. Boots fine if clobbered? Temporarily overwrites a KDP vector with a dummy handler. Knowing what vec[7] does will help.') + +p.indirect_lisori(0x07658) + +p.major(0x08620, 0x08624, 'panic_wrapper_0x08620') + +p.major(0x09ce0, 0x09d1c, 'panic_offset_to_r1_minus_0x810_x48__0x9dfc_to_prev_plus_4_20_36') + +p.major(0x09d20, 0x09dfc, 'bootstrap_cpu') +p.cmt('NB: I was probably wrong about this.') +p.cmt('Contains a (very rare) mtsprg0 instruction.') +p.indirect_imm(0x0a408, 0) +p.label(0x0a408, '88') +p.label(0x0a40c, '99') +p.indirect_imm(0x0a410, 2, '0x0a600:^ - 0x0a408:^ - 4') + + +p.major(0x0a620, 0x0a624, 'panic_wrapper_0x0a620') + +p.major(0x0a640, 0x0a8bc, 'rtas_call') +p.arg('r1', 'kdp') +p.arg('r6', 'some kind of place') +p.arg('r7', 'some kind of flags') +p.cmt('Only major that hits the RTAS globals.') +p.cmt('RTAS requires some specific context stuff.') +p.label(0x0a654, 'rtas_is_available') +p.label(0x0a8b4, 'rtas_make_actual_call') + +p.major(0x0aca0, 0x0af0c, 'syscall') +p.arg('r1', 'kdp') +p.arg('r6', 'save area') +p.label(0x0acb8, '*_tbl') +p.label(0x0aed0, '*_tbl_end', of_start=False) +p.cmt(0x0aed0, 'Increment a counter. All but LS 10 bits ignored, giving 1024 entries.') +p.cmt('r16 = &perf_tbl') +p.cmt('r17 = offset into counter table') +p.label(0x0aeec, '*_skip_counter') +p.indirect_imm(0x0aeec, 1, '(0x0aed0:^-0x0acb8:^)/4') +p.cmt(0x0aeec, 'r14 = offset of entry in jump table') +p.cmt('r16 = offset of jump table in kernel') +p.cmt('r15 = content of entry') +p.cmt('jump assumes kernel mapped at zero') +p.indirect_lisori(0x0aef4) + +p.major(0x0af38, 0x0af58, 'syscall_return_assert_lock_unheld') +p.arg('r1', 'kdp') + +p.major(0x0af0c, 0x0af14, 'bad_syscall') +p.cmt('Handler for out-of-range or unimplemented (debug) syscalls.') + +p.major(0x0af58, 0x0af60, 'syscall_return_noErr') + +p.major(0x0b024, 0x0b02c, 'syscall_return_kMPInsufficientResourcesErr') + +p.major(0x0b04c, 0x0b054, 'syscall_return_wtf') + +p.major(0x0b074, 0x0b07c, 'syscall_return_paramErr') + +p.major(0x0b0c4, 0x0b0cc, 'syscall_return_kMPInvalidIDErr') + +p.major(0x0b0f4, 0x0b0fc, 'syscall_return_noErr_again') + +p.major(0x0b124, 0x0b144, 'syscall_return') + +p.major(0x0b144, 0x0b248, '') + +p.major(0x0b24c, 0x0b3b0, 'NKRegisterCpuPlugin') + +p.major(0x0b3b0, 0x0b3cc, 'nk_cpu_count') +p.cmt('Called by MPProcessors and MPProcessorsScheduled') +p.arg('r3', '0:all, 1:scheduled') +p.ret('r3', 'cpu_count') + +p.major(0x0b598, 0x0b640, 'nk_yield_with_hint') + +p.major(0x0b76c, 0x0b788, 'nk_get_next_id_unowned') +p.cmt('Replace the provided process/coherence/console ID with the "next" one. IDs were opaque but were only longs. Wrapped by MPGetNext*ID, which indirects the opaque ID structure.') +p.cmt('') +p.cmt('From MP docs: A coherence group is the set of processors and other bus controllers that have cache-coherent access to memory. Mac OS 9 defines only one coherence group, which is all the processors that can access internal memory (RAM). Other coherence groups are possible; for example, a PCI card with its own memory and processors can comprise a coherence group.') +p.arg('r3', 'kind (process=1,coherence=10,console=13)') +p.arg('r4', 'prev_id') +p.ret('r3', 'MP result code') +p.ret('r4', 'next_id') + +p.major(0x0bd44, 0x0bdfc, 'NKStopScheduling') + +# odd to find this here +p.major(0x0be4c, 0x0be50, '_bad_syscall') + +p.major(0x0be50, 0x0beac, 'NKxprintf') + +p.major(0x0c12c, 0x0c240, 'NKSetClockStep') +p.cmt('Debug string matches MPLibrary!') +p.cmt('0xf7e(r1) = clock_step (half-word)') +p.arg('r3', 'new_clock_step # (half-word)') + +p.major(0x0b788, 0x0b8b8, 'nk_get_next_id_owned') +p.cmt('Replace the provided address space/task/queue/semaphore/critical region/timer/event/notification ID with the "next" one. IDs were opaque but were only longs. Wrapped by MPGetNext*ID, which indirects the opaque ID structure. Differs from nk_get_next_id_unowned because it deals in objects owned by a particular process.') +p.arg('r3', 'owningProcessID') +p.arg('r4', 'kind (task=2,timer=3,queue=4,sema=5,crit_rgn=6,addr_spc=8,evt=9,notif=12)') +p.arg('r5', 'prev_id') +p.ret('r3', 'MP result code') +p.ret('r5', 'next_id') +p.label(0x0b798, 'try_another_id') +p.label(0x0b804, 'want_task_id') +p.label(0x0b828, 'want_timer_id') +p.label(0x0b838, 'want_queue_id') +p.label(0x0b848, 'want_sema_id') +p.label(0x0b858, 'want_critrgn_id') +p.label(0x0b868, 'want_addrspc_id') +p.label(0x0b878, 'want_evt_id') +p.label(0x0b888, 'want_11_id') +p.label(0x0b898, 'want_notif_id') +p.label(0x0b8a8, 'want_13_id') + +p.major(0x0c240, 0x0c3ac, 'adjust_tb_drift') +p.cmt("There's a one-billion constant in here, for fractional expression.") +p.cmt('-0x36c(r1) = tb_drift_numerator') +p.cmt('-0x368(r1) = tb_drift_denominator') +p.arg('r3', 'to') + +p.major(0x0c5d4, 0x0c5d8, 'panic_wrapper_0x0c5d4') + +p.major(0x0c8b4, 0x0c968, '') + +p.major(0x0ccf4, 0x0cd9c, '') + +p.major(0x0d35c, 0x0d504, '') + +p.major(0x0db04, 0x0dc0c, '') + +p.major(0x0dce8, 0x0dd64, '') + +p.major(0x0e280, 0x0e284, 'panic_wrapper_0x0e280') + +p.major(0x0e330, 0x0e548, 'mktask') + +p.major(0x0e95c, 0x0ea58, 'NKThrowException') +p.cmt('Throws an exception to a specified task.') +p.arg('r3', 'MPTaskID task') +p.arg('r4', 'MPExceptionKind kind') +p.ret('r3', 'result code') + +p.major(0x0f380, 0x0f384, 'panic_wrapper_0x0f380') + +p.major(0x0f384, 0x0f3b8, '') + +p.major(0x0f3b8, 0x0f7a0, 'convert_pmdts_to_areas') +p.cmt('Pretty obvious from log output.') + +p.major(0x0f7a0, 0x0f7a8, 'NKGetPageSizeClasses') +p.arg('r1', 'kdp') +p.ret('r3','pageClass') + +p.major(0x0f7a8, 0x0f7b8, 'NKGetPageSize') +p.arg('r1', 'kdp') +p.arg('r3', 'pageClass') +p.ret('r3', 'byteCount') + +p.major(0x0f824, 0x0f9f8, 'NKCreateAddressSpaceSub') +p.cmt('Guessing by strings -- but maybe that name applies to syscall?') + +p.major(0x0fbec, 0x10284, 'createarea') + +p.major(0x10284, 0x102a8, '') + +p.major(0x102a8, 0x102c8, '') + +p.major(0x102c8, 0x10320, '') + +p.major(0x10cb8, 0x10d38, '') + +p.major(0x114fc, 0x11538, 'free_list_add_page') +p.arg('r1', 'kdp') +p.arg('r8', 'maybe the page') + +p.major(0x12780, 0x12784, 'panic_wrapper_0x12780') + +p.major(0x12784, 0x1281c, 'pool_init') +p.arg('r1', 'kdp') +p.cmt('Allocate one page for the kernel pool. Same layout at Memtop starts at 7 pages below KDP.') +p.cmt('Take note of the structure from kdp-ab0 to kdp-aa0') +p.cmt(0x127ac, 'bit of a mystery') +p.indirect_str_lisori(0x127bc) +p.indirect_str_lisori(0x127d8) +p.indirect_str_lisori(0x127ec) +p.cmt(0x127f8, 'set up linked list') +p.indirect_str_lisori(0x1280c) + +p.major(0x1281c, 0x129a0, 'pool_malloc') +p.cmt('Easy to use! 0xfd8 (a page minus 10 words) is the largest request that can be satisfied.') +p.arg('r1','kdp') +p.arg('r8', 'size') +p.ret('r8', 'ptr') +p.label(0x12824, '*_with_crset') +p.indirect_str(0x128e0, 1) +p.indirect_str(0x128ec, 2) +p.indirect_str_lisori(0x12968) + +p.major(0x129a0, 0x129cc, 'looks_like_poolextend') + +p.major(0x129cc, 0x129fc, '') + +p.major(0x129fc, 0x12a34, '') + +p.major(0x12a34, 0x12a80, '') + +p.major(0x12a80, 0x12b94, 'poolextend') +p.cmt(' 0xed0(r1) = pool extends (I increment)') +p.cmt('-0xa9c(r1) = virt last page (I update)') +p.cmt('-0xaa0(r1) = phys last page (I update)') +p.cmt('Assumes that cache blocks are 32 bytes! Uh-oh.') +p.cmt('') +p.cmt('Page gets decorated like this:') +p.cmt("000: 00 00 0f e8") +p.cmt("004: 87 'B 'G 'N") +p.cmt("008: 00 00 0f e8") +p.cmt("00c: 87 'l 'o 'c") +p.cmt("... zeros << r8 passes ptr to here") +p.cmt("fe8: phys offset from here to prev page") +p.cmt("fec: 87 'E 'N 'D") +p.cmt("ff0: logical abs address of prev page") +p.cmt("ff4: 00 00 00 00") +p.cmt("ff8: 00 00 00 00") +p.cmt("ffc: 00 00 00 00") +p.cmt('') +p.arg('r1', 'kdp') +p.arg('r8', 'anywhere in new page (phys)') +p.arg('r9', 'page_virt') +p.label(0x12b18, '*_zeroloop') +p.cmt(0x12b28, 'Put the funny stuff in') +p.indirect_str(0x12b30, 1) +p.indirect_str(0x12b34, 2) +p.indirect_str(0x12b48, 1) +p.indirect_str(0x12b4c, 2) +p.indirect_str(0x12b64, 1) +p.indirect_str(0x12b68, 2) +p.cmt(0x12b78, 'Update globals') +p.cmt(0x12b80, 'Unknown func calls') + +p.major(0x12d40, 0x12d44, 'panic_wrapper_0x12d40') + +p.major(0x12d44, 0x12e88, 'say_nanodebugger_activated') + +p.major(0x1301c, 0x13060, 'say_starting_timeslicing') + +p.major(0x13060, 0x130f0, '') + +# SOMETHING IN THIS GAP IS NON-RELOCATABLE (and there sure is a lot of un-disassembled code here) + +p.major(0x13708, 0x13750, 'scale_timebase') +p.arg('r1', 'kdp') +p.arg('r8', 'multiple (pos: /250; neg: /250000)') +p.ret('r8', 'hi') +p.ret('r9', 'lo') +p.label(0x13728, '*_divisor_250000') +p.indirect_lisori(0x1372c, '250000') +p.label(0x13734, '*_divisor_250') + +p.major(0x13750, 0x137b4, 'bizarre') + +p.major(0x137c0, 0x137c4, 'panic_wrapper_0x137c0') + +p.major(0x137c4, 0x138ac, 'init_rdyqs') +p.arg('r1', 'kdp') +p.cmt('Four queues, hardcoded. Not sure why. Each queue knows about 0.001042*tbfreq -- timeslicing quantum?') +p.indirect_str(0x137f0, 1) +p.indirect_str(0x137f4, 2) + + +p.major(0x138ac, 0x138d4, 'save_registers_from_r14') +p.cmt('Save r14-r31 to 0x174(r6), 8-byte spaced.') +p.cmt('Looks very very optimised?') +p.cmt('stmw not used because registers are spaced out?') +p.arg('r6', 'ewa') +p.ret('r8', 'sprg0 (not used by me)') + +p.major(0x138d4, 0x1391c, 'save_registers_from_r20') +p.arg('r6', 'ewa') +p.ret('r8', 'sprg0 (not used by me)') + +p.major(0x1391c, 0x13988, 'restore_registers_from_r14') +p.cmt('Restore r14-r31 from 0x174(r6), 8-byte spaced.') +p.cmt('Again, well optimised') +p.arg('r6', 'ewa') + +p.major(0x13c90, 0x13e4c, '') + +p.major(0x13e4c, 0x13ed8, '') + +p.major(0x13ed8, 0x13f78, '') + +p.major(0x13f78, 0x142a8, '') + +p.major(0x142a8, 0x142dc, '') + +p.major(0x142dc, 0x144cc, '') + +p.major(0x144cc, 0x14548, 'int_teardown') +p.cmt('All syscalls get here?') +p.cmt('r0,7,8,9,10,11,12,13 restored from r6 area') +p.cmt('r1,6 restored from sprg0 area') +p.cmt('') +p.cmt('Apple used the "reserved" (not first three) bits of XER.') +p.cmt('If bit 27 of 0xedc(r1) is set:') +p.cmt(' Bit 22 of XER is cleared') +p.cmt(' Bit 10 of r7 is inserted into XER at bit 23') +p.arg('sprg0', 'for r1 and r6') +p.arg('r1', 'kdp') +p.arg('r6', 'register restore area') +p.arg('r7', 'flag to insert into XER') +p.arg('r10', 'new srr0 (return location)') +p.arg('r11', 'new srr1') +p.arg('r12', 'lr restore') +p.arg('r13', 'cr restore') + +p.major(0x14548, 0x148ec, '') + +p.major(0x148ec, 0x149d4, '') + +p.major(0x149d4, 0x14a90, '') + +p.major(0x14a90, 0x14a98, 'clear_cr0_lt') + +p.major(0x14a98, 0x14af8, '') + +p.major(0x14af8, 0x14bcc, '') + +p.major(0x15140, 0x15144, 'panic_wrapper_0x15140') + +p.major(0x15144, 0x151b0, 'index_init') +p.cmt('These are the first requests made of the pool!') +p.arg('r1', 'kdp') +p.indirect_str_lisori(0x1516c) +p.indirect_str_lisori(0x151a0) + +p.major(0x151b0, 0x152f8, 'alloc_id') +p.arg('r1', 'kdp') +p.arg('r9', 'kind') + +p.major(0x15380, 0x153e0, 'id_kind') +p.arg('r8', 'id') +p.ret('r8', 'something not sure what') +p.ret('r9', '0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log') + +p.major(0x154a0, 0x154dc, 'get_pih_addr') +p.cmt('ConfigInfo specifies a one-byte primary interrupt handler kind. Look up function address in this table.') +p.label(0x154a8, 'pih_tbl') +p.arg('r3', 'ConfigInfo') +p.ret('r12', 'clobbered') +p.ret('r7', 'pih_pa') + +p.major(0x154e0, 0x15740, 'interrupt_blue') +p.arg('r1', 'kdp') +p.cmt('At least I think so.') + +p.major(0x15740, 0x15794, 'NKPropogateExternalInterrupt') +p.arg('r1', 'kdp') + +p.major(0x15800, 0x15840, 'machine_specific_lut') + +p.major(0x15840, 0x158e4, 'pdm_pih_01') +p.arg('r1', 'kdp') +p.cmt('Piltdown Man = first ("G1") Power Macs. NuBus. Models 61xx, 71xx, 81xx.') +p.indirect_lisori(0x158cc) + +p.major(0x15900, 0x159a8, 'pbx_pih_03') +p.arg('r1', 'kdp') +p.cmt('PBX = NuBus PowerBooks. Possibly not including the 5300?') + +p.major(0x159c0, 0x15ad0, 'gazelle_pih_05') +p.arg('r1', 'kdp') +p.cmt('Gazelle = later low-end "G2" Power Macs. 603 series processors. PCI. Models 54xx-55xx, 64xx-65xx.') +p.cmt('The 54xx/64xx ROM actually identifies as Alchemy, not Gazelle, and SheepShaver considers this difference when patching the ROM Nanokernels. But, Wikipedia describes these machines as minor upgrades, EveryMac calls them Gazelle, and they use the same PIH type.') + +p.major(0x15b00, 0x15be4, 'tnt_pih_02') +p.arg('r1', 'kdp') +p.cmt('TNT = High-end and mid-range "G2" Power Macs. PCI. 603 and 604 series processors. Models 7200-7600, 8500-8600, 9500-9600.') + +p.major(0x15c00, 0x15d24, 'gossamer_pih_07') +p.arg('r1', 'kdp') +p.cmt('Gossamer = beige G3. PIH 07 also used for GRX = OldWorld PowerBook G3 Series.') + +p.major(0x15d40, 0x15e20, 'nwpbg3_pih_0a') +p.arg('r1', 'kdp') +p.cmt("Only ever seen this on Mikey's (NewWorld) Lombard. So apparently the Trampoline can also change the ROM's default PIH.") + +p.major(0x15e40, 0x15ef0, 'cordyceps_pih_04') +p.arg('r1', 'kdp') +p.cmt('Cordyceps = early low-end "G2" Power Macs. 603 series processors. PCI. Models 52xx-53xx, 62xx-63xx.') + +p.major(0x15f00, 0x16160, 'newworld_pih_06') +p.arg('r1', 'kdp') +p.cmt('Trampoline leaves ConfigInfo value unchanged. PIH 06 also specified in Pippin ROM.') + +p.major(0x16180, 0x163dc, 'unknown_pih_08') +p.arg('r1', 'kdp') + +p.major(0x163e0, 0x16520, 'print_string') +p.cmt('Not done figuring this out, with the serial and stuff.') +p.label(0x1643c, '*_skip_serial') +for i in range(0x1644c, 0x16494, 4): + sem = p.semantic_list[i] + if sem.mnem == 'cmpwi': + p.indirect_str(i, 1) +p.label(0x16440, '*_next_char') +p.label(0x16470, '*_escape_code') +p.label(0x16494, '*_literal_backslash_or_caret') +p.label(0x1649c, '*_normal_char') +p.label(0x164c8, '*_newline') + +p.major(0x16520, 0x165cc, 'print_common') + +p.major(0x165cc, 0x165ec, 'print_return') +p.cmt('Restores registers from EWA and returns.') + +p.major(0x165ec, 0x16710, 'print_decimal') + +p.major(0x16710, 0x16734, 'print_word_hex') + +p.major(0x16734, 0x1675c, 'print_short_hex') + +p.major(0x1675c, 0x16784, 'print_twodig_decimal') + +p.major(0x16784, 0x167ac, 'print_unknown') + +p.major(0x167ac, 0x16880, 'print_digity_common') + +p.major(0x16880, 0x168ec, 'getchar') + +p.major(0x168ec, 0x16980, 'print_char') + +p.major(0x16980, 0x16ae8, 'serial_flush') +p.cmt('This and the following func are a bit speculative, but whatever.') + +p.major(0x16ae8, 0x16b44, 'serial_io') +p.cmt('See disclaimer above.') + +p.major(0x16b44, 0x16b70, 'serial_busywait') +p.cmt('See disclaimer above.') + +p.major(0x172e0, 0x18040, 'panic') +p.cmt(0x17534, 'gets kdp from print!!!') +p.ptr(0x17534, 0x18040, 'r1', 'kdp') +p.ptr(0x17dc8, 0x18040, 'r17', 'ewa') +p.ptr(0x17ec8, 0x17fac, 'r18', 'task') +p.ptr(0x17fac, 0x18040, 'r18', 'addrspc') +p.label(0x17574, '*_prompt') +p.label(0x17678, '*_load_commands') +p.label(0x17698, 'load_*_tbl') +p.label(0x1769c, '*_tbl') +p.label(0x17c6c, '*_load_id_kind_strings') +p.label(0x17d50, '*_load_more_jumps') +p.label(0x17d8c, '*_load_id_args') +p.label(0x17660, '*_bad_command') +p.label(0x178d8, '*_missing_physical_addr') +p.label(0x17904, '*_bad_length_1') +p.label(0x179a8, '*_missing_logical_addr') +p.label(0x179d4, '*_bad_length_2') +p.label(0x17aa0, '*_bad_resume_address') +p.label(0x17bfc, '*_missing_opaque_id') +p.label(0x17c24, '*_bad_opaque_id') +for offset in (0x1767c, 0x17d90): + while p.data[offset] != 0xff: + next_offset = p.data.index(b'\x00', offset) + 1 + data = p.data[offset:next_offset] + # print(hex(offset), repr(data)) + p._insert_semantic(da._SemanticString(offset, data)) + offset = next_offset + p._insert_semantic(da._SemanticFixedSize(offset, p.data[offset:offset+1])) + +for i in range(0x17c70, 0x17d50, 16): + p._insert_semantic(da._SemanticString(i, p.data[i:i+16])) + +p.major(0x18148, 0x18258, 'print_xpt_info') +p.indirect_lisori(0x18150, '(%d:$ - 0:^)' % len(p.data)) + +p.major(0x18258, 0x182f0, 'print_sprgs') +p.cmt('Goldmine. Tells me what the SPRGs do!') + +p.major(0x182f0, 0x183e4, 'print_sprs') +p.cmt('Both user-mode and supervisor-only') + +p.major(0x183e4, 0x18468, 'print_segment_registers') + +p.major(0x18468, 0x18544, 'print_gprs') + +p.major(0x18544, 0x1860c, 'print_memory') + +p.major(0x1860c, 0x18738, 'print_memory_logical') + +p.major(0x18738, 0x1879c, 'cmd_lookup') +p.arg('r16', 'command strings') +p.arg('r17', 'lut') +p.ret('cr0', 'found') +p.ret('r17', 'ptr to lut entry') + +p.major(0x1879c, 0x187b0, 'next_cmd_word') +p.arg('r15', 'start') +p.ret('r15', 'ptr') +p.ret('r16', 'char') + +p.major(0x18a00, 0x18a74, 'screenlog_init') +p.arg('r1', 'kdp') + +p.major(0x18a74, 0x18a98, 'screenlog_putchar') +p.arg('r1', 'kdp') + +p.major(0x18a98, 0x18bec, 'screenlog_redraw') +p.arg('r1', 'kdp') + +p.major(0x18bec, 0x18c08, '') + +p.major(0x18c08, 0x18c18, '') + +p.major(0x18c18, 0x18d10, '') + +p.major(0x18d5c, 0x18e24, '') + +p.major(0x18e24, 0x18e54, '') + +p.major(0x18e54, 0x18fd4, '') + +p.major(0x18fd4, 0x19018, 'funny_thing') + +p.major(0x19018, 0x190a0, '') + +p.major(0x190a0, 0x19aa4, 'load_log_font') + +p.major(0x19ab0, 0x19af4, '') + +p.major(0x19b00, 0x19b14, '') + +p.major(0x19b20, 0x19b2c, 'load_log_colours') +p.cmt('Each word is RGB with the high byte ignored. Background and text.') + +p.label(len(p.data), 'nk_end', of_start=False) + +# Rename syscalls with info from MPLibrary +for i, start in enumerate(syscall_majors): + try: + p.major_name_dict[start] = syscall_names[i] + except KeyError: + pass + +# +# Do what I have come for. +# + +if cmdline.disasm: + with open(cmdline.disasm, 'w') as f: + print(p, file=f) +else: + print('You chose not to output an asm file. Probably a mistake.') + + +if cmdline.dump_constants: + with open(cmdline.dump_constants, 'w') as f: + for offset, data in p.lisoris(range(0, len(p.data))): + as_int = int.from_bytes(data, byteorder='big') + + s = sum(32 <= ch < 127 for ch in data) + + # cand + # try: + # ind = '' if any(p.semantic_list[offset]._imm_exprs) else '#cnd' + # except AttributeError: + # ind = '*' + # print(repr(p.semantic_list[offset])) + + is_string = (s >= 3) + try: + indirected = any(p.semantic_list[offset]._imm_exprs) + except AttributeError: + indirected = False + shares_target = ((as_int, True) in p.backref_dict) or ((as_int, False) in p.backref_dict) + candidate = as_int <= len(p.data) and as_int % 4 == 0 + try: + promising = isinstance(p.semantic_list[as_int-4], da._SemanticInsn) and not isinstance(p.semantic_list[as_int], da._SemanticInsn) + except: + promising = False + + things = zip('itcp', (indirected, shares_target, candidate, promising)) + s = ''.join((c if b else '-') for (c, b) in things) + + show_string = ' ' + repr(data)[1:] if is_string else '' + + print(' ' + hex(as_int).rjust(10) + ', # %05x ' % offset + s + show_string, file=f) diff --git a/kernel-stock b/kernel-stock new file mode 100644 index 0000000000000000000000000000000000000000..6f0954a34c47706b971c5871f5d986d8a4155b1b GIT binary patch literal 105280 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 literal 0 HcmV?d00001