commit 7048607a5ec987e3923a3ecbd052d432ca010cd9 Author: Elliot Nunn Date: Sat Sep 10 21:46:46 2016 +0800 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e495899 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +boot +hqx +kern +kern.o +prcl +rom +tbxi-data +tbxi-rsrc diff --git a/MacOS.elf b/MacOS.elf new file mode 100644 index 0000000..b1713e5 Binary files /dev/null and b/MacOS.elf differ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..761214f --- /dev/null +++ b/Makefile @@ -0,0 +1,150 @@ +export PATH := /usr/cross/powerpc-eabi/bin:$(HOME)/mac-project/toolboxtoolbox:$(PATH) + +copy: hqx + scp hqx sweetpotato.local:/home/elliotnunn/macstuff/rom.hqx + +hqx: tbxi-data tbxi-rsrc + binhexmake --data=tbxi-data --rsrc=tbxi-rsrc --type=tbxi --creator=chrp --name='Mac OS ROM' hqx + +tbxi-data tbxi-rsrc: boot rsrc-template datafork-pefs + tbximake tbxi-data tbxi-rsrc boot rsrc-template datafork-pefs/NQDResidentCursor datafork-pefs/ProcessMgrLib + +boot: chrp-boot-script MacOS.elf prcl + bootmake --boot-script=chrp-boot-script --trampoline=MacOS.elf --parcels=prcl boot + +prcl: prcl-pefs rom + @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/TimeManagerLib@CodePrepare \ + --bin -f=00020094 -t=nlib -n=NVRAMServicesLib -l --src=prcl-pefs/NVRAMServicesLib@CodePrepare \ + --bin -f=00020094 -t=nlib -n=RTCServicesLib -l --src=prcl-pefs/RTCServicesLib@CodePrepare \ +\ +--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/NativePowerMgrLib@CodeRegister \ + --bin -f=00010094 -t=nlib -n=AGPLib -l --src=prcl-pefs/AGPLib@CodeRegister \ + --bin -f=00010194 -t=nlib -n=EtherPrintfLib -l --src=prcl-pefs/EtherPrintfLib@CodeRegister \ + --bin -f=00010094 -t=shlb -n=StartLib -l --src=prcl-pefs/StartLib@CodeRegister \ +\ +--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:network \ +\ +--prcl -f=00000009 -t=prop -n=backlight -c=backlight \ + --bin -f=00000000 -t=ndrv -n=driver,AAPL,MacOS,PowerPC --src=prcl-pefs/ndrv@backlight:backlight \ + --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+:network \ +\ +--prcl -f=0000000c -t=prop -n=cmd646-ata -c=ata \ + --bin -f=00000006 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/ndrv@cmd646-ata:ata \ +\ +--prcl -f=00000008 -t=prop -n=cofb -c=display \ + --bin -f=00000024 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/ndrv@cofb:display \ +\ +--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:via-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:network \ +\ +--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:pci \ + --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/ndrv@heathrow-ata:ata|ide' \ +\ +--prcl -f=0000000c -t=prop -n=heathrow-ata -c=ata \ + --bin -f=00000002 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src='prcl-pefs/ndrv@heathrow-ata:ata|ide' \ +\ +--prcl -f=0000000c -t=prop -n=kauai-ata -c=ata \ + --bin -f=00000006 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/ndrv@kauai-ata:ata \ +\ +--prcl -f=0000000c -t=prop -n=keylargo-ata -c=ata \ + --bin -f=00000006 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/ndrv@keylargo-ata:ata \ +\ +--prcl -f=0000000c -t=prop -n=keywest-i2c -c=i2c \ + --bin -f=00000006 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src='prcl-pefs/ndrv@keywest-i2c|uni-n-i2c:i2c' \ +\ +--prcl -f=0000000a -t=prop -n=mac-io -c=nvram \ + --bin -f=00000004 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/ndrv@mac-io:nvram \ +\ +--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/ndrv@nvram,flash:nvram \ +\ +--prcl -f=0000000c -t=prop -n=pci104c,ac1a -c=cardbus \ + --bin -f=00000016 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src='prcl-pefs/ndrv@pci104c,ac1a|pci104c,ac50:cardbus' \ + --bin -f=00010094 -t=nlib -n=PCCard -l --src='prcl-pefs/PCCard@pci104c,ac1a|pci104c,ac50:cardbus' \ +\ +--prcl -f=0000000c -t=prop -n=pci104c,ac50 -c=cardbus \ + --bin -f=00000016 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src='prcl-pefs/ndrv@pci104c,ac1a|pci104c,ac50:cardbus' \ + --bin -f=00010094 -t=nlib -n=PCCard -l --src='prcl-pefs/PCCard@pci104c,ac1a|pci104c,ac50:cardbus' \ +\ +--prcl -f=0000020c -t=prop -n=pciclass,0c0010 -c=ieee1394 \ + --bin -f=00000004 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/ndrv@pciclass,0c0010:ieee1394 \ + --bin -f=00010096 -t=nlib -n=FWServicesLib -l --src=prcl-pefs/FWServicesLib@pciclass,0c0010:ieee1394 \ + --bin -f=00010096 -t=nlib -n=DevNLib -l --src=prcl-pefs/DevNLib@pciclass,0c0010:ieee1394 \ + --bin -f=00010096 -t=nlib -n=DFMLib -l --src=prcl-pefs/DFMLib@pciclass,0c0010:ieee1394 \ + --bin -f=00010096 -t=nlib -n=GenericDriverFamily -l --src=prcl-pefs/GenericDriverFamily@pciclass,0c0010:ieee1394 \ +\ +--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:power-mgt \ + --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@pmu|via-pmu-2000|via-pmu-99:power-mgt' \ +\ +--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/ndrv@keywest-i2c|uni-n-i2c:i2c' \ +\ +--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@uni-north:pci \ + --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/ndrv@via-cuda:rtc \ +\ +--prcl -f=0000000a -t=prop -n=via-pmu -c=nvram \ + --bin -f=00000004 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/ndrv@via-pmu:nvram \ +\ +--prcl -f=0000000a -t=prop -n=via-pmu -c=rtc \ + --bin -f=00000004 -t=ndrv -n=driver,AAPL,MacOS,PowerPC -l --src=prcl-pefs/ndrv@via-pmu:rtc \ +\ +--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@via-pmu-2000:power-mgt \ + --bin -f=00000002 -t=cstr -n=code,AAPL,MacOS,name --data PowerMgrPlugin \ + --bin -f=00010096 -t=nlib -n=PMULib -l --src='prcl-pefs/PMULib@pmu|via-pmu-2000|via-pmu-99:power-mgt' \ +\ +--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@via-pmu-99:power-mgt \ + --bin -f=00000002 -t=cstr -n=code,AAPL,MacOS,name --data PowerMgrPlugin \ + --bin -f=00010096 -t=nlib -n=PMULib -l --src='prcl-pefs/PMULib@pmu|via-pmu-2000|via-pmu-99:power-mgt' + +rom: rom-nokern kern + cp rom-nokern rom; \ + dd if=kern of=rom conv=notrunc seek=3211264 bs=1 + +kern: kern.o + powerpc-eabi-objcopy -O binary -j .text kern.o kern + +kern.o: kern.asm + powerpc-eabi-as -many -mregnames -o kern.o kern.asm + +clean: + rm boot hqx kern kern.o prcl rom tbxi-data tbxi-rsrc diff --git a/README b/README new file mode 100644 index 0000000..5366cac --- /dev/null +++ b/README @@ -0,0 +1 @@ +master is for building vanilla latest-and-greatest tbxis *only*. It will change over time as our disassembly gets more complicated. [Toolbox Toolbox](github.com/elliotnunn/toolboxtoolbox) has many of your build (and unbuild) tools. \ No newline at end of file diff --git a/chrp-boot-script b/chrp-boot-script new file mode 100644 index 0000000..88bd05b --- /dev/null +++ b/chrp-boot-script @@ -0,0 +1,232 @@ + + +MacRISC + + +MacROM for NewWorld. + + + +0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4925B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92006EDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB0049B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBBBFBBBFBBBFBBBFBBBFBBBFBBBFBB252577BFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F332F2F2F332F2F2F332F2F2F332F2A055757575757575B57575B57575B579BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F2F2F332F2F2F332F2F2F332F2F2F012E57575B575B57575757575757575777FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF97132F0F2F132F0F2F132F0F2F0F2F0A0557575B5757575B57575B57575B575797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F2F330F2F2F2F0F2F0F2F2F332F052A575B5757535357575B57575B57575B97FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F2F2F332F0F2B062F332F132F0A00575757575B25255B5757575B5757575797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F132F0F332F0B060F2F0F2F2F0529575B575B572525575B575757575B575777FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF970F2F2F2F0F2F0B262F0F332F0A0053575757575B25255B57575B5757575B5797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F2F132F2F332F0F2F332F2F0501575B575B5757534F57575B57575B57575797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F2F2F132F2F2F2F132F2F0F052A575757575B5757575B57575757575B575797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF77330F332F0F2F132F2F0F2F2F00535757575B5757575B575757575B57575B5777FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF972F2F2F2F332F2F132F2F132A00575B575B57575B5757575B5757575B57575797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF770F330F330F2F0F2F2F332F05255B575757575B5757575B57575B575757575797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF972F2F2F2F332F332F0F2F2F052A575B57575757575B5757575B57575B575B5797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F0F330F2F0F2F0F332F33052A5757575757575B5757575B575757575B575777FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F2F2F332F332F2F2F0F2F050000000000002E57575B5757575B575757575B97FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF77332F132F0F2F0F2F0F332F2A0A2A2A2A050053575B5757575B5757575B575797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF970F2F2F2F332F332F330F2F0F332F0F330600575757575B5757575B57575B5797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F332F132F0F2F0F2F2F332F2F332F0F2504575B575B57575753575B57575777FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F2F2F2F0B060A2B0F2F0F332F0F2F33050557575B574F2E2505535757575B97FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F0F330F332F2B0A0606060A0B0B2B0B05052A29250005292E575757575B5797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF970F2F2F2F0F2F132F2F0F2B0A0A060606010025292E53575B57575B575B575797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F330F332F132F2F2F2F2F332F2F2F2F0501575B575757575757575757575777FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF77332F2F2F2F2F2F132F0F2F0F2F2F0F2F050057575B575B57575B575B57575B97FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F2F2F0F332F132F2F2F332F332F2F332600535B575757575B5757575B575797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF970F330F332F0F2F2F132F0F2F0F330F2F0A004F57575B5757575B5757575B5797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B332F33332F3333332F333333332F33332F002A77777777777777777777777797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBDBDBDBDBDBDBDBDBDBDBDBDBDBFBDB2025B7DBDBDBDBDBDBDBDBDBDBDBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E00B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF006EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFDBDBFFFFFFFFFFFFFFDBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB57539BFFFFFFFFFFFF775377DFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFF92006EFFFFFFFFFF6E2592FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53B7DBDBBB53DFFFFFDF97DBFBBB33FFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFF2525FFFFFFFFFF2525DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3397DBFFFFFFDF33DBFF57B7FFFFFF97DBFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFF9225B7FFFFFFB76E25DBFFFFFFFFFFFFFFFFFFFFFFFFFFDBB7FFFFFFFF7733B7FFFFFFFFFF9B53FF3397FFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFF92496EFFFFFFB79225DBFFFFB792496EFFFFFFB7926E49FFFFFFFFFFFF2F73FFFFFFFFFFFFDF0FDB5333FFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFDBB7B725FFFFFF929225DBFF9292FFFF00DBFF6EB7FFFF6E92FFFFFFFFFF0F93FFFFFFFFFFFFFF2F979B2F33DFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFDBB7FF00B7FFDBB7B725DBFF25B7FFFF25B7DB49DBFFFFFFB7FFFFFFFFDF0F97FFFFFFFFFFFFFF3373FFBB330F53FFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFDBDBFF6E49FFB7FFFF00DBFFFFFFFFFF00B74949FFFFFFFFFFFFFFFFFFDF2F97FFFFFFFFFFFFFF3373FFFFFF972F33FFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFDBDBFFB725FF92FFFF00DBFFFFFFDB9225B7256EFFFFFFFFFFFFFFFFFFFF2F97FFFFFFFFFFFFFF2F73FFFFFFFFBB2F97FFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFB7DBFFFF006EB7FFFF00B7FFFFB7DBFF25B7256EFFFFFFFFFFFFFFFFFFFF3373FFFFFFFFFFFFDF2F97FFFFFFFFFF7773FFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFB7DBFFFF4925DBFFFF00B7FF6EB7FFFF25B76E49FFFFFFFFFFFFFFFFFFFF9B33FFFFFFFFFFFF5753B7BBFFFFFFFF7773FFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFF92DBFFFFDB49DBFFFF00B7FF25B7FFB700B7FF25DBFFFFFFFFFFFFFFFFFFFF5377FFFFFFFFBB3397DF53FFFFFFFF57B7FFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFDB2549DBFFFFB7FFDB490049DB254992DB2549DB9225DBFF92FFFFFFFFFFFFFFFF5397FFFFBB53B7FBFF3397FFFF77B7DBFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFB792DBFFFFFFFFFFB7B7B7DBB76EB7FFDB92DBFFB76E6EB7FFFFFFFFFFFFFFFFFFB7737797DBFFFFFFFF977397BBDBFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B + + + +here >r +dev / +" model" active-package get-package-property abort" can't find MODEL" +decode-string 2swap 2drop " iMac,1" $= ?dup 0= if + " compatible" active-package get-package-property abort" can't find COMPATIBLE" + false >r + begin + dup while + decode-string here over 2swap bounds ?do + i c@ dup [char] A [char] Z between if h# 20 xor then c, + loop + 2dup " macrisc" $= r> or >r + 2drop + repeat + 2drop r> + then +r> here - allot +0= abort" this image is not for this platform" +decimal +1 load-base load-size 14 - adler32 load-base load-size + 12 - 12 ['] eval catch if + 2drop ." , bad checksum value" -1 + then + <> if + ." , checksum error" + abort + then +hex +dev /openprom +0 0 " supports-bootinfo" property device-end +" /chosen" find-package 0= abort" can't find '/chosen'" constant /chosen +" memory" /chosen get-package-property abort" memory??" decode-int constant xmem 2drop +" mmu" /chosen get-package-property abort" mmu??" decode-int constant xmmu 2drop +" AAPL,debug" " /" find-package 0= abort" can't find '/'" get-package-property if + false + else + 2drop true + then + constant debug? +debug? if cr ." checking for RELEASE-LOAD-AREA" then +" release-load-area" $find 0= if 2drop false then constant 'release-load-area +debug? if 'release-load-area if ." , found it" else ." , not found" then then +: do-translate " translate" xmmu $call-method ; +: do-map " map" xmmu $call-method ; +: do-unmap " unmap" xmmu $call-method ; +: claim-mem " claim" xmem $call-method ; +: release-mem " release" xmem $call-method ; +: claim-virt " claim" xmmu $call-method ; +: release-virt " release" xmmu $call-method ; +1000 constant pagesz +pagesz 1- constant pagesz-1 +-1000 constant pagemask +h# 005000 constant elf-offset +h# 017008 constant elf-size +elf-size pagesz-1 + pagemask and constant elf-pages +h# 01C008 constant parcels-offset +h# 2617C4 constant parcels-size +parcels-size pagesz-1 + pagemask and constant parcels-pages +h# 27D7CC constant info-size +info-size pagesz-1 + pagemask and constant info-pages +0 value load-base-claim +0 value info-base +'release-load-area if + load-base to info-base + else + load-base info-pages 0 ['] claim-mem catch if 3drop 0 then to load-base-claim + info-pages 1000 claim-virt to info-base + load-base info-base info-pages 10 do-map then +\ allocate room for both images +parcels-pages 400000 claim-mem constant rom-phys parcels-pages 1000 claim-virt constant rom-virt rom-phys rom-virt parcels-pages 10 do-map +elf-pages 1000 claim-mem constant elf-phys elf-pages 1000 claim-virt constant elf-virt +elf-phys elf-virt elf-pages 10 do-map info-base elf-offset + elf-virt elf-size move debug? if cr ." elf-phys,elf-virt,elf-pages: " elf-phys u. ." , " elf-virt u. ." , " elf-pages u. then +\ copy the compressed image +debug? if cr ." copying compressed ROM image" then +rom-virt parcels-pages 0 fill +info-base parcels-offset + rom-virt parcels-size move +'release-load-area 0= if + info-base info-pages do-unmap load-base-claim ?dup if info-pages release-mem then + then +debug? if cr ." MacOS-ROM phys,virt,size: " rom-phys u. ." , " rom-virt u. ." , " parcels-size u. then +\ create the actual property +debug? if cr ." finding/creating '/rom/macos' package" then +device-end 0 to my-self +" /rom" find-device +" macos" ['] find-device catch if 2drop new-device " macos" device-name finish-device then +" /rom/macos" find-device +debug? if cr ." creating 'AAPL,toolbox-parcels' property" then +rom-virt encode-int parcels-size encode-int encode+ " AAPL,toolbox-parcels" property +device-end +debug? if cr ." copying MacOS.elf to load-base" then +'release-load-area if + load-base elf-pages + 'release-load-area execute + else + load-base elf-pages 0 claim-mem + load-base dup elf-pages 0 do-map then +elf-virt load-base elf-size move +elf-virt elf-pages do-unmap elf-virt elf-pages release-virt +elf-phys elf-pages release-mem +debug? if cr ." init-program" then +init-program +debug? if cr ." .registers" .registers then +debug? if cr ." go" cr then +go +cr ." end of BOOT-SCRIPT" + + +1010 +000000000000000000ABFE0000000000 +0000000000000000ABFF000000000000 +ABABABABABABABABFFABABABABABABAB +AB7F7F7F7F7F7FFF7F2A2A2A2A2A2AAB +AB7F7F7FF17F7FFF542A2AFF2A2A2AAB +AB7F7F7FF17FABFF2A2A2AFF2A2A2AAB +AB7F7F7F7F7FFF7F2A2A2A2A2A2A2AAB +AB7F7F7F7F7FFF542A2A2A2A2A2A2AAB +AB7F7F7F7F7FFFFFFFFF2A2A2A2A2AAB +AB7F7F7F7F7F7F7F7FFF2A2A2A2A2AAB +AB7F7FFFF17F7F7F7FFF2A2AFFFF2AAB +AB7F7F7F7FF1F1F1F1FFFFFF542A2AAB +AB7F7F7F7F7F7F7F7FFF2A2A2A2A2AAB +ABABABABABABABABABFFABABABABABAB +000000000000000000ABFF0000000000 +00000000000000000000ABFF00000000 +000000000000000000F3FF0000000000 +0000000000000000F3FF000000000000 +F3F3F3F3F3F3F3F3FFF3F3F3F3F3F3F3 +F3AAAAAAAAAAAAFFAA555555555555F3 +F3AAAAAAF4AAAAFF7F5555FF555555F3 +F3AAAAAAF4AAF3FF555555FF555555F3 +F3AAAAAAAAAAFFAA55555555555555F3 +F3AAAAAAAAAAFF7F55555555555555F3 +F3AAAAAAAAAAFFFFFFFF5555555555F3 +F3AAAAAAAAAAAAAAAAFF5555555555F3 +F3AAAAFFF4AAAAAAAAFF5555FFFF55F3 +F3AAAAAAAAF4F4F4F4FFFFFF7F5555F3 +F3AAAAAAAAAAAAAAAAFF5555555555F3 +F3F3F3F3F3F3F3F3F3FFF3F3F3F3F3F3 +000000000000000000F3FF0000000000 +00000000000000000000F3FF00000000 +000000000000000000FFFE0000000000 +0000000000000000FFFF000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000000000FFFF0000000000 +00000000000000000000FFFF00000000 + + diff --git a/datafork-pefs/NQDResidentCursor b/datafork-pefs/NQDResidentCursor new file mode 100644 index 0000000..60c0d53 Binary files /dev/null and b/datafork-pefs/NQDResidentCursor differ diff --git a/datafork-pefs/ProcessMgrLib b/datafork-pefs/ProcessMgrLib new file mode 100644 index 0000000..3b5baff Binary files /dev/null and b/datafork-pefs/ProcessMgrLib differ diff --git a/kern.asm b/kern.asm new file mode 100644 index 0000000..9c5b2ec --- /dev/null +++ b/kern.asm @@ -0,0 +1,38455 @@ +/*********************************************************** + + nk_start + +************************************************************ + +Receive control from the NewWorld Trampoline bootloader. Probably the OldWorld kernel patch mechanism starts in the same place. + +If the attempt_load function returns then kernel startup has failed. I think. + +************************************************************ + +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 + +# If DR (data addr translation) bit of MSR is unset... +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_setup # 00018 + +# linking call to attempt_load never returns! +# r9 = &kernel +# SRR0 = r3 - 64 +# SRR1 = MSR minus IR and DR bits +# Return From Interrupt: SRR0 -> PC; SRR1 -> MSR +mflr r9 # 0001c +addi r9, r9, nk_start-(.-4) # 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" + +***********************************************************/ + +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 choose_int_handler_kind # 000d0 +# r12 = clobbered +# r7 = interrupt handler address + +stw r7, 0x05b0( r1) # 000d4 +bl replace_old_kernel_0x9c # 000d8 + +replace_old_kernel_0x9c: +mflr r12 # 000dc +addi r12, r12, -0xdc # 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- fail # 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, 0xa0 # 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 +bl set_up_log # 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_hexshort # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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_hexshort # 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 +b all_world_setup_0xd4 # 003fc + + + +/*********************************************************** + + major_0x00400 + +************************************************************ + +Xrefs: +replace_old_kernel + +***********************************************************/ + +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_setup + +************************************************************ + +> 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_setup + +************************************************************ + +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 + +***********************************************************/ + +new_world_setup: /* < 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_setup_0xa8: +lwzu r11, 0x0008(r10) # 00550 +cmpwi r11, 0x00 # 00554 +beq+ new_world_setup_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, 0x1f # 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_setup_0xec # 0058c +addi r11, r11, -0x1000 # 00590 + +new_world_setup_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_setup_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_setup_0x12c # 005ec +cmplw r13, r11 # 005f0 +bgt+ new_world_setup_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_setup_0x18c # 00628 +subf r11, r13, r1 # 0062c +addi r11, r11, 0x700 # 00630 + +new_world_setup_0x18c: +subf r12, r14, r15 # 00634 +addi r12, r12, -0x01 # 00638 + +new_world_setup_0x194: +addic. r12, r12, -0x04 # 0063c +subf r10, r11, r12 # 00640 +cmplwi cr7, r10, 0x208 # 00644 +ble- cr7, new_world_setup_0x1a8 # 00648 +stwx r0, r13, r12 # 0064c + +new_world_setup_0x1a8: +bne+ new_world_setup_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_setup_0x1ec: +addic. r10, r10, -0x04 # 00694 +lwzx r12, r9, r10 # 00698 +stwx r12, r11, r10 # 0069c +bgt+ new_world_setup_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, 0xa0 # 006b8 + +new_world_setup_0x214: +addic. r10, r10, -0x04 # 006bc +lwzx r12, r4, r10 # 006c0 +stwx r12, r11, r10 # 006c4 +bgt+ new_world_setup_0x214 # 006c8 +lwz r11, -0x0020( r1) # kdp.irp # 006cc +addi r11, r11, 0xdc0 # 006d0 +li r10, 0x140 # 006d4 + +new_world_setup_0x230: +addic. r10, r10, -0x04 # 006d8 +lwzx r12, r5, r10 # 006dc +stwx r12, r11, r10 # 006e0 +bgt+ new_world_setup_0x230 # 006e4 +cmpwi r6, 0x00 # 006e8 +beq- new_world_setup_0x260 # 006ec +addi r11, r1, -0x5d0 # kdp.-0x5d0 # 006f0 +li r10, 0x100 # 006f4 + +new_world_setup_0x250: +addic. r10, r10, -0x04 # 006f8 +lwzx r12, r6, r10 # 006fc +stwx r12, r11, r10 # 00700 +bgt+ new_world_setup_0x250 # 00704 + +new_world_setup_0x260: +stw r3, 0x0630( r1) # kdp.ConfigInfo # 00708 +lwz r9, 0x0630( r1) # kdp.ConfigInfo # 0070c +lhz r8, 0x0378( r9) # 00710 +cmplwi r8, 0x101 # 00714 +lwz r8, 0x0edc( r1) # kdp.0xedc # 00718 +blt- new_world_setup_0x28c # 0071c +lwz r8, 0x0388( r9) # 00720 +rlwinm. r8, r8, 0, 30, 30 # 00724 +lwz r8, 0x0edc( r1) # kdp.0xedc # 00728 +beq- new_world_setup_0x28c # 0072c +ori r8, r8, 0x08 # 00730 + +new_world_setup_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 +bl set_up_log # 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_hexshort # 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 choose_int_handler_kind # 007bc +# r12 = clobbered +# r7 = interrupt handler address + +stw r7, 0x05b0( r1) # kdp._int_handler # 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.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 +bl new_world_setup_0x35c # 00800 + +new_world_setup_0x35c: +mflr r12 # 00804 +addi r12, r12, nk_start - new_world_setup_0x35c # 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, 0xa0 # 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, 0x140 # 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, 0xa0 # 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_setup_0x514: +addic. r9, r9, -0x04 # 009bc +stwx r0, r10, r9 # 009c0 +bne+ new_world_setup_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_setup_0x52c: +mr. r9, r9 # 009d4 +beq- new_world_setup_0x544 # 009d8 +lwzu r12, 0x0004(r11) # 009dc +stwx r12, r10, r9 # 009e0 +lwzu r9, 0x0004(r11) # 009e4 +b new_world_setup_0x52c # 009e8 + +new_world_setup_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 +# r3 = ConfigInfo +# r4 = processor_info +# r5 = sys_info +# r6 = boot_r6 +beq- all_world_setup # 00a00 +mfspr r12, 287/*pvr*/ # 00a04 +stw r12, 0x0f20( r1) # kdp.u32_pvr # 00a08 +srwi r12, r12, 0x10 # 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- all_world_setup_with_old_cpu # 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- all_world_setup_with_old_cpu # 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- all_world_setup_with_old_cpu # 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- all_world_setup_with_old_cpu # 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- all_world_setup_with_old_cpu # 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- all_world_setup_with_old_cpu # 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- all_world_setup_with_old_cpu # 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- all_world_setup_with_old_cpu # 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- all_world_setup_with_old_cpu # 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- all_world_setup_with_old_cpu # 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_setup_0x60c: +lwz r11, -0x0004(r10) # 00ab4 +lwzu r12, -0x0008(r10) # 00ab8 +subf r9, r12, r21 # 00abc +cmplw r9, r11 # 00ac0 +bge- new_world_setup_0x624 # 00ac4 +mr r11, r9 # 00ac8 + +new_world_setup_0x624: +cmplw r11, r15 # 00acc +ble- new_world_setup_0x634 # 00ad0 +mr r13, r12 # 00ad4 +mr r15, r11 # 00ad8 + +new_world_setup_0x634: +bdnz+ new_world_setup_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_setup_0x660: +addic. r10, r10, -0x04 # 00b08 +stwx r11, r21, r10 # 00b0c +bne+ new_world_setup_0x660 # 00b10 +dcbz r0, r21 # 00b14 + +new_world_setup_0x670: +addi r10, r10, 0x01 # 00b18 +lbzx r11, r21, r10 # 00b1c +cmpwi r11, 0x00 # 00b20 +beq+ new_world_setup_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_setup_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_setup_0x6a4 # 00b64 +sync # 00b68 +isync # 00b6c +lwz r11, 0x064c( r1) # kdp.phys_kern_base # 00b70 +li r12, 0x2d # 00b74 +mtctr r12 # 00b78 +add r20, r21, r22 # 00b7c +addi r11, r11, 0x1088 # 00b80 + +new_world_setup_0x6dc: +lwzu r12, -0x0004(r11) # 00b84 +stwu r12, -0x0004(r20) # 00b88 +dcbst r0, r20 # 00b8c +sync # 00b90 +icbi r0, r20 # 00b94 +bdnz+ new_world_setup_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_setup_0x720 # 00bb8 + +new_world_setup_0x714: +addi r17, r17, 0x200 # 00bbc +cmplw r17, r15 # 00bc0 +bge- new_world_setup_0x734 # 00bc4 + +new_world_setup_0x720: +mtlr r20 # 00bc8 +blrl # 00bcc +ble+ new_world_setup_0x714 # 00bd0 +addi r12, r17, -0x200 # 00bd4 +stw r12, 0x0f34( r1) # kdp.u32_cpuinfo_dcache_size + +new_world_setup_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_setup_0x75c # 00bf4 + +new_world_setup_0x750: +add r17, r17, r18 # 00bf8 +cmplw r17, r15 # 00bfc +bge- new_world_setup_0x774 # 00c00 + +new_world_setup_0x75c: +mtlr r20 # 00c04 +blrl # 00c08 +ble+ new_world_setup_0x750 # 00c0c +subf r17, r18, r17 # 00c10 +divwu r12, r17, r18 # 00c14 +sth r12, 0x0f4e( r1) # kdp.u16_cpuinfo_dcache_assoc + +new_world_setup_0x774: +lwz r17, 0x0f34( r1) # kdp.u32_cpuinfo_dcache_size +lhz r18, 0x0f4e( r1) # kdp.u16_cpuinfo_dcache_assoc +slwi r17, r17, 0x01 # 00c24 +divwu r18, r17, r18 # 00c28 +srwi r19, r18, 0x01 # 00c2c +li r14, 0x200 # 00c30 +add r19, r19, r14 # 00c34 +li r16, -0x01 # 00c38 +b new_world_setup_0x7ac # 00c3c + +new_world_setup_0x798: +lhz r12, 0x0f4a( r1) # kdp.u16_cpuinfo_dcache_block_size +cmplw r14, r12 # 00c44 +ble- new_world_setup_0x7bc # 00c48 +srwi r14, r14, 0x01 # 00c4c +subf r19, r14, r19 # 00c50 + +new_world_setup_0x7ac: +mtlr r20 # 00c54 +blrl # 00c58 +ble+ new_world_setup_0x798 # 00c5c +slwi r12, r14, 0x01 # 00c60 + +new_world_setup_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_setup_0x7f4 # 00c88 + +new_world_setup_0x7e4: +add r17, r17, r18 # 00c8c +lis r12, 0x3f # 00c90 +cmplw r17, r12 # 00c94 +bge- new_world_setup_0x82c # 00c98 + +new_world_setup_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_setup_0x7e4 # 00cc4 +subf r17, r18, r17 # 00cc8 +divwu r12, r17, r18 # 00ccc +sth r12, 0x0f50( r1) # kdp.u16_cpuinfo_tlb_size # 00cd0 + +new_world_setup_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_setup_0x858 # 00cec + +new_world_setup_0x848: +add r17, r17, r18 # 00cf0 +lis r12, 0x200 # 00cf4 +cmplw r17, r12 # 00cf8 +bge- new_world_setup_0x890 # 00cfc + +new_world_setup_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_setup_0x848 # 00d28 +subf r17, r18, r17 # 00d2c +divwu r12, r17, r18 # 00d30 +sth r12, 0x0f52( r1) # kdp.u16_cpuinfo_tlb_assoc + +new_world_setup_0x890: +mr r13, r14 # 00d38 +addi r12, r22, -0x01 # 00d3c +srwi r12, r12, 0x10 # 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 + +# All I/D cache initialisation from here on down. +# (There was never a NewWorld machine with unified caches.) +lwz r11, 0x064c( r1) # kdp.phys_kern_base # 00db8 +li r12, 0x31 # 00dbc +mtctr r12 # 00dc0 +add r20, r21, r22 # 00dc4 +addi r11, r11, 0x114c # 00dc8 + +new_world_setup_0x924: +lwzu r12, -0x0004(r11) # 00dcc +stwu r12, -0x0004(r20) # 00dd0 +dcbst r0, r20 # 00dd4 +sync # 00dd8 +icbi r0, r20 # 00ddc +bdnz+ new_world_setup_0x924 # 00de0 +sync # 00de4 +isync # 00de8 +subf r12, r21, r20 # 00dec +mulli r12, r12, 0x80 # 00df0 +cmplw r12, r15 # 00df4 +bge- new_world_setup_0x958 # 00df8 +mr r15, r12 # 00dfc + +new_world_setup_0x958: +add r12, r13, r15 # 00e00 +mr r11, r20 # 00e04 +lis r10, 0x4e80 # 00e08 +ori r10, r10, 0x20 # 00e0c + +new_world_setup_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_setup_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_setup_0x9b4 # 00e4c + +new_world_setup_0x9a8: +addi r17, r17, 0x200 # 00e50 +cmplw r17, r15 # 00e54 +bge- new_world_setup_0x9c8 # 00e58 + +new_world_setup_0x9b4: +mtlr r20 # 00e5c +blrl # 00e60 +ble+ new_world_setup_0x9a8 # 00e64 +addi r12, r17, -0x200 # 00e68 +stw r12, 0x0f38( r1) # kdp.u32_cpuinfo_icache_size + +new_world_setup_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_setup_0x9f0 # 00e88 + +new_world_setup_0x9e4: +add r17, r17, r18 # 00e8c +cmplw r17, r15 # 00e90 +bge- new_world_setup_0xa08 # 00e94 + +new_world_setup_0x9f0: +mtlr r20 # 00e98 +blrl # 00e9c +ble+ new_world_setup_0x9e4 # 00ea0 +subf r17, r18, r17 # 00ea4 +divwu r12, r17, r18 # 00ea8 +sth r12, 0x0f4c( r1) # kdp.u16_cpuinfo_icache_assoc + +new_world_setup_0xa08: +add r12, r13, r15 # 00eb0 +mr r11, r20 # 00eb4 + +new_world_setup_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_setup_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, 0x01 # 00ee8 +add r12, r13, r17 # 00eec +addi r11, r21, -0x04 # 00ef0 + +new_world_setup_0xa4c: +subf r12, r18, r12 # 00ef4 +li r14, 0x400 # 00ef8 + +new_world_setup_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_setup_0xa54 # 00f44 +cmpw r12, r13 # 00f48 +bne+ new_world_setup_0xa4c # 00f4c +sync # 00f50 +isync # 00f54 +mr r19, r18 # 00f58 +slwi r18, r18, 0x01 # 00f5c +li r14, 0x200 # 00f60 +add r19, r19, r14 # 00f64 +li r16, -0x01 # 00f68 +b new_world_setup_0xadc # 00f6c + +new_world_setup_0xac8: +li r12, 0x08 # 00f70 +cmplw r14, r12 # 00f74 +ble- new_world_setup_0xaec # 00f78 +srwi r14, r14, 0x01 # 00f7c +subf r19, r14, r19 # 00f80 + +new_world_setup_0xadc: +mtlr r20 # 00f84 +blrl # 00f88 +ble+ new_world_setup_0xac8 # 00f8c +slwi r12, r14, 0x01 # 00f90 + +new_world_setup_0xaec: +sth r12, 0x0f42( r1) # kdp.u16_cpuinfo_icache_line_size +srwi r18, r18, 0x01 # 00f98 +add r12, r13, r17 # 00f9c +addi r11, r21, -0x04 # 00fa0 + +new_world_setup_0xafc: +subf r12, r18, r12 # 00fa4 +li r14, 0x400 # 00fa8 + +new_world_setup_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_setup_0xb04 # 00fc4 +cmpw r12, r13 # 00fc8 +bne+ new_world_setup_0xafc # 00fcc + +skip_cache_hackery_never: +# r1 = kdp +# r3 = ConfigInfo +# r4 = processor_info +# r5 = sys_info +# r6 = boot_r6 +b all_world_setup # 00fd0 +.long 0x39400003 # 00fd4 +.long 0x39800800 # 00fd8 +.long 0x7d8903a6 # 00fdc +.long 0x7e736a14 # 00fe0 +.long 0x39600000 # 00fe4 +.long 0x7d7603a6 # 00fe8 +.long 0x7d915850 # 00fec +.long 0x7d8cfe70 # 00ff0 +.long 0x7d6b6038 # 00ff4 +.long 0x7d8d58ae # 00ff8 +.long 0x7d8c6214 # 00ffc +.long 0x7d9358ae # 01000 +.long 0x7d8c6214 # 01004 +.long 0x7d6b9214 # 01008 +.long 0x4200ffe0 # 0100c +.long 0x7e6d9850 # 01010 +.long 0x7d9602a6 # 01014 +.long 0x7d8c00d0 # 01018 +.long 0x7c0c8040 # 0101c +.long 0x41810008 # 01020 +.long 0x7d906378 # 01024 +.long 0x558bc9fe # 01028 +.long 0x7d8b6050 # 0102c +.long 0x7c0c8000 # 01030 +.long 0x4c810020 # 01034 +.long 0x354affff # 01038 +.long 0x4181ff9c # 0103c +.long 0x7c0c8000 # 01040 +.long 0x4e800020 # 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 + + + +/*********************************************************** + + major_0x01088 + +***********************************************************/ + +.long 0x39400003 # 01088 +.long 0x7d2802a6 # 0108c +.long 0x39800800 # 01090 +.long 0x7d8903a6 # 01094 +.long 0x7e736a14 # 01098 +.long 0x39600000 # 0109c +.long 0x7d7603a6 # 010a0 +.long 0x7d915850 # 010a4 +.long 0x7d8cfe70 # 010a8 +.long 0x7d6b6038 # 010ac +.long 0x7d8d5a14 # 010b0 +.long 0x7d8803a6 # 010b4 +.long 0x4e800021 # 010b8 +.long 0x7d935a14 # 010bc +.long 0x7d8803a6 # 010c0 +.long 0x4e800021 # 010c4 +.long 0x7d6b9214 # 010c8 +.long 0x4200ffd8 # 010cc +.long 0x7e6d9850 # 010d0 +.long 0x7d9602a6 # 010d4 +.long 0x7d8c00d0 # 010d8 +.long 0x7c0c8040 # 010dc +.long 0x41810008 # 010e0 +.long 0x7d906378 # 010e4 +.long 0x558bc9fe # 010e8 +.long 0x7d8b6050 # 010ec +.long 0x7c0c8000 # 010f0 +.long 0x7d2803a6 # 010f4 +.long 0x4c810020 # 010f8 +.long 0x354affff # 010fc +.long 0x4181ff90 # 01100 +.long 0x7c0c8000 # 01104 +.long 0x4e800020 # 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 + + + +/*********************************************************** + + 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. + +CPU info table (x9 @ 36 bytes each): + uint32 Page size + uint32 D-cache size + uint32 I-cache size + uint16 Coherency block size + uint16 Reservation granule size + uint16 Unified caches + uint16 I-cache line size + uint16 D-cache line size + uint16 D-cache block size touch + uint16 I-cache block size + uint16 D-cache block size + uint16 I-cache assoc + uint16 D-cache assoc + uint16 TLB total size + uint16 TLB assoc + +***********************************************************/ + +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 + + + +/*********************************************************** + + all_world_setup_with_old_cpu + +************************************************************ + +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_setup + +************************************************************ + +> r3 = ConfigInfo +> r4 = processor_info +> r5 = sys_info +> r6 = boot_r6 +> r9 = cpuinfo_size +> r10 = kdp_cpuinfo +> r11 = static_cpuinfo + +***********************************************************/ + +all_world_setup_with_old_cpu: /* < outside referer */ +addic. r9, r9, -0x04 # 01350 +lwzx r12, r11, r9 # 01354 +stwx r12, r10, r9 # 01358 +bgt+ all_world_setup_with_old_cpu # 0135c + + + +/*********************************************************** + + all_world_setup + +************************************************************ + +Why in the hell does this get run twice? + +************************************************************ + +Xrefs: +replace_old_kernel +new_world_setup +all_world_setup_with_old_cpu +handle_ResetSystem_trap + +************************************************************ + +> r1 = kdp +> r3 = ConfigInfo +> r4 = processor_info +> r5 = sys_info +> r6 = boot_r6 + +***********************************************************/ + +all_world_setup: /* < 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, rfi_to_kern@h # 01394 +ori r8, r8, rfi_to_kern@l # 01398 +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, 0xa0 # 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 + +all_world_setup_second_attempt: /* < outside referer */ +crclr 4*cr5 + eq # 01430 + +all_world_setup_0xd4: /* < 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_hexword_spc # 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_hexword_spc # 0149c +bl 1f # 014a0 +.ascii "bytes^n" # 014a4 +.short 0 # 014ab +.align 2 # 014ad +1: mflr r8 # 014b0 +bl print_string # 014b4 + +# memcpy(*(r1-0x20) + 0xfc0, r1 + 0xfc0, 64); +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 + +copyloop: +addic. r22, r22, -0x04 # 014cc +lwzx r0, r22, r8 # 014d0 +stwx r0, r22, r9 # 014d4 +bgt+ copyloop # 014d8 + +# done +lwz r26, 0x0630( r1) # kdp.ConfigInfo # 014dc + +# r25 = phys kernel code base (0x00f10000 on NW) +lwz r25, 0x064c( r1) # kdp.phys_kern_base # 014e0 +lwz r18, 0x0684( r1) # kdp.0x684 # 014e4 + +# fill with debugger offset, 48 copies at once: +# # r1[0x360:5a0] +# # r1[-0x8d0:-0x810] +# # r1[-0x750:-0x690] +lis r23, dbgr@h # 014e8 +ori r23, r23, dbgr@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 + +# fill r1[-0x690:-0x5d0] with rfi func offset +lis r23, rfi_to_kern@h # 01530 +ori r23, r23, rfi_to_kern@l # 01534 +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 + +# set SPRG3 to offset of offset of debugger +addi r9, r1, 0x360 # kdp.0x360 # 01548 +mtspr 275/*sprg3*/, r9 # 0154c +addi r8, r1, 0x420 # kdp.0x420 # 01550 + +# r8 = r1 + 0x420; r9 = r1 + 0x360; +# (each points to a 48*uint32 block of dbgr ptrs) +lis r23, dbgr@h # 01554 +ori r23, r23, dbgr@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) # 0167c + +# now r8 = r1 + 0x4e0 (not using r9 now) +addi r8, r1, 0x4e0 # kdp.0x4e0 # 01680 +lis r23, dbgr@h # 01684 +ori r23, r23, dbgr@l # 01688 +add r23, r23, r25 # 0168c +stw r23, 0x0004( r8) # kdp.0x4e4 # 01690 +lis r23, major_0x035a0_0x228@h # 01694 +ori r23, r23, major_0x035a0_0x228@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 + +# now r8 = r1 - 0x8d0 +addi r8, r1, -0x8d0 # kdp.-0x8d0 # 016d0 +li r22, 0xc0 # 016d4 + +# r8 = dest +# r22 = len in bytes +# r23 = fillword +bl wordfill # 016d8 +lis r23, dbgr@h # 016dc +ori r23, r23, dbgr@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 dbgr_offset_to_r1_minus_0x810_x48__0x9dfc_to_prev_plus_4_20_36 + +# now r8 = r1 - 0x750 +addi r8, r1, -0x750 # kdp.-0x750 # 01720 +lis r23, dbgr@h # 01724 +ori r23, r23, dbgr@l # 01728 +add r23, r23, r25 # 0172c +stw r23, 0x0004( r8) # kdp.-0x8cc # 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.-0x8c8 # 01740 +lis r23, dsi_vector@h # 01744 +ori r23, r23, dsi_vector@l # 01748 +add r23, r23, r25 # 0174c +stw r23, 0x000c( r8) # kdp.-0x8c4 # 01750 +lis r23, sc_vector@h # 01754 +ori r23, r23, sc_vector@l # 01758 +add r23, r23, r25 # 0175c +stw r23, 0x0030( r8) # kdp.-0x8a0 # 01760 +lis r23, major_0x046d0@h # 01764 +ori r23, r23, major_0x046d0@l # 01768 +add r23, r23, r25 # 0176c + +# now r8 = r1 + 0x5f0 +addi r8, r1, 0x5f0 # kdp.0x5f0 # 01770 +li r22, 0x40 # 01774 + +# set r8(=r1+0x5f0) to ptr to 0x46d0 x16 +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, trap_vector@h # 017a4 +ori r23, r23, trap_vector@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, int_handler@h # 017c4 +ori r23, r23, int_handler@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, 0x10 # 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, 0x10 # 01858 +slwi r23, r23, 0x02 # 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, 0x10 # 01898 +andi. r23, r23, 0x7fff # 0189c +slwi r23, r23, 0x02 # 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 + +# Pretty sure these are lock structs. +li r23, 0x00 # 018c8 +stw r23, -0x0b90( r1) # kdp.-0xb90 # 018cc +stw r23, -0x0b70( r1) # kdp.interrupt_lock # 018d0 +stw r23, -0x0b50( r1) # kdp.popular_lock # 018d4 +stw r23, -0x0b30( r1) # kdp.-0xb30 # 018d8 +stw r23, -0x0b10( r1) # kdp.rtas_lock # 018dc +stw r23, -0x0af0( r1) # kdp.-0xaf0 # 018e0 +stw r23, -0x0ad0( r1) # kdp.-0xad0 # 018e4 + +# aaaand more damned constants +lis r23, 0x6874 # 018e8 +ori r23, r23, 0x6162 # 018ec +stw r23, -0x0b8c( r1) # kdp.-0xb8c # 018f0 +lis r23, 0x7069 # 018f4 +ori r23, r23, 0x6820 # 018f8 +stw r23, -0x0b6c( r1) # kdp.-0xb6c # 018fc +lis r23, 0x7363 # 01900 +ori r23, r23, 0x6820 # 01904 +stw r23, -0x0b4c( r1) # kdp.-0xb4c # 01908 +lis r23, 0x7468 # 0190c +ori r23, r23, 0x7564 # 01910 +stw r23, -0x0b2c( r1) # kdp.-0xb2c # 01914 +lis r23, 0x7274 # 01918 +ori r23, r23, 0x6173 # 0191c +stw r23, -0x0b0c( r1) # kdp.-0xb0c # 01920 +lis r23, 0x6462 # 01924 +ori r23, r23, 0x7567 # 01928 +stw r23, -0x0aec( r1) # kdp.-0xaec # 0192c +lis r23, 0x706f # 01930 +ori r23, r23, 0x6f6c # 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 +bl store_some_junk # 01954 +bl major_0x15144 # 01958 +lwz r7, -0x0010( r1) # kdp.-0x10 # 0195c +li r8, 0x20 # 01960 +bl boring # 01964 +mr. r31, r8 # 01968 +beq- _dbgr_0x02940 # 0196c +li r9, 0x01 # 01970 +bl major_0x151b0 # 01974 +stw r31, -0x041c( r1) # kdp.system_address_space # 01978 +stw r8, 0x0000(r31) # 0197c +stw r8, 0x0ec0( r1) # kdp.0xec0 # 01980 +lis r8, 0x5052 # 01984 +ori r8, r8, 0x4f43 # 01988 +stw r8, 0x0004(r31) # 0198c +li r8, 0x02 # 01990 +stw r8, 0x0010(r31) # 01994 +addi r30, r1, -0xa94 # kdp.-0xa94 # 01998 +lis r17, 0x4752 # 0199c +stw r30, 0x0008(r30) # 019a0 +ori r17, r17, 0x5053 # 019a4 +stw r30, 0x000c(r30) # 019a8 +stw r17, 0x0004(r30) # 019ac +li r8, 0x58 # 019b0 +bl boring # 019b4 +mr. r31, r8 # 019b8 +beq- _dbgr_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 +bl major_0x151b0 # 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_hexword_spc # 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 +bl major_0x151b0 # 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.-0xb90 # 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.ConfigInfo # 01b00 +addi r9, r26, 0x2c8 # 01b04 +addi r8, r1, 0x27c # kdp.0x27c # 01b08 +li r22, 0x80 # 01b0c + +all_world_setup_0x7b0: +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- all_world_setup_0x7cc # 01b24 +add r21, r23, r26 # 01b28 + +all_world_setup_0x7cc: +addic. r22, r22, -0x08 # 01b2c +stwu r21, 0x0004( r8) # 01b30 +bgt+ all_world_setup_0x7b0 # 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- _dbgr_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_hexword_spc # 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_hexword_spc # 01bd0 +mr r8, r17 # 01bd4 +bl print_hexword_spc # 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_hexword_spc # 01c00 +mr r8, r17 # 01c04 +bl print_hexword_spc # 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_hexword_spc # 01c30 +mr r8, r17 # 01c34 +bl print_hexword_spc # 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_hexword_spc # 01c60 +mr r8, r17 # 01c64 +bl print_hexword_spc # 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 +bl major_0x151b0 # 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_ready_queues # 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 major_0x0e330 # 01d18 +mr. r31, r8 # 01d1c +beq- _dbgr_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, 0x626c # 01d3c +ori r8, r8, 0x7565 # 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, 0xc8 # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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 major_0x0e330 # 01eac +mr r7, r31 # 01eb0 +mr. r31, r8 # 01eb4 +beq- _dbgr_0x02940 # 01eb8 +lis r8, 0x6964 # 01ebc +ori r8, r8, 0x6c65 # 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_hexword_spc # 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- _dbgr_0x02940 # 01fbc +stw r30, 0x0070(r31) # 01fc0 +lwz r7, -0x0010( r1) # kdp.-0x10 # 01fc4 +lwz r26, 0x0630( r1) # kdp.ConfigInfo # 01fc8 +lwz r18, 0x0684( r1) # kdp.0x684 # 01fcc +beq- cr5, all_world_setup_0xca0 # 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 + +all_world_setup_0xc94: +addic. r22, r22, -0x04 # 01ff4 +stwx r23, r8, r22 # 01ff8 +bgt+ all_world_setup_0xc94 # 01ffc + +all_world_setup_0xca0: +bl major_0x055e0 # 02000 +beq- cr5, all_world_setup_0xce4 # 02004 +lwz r9, 0x00bc(r26) # 02008 +lwz r22, 0x00b8(r26) # 0200c +add r9, r9, r26 # 02010 + +all_world_setup_0xcb4: +addi r22, r22, -0x04 # 02014 +lwzx r21, r9, r22 # 02018 +andi. r23, r21, 0xa00 # 0201c +cmpwi r23, 0x200 # 02020 +bne- all_world_setup_0xcd0 # 02024 +rlwinm r21, r21, 0, 23, 21 # 02028 +add r21, r21, r26 # 0202c + +all_world_setup_0xcd0: +stwx r21, r18, r22 # 02030 +addic. r22, r22, -0x04 # 02034 +lwzx r20, r9, r22 # 02038 +stwx r20, r18, r22 # 0203c +bgt+ all_world_setup_0xcb4 # 02040 + +all_world_setup_0xce4: +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.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, 0xc8 # 020b4 +addi r8, r1, 0x7c # kdp.0x7c # 020b8 +li r22, 0x200 # 020bc + +all_world_setup_0xd60: +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+ all_world_setup_0xd60 # 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, 0x78 # kdp.0x78 # 02124 +b all_world_setup_0xdd4 # 02128 + +all_world_setup_0xdcc: +addi r8, r8, 0x08 # 0212c +b all_world_setup_0xdd8 # 02130 + +all_world_setup_0xdd4: +lwzu r8, 0x0008(r19) # 02134 + +all_world_setup_0xdd8: +lwz r30, 0x0000( r8) # 02138 +lwz r31, 0x0004( r8) # 0213c +cmplwi cr7, r30, 0xffff # 02140 +rlwinm. r31, r31, 0, 20, 21 # 02144 +bgt- cr7, all_world_setup_0xe04 # 02148 +cmpwi cr6, r31, 0xc00 # 0214c +beq- all_world_setup_0xe04 # 02150 +beq+ cr6, all_world_setup_0xdcc # 02154 +add r22, r22, r30 # 02158 +addi r22, r22, 0x01 # 0215c +beq+ cr7, all_world_setup_0xdd4 # 02160 + +all_world_setup_0xe04: +stw r22, 0x06b4( r1) # kdp.VMMaxVirtualPages # 02164 +beq- cr5, all_world_setup_0xe80 # 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 + +all_world_setup_0xe44: +addic. r23, r23, -0x01 # 021a4 +blt- all_world_setup_0xe80 # 021a8 +lwzu r31, 0x0008(r19) # 021ac +lwz r22, 0x0004(r19) # 021b0 +or r31, r31, r30 # 021b4 + +all_world_setup_0xe58: +cmplwi r22, 0x1000 # 021b8 +cmplw cr6, r31, r21 # 021bc +cmplw cr7, r31, r20 # 021c0 +addi r22, r22, -0x1000 # 021c4 +blt+ all_world_setup_0xe44 # 021c8 +blt- cr6, all_world_setup_0xe74 # 021cc +blt- cr7, all_world_setup_0xe78 # 021d0 + +all_world_setup_0xe74: +stwu r31, 0x0004(r29) # 021d4 + +all_world_setup_0xe78: +addi r31, r31, 0x1000 # 021d8 +b all_world_setup_0xe58 # 021dc + +all_world_setup_0xe80: +beq- cr5, all_world_setup_0xf04 # 021e0 +subf r22, r21, r29 # 021e4 +addi r8, r22, 0x1000 # 021e8 +srwi r17, r22, 0x0d # 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 + +all_world_setup_0xee4: +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+ all_world_setup_0xee4 # 0225c +b all_world_setup_0xf90 # 02260 + +all_world_setup_0xf04: +lwz r8, 0x05a8( r1) # kdp.0x5a8 # 02264 +addi r18, r1, 0x2000 # kdp.0x2000 # 02268 +subf. r8, r18, r8 # 0226c +blt- all_world_setup_0xf90 # 02270 +addi r8, r8, 0x1000 # 02274 +srwi r17, r8, 0x0c # 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 + +all_world_setup_0xf78: +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+ all_world_setup_0xf78 # 022ec + +all_world_setup_0xf90: +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_hexword_spc # 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_hexword_spc # 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.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, all_world_setup_0x11fc # 023a4 +subf r22, r21, r29 # 023a8 +lwz r8, 0x06b4( r1) # kdp.VMMaxVirtualPages # 023ac +slwi r8, r8, 0x02 # 023b0 +cmplw r22, r8 # 023b4 +addi r19, r22, 0x04 # 023b8 +srwi r19, r19, 0x02 # 023bc +stw r19, 0x06ac( r1) # kdp.logi_pages # 023c0 +blt- all_world_setup_0x106c # 023c4 +addi r22, r8, -0x04 # 023c8 + +all_world_setup_0x106c: +li r30, 0x00 # 023cc +lwz r8, -0x0020( r1) # kdp.irp # 023d0 +addi r19, r22, 0x04 # 023d4 +slwi r19, r19, 0x0a # 023d8 +ori r30, r30, 0xffff # 023dc +stw r19, 0x0dc4( r8) # 023e0 +srwi r22, r22, 0x02 # 023e4 +stw r19, 0x0dc8( r8) # 023e8 +srwi r19, r19, 0x0c # 023ec +stw r19, 0x06a8( r1) # kdp.phys_pages # 023f0 +addi r29, r1, 0x6bc # kdp.0x6bc # 023f4 +addi r19, r1, 0x78 # kdp.0x78 # 023f8 + +all_world_setup_0x109c: +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+ all_world_setup_0x109c # 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, 0x0c # 02438 +ble- all_world_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 + +all_world_setup_0x116c: +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+ all_world_setup_0x116c # 024e0 + +all_world_setup_skip_grabbing_more_pages: +bl convert_pmdts_to_areas # 024e4 +addi r29, r1, 0x5e0 # kdp.0x5e0 # 024e8 +bl major_0x05278 # 024ec +bl major_0x055e0 # 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_hexword_spc # 0252c +mr r8, r10 # 02530 +bl print_hexword_spc # 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 int_handler # 02558 + +all_world_setup_0x11fc: +addi r29, r1, 0x5e8 # kdp.0x5e8 # 0255c +bl major_0x05278 # 02560 +bl major_0x055e0 # 02564 +bl convert_pmdts_to_areas # 02568 +bl major_0x06870 # 0256c +lwz r27, 0x0630( r1) # kdp.ConfigInfo # 02570 +lwz r27, 0x0094(r27) # 02574 +bl major_0x05524 # 02578 +beq- all_world_setup_0x1234 # 0257c +li r30, 0x00 # 02580 +stw r30, -0x0004(r29) # 02584 +eieio # 02588 +stw r30, 0x0000(r29) # 0258c +sync # 02590 + +all_world_setup_0x1234: +bl major_0x04c20 # 02594 +lwz r27, 0x0630( r1) # kdp.ConfigInfo # 02598 +lwz r27, 0x009c(r27) # 0259c +bl major_0x05524 # 025a0 +beq- all_world_setup_0x125c # 025a4 +li r30, 0x00 # 025a8 +stw r30, -0x0004(r29) # 025ac +eieio # 025b0 +stw r30, 0x0000(r29) # 025b4 +sync # 025b8 + +all_world_setup_0x125c: +bl major_0x04c20 # 025bc +lwz r27, 0x0630( r1) # kdp.ConfigInfo # 025c0 +lwz r27, 0x00a0(r27) # 025c4 +lis r19, 0x00 # 025c8 +ori r19, r19, 0xa000 # 025cc +subf r19, r19, r27 # 025d0 + +all_world_setup_0x1274: +bl major_0x05524 # 025d4 +beq- all_world_setup_0x1290 # 025d8 +li r30, 0x00 # 025dc +stw r30, -0x0004(r29) # 025e0 +eieio # 025e4 +stw r30, 0x0000(r29) # 025e8 +sync # 025ec + +all_world_setup_0x1290: +bl major_0x04c20 # 025f0 +cmplw r27, r19 # 025f4 +addi r27, r27, -0x1000 # 025f8 +bgt+ all_world_setup_0x1274 # 025fc +lwz r27, 0x0630( r1) # kdp.ConfigInfo # 02600 +lwz r27, 0x00a4(r27) # 02604 +bl major_0x05524 # 02608 +beq- all_world_setup_0x12c4 # 0260c +li r30, 0x00 # 02610 +stw r30, -0x0004(r29) # 02614 +eieio # 02618 +stw r30, 0x0000(r29) # 0261c +sync # 02620 + +all_world_setup_0x12c4: +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 +b continue_oldworld_boot # 02670 + + + +/*********************************************************** + + fail + +************************************************************ + +Xrefs: +replace_old_kernel + +***********************************************************/ + +fail: /* < outside referer */ +bl set_up_log # 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 + + + +/*********************************************************** + + succeed + +************************************************************ + +Xrefs: +all_world_setup +fail + +***********************************************************/ + +continue_oldworld_boot: /* < outside referer */ +lwz r4, 0x0648( r1) # 026cc +lwz r8, 0x05a4( r1) # 026d0 +lwz r9, -0x0964( r1) # 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 + +***********************************************************/ + +.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_0x02980 +major_0x03200 +major_0x035a0 +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 +boring +looks_like_poolextend +major_0x142a8 +major_0x14bcc +major_0x154e0 +NKPropogateExternalInterrupt +_int_handler_kind_01 +_int_handler_kind_03 +_int_handler_kind_05 +_int_handler_kind_02 +_int_handler_kind_07 +_int_handler_kind_10 +_int_handler_kind_04 +_int_handler_kind_06 +_int_handler_kind_08 +print +dbgr + +************************************************************ + +> r8 = lock + +***********************************************************/ + +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 _dbgr_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, 0x03 # 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_hexword_spc # 027fc +bl 1f # 02800 +.ascii "***^n" # 02804 +.short 0 # 02809 +.align 2 # 0280b +1: mflr r8 # 0280c +bl print_string # 02810 +bl _dbgr_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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 02934 +mtlr r27 # 02938 +blr # 0293c + + + +/*********************************************************** + + _dbgr_0x02940 + +************************************************************ + +Xrefs: +all_world_setup +lock + +***********************************************************/ + +_dbgr_0x02940: /* < outside referer */ +b dbgr # 02940 + + + +/*********************************************************** + + major_0x02944 + +***********************************************************/ + +.long 0x4800001c # 02944 +.long 0x60000000 # 02948 +.long 0x60000000 # 0294c +.long 0x60000000 # 02950 +.long 0x60000000 # 02954 +.long 0x60000000 # 02958 +.long 0x60000000 # 0295c + + + +/*********************************************************** + + _dbgr_0x02960 + +************************************************************ + +Xrefs: +major_0x02980 +major_0x035a0 +regsave_debug +major_0x046e0 + +***********************************************************/ + +_dbgr_0x02960: /* < outside referer */ +b dbgr # 02960 + + + +/*********************************************************** + + major_0x02964 + +************************************************************ + +Xrefs: +major_0x02980 + +***********************************************************/ + +major_0x02964: /* < outside referer */ +b major_0x0b0fc # 02964 + + + +/*********************************************************** + + major_0x02968 + +***********************************************************/ + +.long 0x48000018 # 02968 +.long 0x60000000 # 0296c +.long 0x60000000 # 02970 +.long 0x60000000 # 02974 +.long 0x60000000 # 02978 +.long 0x60000000 # 0297c + + + +/*********************************************************** + + major_0x02980 + +************************************************************ + +Xrefs: +major_0x03200 +major_0x03460 +major_0x035a0 +major_0x03940 +major_0x03be0 +major_0x04180 +major_0x04240 +major_0x04300 +major_0x043a0 +trap_vector +major_0x046d0 +major_0x046e0 +major_0x04700 +major_0x04b60 +major_0x05808 +major_0x06a14 +major_0x08794 +bootstrap_cpu +major_0x0a600 +rtas_call +major_0x0a8c0 +syscall_return +major_0x154e0 + +***********************************************************/ + +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, 0x02 # 029b4 +add r8, r8, r1 # 029b8 +lwz r9, 0x0dc0( r8) # 029bc +addi r9, r9, 0x01 # 029c0 +stw r9, 0x0dc0( r8) # 029c4 +srwi r9, r7, 0x18 # 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_0x02980_0x65c # 02a18 +blt- major_0x02980_0xa8 # 02a1c +bne- cr1, major_0x02980_0x178 # 02a20 +b major_0x02980_0x65c # 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 major_0x02980_0x330 # 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: +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, 0x02 # 02acc +add r8, r8, r1 # 02ad0 +lwz r9, 0x0dc0( r8) # 02ad4 +addi r9, r9, 0x01 # 02ad8 +stw r9, 0x0dc0( r8) # 02adc +srwi r9, r7, 0x18 # 02ae0 +blt- cr4, major_0x04a20_0x18 # 02ae4 +bne- cr2, major_0x02980_0x5f0 # 02ae8 +cmpwi cr1, r9, 0x0c # 02aec +blt+ major_0x02980_0xa8 # 02af0 +beq- cr1, major_0x02980_0x5f0 # 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_0x02980_0x454 # 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 + +major_0x02980_0x330: /* < outside referer */ +andi. r8, r7, 0x30 # 02cb0 +mfspr r1, 272/*sprg0*/ # 02cb4 +bnel- major_0x02980_0x34c # 02cb8 +li r8, 0x00 # 02cbc +stw r7, -0x0010( r1) # 02cc0 +stw r8, -0x0114( r1) # 02cc4 +b major_0x142a8 # 02cc8 + +major_0x02980_0x34c: +mtcrf 0x3f, r7 # 02ccc +bns- cr6, major_0x02980_0x364 # 02cd0 +rlwinm r7, r7, 0, 28, 26 # 02cd4 +bso- cr7, major_0x02980_0x37c # 02cd8 +rlwinm r7, r7, 0, 27, 25 # 02cdc +b major_0x02980_0x378 # 02ce0 + +major_0x02980_0x364: +bne- cr6, major_0x02980_0x378 # 02ce4 +rlwinm r7, r7, 0, 27, 25 # 02ce8 +stw r7, -0x0010( r1) # 02cec +li r8, 0x08 # 02cf0 +b major_0x02980_0x134 # 02cf4 + +major_0x02980_0x378: +blr # 02cf8 + +major_0x02980_0x37c: +rlwinm. r8, r7, 0, 8, 8 # 02cfc +beq- major_0x02980_0x454 # 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_0x02980_0x454: +# 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_0x02980_0x558 # 02dec +lwz r28, 0x0028(r30) # 02df0 +cmpwi r28, 0x00 # 02df4 +beql- major_0x02980_0x558 # 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_hexword_spc # 02e90 +mr r8, r10 # 02e94 +bl print_hexword_spc # 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_hexword_spc # 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_0x02980_0x558: +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_hexword_spc # 02f30 +mr r8, r10 # 02f34 +bl print_hexword_spc # 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_hexword_spc # 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 _dbgr_0x02960 # 02f6c + +major_0x02980_0x5f0: +bsol+ cr6, _dbgr_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, 0x18 # 02fb8 +rlwinm. r16, r16, 0, 9, 9 # 02fbc +cmpwi cr1, r8, 0x0c # 02fc0 +bne- major_0x02980_0x870 # 02fc4 +bne- cr1, major_0x02980_0x870 # 02fc8 +lwz r8, 0x00e0(r31) # 02fcc +addi r8, r8, 0x01 # 02fd0 +stw r8, 0x00e0(r31) # 02fd4 +b major_0x02980_0x6cc # 02fd8 + +major_0x02980_0x65c: +bnsl+ cr6, _dbgr_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, 0x18 # 0302c +rlwinm. r16, r16, 0, 9, 9 # 03030 +cmpwi cr1, r8, 0x14 # 03034 +bne- major_0x02980_0x870 # 03038 +bne- cr1, major_0x02980_0x870 # 0303c +lwz r8, 0x00e4(r31) # 03040 +addi r8, r8, 0x01 # 03044 +stw r8, 0x00e4(r31) # 03048 + +major_0x02980_0x6cc: +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+ _dbgr_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_0x02980_0x77c # 03094 +beq- cr1, major_0x02980_0x720 # 03098 +beq- cr2, major_0x02980_0x77c # 0309c + +major_0x02980_0x720: +lwz r16, 0x0064(r31) # 030a0 +addi r17, r31, 0x08 # 030a4 +addi r18, r31, 0xa0 # 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_0x02980_0x77c: +mfcr r28 # 030fc +li r8, 0x1c # 03100 +beq- cr2, major_0x02980_0x7f4 # 03104 +bl boring_with_crset # 03108 +mr. r26, r8 # 0310c +beq- major_0x02980_0x858 # 03110 +addi r17, r31, 0x08 # 03114 +addi r18, r31, 0xa0 # 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_0x02980_0x7f4: +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_0x02980_0x818 # 0318c +mflr r31 # 03190 +bl dbgr # 03194 + +major_0x02980_0x818: +stw r31, -0x0b50( r1) # 03198 +mtcr r28 # 0319c +bns- cr6, major_0x02980_0x850 # 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_0x02980_0x850: +# r6 = ewa +bl restore_registers_from_r14 # 031d0 +b major_0x02980_0x178 # 031d4 + +major_0x02980_0x858: +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_0x02980_0x870: +b major_0x0ea58_0xe4 # 031f0 + + + +/*********************************************************** + + major_0x031f4 + +***********************************************************/ + +.long 0x4800000c # 031f4 +.long 0x60000000 # 031f8 +.long 0x60000000 # 031fc + + + +/*********************************************************** + + major_0x03200 + +************************************************************ + +Xrefs: +"lisori_caller" + +***********************************************************/ + +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 major_0x02980_0x330 # 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 dbgr # 03298 + +major_0x03200_0x9c: +stw r8, -0x0b50( r1) # 0329c + +# r6 = ewa +bl restore_registers_from_r14 # 032a0 +b major_0x02980_0x330 # 032a4 + + + +/*********************************************************** + + major_0x032a8 + +***********************************************************/ + +.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 + +***********************************************************/ + +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 + +***********************************************************/ + +.long 0x60000000 # 03458 +.long 0x60000000 # 0345c + + + +/*********************************************************** + + major_0x03460 + +************************************************************ + +Xrefs: +"lisori_caller" +major_0x05808 + +***********************************************************/ + +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 + +***********************************************************/ + +.long 0x48000018 # 03588 +.long 0x60000000 # 0358c +.long 0x60000000 # 03590 +.long 0x60000000 # 03594 +.long 0x60000000 # 03598 +.long 0x60000000 # 0359c + + + +/*********************************************************** + + major_0x035a0 + +************************************************************ + +Xrefs: +"lisori_caller" + +***********************************************************/ + +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, 0x320 # 036a4 +bnel- major_0x054b8 # 036a8 +li r28, 0x43 # 036ac +and r28, r31, r28 # 036b0 +cmpwi cr7, r28, 0x43 # 036b4 +beql+ _dbgr_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- major_0x035a0_0x374 # 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 dbgr # 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 + +major_0x035a0_0x228: /* < 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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- major_0x035a0_0x374 # 03894 +cmpwi r28, 0x10 # 03898 +bgt- major_0x035a0_0x374 # 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- major_0x035a0_0x34c # 038e0 +sync # 038e4 +tlbsync # 038e8 + +major_0x035a0_0x34c: +sync # 038ec +isync # 038f0 +sync # 038f4 +lwz r28, -0x0b90( r1) # 038f8 +cmpwi cr1, r28, 0x00 # 038fc +li r28, 0x00 # 03900 +bne+ cr1, major_0x035a0_0x370 # 03904 +mflr r28 # 03908 +bl dbgr # 0390c + +major_0x035a0_0x370: +stw r28, -0x0b90( r1) # 03910 + +major_0x035a0_0x374: +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 + +***********************************************************/ + +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 dbgr # 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 major_0x02980_0x330 # 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_hexword_spc # 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_hexword_spc # 03a4c +mr r8, r10 # 03a50 +bl print_hexword_spc # 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_hexword_spc # 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 major_0x02980_0x330 # 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_hexword_spc # 03b04 +mr r8, r10 # 03b08 +bl print_hexword_spc # 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 + +***********************************************************/ + +.long 0x48000010 # 03b30 +.long 0x60000000 # 03b34 +.long 0x60000000 # 03b38 +.long 0x60000000 # 03b3c + + + +/*********************************************************** + + dsi_vector + +************************************************************ + +Xrefs: +"lisori_caller" + +***********************************************************/ + +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 dbgr # 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 + +***********************************************************/ + +.long 0x60000000 # 03bd8 +.long 0x60000000 # 03bdc + + + +/*********************************************************** + + major_0x03be0 + +************************************************************ + +Xrefs: +"lisori_caller" + +***********************************************************/ + +.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 major_0x02980_0x330 # 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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 + +***********************************************************/ + +.long 0x60000000 # 03d98 +.long 0x60000000 # 03d9c + + + +/*********************************************************** + + major_0x03da0 + +************************************************************ + +Xrefs: +"lisori_caller" +major_0x02980 +major_0x03be0 +rtas_call + +***********************************************************/ + +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 + +***********************************************************/ + +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" + +***********************************************************/ + +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 dbgr # 042e0 + +major_0x04240_0xa4: +stw r8, -0x0b50( r1) # 042e4 + +# r6 = ewa +bl restore_registers_from_r14 # 042e8 +b major_0x02980_0x330 # 042ec + + + +/*********************************************************** + + major_0x042f0 + +***********************************************************/ + +.long 0x48000010 # 042f0 +.long 0x60000000 # 042f4 +.long 0x60000000 # 042f8 +.long 0x60000000 # 042fc + + + +/*********************************************************** + + major_0x04300 + +************************************************************ + +Xrefs: +"lisori_caller" + +***********************************************************/ + +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 dbgr # 04380 + +major_0x04300_0x84: +stw r8, -0x0b50( r1) # 04384 + +# r6 = ewa +bl restore_registers_from_r14 # 04388 +b major_0x02980_0x330 # 0438c + + + +/*********************************************************** + + major_0x04390 + +***********************************************************/ + +.long 0x48000010 # 04390 +.long 0x60000000 # 04394 +.long 0x60000000 # 04398 +.long 0x60000000 # 0439c + + + +/*********************************************************** + + major_0x043a0 + +************************************************************ + +Xrefs: +"lisori_caller" + +***********************************************************/ + +major_0x043a0: /* < outside referer */ +mtcrf 0x3f, r7 # 043a0 +bnel+ cr2, major_0x02980_0x330 # 043a4 +and. r8, r4, r13 # 043a8 +lwz r9, 0x0340( r1) # 043ac +rlwinm r8, r3, 0, 0, 25 # 043b0 +cmpw cr1, r8, r9 # 043b4 +bne+ major_0x02980_0x330 # 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, 0x320 # 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, 0x320 # 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: +all_world_setup +dbgr_offset_to_r1_minus_0x810_x48__0x9dfc_to_prev_plus_4_20_36 + +************************************************************ + +> r8 = dest +> r22 = len in bytes +> r23 = fillword + +***********************************************************/ + +wordfill: /* < outside referer */ +addic. r22, r22, -0x04 # 04508 +stwx r23, r8, r22 # 0450c +bne+ wordfill # 04510 +blr # 04514 + + + +/*********************************************************** + + major_0x04518 + +***********************************************************/ + +.long 0x60000000 # 04518 +.long 0x60000000 # 0451c + + + +/*********************************************************** + + trap_vector + +************************************************************ + +Guessing thats what it is, anyway + +************************************************************ + +Xrefs: +"lisori_caller" + +***********************************************************/ + +trap_vector: /* < 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, 0x4761 # 0452c +beq- cpu_version_zero # 04530 +mftb r9, 0x10c # 04534 +b trap_vector_0x20 # 04538 + +cpu_version_zero: +mfspr r9, 5/*rtcl*/ # 0453c + +trap_vector_0x20: +andis. r9, r9, 0xffff # 04540 +cmplwi r8, 0x7279 # 04544 +bne- handle_ResetSystem_trap # 04548 +xoris r8, r4, 0x505 # 0454c +cmplwi r8, 0x1956 # 04550 +bne- handle_ResetSystem_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_hexword_spc # 04590 +mr r8, r10 # 04594 +bl print_hexword_spc # 04598 +bl 1f # 0459c +.ascii "^n" # 045a0 +.short 0 # 045a2 +.align 2 # 045a4 +1: mflr r8 # 045a4 +bl print_string # 045a8 +b major_0x02980_0x330 # 045ac + + + +/*********************************************************** + + handle_ResetSystem_trap + +************************************************************ + +Xrefs: +trap_vector + +***********************************************************/ + +handle_ResetSystem_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 +beq+ all_world_setup_second_attempt # 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 + + + +/*********************************************************** + + int_handler + +************************************************************ + +Jumps to the interrupt handler that was chosen based on ConfigInfo. + +************************************************************ + +Xrefs: +"lisori_caller" +all_world_setup +major_0x04880 + +************************************************************ + +> r1 = kdp + +***********************************************************/ + +int_handler: /* < outside referer */ +lwz r9, 0x05b0( r1) # kdp._int_handler # 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 + +***********************************************************/ + +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 _dbgr_0x02960 # 046cc + + + +/*********************************************************** + + major_0x046d0 + +************************************************************ + +Xrefs: +"lisori_caller" +regsave_debug + +***********************************************************/ + +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" + +***********************************************************/ + +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, _dbgr_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" + +***********************************************************/ + +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, 0x02 # 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 major_0x02980_0x330 # 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" + +***********************************************************/ + +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+ int_handler # 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 +.long 0x4800f06d # 048b0 +.long 0x2c088da2 # 048b4 +.long 0x2c888da3 # 048b8 +.long 0x2d088da1 # 048bc +.long 0x4182fda0 # 048c0 +.long 0x4186e3ec # 048c4 +.long 0x408afd98 # 048c8 +.long 0x7d3042a6 # 048cc +.long 0x39000001 # 048d0 +.long 0x9909fee8 # 048d4 +.long 0x4bffe3d8 # 048d8 + + + +/*********************************************************** + + major_0x048dc + +***********************************************************/ + +.long 0x60000000 # 048dc + + + +/*********************************************************** + + SIGP + +************************************************************ + +Xrefs: +major_0x04880 +major_0x0ba80 +major_0x0bb20 +major_0x0bc2c +major_0x0bccc +NKCpuPlugin +major_0x14af8 +major_0x16bb4 + +************************************************************ + +> r7 = flags +> r8 = usually 2? + +***********************************************************/ + +SIGP: /* < outside referer */ +mfspr r23, 272/*sprg0*/ # 048e0 +mtcr r7 # 048e4 +lwz r16, -0x001c(r23) # 048e8 +slwi r20, r3, 0x02 # 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, 0x02 # 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, 0x02 # 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, 0x02 # 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, 0x02 # 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 + +***********************************************************/ + +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" + +***********************************************************/ + +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" + +***********************************************************/ + +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 + + + +/*********************************************************** + + rfi_to_kern + +************************************************************ + +incr_srr0__copy_sprg2_to_lr__copy_sprg1_to_r1__rfi +The convention is: + +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" -- 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" -- return address?) +"This register may be used by the operating system as needed." + +SPRG3: ("vecBase" -- super useful) +"This register may be used by the operating system as needed." + +************************************************************ + +Xrefs: +"lisori_caller" + +***********************************************************/ + +rfi_to_kern: /* < 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" + +***********************************************************/ + +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 + + + +/*********************************************************** + + _dbgr_0x04c00 + +************************************************************ + +Xrefs: +major_0x04c20 + +***********************************************************/ + +_dbgr_0x04c00: /* < outside referer */ +b dbgr # 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: +all_world_setup +major_0x035a0 +major_0x03940 +dsi_vector +major_0x08794 +print_memory_logical + +***********************************************************/ + +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, 0x01 # 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 _dbgr_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, 0x0c # 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, 0x02 # 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 _dbgr_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, _dbgr_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+ _dbgr_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+ _dbgr_0x04c00 # 05134 +andi. r30, r30, 0xffff # 05138 +xori r28, r28, 0x800 # 0513c +bne+ _dbgr_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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 051c0 +lwz r16, 0x0000(r26) # 051c4 +mr r8, r26 # 051c8 +bl print_hexword_spc # 051cc +mr r8, r16 # 051d0 +bl print_hexword_spc # 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_hexword_spc # 051f8 +mr r8, r16 # 051fc +bl print_hexword_spc # 05200 +mr r8, r17 # 05204 +bl print_hexword_spc # 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, 0x02 # 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: +all_world_setup + +***********************************************************/ + +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 + +***********************************************************/ + +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: +all_world_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 + + + +/*********************************************************** + + major_0x055e0 + +************************************************************ + +Xrefs: +all_world_setup +major_0x14bcc +major_0x16bb4 + +***********************************************************/ + +major_0x055e0: /* < outside referer */ +lhz r29, 0x0f50( r1) # 055e0 +slwi r29, r29, 0x0c # 055e4 + +major_0x055e0_0x8: +addi r29, r29, -0x1000 # 055e8 +cmpwi r29, 0x00 # 055ec +tlbie r29 # 055f0 +bgt+ major_0x055e0_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 + +***********************************************************/ + +.long 0x60000000 # 05618 +.long 0x60000000 # 0561c + + + +/*********************************************************** + + major_0x05620 + +***********************************************************/ + +.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" + +***********************************************************/ + +funny_debug_place: /* < outside referer */ +bl dbgr # 05800 +b major_0x05808_0x244 # 05804 + + + +/*********************************************************** + + major_0x05808 + +************************************************************ + +Xrefs: +major_0x02980 +funny_debug_place +major_0x06000 + +***********************************************************/ + +.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 + +***********************************************************/ + +.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 + +***********************************************************/ + +.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 + +************************************************************ + +Xrefs: +all_world_setup + +***********************************************************/ + +major_0x06870: /* < outside referer */ +li r23, 0x00 # 06870 +lwz r21, 0x064c( r1) # 06874 +lwz r20, 0x037c( r1) # 06878 +lis r18, rfi_to_kern@h # 0687c +ori r18, r18, rfi_to_kern@l # 06880 +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, 0x01 # 069d4 +rlwimi r20, r21, 1, 31, 31 # 069d8 +cmplw cr2, r20, r19 # 069dc +rlwinm. r24, r24, 1, 0, 30 # 069e0 +slwi r21, r21, 0x01 # 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, 0x1a # 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" + +***********************************************************/ + +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, 0xa0 # 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, 0xf0 # 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, 0x140 # 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, 0x190 # 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, 0x1e0 # 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 + +***********************************************************/ + +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 dbgr # 07674 +b dbgr # 07678 +b dbgr # 0767c +b dbgr # 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 dbgr # 076a4 +b dbgr # 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, 0xa0 # 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, 0xf0 # 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, 0x140 # 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, 0x190 # 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, 0x1e0 # 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, 0x01 # 07968 +add r8, r8, r9 # 0796c +mtlr r8 # 07970 +blr # 07974 + + + +/*********************************************************** + + major_0x07978 + +***********************************************************/ + +.long 0x60000000 # 07978 +.long 0x60000000 # 0797c + + + +/*********************************************************** + + major_0x07980 + +************************************************************ + +Xrefs: +"lisori_caller" +major_0x07658 + +***********************************************************/ + +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 + +***********************************************************/ + +lis r8, major_0x07ac0@h # 07a88 +ori r8, r8, major_0x07ac0@l # 07a8c +add r8, r8, r9 # 07a90 +srwi r9, r18, 0x01 # 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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 + +***********************************************************/ + +.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 + + + +/*********************************************************** + + _dbgr_0x08620 + +************************************************************ + +Xrefs: +major_0x08794 + +***********************************************************/ + +_dbgr_0x08620: /* < outside referer */ +b dbgr # 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" + +***********************************************************/ + +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, 0x10 # 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 + +***********************************************************/ + +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 dbgr # 087f8 + +major_0x08794_0x68: +stw r8, -0x0b90( r1) # 087fc +b major_0x02980_0x330 # 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_hexword_spc # 08860 +mr r8, r30 # 08864 +bl print_hexword_spc # 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, 0x0c # 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, 0x02 # 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, _dbgr_0x08620 # 09a30 +bltlr- # 09a34 +bl _dbgr_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, 0x02 # 09a98 +rlwinm r15, r9, 22, 0, 29 # 09a9c +crset 4*cr4 + lt # 09aa0 +b major_0x08794_0x1278 # 09aa4 + +major_0x08794_0x1314: +slwi r8, r8, 0x0c # 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, 0x0c # 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, 0x0c # 09b7c +mfsrin r6, r9 # 09b80 +xor r9, r6, r4 # 09b84 +slwi r7, r9, 0x06 # 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, 0x0c # 09c68 +bl major_0x04c20 # 09c6c +bnel+ _dbgr_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 + + + +/*********************************************************** + +dbgr_offset_to_r1_minus_0x810_x48__0x9dfc_to_prev_plus_4_20_36 + +************************************************************ + +Xrefs: +all_world_setup + +***********************************************************/ + +dbgr_offset_to_r1_minus_0x810_x48__0x9dfc_to_prev_plus_4_20_36: /* < outside referer */ +mflr r9 # 09ce0 +lis r23, dbgr@h # 09ce4 +ori r23, r23, dbgr@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, bootstrap_cpu_0xdc@h # 09d00 +ori r23, r23, bootstrap_cpu_0xdc@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 + +************************************************************ + +Contains a (very rare) mtsprg0 instruction. + +************************************************************ + +Xrefs: +"lisori_caller" + +***********************************************************/ + +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, bootstrap_cpu_0x13c # 09d3c +bne- bootstrap_cpu_0x134 # 09d40 +cmplwi cr7, r3, 0x0b # 09d44 +beq- cr7, major_0x0a600_0x1c # 09d48 +cmplwi cr7, r3, 0x08 # 09d4c +beq- cr7, bootstrap_cpu_0x144 # 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, 0x01 # 09d8c +addi r3, r3, 0x1a # 09d90 +rlwnm r3, r8, r3, 0x1e, 0x1f # 09d94 +cmpwi r3, 0x00 # 09d98 +beq- bootstrap_cpu_0x12c # 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 + +bootstrap_cpu_0xdc: /* < outside referer */ +lbz r8, 0x06b9( r1) # 09dfc +cmpwi r8, 0x00 # 09e00 +beq- bootstrap_cpu_0xec # 09e04 +mtspr 1008/*hid0*/, r27 # 09e08 + +bootstrap_cpu_0xec: +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 + +bootstrap_cpu_0x10c: +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 major_0x02980_0x330 # 09e48 + +bootstrap_cpu_0x12c: +li r3, -0x7267 # 09e4c +b bootstrap_cpu_0x10c # 09e50 + +bootstrap_cpu_0x134: +li r3, 0x00 # 09e54 +b major_0x02980_0x330 # 09e58 + +bootstrap_cpu_0x13c: +li r3, -0x01 # 09e5c +b major_0x02980_0x330 # 09e60 + +bootstrap_cpu_0x144: +mfspr r9, 272/*sprg0*/ # 09e64 +lwz r8, -0x0338( r9) # 09e68 +lwz r9, 0x0024( r8) # 09e6c +cmpwi r9, 0x01 # 09e70 +li r3, -0x7267 # 09e74 +bgt+ major_0x02980_0x330 # 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- bootstrap_cpu_0x1b8 # 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 + +bootstrap_cpu_0x1b8: +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- bootstrap_cpu_0x2a0 # 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 + +bootstrap_cpu_0x2a0: +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 + +bootstrap_cpu_0x2c8: +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+ bootstrap_cpu_0x2c8 # 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 bootstrap_cpu_0x6a4 # 0a0bc +lwz r1, 0x0004( r1) # 0a0c0 +addi r16, r1, -0x4d0 # 0a0c4 +lis r8, 0x100 # 0a0c8 +ori r8, r8, 0x00 # 0a0cc +lis r9, 0x00 # 0a0d0 + +bootstrap_cpu_0x3b4: +addis r9, r9, -0x1000 # 0a0d4 +addis r8, r8, -0x10 # 0a0d8 +mr. r9, r9 # 0a0dc +mtsrin r8, r9 # 0a0e0 +bne+ bootstrap_cpu_0x3b4 # 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- bootstrap_cpu_0x494 # 0a128 +lwz r8, 0x0f54( r1) # 0a12c +mr. r8, r8 # 0a130 +beq- bootstrap_cpu_0x494 # 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 + +bootstrap_cpu_0x44c: +mfspr r8, 1017/*l2cr*/ # 0a16c +rlwinm. r8, r8, 31, 0, 0 # 0a170 +bne+ bootstrap_cpu_0x44c # 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 + +bootstrap_cpu_0x494: +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- bootstrap_cpu_0x5b0 # 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 + +bootstrap_cpu_0x5b0: +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 major_0x02980_0x330 # 0a3c0 + +bootstrap_cpu_0x6a4: +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 +bl bootstrap_cpu_0x6ec # 0a408 + +bootstrap_cpu_0x6ec: +mflr r9 # 0a40c +addi r9, r9, 0x1f4 # 0a410 +lis r1, -0x3502 # 0a414 +ori r1, r1, 0xbabe # 0a418 + + + +/*********************************************************** + + major_0x0a41c + +************************************************************ + +Xrefs: +bootstrap_cpu + +***********************************************************/ + +b major_0x0a500 # 0a41c + + + +/*********************************************************** + + major_0x0a420 + +***********************************************************/ + +.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_0x0a41c + +***********************************************************/ + +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 + +***********************************************************/ + +.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 + +***********************************************************/ + +.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 major_0x02980_0x330 # 0a618 + +major_0x0a600_0x1c: /* < outside referer */ +b major_0x0a600_0x1c # 0a61c + + + +/*********************************************************** + + _dbgr_0x0a620 + +************************************************************ + +Xrefs: +rtas_call + +***********************************************************/ + +_dbgr_0x0a620: /* < outside referer */ +b dbgr # 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 + +***********************************************************/ + +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 major_0x02980_0x330 # 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, 0x320 # kdp.0x320 # 0a744 +bl major_0x054b8 # 0a748 +beql+ _dbgr_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, 0x02 # 0a760 +lwzx r27, r8, r3 # 0a764 +addi r29, r1, 0x320 # kdp.0x320 # 0a768 +bl major_0x054b8 # 0a76c +beql+ _dbgr_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_lock_did_not_fail # 0a89c +mflr r8 # 0a8a0 +bl dbgr # 0a8a4 + +rtas_lock_did_not_fail: +stw r8, -0x0b10( r1) # kdp.rtas_lock # 0a8a8 +li r3, 0x00 # 0a8ac +b major_0x02980_0x330 # 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_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, 0x1e # 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, 0x0c # 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, 0x0c # 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 major_0x02980_0x330 # 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, 0x01 # 0ab58 +add r8, r8, r24 # 0ab5c +srwi r8, r8, 0x01 # 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 + +***********************************************************/ + +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 dbgr # 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 + +***********************************************************/ + +syscall_return_assert_lock_unheld: /* < outside referer */ +sync # 0af38 +lwz r16, -0x0b50( r1) # kdp.popular_lock # 0af3c +cmpwi cr1, r16, 0x00 # 0af40 +li r16, 0x00 # 0af44 +bne+ cr1, syscall_return_assert_lock_unheld_0x1c # 0af48 +mflr r16 # 0af4c +bl dbgr # 0af50 + +syscall_return_assert_lock_unheld_0x1c: +stw r16, -0x0b50( r1) # kdp.popular_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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 dbgr # 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 dbgr # 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 dbgr # 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 dbgr # 0b01c + +major_0x0af60_0xc0: +stw r16, -0x0b50( r1) # 0b020 + + + +/*********************************************************** + + syscall_return_kMPInsufficientResourcesErr + +************************************************************ + +Xrefs: +major_0x0af60 +major_0x0b144 +major_0x0b244 +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 dbgr # 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 dbgr # 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 dbgr # 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 dbgr # 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 dbgr # 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_0x02980 +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 dbgr # 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 major_0x02980_0x330 # 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 dbgr # 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 dbgr # 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, nk_inert_call # 0b234 +mflr r16 # 0b238 +bl dbgr # 0b23c + + + +/*********************************************************** + + nk_inert_call + +************************************************************ + +Xrefs: +major_0x0b144 + +***********************************************************/ + +nk_inert_call: /* < outside referer */ +stw r16, -0x0b90( r1) # 0b240 + + + +/*********************************************************** + + major_0x0b244 + +************************************************************ + +Xrefs: +nk_inert_call + +***********************************************************/ + +b syscall_return_kMPInsufficientResourcesErr # 0b244 + + + +/*********************************************************** + + major_0x0b248 + +************************************************************ + +syscall 1 + +************************************************************ + +Xrefs: +syscall + +***********************************************************/ + +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, 0x320 # 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, 0x320 # 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, 0x320 # 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, 0x320 # 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 + +***********************************************************/ + +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 +bl boring # 0b408 +mr. r31, r8 # 0b40c +beq+ major_0x0af60 # 0b410 +li r9, 0x01 # 0b414 +bl major_0x151b0 # 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 dbgr # 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 dbgr # 0b58c + +major_0x0b4a4_0xec: +stw r16, -0x0b50( r1) # 0b590 +b syscall_return # 0b594 + + + +/*********************************************************** + + nk_yield_with_hint + +************************************************************ + +syscall 13 + +************************************************************ + +Xrefs: +syscall + +***********************************************************/ + +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 dbgr # 0b634 + +nk_yield_with_hint_0xa0: +stw r16, -0x0b50( r1) # 0b638 +b syscall_return # 0b63c + + + +/*********************************************************** + + major_0x0b640 + +************************************************************ + +syscall 33 + +************************************************************ + +Xrefs: +syscall + +***********************************************************/ + +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 + +***********************************************************/ + +major_0x0b720: /* < outside referer */ +mr r8, r3 # 0b720 +mr r9, r4 # 0b724 +bl major_0x151b0 # 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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 + +***********************************************************/ + +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, 0x3c0 # 0b984 +bl boring # 0b988 +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 +bl major_0x151b0 # 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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 major_0x0e330 # 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 dbgr # 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, _dbgr_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, _dbgr_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 dbgr # 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 + +***********************************************************/ + +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 + +***********************************************************/ + +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_hexword_spc # 0bec0 +b syscall_return # 0bec4 + +major_0x0beac_0x1c: +bl print_hexshort # 0bec8 +b syscall_return # 0becc + +major_0x0beac_0x24: +bl print_twodig_decimal # 0bed0 +b syscall_return # 0bed4 + + + +/*********************************************************** + + major_0x0bed8 + +************************************************************ + +syscall 124 + +************************************************************ + +Xrefs: +syscall + +***********************************************************/ + +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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 + +***********************************************************/ + +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, 0x07 # 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 dbgr # 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 + +***********************************************************/ + +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, 0x10 # 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, 0x10 # 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: +bl major_0x18a98 # 0c5cc + +# r1 = kdp +b syscall_return_assert_lock_unheld # 0c5d0 + + + +/*********************************************************** + + _dbgr_0x0c5d4 + +************************************************************ + +Xrefs: +major_0x0bc2c +major_0x0bccc + +***********************************************************/ + +_dbgr_0x0c5d4: /* < outside referer */ +b dbgr # 0c5d4 + + + +/*********************************************************** + + major_0x0c5d8 + +***********************************************************/ + +.long 0x60000000 # 0c5d8 +.long 0x60000000 # 0c5dc + + + +/*********************************************************** + + major_0x0c5e0 + +************************************************************ + +syscall 15 + +************************************************************ + +Xrefs: +syscall + +***********************************************************/ + +major_0x0c5e0: /* < outside referer */ +li r8, 0x34 # 0c5e0 +bl boring_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 +bl major_0x151b0 # 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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 boring_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 + +***********************************************************/ + +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 boring_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_0x02980 +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 + +***********************************************************/ + +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 +bl major_0x130f0_0x618 # 0ca8c +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 + +***********************************************************/ + +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 + +***********************************************************/ + +major_0x0cb00: /* < outside referer */ +cmpw r4, r3 # 0cb00 +bgt+ syscall_return_kMPInsufficientResourcesErr # 0cb04 +li r8, 0x20 # 0cb08 +bl boring_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 +bl major_0x151b0 # 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 +bl major_0x130f0_0x618 # 0cc48 +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 + +***********************************************************/ + +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 + +***********************************************************/ + +major_0x0ce48: /* < outside referer */ +li r8, 0x24 # 0ce48 +bl boring_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 +bl major_0x151b0 # 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 +bl major_0x130f0_0x618 # 0cfdc +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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 +bl boring # 0d208 +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 +bl major_0x151b0 # 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 + +***********************************************************/ + +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 dbgr # 0d460 + +major_0x0d35c_0x108: +cmplw r16, r19 # 0d464 +srwi r16, r16, 0x02 # 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, 0x02 # 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 +bl major_0x130f0_0x618 # 0d644 +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 + +***********************************************************/ + +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 +bl boring # 0d710 +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 +bl major_0x151b0 # 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 + +***********************************************************/ + +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 dbgr # 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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 +bl boring # 0d920 +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 +bl major_0x130f0_0x618 # 0d94c +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 + +***********************************************************/ + +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 + +***********************************************************/ + +major_0x0da20: /* < outside referer */ +li r8, 0x28 # 0da20 +bl boring # 0da24 +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 +bl major_0x151b0 # 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_0x02980 +major_0x04240 +major_0x04300 +major_0x0dacc +major_0x102c8 +major_0x154e0 + +***********************************************************/ + +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 boring_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 + +***********************************************************/ + +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_0x02980 +major_0x0c680 +major_0x0c8b4 +major_0x0ccf4 +major_0x0cd9c +major_0x0d06c +major_0x0d158 +major_0x0d278 +major_0x0d35c + +***********************************************************/ + +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 + +***********************************************************/ + +.long 0x48000018 # 0e268 +.long 0x60000000 # 0e26c +.long 0x60000000 # 0e270 +.long 0x60000000 # 0e274 +.long 0x60000000 # 0e278 +.long 0x60000000 # 0e27c + + + +/*********************************************************** + + _dbgr_0x0e280 + +************************************************************ + +Xrefs: +major_0x0e330 +major_0x0e548 +major_0x0ec8c +major_0x0f050 + +***********************************************************/ + +_dbgr_0x0e280: /* < outside referer */ +b dbgr # 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 major_0x0e330 # 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 + + + +/*********************************************************** + + major_0x0e330 + +************************************************************ + +Xrefs: +all_world_setup +major_0x0bb20 +major_0x0e284 + +***********************************************************/ + +major_0x0e330: /* < outside referer */ +mr r27, r8 # 0e330 +mflr r29 # 0e334 +li r8, 0x400 # 0e338 +bl boring # 0e33c +mr. r28, r8 # 0e340 +beq- major_0x0e330_0x20c # 0e344 +li r9, 0x02 # 0e348 +bl major_0x151b0 # 0e34c +cmpwi r8, 0x00 # 0e350 +beq- major_0x0e330_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 +bl boring # 0e378 +cmpwi r8, 0x00 # 0e37c +stw r8, 0x009c(r28) # 0e380 +beq- major_0x0e330_0x1fc # 0e384 +lis r9, 0x6e6f # 0e388 +ori r9, r9, 0x7465 # 0e38c +stw r9, 0x0004( r8) # 0e390 +addi r16, r28, 0xa0 # 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, 0xa0 # 0e3bc +li r9, 0x05 # 0e3c0 +bl major_0x151b0 # 0e3c4 +cmpwi r8, 0x00 # 0e3c8 +beq- major_0x0e330_0x1f4 # 0e3cc +stw r8, 0x00a0(r28) # 0e3d0 +rlwinm. r8, r7, 0, 12, 12 # 0e3d4 +beq- major_0x0e330_0xe8 # 0e3d8 +li r8, 0x214 # 0e3dc +bl boring # 0e3e0 +andi. r9, r8, 0x0f # 0e3e4 +cmpwi cr1, r8, 0x00 # 0e3e8 +bne+ _dbgr_0x0e280 # 0e3ec +beq- cr1, major_0x0e330_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 + +major_0x0e330_0xd8: +addi r16, r16, -0x01 # 0e408 +stwu r17, 0x0004( r8) # 0e40c +cmpwi r16, 0x00 # 0e410 +bgt+ major_0x0e330_0xd8 # 0e414 + +major_0x0e330_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, 0x64 # 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 + +major_0x0e330_0x1ec: +lwz r8, 0x00a0(r28) # 0e51c +bl major_0x15300 # 0e520 + +major_0x0e330_0x1f4: +lwz r8, 0x009c(r28) # 0e524 +bl looks_like_poolextend # 0e528 + +major_0x0e330_0x1fc: +lwz r8, 0x0000(r28) # 0e52c +bl major_0x15300 # 0e530 + +major_0x0e330_0x204: +mr r8, r28 # 0e534 +bl looks_like_poolextend # 0e538 + +major_0x0e330_0x20c: +mtlr r29 # 0e53c +li r8, 0x00 # 0e540 +blr # 0e544 + + + +/*********************************************************** + + major_0x0e548 + +************************************************************ + +syscall 8 + +************************************************************ + +Xrefs: +syscall + +***********************************************************/ + +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+ _dbgr_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 dbgr # 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 + +***********************************************************/ + +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 + +***********************************************************/ + +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, 0x2710 # 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 dbgr # 0ea48 + +NKThrowException_0xf0: +stw r16, -0x0b50( r1) # 0ea4c +addi r10, r10, -0x04 # 0ea50 +b major_0x0b4a4_0x78 # 0ea54 + + + +/*********************************************************** + + major_0x0ea58 + +************************************************************ + +syscall 58 + +************************************************************ + +Xrefs: +major_0x02980 +syscall +major_0x0ec8c + +***********************************************************/ + +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 boring_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 boring_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, _dbgr_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 + +***********************************************************/ + +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, _dbgr_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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 + + + +/*********************************************************** + + _dbgr_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 + +***********************************************************/ + +_dbgr_0x0f380: /* < outside referer */ +b dbgr # 0f380 + + + +/*********************************************************** + + major_0x0f384 + +************************************************************ + +Xrefs: +all_world_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: +all_world_setup + +***********************************************************/ + +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, 0x78 # 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, 0xa0 # 0f454 +bl boring # 0f458 +mr. r31, r8 # 0f45c +beq+ _dbgr_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, 0xa0 # 0f4b8 +bl boring # 0f4bc +mr. r31, r8 # 0f4c0 +beq+ _dbgr_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+ _dbgr_0x0f380 # 0f544 +li r8, 0x00 # 0f548 +stw r8, -0x026c( r1) # 0f54c + +convert_pmdts_to_areas_0x198: +li r8, 0xa0 # 0f550 +bl boring # 0f554 +mr. r31, r8 # 0f558 +beq+ _dbgr_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, 0x0c # 0f578 +addi r16, r16, 0x01 # 0f57c +add r15, r15, r26 # 0f580 +slwi r16, r16, 0x0c # 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+ _dbgr_0x0f380 # 0f618 +mr r8, r31 # 0f61c +bl createarea # 0f620 +cmpwi r9, 0x00 # 0f624 +mr r30, r8 # 0f628 +bnel+ _dbgr_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, 0xa0 # 0f640 +bl boring # 0f644 +mr. r31, r8 # 0f648 +beq+ _dbgr_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+ _dbgr_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, 0xa0 # 0f69c +bl boring # 0f6a0 +mr. r31, r8 # 0f6a4 +beq+ _dbgr_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, 0x0c # 0f6c4 +addi r16, r16, 0x01 # 0f6c8 +add r15, r15, r26 # 0f6cc +slwi r16, r16, 0x0c # 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+ _dbgr_0x0f380 # 0f798 +b convert_pmdts_to_areas_0x5c # 0f79c + + + +/*********************************************************** + + NKGetPageSizeClasses + +************************************************************ + +syscall 68 + +************************************************************ + +Xrefs: +syscall + +************************************************************ + +> r1 = kdp + +< r3 = pageClass + +***********************************************************/ + +NKGetPageSizeClasses: /* < outside referer */ +li r3, 0x01 # 0f7a0 +b syscall_return # 0f7a4 + + + +/*********************************************************** + + NKGetPageSize + +************************************************************ + +syscall 69 + +************************************************************ + +Xrefs: +syscall + +************************************************************ + +> r1 = kdp +> r3 = pageClass + +< r3 = byteCount + +***********************************************************/ + +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 + +***********************************************************/ + +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 dbgr # 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: +all_world_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_hexword_spc # 0f890 +mr r8, r29 # 0f894 +bl print_hexword_spc # 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 +bl boring # 0f8b0 +mr. r31, r8 # 0f8b4 +beq- NKCreateAddressSpaceSub_0x1c0 # 0f8b8 +stw r29, 0x0070(r31) # 0f8bc +li r9, 0x08 # 0f8c0 +bl major_0x151b0 # 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, 0xa0 # 0f948 +bl boring # 0f94c +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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 + +***********************************************************/ + +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, 0xa0 # 0fb6c +bl boring # 0fb70 +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 dbgr # 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 +bl major_0x151b0 # 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_hexword_spc # 0fd94 +mr r8, r16 # 0fd98 +bl print_hexword_spc # 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_hexword_spc # 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 +bl boring # 0ffe0 +cmpwi r8, 0x00 # 0ffe4 +stw r8, 0x0040(r31) # 0ffe8 +beq- createarea_0x460 # 0ffec +lwz r9, 0x002c(r31) # 0fff0 +srwi r9, r9, 0x0c # 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 +bl boring # 10020 +cmpwi r8, 0x00 # 10024 +stw r8, 0x003c(r31) # 10028 +beq- createarea_0x460 # 1002c +lwz r9, 0x002c(r31) # 10030 +srwi r9, r9, 0x0c # 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, 0x0c # 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, 0x0a # 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, 0x0c # 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, 0x0b # 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 dbgr # 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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 dbgr # 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 + +***********************************************************/ + +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, 0xa0 # 1044c +bl boring # 10450 +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 dbgr # 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 dbgr # 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, 0x0c # 1060c +addi r19, r19, 0x3ff # 10610 +srwi r19, r19, 0x0a # 10614 +slwi r19, r19, 0x02 # 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 dbgr # 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, 0x0c # 106a0 +addi r19, r19, 0x7ff # 106a4 +srwi r19, r19, 0x0b # 106a8 +slwi r19, r19, 0x02 # 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 dbgr # 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+ _dbgr_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+ _dbgr_0x0f380 # 10814 +mr r26, r30 # 10818 +mr r8, r29 # 1081c +bl major_0x12248_0x1e4 # 10820 +beq+ _dbgr_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 dbgr # 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 dbgr # 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 dbgr # 109c4 + +major_0x108fc_0xcc: +stw r14, -0x0b90( r1) # 109c8 +beq+ _dbgr_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 +bl boring # 10a1c +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+ _dbgr_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 dbgr # 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+ _dbgr_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 dbgr # 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 dbgr # 10cac + +NKSetAreaAccess_0x1e4: +stw r14, -0x0b90( r1) # 10cb0 + +# r1 = kdp +b syscall_return_assert_lock_unheld # 10cb4 + + + +/*********************************************************** + + major_0x10cb8 + +************************************************************ + +Xrefs: +createarea +NKSetAreaAccess + +***********************************************************/ + +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 + +***********************************************************/ + +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 + +***********************************************************/ + +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+ _dbgr_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 dbgr # 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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 dbgr # 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+ _dbgr_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+ _dbgr_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 dbgr # 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+ _dbgr_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 + +***********************************************************/ + +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 dbgr # 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+ _dbgr_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 + +***********************************************************/ + +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 dbgr # 114f0 + +major_0x11490_0x64: +stw r16, -0x0ad0( r1) # 114f4 +b syscall_return # 114f8 + + + +/*********************************************************** + + free_list_add_page + +************************************************************ + +Xrefs: +all_world_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+ _dbgr_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 + +***********************************************************/ + +NKGetFreePageCount: /* < outside referer */ +lwz r3, -0x0430( r1) # 11538 +b syscall_return # 1153c + + + +/*********************************************************** + + NKGetUnheldFreePageCount + +************************************************************ + +syscall 101 + +************************************************************ + +Xrefs: +syscall + +***********************************************************/ + +NKGetUnheldFreePageCount: /* < outside referer */ +lwz r3, -0x042c( r1) # 11540 +b syscall_return # 11544 + + + +/*********************************************************** + + NKMapPage + +************************************************************ + +syscall 85 + +************************************************************ + +Xrefs: +syscall + +***********************************************************/ + +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+ _dbgr_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 dbgr # 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 dbgr # 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 + +***********************************************************/ + +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+ _dbgr_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 dbgr # 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 dbgr # 1188c + +NKUnmapPages_0x198: +stw r14, -0x0ad0( r1) # 11890 + +# r1 = kdp +b syscall_return_assert_lock_unheld # 11894 + + + +/*********************************************************** + + NKMakePhysicallyContiguous + +************************************************************ + +syscall 127 + +************************************************************ + +Xrefs: +syscall + +***********************************************************/ + +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+ _dbgr_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 dbgr # 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 dbgr # 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 dbgr # 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 dbgr # 11a24 + +NKMakePhysicallyContiguous_0x190: +stw r16, -0x0ad0( r1) # 11a28 +b major_0x0af60_0xa4 # 11a2c + + + +/*********************************************************** + + NKLockPages + +************************************************************ + +syscall 87 + +************************************************************ + +Xrefs: +syscall + +***********************************************************/ + +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 dbgr # 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+ _dbgr_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 dbgr # 11c6c + +NKUnlockPages_0x114: +stw r16, -0x0ad0( r1) # 11c70 + +# r1 = kdp +b syscall_return_assert_lock_unheld # 11c74 + + + +/*********************************************************** + + NKHoldPages + +************************************************************ + +syscall 89 + +************************************************************ + +Xrefs: +syscall +NKMapPage + +***********************************************************/ + +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 dbgr # 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+ _dbgr_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 + +***********************************************************/ + +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 dbgr # 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 dbgr # 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 dbgr # 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 dbgr # 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 dbgr # 1209c + +major_0x11fac_0xf4: +stw r14, -0x0b90( r1) # 120a0 +b major_0x0af60_0xa4 # 120a4 + + + +/*********************************************************** + + major_0x120a8 + +************************************************************ + +syscall 93 + +************************************************************ + +Xrefs: +syscall + +***********************************************************/ + +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 + +***********************************************************/ + +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+ _dbgr_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 dbgr # 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 + +***********************************************************/ + +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, 0x0f # 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+ _dbgr_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 dbgr # 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+ _dbgr_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 + +***********************************************************/ + +.long 0x60000000 # 12778 +.long 0x60000000 # 1277c + + + +/*********************************************************** + + _dbgr_0x12780 + +************************************************************ + +Xrefs: +boring +major_0x129fc +major_0x12a34 + +***********************************************************/ + +_dbgr_0x12780: /* < outside referer */ +b dbgr # 12780 + + + +/*********************************************************** + + store_some_junk + +************************************************************ + +Xrefs: +all_world_setup + +***********************************************************/ + +store_some_junk: /* < outside referer */ +lwz r8, 0x0630( r1) # 12784 +lwz r8, 0x00a0( r8) # 12788 +lis r9, 0x00 # 1278c +ori r9, r9, 0x7000 # 12790 +subf r9, r9, r8 # 12794 +stw r9, -0x0a9c( r1) # 12798 +lis r9, -0x01 # 1279c +ori r9, r9, 0x9000 # 127a0 +add r9, r9, r1 # 127a4 +stw r9, -0x0aa0( r1) # 127a8 +lis r8, 0x00 # 127ac +ori r8, r8, 0x6458 # 127b0 +add r23, r8, r9 # 127b4 +stw r8, 0x0000( r9) # 127b8 +lis r8, -0x78be # 127bc +ori r8, r8, 0x474e # 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, 0x6672 # 127d8 +ori r8, r8, 0x6565 # 127dc +stw r8, 0x0004( r9) # 127e0 +li r8, 0x00 # 127e4 +stw r8, 0x0000(r23) # 127e8 +lis r8, -0x78bb # 127ec +ori r8, r8, 0x4e44 # 127f0 +stw r8, 0x0004(r23) # 127f4 +addi r8, r1, -0xab0 # 127f8 +stw r9, 0x0008( r8) # 127fc +stw r9, 0x000c( r8) # 12800 +stw r8, 0x0008( r9) # 12804 +stw r8, 0x000c( r9) # 12808 +lis r9, 0x504f # 1280c +ori r9, r9, 0x4f4c # 12810 +stw r9, 0x0004( r8) # 12814 +blr # 12818 + + + +/*********************************************************** + + boring + +************************************************************ + +Xrefs: +all_world_setup +major_0x02980 +major_0x0b3cc +major_0x0b960 +major_0x0c5e0 +major_0x0c778 +major_0x0c830 +major_0x0cb00 +major_0x0ce48 +major_0x0d204 +major_0x0d70c +major_0x0d8a0 +major_0x0da20 +major_0x0db04 +major_0x0e330 +major_0x0ea58 +convert_pmdts_to_areas +NKCreateAddressSpaceSub +major_0x0fb34 +createarea +major_0x10414 +major_0x108fc +say_nanodebugger_activated +major_0x15144 +major_0x151b0 + +***********************************************************/ + +boring: /* < outside referer */ +crclr 4*cr7 + eq # 1281c +b boring_0xc # 12820 + +boring_with_crset: /* < outside referer */ +crset 4*cr7 + eq # 12824 + +boring_0xc: +mflr r17 # 12828 +mfspr r18, 272/*sprg0*/ # 1282c +mr r15, r8 # 12830 +mr r16, r9 # 12834 +addi r8, r1, -0xad0 # 12838 + +# r8 = lock +bl lock # 1283c +mr r8, r15 # 12840 +mr r9, r16 # 12844 +stw r17, -0x0060(r18) # 12848 +stw r8, -0x005c(r18) # 1284c + +boring_0x34: +cmpwi r8, 0x00 # 12850 +cmpwi cr1, r8, 0xfd8 # 12854 +ble+ _dbgr_0x12780 # 12858 +bgt- cr1, boring_0xb4 # 1285c +addi r8, r8, 0x27 # 12860 +rlwinm r8, r8, 0, 0, 26 # 12864 +addi r14, r1, -0xab0 # 12868 +lwz r15, 0x0008(r14) # 1286c + +boring_0x54: +cmpw r14, r15 # 12870 +bne+ boring_0xbc # 12874 +li r8, 0x00 # 12878 +li r9, 0x01 # 1287c +lwz r16, -0x0430( r1) # 12880 +lwz r17, -0x042c( r1) # 12884 +subf. r16, r9, r16 # 12888 +subf r17, r9, r17 # 1288c +blt- major_0x129cc # 12890 +stw r16, -0x0430( r1) # 12894 +stw r17, -0x042c( r1) # 12898 +lwz r8, -0x0448( r1) # 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 boring_0x34 # 128cc + +boring_0xb4: +li r8, 0x00 # 128d0 +b major_0x129cc # 128d4 + +boring_0xbc: +lwz r16, 0x0000(r15) # 128d8 +cmplw r16, r8 # 128dc +lis r20, 0x6672 # 128e0 +bgt- boring_0x120 # 128e4 +beq- boring_0x13c # 128e8 +ori r20, r20, 0x6565 # 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, _dbgr_0x12780 # 12904 +bne- boring_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 boring_0xbc # 12930 + +boring_0x118: +lwz r15, 0x0008(r15) # 12934 +b boring_0x54 # 12938 + +boring_0x120: +subf r16, r8, r16 # 1293c +cmpwi r16, 0x28 # 12940 +blt- boring_0x13c # 12944 +stw r16, 0x0000(r15) # 12948 +add r15, r15, r16 # 1294c +stw r8, 0x0000(r15) # 12950 +b boring_0x14c # 12954 + +boring_0x13c: +lwz r14, 0x000c(r15) # 12958 +lwz r16, 0x0008(r15) # 1295c +stw r16, 0x0008(r14) # 12960 +stw r14, 0x000c(r16) # 12964 + +boring_0x14c: +lis r8, -0x7894 # 12968 +ori r8, r8, 0x6f63 # 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 + +boring_0x174: +stwu r14, 0x0004(r15) # 12990 +cmpw r15, r16 # 12994 +ble+ boring_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 +major_0x0e330 +major_0x0e604 +major_0x0e76c +major_0x0ea58 +convert_pmdts_to_areas +NKCreateAddressSpaceSub +major_0x0f9f8 +major_0x0fb34 +major_0x10320 +major_0x10414 +major_0x104ec + +***********************************************************/ + +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: +boring +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 dbgr # 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+ _dbgr_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, _dbgr_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 +boring + +************************************************************ + +> r1 = kdp +> r8 = anywhere in new page (phys) +> r9 = page_virt + +***********************************************************/ + +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_hexword_spc # 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_hexword_spc # 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, -0x78be # 12b30 +ori r16, r16, 0x474e # 12b34 +stw r16, 0x0004(r17) # 12b38 +addi r15, r17, 0x08 # 12b3c +li r16, 0xfe0 # 12b40 +stw r16, 0x0000(r15) # 12b44 +lis r16, -0x7894 # 12b48 +ori r16, r16, 0x6f63 # 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, -0x78bb # 12b64 +ori r16, r16, 0x4e44 # 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 + + + +/*********************************************************** + + _dbgr_0x12d40 + +************************************************************ + +Xrefs: +say_nanodebugger_activated +major_0x12fa0 +major_0x130f0 + +***********************************************************/ + +_dbgr_0x12d40: /* < outside referer */ +b dbgr # 12d40 + + + +/*********************************************************** + + say_nanodebugger_activated + +************************************************************ + +Xrefs: +all_world_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 +bl boring # 12d9c +mr. r31, r8 # 12da0 +beq+ _dbgr_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 +bl boring # 12dd4 +mr. r31, r8 # 12dd8 +beq+ _dbgr_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 +bl boring # 12e28 +mr. r31, r8 # 12e2c +beq+ _dbgr_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 + +***********************************************************/ + +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 + +***********************************************************/ + +lis r20, major_0x12e88@h # 12fa0 +ori r20, r20, major_0x12e88@l # 12fa4 +li r21, 0x00 # 12fa8 +add r20, r20, r19 # 12fac +bgel+ _dbgr_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: +all_world_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 + +***********************************************************/ + +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 +init_ready_queues +major_0x154e0 + +***********************************************************/ + +.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 crclr_0_ltneg # 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+ _dbgr_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 + +major_0x130f0_0x618: /* < outside referer */ +mr. r17, r8 # 13708 +li r19, 0xfa # 1370c +lwz r9, 0x0f2c( r1) # 13710 +bgt+ major_0x130f0_0x644 # 13714 +blt+ major_0x130f0_0x638 # 13718 +li r8, 0x00 # 1371c +li r9, 0x00 # 13720 +blr # 13724 + +major_0x130f0_0x638: +neg r17, r17 # 13728 +lis r19, 0x03 # 1372c +ori r19, r19, 0xd090 # 13730 + +major_0x130f0_0x644: +divw r19, r9, r19 # 13734 +mullw r9, r19, r17 # 13738 +mulhw r8, r19, r17 # 1373c +srwi r9, r9, 0x02 # 13740 +rlwimi r9, r8, 30, 0, 1 # 13744 +srwi r8, r8, 0x02 # 13748 +blr # 1374c + + + +/*********************************************************** + + bizarre + +************************************************************ + +Xrefs: +NKSetClockStep +NKSetClockDriftCorrection +major_0x0c968 +major_0x0cb8c +major_0x0ced4 +major_0x0d504 +major_0x0d70c +major_0x0d9a8 +major_0x0e330 +say_nanodebugger_activated +major_0x13060 +major_0x142dc +major_0x14548 + +***********************************************************/ + +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 + + + +/*********************************************************** + + _dbgr_0x137c0 + +************************************************************ + +Xrefs: +major_0x13e4c +major_0x13ed8 +major_0x13f78 +major_0x142dc +major_0x14548 +major_0x149d4 + +***********************************************************/ + +_dbgr_0x137c0: /* < outside referer */ +b dbgr # 137c0 + + + +/*********************************************************** + + init_ready_queues + +************************************************************ + +Really just named for its strings. Early boot. RDYQ + +************************************************************ + +Xrefs: +all_world_setup + +************************************************************ + +> r1 = kdp + +***********************************************************/ + +init_ready_queues: /* < outside referer */ +li r16, 0x00 # 137c4 +stw r16, 0x0ecc( r1) # kdp.0xecc # 137c8 +mflr r20 # 137cc +li r8, -0x412 # 137d0 +bl major_0x130f0_0x618 # 137d4 +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_ready_queues_0x2c: +lis r8, 0x5244 # 137f0 +ori r8, r8, 0x5951 # 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_hexword_spc # 1384c +mr r8, r16 # 13850 +bl print_hexword_spc # 13854 +mr r8, r17 # 13858 +bl print_hexword_spc # 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, 0x03 # 13874 +rlwimi r16, r17, 3, 29, 31 # 13878 +slwi r17, r17, 0x03 # 1387c +addi r23, r23, 0x01 # 13880 +cmpwi r23, 0x04 # 13884 +addi r9, r9, 0x20 # 13888 +blt+ init_ready_queues_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_0x02980 +major_0x03200 +save_all_registers +trap_vector +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 +_int_handler_kind_01 +_int_handler_kind_03 +_int_handler_kind_05 +_int_handler_kind_02 +_int_handler_kind_07 +_int_handler_kind_10 +_int_handler_kind_04 +_int_handler_kind_06 +_int_handler_kind_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, 0x1e0 # 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: +all_world_setup +major_0x02980 +major_0x03200 +major_0x04240 +major_0x04300 +handle_ResetSystem_trap +syscall_return +major_0x142dc +major_0x154e0 + +************************************************************ + +> 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, 0x1e0 # 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 + +***********************************************************/ + +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, 0x280 # 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, 0xa0 # 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, 0xf0 # 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, 0x140 # 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, 0x190 # 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, 0x1e0 # 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 + +***********************************************************/ + +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, 0xa0 # 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, 0xf0 # 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, 0x140 # 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, 0x190 # 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, 0x1e0 # 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_0x02980 +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 +major_0x154e0 + +***********************************************************/ + +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, _dbgr_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+ _dbgr_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: +all_world_setup +major_0x02980 +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 +major_0x154e0 + +***********************************************************/ + +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+ _dbgr_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: +all_world_setup +SIGP +major_0x04a20 +major_0x14548 +major_0x14bcc + +***********************************************************/ + +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+ _dbgr_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: +major_0x02980 + +***********************************************************/ + +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_0x02980 +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+ _dbgr_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 dbgr # 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: +handle_ResetSystem_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 + +***********************************************************/ + +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, _dbgr_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, _dbgr_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, 0x1a4 # 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 dbgr # 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, 0x1f # 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: +all_world_setup +NKStopScheduling +major_0x0c8b4 +major_0x0ccf4 +major_0x0d06c +major_0x0d35c +major_0x0e548 +major_0x130f0 +major_0x142dc +major_0x14bcc +major_0x154e0 + +***********************************************************/ + +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+ _dbgr_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, 0x0a # 14a24 +rlwimi r20, r19, 22, 0, 9 # 14a28 +srwi r19, r19, 0x0a # 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 + + + +/*********************************************************** + + crclr_0_ltneg + +************************************************************ + +Xrefs: +major_0x130f0 + +***********************************************************/ + +crclr_0_ltneg: /* < outside referer */ +crclr 4*cr0 + lt # 14a90 +blr # 14a94 + + + +/*********************************************************** + + major_0x14a98 + +************************************************************ + +Xrefs: +major_0x03200 +major_0x142dc + +***********************************************************/ + +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: +all_world_setup +major_0x02980 +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 +major_0x154e0 + +***********************************************************/ + +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, 0x10 # 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_hexshort # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 14cc4 +bl 1f # 14cc8 +.ascii "^n" # 14ccc +.short 0 # 14cce +.align 2 # 14cd0 +1: mflr r8 # 14cd0 +bl print_string # 14cd4 +bl major_0x055e0 # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 14edc +mr r8, r10 # 14ee0 +bl print_hexword_spc # 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 dbgr # 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 + + + +/*********************************************************** + + _dbgr_0x15140 + +************************************************************ + +Xrefs: +major_0x15144 + +***********************************************************/ + +_dbgr_0x15140: /* < outside referer */ +b dbgr # 15140 + + + +/*********************************************************** + + major_0x15144 + +************************************************************ + +Xrefs: +all_world_setup + +***********************************************************/ + +major_0x15144: /* < outside referer */ +mflr r23 # 15144 +li r8, 0x208 # 15148 +bl boring # 1514c +mr. r22, r8 # 15150 +stw r8, -0x0a98( r1) # 15154 +beq+ _dbgr_0x15140 # 15158 +li r9, 0x00 # 1515c +stw r9, 0x0efc( r1) # 15160 +sth r9, 0x0000(r22) # 15164 +sth r9, 0x0002(r22) # 15168 +lis r9, 0x494e # 1516c +ori r9, r9, 0x4458 # 15170 +stw r9, 0x0004(r22) # 15174 +li r8, 0xfd8 # 15178 +bl boring # 1517c +cmpwi r8, 0x00 # 15180 +stw r8, 0x0008(r22) # 15184 +beq+ _dbgr_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, 0x4944 # 151a0 +ori r9, r9, 0x7320 # 151a4 +stw r9, 0x0004( r8) # 151a8 +blr # 151ac + + + +/*********************************************************** + + major_0x151b0 + +************************************************************ + +Xrefs: +all_world_setup +major_0x0b3cc +major_0x0b720 +major_0x0b960 +major_0x0c5e0 +major_0x0cb00 +major_0x0ce48 +major_0x0d204 +major_0x0d70c +major_0x0da20 +major_0x0e330 +NKCreateAddressSpaceSub +createarea + +***********************************************************/ + +major_0x151b0: /* < outside referer */ +lwz r18, -0x0a98( r1) # 151b0 +lhz r19, 0x0000(r18) # 151b4 +mr r21, r19 # 151b8 + +major_0x151b0_0xc: +lwz r18, -0x0a98( r1) # 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, 0x03 # 151d0 +addi r20, r18, 0x08 # 151d4 +cmpwi r18, 0x00 # 151d8 +add r22, r22, r20 # 151dc +bne- major_0x151b0_0x48 # 151e0 +li r19, 0x00 # 151e4 +b major_0x151b0_0xc # 151e8 + +major_0x151b0_0x3c: +add r20, r20, r19 # 151ec +cmpw r20, r21 # 151f0 +beq- major_0x151b0_0x70 # 151f4 + +major_0x151b0_0x48: +lbz r23, 0x0000(r22) # 151f8 +cmpwi r23, 0x00 # 151fc +beq- major_0x151b0_0xf0 # 15200 +addi r19, r19, 0x01 # 15204 +cmpwi cr1, r19, 0x1fa # 15208 +addi r22, r22, 0x08 # 1520c +lhz r20, 0x0000(r18) # 15210 +blt+ cr1, major_0x151b0_0x3c # 15214 +addi r19, r20, 0x200 # 15218 +b major_0x151b0_0xc # 1521c + +major_0x151b0_0x70: +lwz r18, -0x0a98( r1) # 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 +bl boring # 15248 +mr. r18, r8 # 1524c +mtlr r23 # 15250 +li r8, 0x00 # 15254 +beqlr- # 15258 +lwz r17, -0x0a98( r1) # 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 + +major_0x151b0_0xf0: +stw r8, 0x0004(r22) # 152a0 +stb r9, 0x0000(r22) # 152a4 +lwz r9, 0x0efc( r1) # 152a8 +addi r9, r9, 0x01 # 152ac +stw r9, 0x0efc( r1) # 152b0 +lhz r20, 0x0000(r18) # 152b4 +lhz r8, 0x0002(r22) # 152b8 +lwz r21, -0x0a98( r1) # 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 + +***********************************************************/ + +.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 +major_0x0e330 +major_0x0e76c +NKCreateAddressSpaceSub +major_0x0f9f8 +major_0x10320 +major_0x104ec + +***********************************************************/ + +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, 0x03 # 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_0x02980 +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 +major_0x154e0 +dbgr + +************************************************************ + +> 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 + +***********************************************************/ + +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, 0x03 # 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 +dbgr + +***********************************************************/ + +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, 0x03 # 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 + +***********************************************************/ + +.long 0x48000010 # 15490 +.long 0x60000000 # 15494 +.long 0x60000000 # 15498 +.long 0x60000000 # 1549c + + + +/*********************************************************** + + choose_int_handler_kind + +************************************************************ + +ConfigInfo has a byte at 0x40, which on NewWorld machines, equals 6 and is inherited from the ConfigInfo template at ROM image offset 0x30d000. That byte is used to choose an entry from this table, to become the "interrupt handler". + +************************************************************ + +Xrefs: +replace_old_kernel +new_world_setup + +************************************************************ + +> r3 = ConfigInfo + +< r12 = clobbered +< r7 = interrupt handler address + +***********************************************************/ + +choose_int_handler_kind: /* < outside referer */ +mflr r12 # 154a0 +bl 1f # 154a4 + +int_handler_tbl: +.short 0 # 154a8 +.short _int_handler_kind_01 - int_handler_tbl # 154aa +.short _int_handler_kind_02 - int_handler_tbl # 154ac +.short _int_handler_kind_03 - int_handler_tbl # 154ae +.short _int_handler_kind_04 - int_handler_tbl # 154b0 +.short _int_handler_kind_05 - int_handler_tbl # 154b2 +.short _int_handler_kind_06 - int_handler_tbl # 154b4 +.short _int_handler_kind_07 - int_handler_tbl # 154b6 +.short _int_handler_kind_08 - int_handler_tbl # 154b8 +.short 0 # 154ba +.short _int_handler_kind_10 - int_handler_tbl # 154bc +.short 0 # 154be +.align 2 # 154c0 +1: mflr r7 # 154c0 +mtlr r12 # 154c4 +lbz r12, 0x0098( r3) # ConfigInfo.u8_int_handler_kind +slwi r12, r12, 0x01 # 154cc +lhzx r12, r7, r12 # 154d0 +add r7, r7, r12 # 154d4 +blr # 154d8 + + + +/*********************************************************** + + major_0x154dc + +***********************************************************/ + +.long 0x60000000 # 154dc + + + +/*********************************************************** + + major_0x154e0 + +************************************************************ + +Xrefs: +NKPropogateExternalInterrupt +_int_handler_kind_01 +_int_handler_kind_03 +_int_handler_kind_05 +_int_handler_kind_02 +_int_handler_kind_07 +_int_handler_kind_10 +_int_handler_kind_04 +_int_handler_kind_06 +_int_handler_kind_08 + +***********************************************************/ + +major_0x154e0: /* < outside referer */ +mtspr 275/*sprg3*/, r30 # 154e0 +lwz r23, 0x067c( r1) # 154e4 +lwz r27, -0x0428( r1) # 154e8 + +major_0x154e0_0xc: /* < outside referer */ +cmpwi cr7, r28, 0x00 # 154ec +li r31, 0x00 # 154f0 +blt- cr7, major_0x154e0_0x50 # 154f4 +beq- cr7, major_0x154e0_0x24 # 154f8 +ori r28, r28, 0x8000 # 154fc +lwz r31, 0x0674( r1) # 15500 + +major_0x154e0_0x24: +andis. r8, r11, 0x02 # 15504 +cmpwi cr1, r27, 0x00 # 15508 +lwz r29, 0x0678( r1) # 1550c +bne- major_0x154e0_0x38 # 15510 +bne- cr1, major_0x154e0_0x78 # 15514 + +major_0x154e0_0x38: +rlwinm. r8, r7, 0, 10, 10 # 15518 +beq- major_0x154e0_0x14c # 1551c +sth r28, 0x0000(r23) # 15520 +or r13, r13, r31 # 15524 +bgt- cr7, major_0x154e0_0x50 # 15528 +and r13, r13, r29 # 1552c + +major_0x154e0_0x50: +sync # 15530 +lwz r8, -0x0b70( r1) # 15534 +cmpwi cr1, r8, 0x00 # 15538 +li r8, 0x00 # 1553c +bne+ cr1, major_0x154e0_0x6c # 15540 +mflr r8 # 15544 +bl dbgr # 15548 + +major_0x154e0_0x6c: +stw r8, -0x0b70( r1) # 1554c +bl restore_registers_from_r14_0x28 # 15550 +b major_0x02980_0x330 # 15554 + +major_0x154e0_0x78: +sync # 15558 +lwz r8, -0x0b70( r1) # 1555c +cmpwi cr1, r8, 0x00 # 15560 +li r8, 0x00 # 15564 +bne+ cr1, major_0x154e0_0x94 # 15568 +mflr r8 # 1556c +bl dbgr # 15570 + +major_0x154e0_0x94: +stw r8, -0x0b70( r1) # 15574 +bl NKPropogateExternalInterrupt_0x54 # 15578 +mr r8, r8 # 1557c +mr r9, r9 # 15580 +addi r8, r1, -0xb50 # 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- major_0x154e0_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) # 155bc +cmpwi cr1, r8, 0x00 # 155c0 +li r8, 0x00 # 155c4 +bne+ cr1, major_0x154e0_0xf4 # 155c8 +mflr r8 # 155cc +bl dbgr # 155d0 + +major_0x154e0_0xf4: +stw r8, -0x0b50( r1) # 155d4 + +# r6 = ewa +bl restore_registers_from_r14 # 155d8 +b major_0x02980_0x330 # 155dc + +major_0x154e0_0x100: +li r27, 0x00 # 155e0 +lwz r23, 0x067c( r1) # 155e4 +stw r27, -0x0428( r1) # 155e8 +sync # 155ec +lwz r8, -0x0b50( r1) # 155f0 +cmpwi cr1, r8, 0x00 # 155f4 +li r8, 0x00 # 155f8 +bne+ cr1, major_0x154e0_0x128 # 155fc +mflr r8 # 15600 +bl dbgr # 15604 + +major_0x154e0_0x128: +stw r8, -0x0b50( r1) # 15608 +bl NKPropogateExternalInterrupt_0x70 # 1560c +mr r8, r8 # 15610 +mr r9, r9 # 15614 +addi r8, r1, -0xb70 # 15618 + +# r8 = lock +bl lock # 1561c +mr r8, r8 # 15620 +mr r9, r9 # 15624 +b major_0x154e0_0xc # 15628 + +major_0x154e0_0x14c: +sync # 1562c +lwz r8, -0x0b70( r1) # 15630 +cmpwi cr1, r8, 0x00 # 15634 +li r8, 0x00 # 15638 +bne+ cr1, major_0x154e0_0x168 # 1563c +mflr r8 # 15640 +bl dbgr # 15644 + +major_0x154e0_0x168: +stw r8, -0x0b70( r1) # 15648 +bl NKPropogateExternalInterrupt_0x54 # 1564c +mr r16, r8 # 15650 +mr r17, r9 # 15654 +addi r8, r1, -0xb50 # 15658 + +# r8 = lock +bl lock # 1565c +mr r8, r16 # 15660 +mr r9, r17 # 15664 +lwz r30, -0x0440( r1) # 15668 +or r31, r31, r30 # 1566c +stw r31, -0x0440( r1) # 15670 +sth r28, -0x043c( r1) # 15674 +lwz r31, -0x08f0( r1) # 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- major_0x154e0_0x1dc # 15698 +lhz r17, -0x0116(r30) # 1569c +cmpw cr1, r16, r17 # 156a0 +rlwinm. r8, r28, 0, 26, 26 # 156a4 +beq- cr1, major_0x154e0_0x1d0 # 156a8 +bne- major_0x154e0_0x230 # 156ac + +major_0x154e0_0x1d0: +mr r8, r31 # 156b0 +bl major_0x13e4c # 156b4 +b major_0x154e0_0x218 # 156b8 + +major_0x154e0_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- major_0x154e0_0x210 # 156e4 +addi r8, r31, 0x20 # 156e8 +bl major_0x130f0_0x5d8 # 156ec + +major_0x154e0_0x210: +lwz r16, 0x0e80( r1) # 156f0 +stw r16, -0x08e4( r1) # 156f4 + +major_0x154e0_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 + +major_0x154e0_0x230: +mr r8, r31 # 15710 +bl major_0x14af8 # 15714 +sync # 15718 +lwz r16, -0x0b50( r1) # 1571c +cmpwi cr1, r16, 0x00 # 15720 +li r16, 0x00 # 15724 +bne+ cr1, major_0x154e0_0x254 # 15728 +mflr r16 # 1572c +bl dbgr # 15730 + +major_0x154e0_0x254: +stw r16, -0x0b50( r1) # 15734 + +# r6 = ewa +bl restore_registers_from_r14 # 15738 +b major_0x02980_0x330 # 1573c + + + +/*********************************************************** + + NKPropogateExternalInterrupt + +************************************************************ + +syscall 122 + +************************************************************ + +Xrefs: +syscall +major_0x154e0 + +***********************************************************/ + +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 # 15758 + +# r8 = lock +bl lock # 1575c +mr r8, r8 # 15760 +mr r9, r9 # 15764 +lwz r23, 0x067c( r1) # 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 NKPropogateExternalInterrupt_0x70 # 15784 +b major_0x154e0_0xc # 15788 + +NKPropogateExternalInterrupt_0x4c: +b syscall_return_kMPInsufficientResourcesErr # 1578c + +NKPropogateExternalInterrupt_0x50: +b syscall_return_paramErr # 15790 + +NKPropogateExternalInterrupt_0x54: /* < 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 + +NKPropogateExternalInterrupt_0x70: /* < 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 + +***********************************************************/ + +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 + + + +/*********************************************************** + + _int_handler_kind_01 + +************************************************************ + +Xrefs: +int_handler + +************************************************************ + +> r1 = kdp + +***********************************************************/ + +_int_handler_kind_01: /* < outside referer */ +mr r8, r8 # 15840 +mr r9, r9 # 15844 +addi r8, r1, -0xb70 # kdp.interrupt_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- _int_handler_kind_01_0x38 # 15868 +lwz r21, 0x0e80( r1) # kdp.0xe80 # 1586c +addi r21, r21, 0x01 # 15870 +stw r21, 0x0e80( r1) # kdp.0xe80 # 15874 + +_int_handler_kind_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 +b major_0x154e0 # 158e0 + + + +/*********************************************************** + + major_0x158e4 + +***********************************************************/ + +.long 0x4800001c # 158e4 +.long 0x60000000 # 158e8 +.long 0x60000000 # 158ec +.long 0x60000000 # 158f0 +.long 0x60000000 # 158f4 +.long 0x60000000 # 158f8 +.long 0x60000000 # 158fc + + + +/*********************************************************** + + _int_handler_kind_03 + +************************************************************ + +Xrefs: +int_handler + +************************************************************ + +> r1 = kdp + +***********************************************************/ + +_int_handler_kind_03: /* < outside referer */ +mr r8, r8 # 15900 +mr r9, r9 # 15904 +addi r8, r1, -0xb70 # kdp.interrupt_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- _int_handler_kind_03_0x38 # 15928 +lwz r21, 0x0e80( r1) # kdp.0xe80 # 1592c +addi r21, r21, 0x01 # 15930 +stw r21, 0x0e80( r1) # kdp.0xe80 # 15934 + +_int_handler_kind_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 +b major_0x154e0 # 159a4 + + + +/*********************************************************** + + major_0x159a8 + +***********************************************************/ + +.long 0x48000018 # 159a8 +.long 0x60000000 # 159ac +.long 0x60000000 # 159b0 +.long 0x60000000 # 159b4 +.long 0x60000000 # 159b8 +.long 0x60000000 # 159bc + + + +/*********************************************************** + + _int_handler_kind_05 + +************************************************************ + +Xrefs: +int_handler + +************************************************************ + +> r1 = kdp + +***********************************************************/ + +_int_handler_kind_05: /* < outside referer */ +mr r8, r8 # 159c0 +mr r9, r9 # 159c4 +addi r8, r1, -0xb70 # kdp.interrupt_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- _int_handler_kind_05_0x38 # 159e8 +lwz r21, 0x0e80( r1) # kdp.0xe80 # 159ec +addi r21, r21, 0x01 # 159f0 +stw r21, 0x0e80( r1) # kdp.0xe80 # 159f4 + +_int_handler_kind_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- _int_handler_kind_05_0x104 # 15a90 +rlwinm r28, r23, 0, 15, 16 # 15a94 +rlwimi. r28, r23, 0, 22, 31 # 15a98 +li r28, 0x04 # 15a9c +bne- _int_handler_kind_05_0x104 # 15aa0 +andis. r28, r23, 0x5fca # 15aa4 +rlwimi. r28, r23, 0, 17, 20 # 15aa8 +li r28, 0x02 # 15aac +bne- _int_handler_kind_05_0x104 # 15ab0 +andis. r28, r23, 0x04 # 15ab4 +li r28, 0x01 # 15ab8 +bne- _int_handler_kind_05_0x104 # 15abc +li r28, 0x00 # 15ac0 + +_int_handler_kind_05_0x104: +mtsrin r21, r22 # 15ac4 +isync # 15ac8 +b major_0x154e0 # 15acc + + + +/*********************************************************** + + major_0x15ad0 + +***********************************************************/ + +.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 + + + +/*********************************************************** + + _int_handler_kind_02 + +************************************************************ + +Xrefs: +int_handler + +************************************************************ + +> r1 = kdp + +***********************************************************/ + +_int_handler_kind_02: /* < outside referer */ +mr r8, r8 # 15b00 +mr r9, r9 # 15b04 +addi r8, r1, -0xb70 # kdp.interrupt_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- _int_handler_kind_02_0x38 # 15b28 +lwz r21, 0x0e80( r1) # kdp.0xe80 # 15b2c +addi r21, r21, 0x01 # 15b30 +stw r21, 0x0e80( r1) # kdp.0xe80 # 15b34 + +_int_handler_kind_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- _int_handler_kind_02_0xd8 # 15ba4 +rlwinm r28, r23, 0, 15, 16 # 15ba8 +rlwimi. r28, r23, 0, 21, 31 # 15bac +li r28, 0x04 # 15bb0 +bne- _int_handler_kind_02_0xd8 # 15bb4 +rlwinm. r28, r23, 0, 17, 17 # 15bb8 +li r28, 0x03 # 15bbc +bne- _int_handler_kind_02_0xd8 # 15bc0 +andis. r28, r23, 0x7fea # 15bc4 +rlwimi. r28, r23, 0, 18, 19 # 15bc8 +li r28, 0x02 # 15bcc +bne- _int_handler_kind_02_0xd8 # 15bd0 +rlwinm. r28, r23, 14, 31, 31 # 15bd4 + +_int_handler_kind_02_0xd8: +mtsrin r21, r22 # 15bd8 +isync # 15bdc +b major_0x154e0 # 15be0 + + + +/*********************************************************** + + major_0x15be4 + +***********************************************************/ + +.long 0x4800001c # 15be4 +.long 0x60000000 # 15be8 +.long 0x60000000 # 15bec +.long 0x60000000 # 15bf0 +.long 0x60000000 # 15bf4 +.long 0x60000000 # 15bf8 +.long 0x60000000 # 15bfc + + + +/*********************************************************** + + _int_handler_kind_07 + +************************************************************ + +Xrefs: +int_handler + +************************************************************ + +> r1 = kdp + +***********************************************************/ + +_int_handler_kind_07: /* < outside referer */ +mr r8, r8 # 15c00 +mr r9, r9 # 15c04 +addi r8, r1, -0xb70 # kdp.interrupt_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- _int_handler_kind_07_0x38 # 15c28 +lwz r21, 0x0e80( r1) # kdp.0xe80 # 15c2c +addi r21, r21, 0x01 # 15c30 +stw r21, 0x0e80( r1) # kdp.0xe80 # 15c34 + +_int_handler_kind_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- _int_handler_kind_07_0x118 # 15ccc +rlwinm r28, r23, 0, 15, 16 # 15cd0 +rlwimi. r28, r23, 0, 22, 31 # 15cd4 +li r28, 0x04 # 15cd8 +bne- _int_handler_kind_07_0x118 # 15cdc +clrlwi. r28, r24, 0x1e # 15ce0 +li r28, 0x04 # 15ce4 +bne- _int_handler_kind_07_0x118 # 15ce8 +rlwinm. r28, r24, 0, 21, 21 # 15cec +li r28, 0x03 # 15cf0 +bne- _int_handler_kind_07_0x118 # 15cf4 +andis. r28, r23, 0x3fea # 15cf8 +rlwimi. r28, r23, 0, 17, 20 # 15cfc +li r28, 0x02 # 15d00 +bne- _int_handler_kind_07_0x118 # 15d04 +rlwinm. r28, r24, 0, 20, 20 # 15d08 +li r28, 0x01 # 15d0c +bne- _int_handler_kind_07_0x118 # 15d10 +rlwinm. r28, r23, 14, 31, 31 # 15d14 + +_int_handler_kind_07_0x118: +mtsrin r21, r22 # 15d18 +isync # 15d1c +b major_0x154e0 # 15d20 + + + +/*********************************************************** + + major_0x15d24 + +***********************************************************/ + +.long 0x4800001c # 15d24 +.long 0x60000000 # 15d28 +.long 0x60000000 # 15d2c +.long 0x60000000 # 15d30 +.long 0x60000000 # 15d34 +.long 0x60000000 # 15d38 +.long 0x60000000 # 15d3c + + + +/*********************************************************** + + _int_handler_kind_10 + +************************************************************ + +Xrefs: +int_handler + +************************************************************ + +> r1 = kdp + +***********************************************************/ + +_int_handler_kind_10: /* < outside referer */ +mr r8, r8 # 15d40 +mr r9, r9 # 15d44 +addi r8, r1, -0xb70 # kdp.interrupt_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- _int_handler_kind_10_0x38 # 15d68 +lwz r21, 0x0e80( r1) # kdp.0xe80 # 15d6c +addi r21, r21, 0x01 # 15d70 +stw r21, 0x0e80( r1) # kdp.0xe80 # 15d74 + +_int_handler_kind_10_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 + +_int_handler_kind_10_0xb0: +lwz r26, 0x001c(r25) # 15df0 +and. r26, r24, r26 # 15df4 +bne- _int_handler_kind_10_0xd4 # 15df8 +lwzu r26, -0x0004(r25) # 15dfc +and. r26, r23, r26 # 15e00 +bne- _int_handler_kind_10_0xd4 # 15e04 +addi r28, r28, -0x01 # 15e08 +cmplwi r28, 0x00 # 15e0c +bne+ _int_handler_kind_10_0xb0 # 15e10 + +_int_handler_kind_10_0xd4: +mtsrin r21, r22 # 15e14 +isync # 15e18 +b major_0x154e0 # 15e1c + + + +/*********************************************************** + + major_0x15e20 + +***********************************************************/ + +.long 0x48000020 # 15e20 +.long 0x60000000 # 15e24 +.long 0x60000000 # 15e28 +.long 0x60000000 # 15e2c +.long 0x60000000 # 15e30 +.long 0x60000000 # 15e34 +.long 0x60000000 # 15e38 +.long 0x60000000 # 15e3c + + + +/*********************************************************** + + _int_handler_kind_04 + +************************************************************ + +Xrefs: +int_handler + +************************************************************ + +> r1 = kdp + +***********************************************************/ + +_int_handler_kind_04: /* < outside referer */ +mr r8, r8 # 15e40 +mr r9, r9 # 15e44 +addi r8, r1, -0xb70 # kdp.interrupt_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- _int_handler_kind_04_0x38 # 15e68 +lwz r21, 0x0e80( r1) # kdp.0xe80 # 15e6c +addi r21, r21, 0x01 # 15e70 +stw r21, 0x0e80( r1) # kdp.0xe80 # 15e74 + +_int_handler_kind_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 +b major_0x154e0 # 15eec + + + +/*********************************************************** + + major_0x15ef0 + +***********************************************************/ + +.long 0x48000010 # 15ef0 +.long 0x60000000 # 15ef4 +.long 0x60000000 # 15ef8 +.long 0x60000000 # 15efc + + + +/*********************************************************** + + _int_handler_kind_06 + +************************************************************ + +Used on all NewWorld? Hardcoded in ROM template. + +************************************************************ + +Xrefs: +int_handler + +************************************************************ + +> r1 = kdp + +***********************************************************/ + +_int_handler_kind_06: /* < outside referer */ +mr r8, r8 # 15f00 +mr r9, r9 # 15f04 +addi r8, r1, -0xb70 # kdp.interrupt_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- _int_handler_kind_06_0x38 # 15f28 +lwz r21, 0x0e80( r1) # kdp.0xe80 # 15f2c +addi r21, r21, 0x01 # 15f30 +stw r21, 0x0e80( r1) # kdp.0xe80 # 15f34 + +_int_handler_kind_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, _int_handler_kind_06_0x23c # 15f74 +beq- _int_handler_kind_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, _int_handler_kind_06_0xa8 # 15f90 +addi r27, r27, -0x01 # 15f94 +ble- _int_handler_kind_06_0x1fc # 15f98 +lbzx r26, r26, r27 # 15f9c +lbz r28, 0x3f00(r26) # 15fa0 +b _int_handler_kind_06_0x1fc # 15fa4 + +_int_handler_kind_06_0xa8: +cmplwi r27, 0x01 # 15fa8 +addi r27, r27, -0x01 # 15fac +ble- _int_handler_kind_06_0x1fc # 15fb0 +add r26, r26, r27 # 15fb4 +addi r27, r20, 0xf93 # 15fb8 +lbz r24, 0x0000(r26) # 15fbc + +_int_handler_kind_06_0xc0: +lbzu r28, -0x0001(r27) # 15fc0 +cmpw r24, r28 # 15fc4 +cmpwi cr1, r28, 0xfe # 15fc8 +beq- _int_handler_kind_06_0xdc # 15fcc +bne+ cr1, _int_handler_kind_06_0xc0 # 15fd0 +li r28, -0x01 # 15fd4 +b _int_handler_kind_06_0x1fc # 15fd8 + +_int_handler_kind_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+ _int_handler_kind_06_0x148 # 16040 +lbz r28, 0x3f00(r26) # 16044 + +_int_handler_kind_06_0x148: +sth r27, 0x0910( r1) # kdp.0x910 # 16048 +b _int_handler_kind_06_0x1fc # 1604c + +_int_handler_kind_06_0x150: +lhz r27, 0x0f88(r20) # 16050 +ori r20, r23, 0x10 # 16054 +lis r26, 0x02 # 16058 +ori r26, r26, 0xa0 # 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- _int_handler_kind_06_0x208 # 1607c +bge- cr1, _int_handler_kind_06_0x218 # 16080 +cmplw r26, r27 # 16084 +lis r27, 0x02 # 16088 +ori r27, r27, 0xb0 # 1608c +bne+ _int_handler_kind_06_0x198 # 16090 +stwx r29, r22, r27 # 16094 + +_int_handler_kind_06_0x198: +mtmsr r23 # 16098 +isync # 1609c +lwz r20, -0x0020( r1) # kdp.irp # 160a0 +lbz r28, 0x3f00(r26) # 160a4 +cmpwi r28, 0x07 # 160a8 +bne+ _int_handler_kind_06_0x1b8 # 160ac +stb r28, 0x0f93(r20) # 160b0 +b _int_handler_kind_06_0x1fc # 160b4 + +_int_handler_kind_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 + +_int_handler_kind_06_0x1fc: +mtsrin r21, r22 # 160fc +isync # 16100 +b major_0x154e0 # 16104 + +_int_handler_kind_06_0x208: +mtmsr r23 # 16108 +isync # 1610c +li r28, -0x01 # 16110 +b _int_handler_kind_06_0x1fc # 16114 + +_int_handler_kind_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 _int_handler_kind_06_0x1fc # 16138 + +_int_handler_kind_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 _int_handler_kind_06_0x1fc # 1615c + + + +/*********************************************************** + + major_0x16160 + +***********************************************************/ + +.long 0x48000020 # 16160 +.long 0x60000000 # 16164 +.long 0x60000000 # 16168 +.long 0x60000000 # 1616c +.long 0x60000000 # 16170 +.long 0x60000000 # 16174 +.long 0x60000000 # 16178 +.long 0x60000000 # 1617c + + + +/*********************************************************** + + _int_handler_kind_08 + +************************************************************ + +Xrefs: +int_handler + +************************************************************ + +> r1 = kdp + +***********************************************************/ + +_int_handler_kind_08: /* < outside referer */ +mr r8, r8 # 16180 +mr r9, r9 # 16184 +addi r8, r1, -0xb70 # kdp.interrupt_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- _int_handler_kind_08_0x38 # 161a8 +lwz r21, 0x0e80( r1) # kdp.0xe80 # 161ac +addi r21, r21, 0x01 # 161b0 +stw r21, 0x0e80( r1) # kdp.0xe80 # 161b4 + +_int_handler_kind_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, _int_handler_kind_08_0x23c # 161f4 +beq- _int_handler_kind_08_0x170 # 161f8 +cmplwi r27, 0x01 # 161fc +ble- _int_handler_kind_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+ _int_handler_kind_08_0xac # 16220 +addi r27, r27, 0x04 # 16224 +addi r24, r24, -0x20 # 16228 + +_int_handler_kind_08_0xac: +lwz r27, 0x0000(r27) # 1622c +lis r28, -0x8000 # 16230 +srw r28, r28, r24 # 16234 +and. r27, r27, r28 # 16238 +bne- _int_handler_kind_08_0xc8 # 1623c +li r28, -0x01 # 16240 +b _int_handler_kind_08_0x1f8 # 16244 + +_int_handler_kind_08_0xc8: +addi r27, r20, 0xec4 # 16248 +cmpwi r29, 0x20 # 1624c +blt+ _int_handler_kind_08_0xd8 # 16250 +addi r27, r27, 0x04 # 16254 + +_int_handler_kind_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+ _int_handler_kind_08_0xf4 # 1626c +addi r27, r27, 0x04 # 16270 + +_int_handler_kind_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- _int_handler_kind_08_0x114 # 1628c +b _int_handler_kind_08_0x118 # 16290 + +_int_handler_kind_08_0x114: +li r26, 0x800 # 16294 + +_int_handler_kind_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- _int_handler_kind_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 + +_int_handler_kind_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 _int_handler_kind_08_0x1f8 # 162ec + +_int_handler_kind_08_0x170: +ori r27, r23, 0x10 # 162f0 +lis r26, 0x02 # 162f4 +ori r26, r26, 0xa0 # 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- _int_handler_kind_08_0x204 # 1631c +bge- cr1, _int_handler_kind_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+ _int_handler_kind_08_0x1e4 # 16358 +addi r27, r27, 0x04 # 1635c +addi r26, r26, -0x20 # 16360 + +_int_handler_kind_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 + +_int_handler_kind_08_0x1f8: +mtsrin r21, r22 # 16378 +isync # 1637c +b major_0x154e0 # 16380 + +_int_handler_kind_08_0x204: +mtmsr r23 # 16384 +isync # 16388 +li r28, -0x01 # 1638c +b _int_handler_kind_08_0x1f8 # 16390 + +_int_handler_kind_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 _int_handler_kind_08_0x1f8 # 163b8 + +_int_handler_kind_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 _int_handler_kind_08_0x1f8 # 163d8 + + + +/*********************************************************** + + major_0x163dc + +***********************************************************/ + +.long 0x60000000 # 163dc + + + +/*********************************************************** + + print + +************************************************************ + +Xrefs: +replace_old_kernel +new_world_setup +all_world_setup +fail +lock +spinlock_what +major_0x02980 +major_0x035a0 +major_0x03940 +major_0x04300 +trap_vector +handle_ResetSystem_trap +major_0x04c20 +major_0x08794 +NKRegisterCpuPlugin +major_0x0bb20 +major_0x0bc2c +major_0x0bccc +NKxprintf +major_0x0beac +major_0x0bed8 +major_0x0c070 +NKSetClockStep +NKSetClockDriftCorrection +convert_pmdts_to_areas +NKCreateAddressSpaceSub +createarea +major_0x10320 +major_0x12248 +poolextend +say_nanodebugger_activated +say_starting_timeslicing +init_ready_queues +major_0x14bcc +dbgr +print_xpt_info +print_sprgs +print_sprs +print_segment_registers +print_gprs +print_memory +print_memory_logical + +***********************************************************/ + +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_0x5c # 16424 +crmove r30, r2 # 16428 +beq- print_0x5c # 1642c +mfmsr r31 # 16430 +bl involves_srrs_pvr_bat_msr # 16434 +bl lots_of_eieios # 16438 + +print_0x5c: +addi r8, r8, -0x01 # 1643c + +print_0x60: +bl r31_to_MSR_after_busywait_2r28_bit3_withDRforced +lbzu r29, 0x0001( r8) # 16444 +cmpwi r29, 0x00 # 16448 +beq- print_0x140 # 1644c +cmpwi r29, 0x0a # 16450 +beq- print_0xe8 # 16454 +cmpwi r29, 0x0d # 16458 +beq- print_0xe8 # 1645c +cmpwi r29, 0x5c # 16460 +beq- print_0x90 # 16464 +cmpwi r29, 0x5e # 16468 +bne- print_0xbc # 1646c + +print_0x90: +lbzu r29, 0x0001( r8) # 16470 +cmpwi r29, 0x6e # 16474 +beq- print_0xe8 # 16478 +cmpwi r29, 0x72 # 1647c +beq- print_0xe8 # 16480 +cmpwi r29, 0x62 # 16484 +bne- print_0xb4 # 16488 +li r29, 0x07 # 1648c +b print_0xbc # 16490 + +print_0xb4: +lbzu r29, -0x0001( r8) # 16494 +addi r8, r8, 0x01 # 16498 + +print_0xbc: +mr r24, r29 # 1649c +bl major_0x18a74 # 164a0 +beq- cr7, print_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_0xe4: +b print_0x60 # 164c4 + +print_0xe8: +li r29, 0x0d # 164c8 +bl major_0x18a74 # 164cc +li r29, 0x0a # 164d0 +bl major_0x18a74 # 164d4 +bl major_0x18a98 # 164d8 +beq- cr7, print_0x13c # 164dc +ori r30, r31, 0x10 # 164e0 +mtmsr r30 # 164e4 +isync # 164e8 +li r29, 0x0d # 164ec +stb r29, 0x0006(r28) # 164f0 +eieio # 164f4 + +print_0x118: +lbz r29, 0x0002(r28) # 164f8 +eieio # 164fc +andi. r29, r29, 0x04 # 16500 +beq+ print_0x118 # 16504 +li r29, 0x0a # 16508 +stb r29, 0x0006(r28) # 1650c +eieio # 16510 +mtmsr r31 # 16514 +isync # 16518 + +print_0x13c: +b print_0x60 # 1651c + +print_0x140: +beq- cr7, print_0x1cc # 16520 +mtmsr r31 # 16524 +isync # 16528 +lwz r29, -0x0438( r1) # 1652c +srwi r29, r29, 0x08 # 16530 +mfspr r30, 22/*dec*/ # 16534 +subf r29, r29, r30 # 16538 +ori r30, r31, 0x10 # 1653c +mtmsr r30 # 16540 +isync # 16544 + +print_0x168: +mfspr r30, 22/*dec*/ # 16548 +subf. r30, r29, r30 # 1654c +ble- print_0x190 # 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_0x168 # 1656c + +print_0x190: +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_0x1b8 # 16588 +mtspr 542/*dbat3u*/, r31 # 1658c +mtspr 543/*dbat3l*/, r31 # 16590 +b print_0x1c0 # 16594 + +print_0x1b8: +mtspr 535/*ibat3l*/, r31 # 16598 +mtspr 534/*ibat3u*/, r31 # 1659c + +print_0x1c0: +isync # 165a0 +mtspr 26/*srr0*/, r26 # 165a4 +mtspr 27/*srr1*/, r27 # 165a8 + +print_0x1cc: +sync # 165ac +lwz r30, -0x0af0( r1) # 165b0 +cmpwi cr1, r30, 0x00 # 165b4 +li r30, 0x00 # 165b8 +bne+ cr1, print_0x1e8 # 165bc +mflr r30 # 165c0 +bl dbgr # 165c4 + +print_0x1e8: +stw r30, -0x0af0( r1) # 165c8 + +print_0x1ec: +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: /* < 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_0x264 # 16630 +crmove r30, r2 # 16634 +beq- print_0x264 # 16638 +bl involves_srrs_pvr_bat_msr # 1663c +bl lots_of_eieios # 16640 + +print_0x264: +cmpwi r8, 0x00 # 16644 +li r25, 0x2d # 16648 +blt- print_0x2a8 # 1664c + +print_0x270: +mr. r24, r8 # 16650 +li r25, 0x30 # 16654 +beq- print_0x2a8 # 16658 +lis r24, 0x3b9a # 1665c +ori r24, r24, 0xca00 # 16660 + +print_0x284: +divw. r25, r8, r24 # 16664 +bne- print_0x298 # 16668 +li r25, 0x0a # 1666c +divw r24, r24, r25 # 16670 +b print_0x284 # 16674 + +print_0x298: +divw r29, r8, r24 # 16678 +addi r25, r29, 0x30 # 1667c +mullw r29, r29, r24 # 16680 +subf r8, r29, r8 # 16684 + +print_0x2a8: +bl r31_to_MSR_after_busywait_2r28_bit3_withDRforced +mr r29, r25 # 1668c +bl major_0x18a74 # 16690 +beq- cr7, print_0x2d4 # 16694 +ori r30, r31, 0x10 # 16698 +mtmsr r30 # 1669c +isync # 166a0 +stb r25, 0x0006(r28) # 166a4 +eieio # 166a8 +mtmsr r31 # 166ac +isync # 166b0 + +print_0x2d4: +cmpwi r8, 0x00 # 166b4 +bge- print_0x2e4 # 166b8 +neg r8, r8 # 166bc +b print_0x270 # 166c0 + +print_0x2e4: +li r25, 0x0a # 166c4 +divw. r24, r24, r25 # 166c8 +bne+ print_0x298 # 166cc +li r29, 0x20 # 166d0 +bl major_0x18a74 # 166d4 +beq- cr7, print_0x32c # 166d8 +ori r30, r31, 0x10 # 166dc +mtmsr r30 # 166e0 +isync # 166e4 + +print_0x308: +lbz r30, 0x0002(r28) # 166e8 +eieio # 166ec +andi. r30, r30, 0x04 # 166f0 +beq+ print_0x308 # 166f4 +li r29, 0x20 # 166f8 +stb r29, 0x0006(r28) # 166fc +eieio # 16700 +mtmsr r31 # 16704 +isync # 16708 + +print_0x32c: +b print_0x140 # 1670c + +print_hexword_spc: /* < 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_0x3cc # 16730 + +print_hexshort: /* < 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_0x3cc # 16758 + +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_0x3cc # 16780 + +print_0x3a4: /* < 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_0x3cc # 167a8 + +print_0x3cc: +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_0x40c # 167d8 +crmove r30, r2 # 167dc +beq- print_0x40c # 167e0 +bl involves_srrs_pvr_bat_msr # 167e4 +bl lots_of_eieios # 167e8 + +print_0x40c: +bl r31_to_MSR_after_busywait_2r28_bit3_withDRforced +li r25, 0x30 # 167f0 +rlwimi r25, r8, 4, 28, 31 # 167f4 +rotlwi r8, r8, 0x04 # 167f8 +cmpwi r25, 0x39 # 167fc +ble- print_0x428 # 16800 +addi r25, r25, 0x27 # 16804 + +print_0x428: +mr r29, r25 # 16808 +bl major_0x18a74 # 1680c +beq- cr7, print_0x450 # 16810 +ori r30, r31, 0x10 # 16814 +mtmsr r30 # 16818 +isync # 1681c +stb r25, 0x0006(r28) # 16820 +eieio # 16824 +mtmsr r31 # 16828 +isync # 1682c + +print_0x450: +addi r24, r24, -0x01 # 16830 +mr. r24, r24 # 16834 +bne+ print_0x40c # 16838 +bne- cr6, print_0x49c # 1683c +li r29, 0x20 # 16840 +bl major_0x18a74 # 16844 +beq- cr7, print_0x49c # 16848 +ori r30, r31, 0x10 # 1684c +mtmsr r30 # 16850 +isync # 16854 + +print_0x478: +lbz r30, 0x0002(r28) # 16858 +eieio # 1685c +andi. r30, r30, 0x04 # 16860 +beq+ print_0x478 # 16864 +li r29, 0x20 # 16868 +stb r29, 0x0006(r28) # 1686c +eieio # 16870 +mtmsr r31 # 16874 +isync # 16878 + +print_0x49c: +b print_0x140 # 1687c + +print_for_dbgr: /* < 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_0x1ec # 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 involves_srrs_pvr_bat_msr # 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_0x140 # 168e0 +lbz r8, 0x0006(r28) # 168e4 +b print_0x140 # 168e8 + +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_0x564 # 16930 +crmove r30, r2 # 16934 +beq- print_0x564 # 16938 +bl involves_srrs_pvr_bat_msr # 1693c +bl lots_of_eieios # 16940 + +print_0x564: +mr r29, r8 # 16944 +bl major_0x18a74 # 16948 +beq- cr7, print_0x59c # 1694c +ori r30, r31, 0x10 # 16950 +mtmsr r30 # 16954 +isync # 16958 + +print_0x57c: +lbz r30, 0x0002(r28) # 1695c +eieio # 16960 +andi. r30, r30, 0x04 # 16964 +beq+ print_0x57c # 16968 +stb r8, 0x0006(r28) # 1696c +eieio # 16970 +mtmsr r31 # 16974 +isync # 16978 + +print_0x59c: +b print_0x140 # 1697c + + + +/*********************************************************** + + lots_of_eieios + +************************************************************ + +Xrefs: +print + +***********************************************************/ + +lots_of_eieios: /* < 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 + + + +/*********************************************************** + + involves_srrs_pvr_bat_msr + +************************************************************ + +Xrefs: +print + +***********************************************************/ + +involves_srrs_pvr_bat_msr: /* < 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- involves_srrs_pvr_bat_msr_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 involves_srrs_pvr_bat_msr_0x50 # 16b1c + +involves_srrs_pvr_bat_msr_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 + +involves_srrs_pvr_bat_msr_0x50: +isync # 16b38 +mfmsr r31 # 16b3c +blr # 16b40 + + + +/*********************************************************** + + r31_to_MSR_after_busywait_2r28_bit3_withDRforced + +************************************************************ + +Xrefs: +print + +***********************************************************/ + +r31_to_MSR_after_busywait_2r28_bit3_withDRforced: /* < outside referer */ +beqlr- cr7 # 16b44 +ori r30, r31, 0x10 # 16b48 +mtmsr r30 # 16b4c +isync # 16b50 + +r31_to_MSR_after_busywait_2r28_bit3_withDRforced_0x10: +lbz r30, 0x0002(r28) # 16b54 +eieio # 16b58 +andi. r30, r30, 0x04 # 16b5c +beq+ r31_to_MSR_after_busywait_2r28_bit3_withDRforced_0x10 +mtmsr r31 # 16b64 +isync # 16b68 +blr # 16b6c + + + +/*********************************************************** + + major_0x16b70 + +***********************************************************/ + +.long 0x48000010 # 16b70 +.long 0x60000000 # 16b74 +.long 0x60000000 # 16b78 +.long 0x60000000 # 16b7c + + + +/*********************************************************** + + major_0x16b80 + +************************************************************ + +Xrefs: +major_0x16b90 +major_0x16bb4 + +***********************************************************/ + +.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 + +***********************************************************/ + +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 major_0x055e0 # 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, 0x320 # 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, 0x0c # 16c78 + +major_0x16bb4_0xc8: +mr r27, r5 # 16c7c +addi r29, r1, 0x320 # 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, 0x78 # 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, 0x02 # 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, 0x78 # 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, 0x02 # 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, 0x0c # 1718c +slwi r9, r9, 0x02 # 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, 0x0c # 171a8 +slwi r23, r23, 0x02 # 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 + +***********************************************************/ + +.long 0x48000010 # 172d0 +.long 0x60000000 # 172d4 +.long 0x60000000 # 172d8 +.long 0x60000000 # 172dc + + + +/*********************************************************** + + dbgr + +************************************************************ + +Xrefs: +"lisori_caller" +_dbgr_0x02940 +_dbgr_0x02960 +major_0x02980 +major_0x03200 +major_0x035a0 +major_0x03940 +dsi_vector +major_0x04240 +major_0x04300 +_dbgr_0x04c00 +funny_debug_place +major_0x07658 +_dbgr_0x08620 +major_0x08794 +_dbgr_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 +_dbgr_0x0c5d4 +major_0x0d35c +major_0x0d798 +_dbgr_0x0e280 +major_0x0e604 +NKThrowException +_dbgr_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 +_dbgr_0x12780 +major_0x129cc +_dbgr_0x12d40 +_dbgr_0x137c0 +major_0x142dc +major_0x14548 +major_0x14bcc +_dbgr_0x15140 +major_0x154e0 +print + +***********************************************************/ + +dbgr: /* < outside referer */ +crset 4*cr1 + eq # 172e0 +b dbgr_0xc # 172e4 +.long 0x4cc63182 # 172e8 + +dbgr_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- dbgr_0x70 # 17344 +mfspr r0, 0/*mq*/ # 17348 +stw r0, 0x0784( r1) # 1734c + +dbgr_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- dbgr_0xcc # 17388 + +dbgr_0xac: +mfspr r0, 4/*rtcu*/ # 1738c +mfspr r2, 5/*rtcl*/ # 17390 +mfspr r3, 4/*rtcu*/ # 17394 +cmpw r0, r3 # 17398 +bne+ dbgr_0xac # 1739c +stw r0, 0x07a0( r1) # 173a0 +stw r2, 0x07a4( r1) # 173a4 +b dbgr_0xe8 # 173a8 + +dbgr_0xcc: +mftbu r0 # 173ac +mftb r2, 0x10c # 173b0 +mftbu r3 # 173b4 +cmpw r0, r3 # 173b8 +bne+ dbgr_0xcc # 173bc +stw r0, 0x07a0( r1) # 173c0 +stw r2, 0x07a4( r1) # 173c4 + +dbgr_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, dbgr_0x260 # 17518 + +dbgr_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 print_for_dbgr # 17530 + +# gets kdp from print!!! +cmpwi r8, -0x01 # 17534 +bne- dbgr_0x260 # 17538 +b dbgr_0x23c # 1753c + +dbgr_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 + +dbgr_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 + +dbgr_0x2ac: +bl print_for_dbgr # 1758c +cmpwi r8, -0x01 # 17590 +beq+ dbgr_0x2ac # 17594 +mr r16, r8 # 17598 +cmpwi r16, 0x08 # 1759c +cmpwi cr1, r17, 0x00 # 175a0 +bne- dbgr_0x2ec # 175a4 +ble+ cr1, dbgr_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 dbgr_0x2ac # 175c8 + +dbgr_0x2ec: +cmpwi cr2, r17, 0x5f # 175cc +addi r18, r1, -0x960 # kdp.-0x960 # 175d0 +blt- cr2, dbgr_0x31c # 175d4 +bl 1f # 175d8 +.ascii "^b" # 175dc +.short 0 # 175de +.align 2 # 175e0 +1: mflr r8 # 175e0 +bl print_string # 175e4 +b dbgr_0x2ac # 175e8 + +dbgr_0x30c: +addi r17, r17, 0x01 # 175ec +mr r8, r16 # 175f0 +bl print_char # 175f4 +b dbgr_0x2ac # 175f8 + +dbgr_0x31c: +cmpwi r16, 0x0d # 175fc +stbx r16, r17, r18 # 17600 +bne+ dbgr_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+ dbgr_prompt # 1762c +bl dbgr_load_commands # 17630 +mflr r16 # 17634 +bl load_dbgr_tbl # 17638 +mflr r17 # 1763c + +# r16 = command strings +# r17 = lut +bl cmd_lookup # 17640 +# cr0 = found +# r17 = ptr to lut entry + +bne- dbgr_bad_command # 17644 +bl load_dbgr_tbl # 17648 +mflr r16 # 1764c +lwz r17, 0x0000(r17) # 17650 +add r16, r16, r17 # 17654 +mtlr r16 # 17658 +blr # 1765c + +dbgr_bad_command: +bl 1f # 17660 +.ascii "???^n" # 17664 +.short 0 # 17669 +.align 2 # 1766b +1: mflr r8 # 1766c +bl print_string # 17670 +b dbgr_prompt # 17674 + +dbgr_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_dbgr_tbl: +blrl # 17698 + +dbgr_tbl: +.long cmd_dumpmem_physical - dbgr_tbl # 1769c +.long cmd_dumpmem_logical - dbgr_tbl # 176a0 +.long cmd_goto - dbgr_tbl # 176a4 +.long cmd_opaque_id_info - dbgr_tbl # 176a8 +.long cmd_display_kern_data - dbgr_tbl # 176ac +.long cmd_dump_registers - dbgr_tbl # 176b0 +.long cmd_help - dbgr_tbl # 176b4 +.long cmd_help - dbgr_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 dbgr_prompt # 17888 + +cmd_dumpmem_physical: +# r15 = start +bl next_cmd_word # 1788c +# r15 = ptr +# r16 = char + +cmpwi r16, 0x00 # 17890 +beq- dbgr_missing_physical_addr # 17894 +bl major_0x187b0 # 17898 +bne- dbgr_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- dbgr_0x5e0 # 178b0 +bl major_0x187b0 # 178b4 +bne- dbgr_bad_length_1 # 178b8 +mr r31, r16 # 178bc + +dbgr_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 dbgr_prompt # 178d4 + +dbgr_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 dbgr_prompt # 17900 + +dbgr_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 dbgr_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- dbgr_missing_logical_addr # 17964 +bl major_0x187b0 # 17968 +bne- dbgr_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- dbgr_0x6b0 # 17980 +bl major_0x187b0 # 17984 +bne- dbgr_bad_length_2 # 17988 +mr r31, r16 # 1798c + +dbgr_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 dbgr_prompt # 179a4 + +dbgr_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 dbgr_prompt # 179d0 + +dbgr_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 dbgr_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- dbgr_0x748 # 17a18 +bl major_0x187b0 # 17a1c +bne- dbgr_bad_resume_address # 17a20 +stw r16, 0x0904( r1) # kdp.0x904 # 17a24 + +dbgr_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_hexword_spc # 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.-0xb30 # 17a7c +cmpwi cr1, r9, 0x00 # 17a80 +li r9, 0x00 # 17a84 +bne+ cr1, dbgr_0x7b4 # 17a88 +mflr r9 # 17a8c +bl dbgr # 17a90 + +dbgr_0x7b4: +stw r9, -0x0b30( r1) # kdp.-0xb30 # 17a94 +mtlr r8 # 17a98 +blr # 17a9c + +dbgr_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 dbgr_prompt # 17adc + +cmd_opaque_id_info: +# r15 = start +bl next_cmd_word # 17ae0 +# r15 = ptr +# r16 = char + +cmpwi r16, 0x00 # 17ae4 +beq- dbgr_missing_opaque_id # 17ae8 +bl dbgr_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- dbgr_0x884 # 17afc +li r29, 0x00 # 17b00 +li r30, 0x00 # 17b04 +srwi r31, r17, 0x02 # 17b08 + +dbgr_0x82c: +mr r8, r30 # 17b0c +mr r9, r31 # 17b10 +bl major_0x153e0 # 17b14 +mr. r30, r8 # 17b18 +beq- dbgr_0x868 # 17b1c +mr r8, r8 # 17b20 +bl print_hexword_spc # 17b24 +addi r29, r29, 0x01 # 17b28 +andi. r29, r29, 0x07 # 17b2c +bne+ dbgr_0x82c # 17b30 +bl 1f # 17b34 +.ascii "^n" # 17b38 +.short 0 # 17b3a +.align 2 # 17b3c +1: mflr r8 # 17b3c +bl print_string # 17b40 +b dbgr_0x82c # 17b44 + +dbgr_0x868: +cmpwi r29, 0x00 # 17b48 +beq+ dbgr_prompt # 17b4c +bl 1f # 17b50 +.ascii "^n" # 17b54 +.short 0 # 17b56 +.align 2 # 17b58 +1: mflr r8 # 17b58 +bl print_string # 17b5c +b dbgr_prompt # 17b60 + +dbgr_0x884: +bl major_0x187b0 # 17b64 +bne- dbgr_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_hexword_spc # 17b94 +bl dbgr_load_id_kind_strings # 17b98 +mflr r17 # 17b9c +slwi r18, r9, 0x04 # 17ba0 +add r8, r17, r18 # 17ba4 +bl print_string # 17ba8 +cmpwi r9, 0x00 # 17bac +beq- dbgr_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_hexword_spc # 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 dbgr_load_more_jumps # 17be4 +mflr r17 # 17be8 +slwi r18, r9, 0x02 # 17bec +lwzx r17, r17, r18 # 17bf0 +bl print_memory # 17bf4 +b dbgr_prompt # 17bf8 + +dbgr_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 dbgr_prompt # 17c20 + +dbgr_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 dbgr_prompt # 17c54 + +dbgr_0x978: +bl 1f # 17c58 +.ascii "^n" # 17c5c +.short 0 # 17c5e +.align 2 # 17c60 +1: mflr r8 # 17c60 +bl print_string # 17c64 +b dbgr_prompt # 17c68 + +dbgr_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 + +dbgr_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 + +dbgr_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_hexshort # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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.edp # 17e5c +bl print_hexword_spc # 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_hexword_spc # 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_hexshort # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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 dbgr_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 dbgr_prompt # 1803c + + + +/*********************************************************** + + major_0x18040 + +***********************************************************/ + +.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: +dbgr + +***********************************************************/ + +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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 181f4 +mfspr r8, 26/*srr0*/ # 181f8 +bl print_hexword_spc # 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_hexword_spc # 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: +dbgr + +***********************************************************/ + +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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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: +dbgr + +***********************************************************/ + +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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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: +dbgr + +***********************************************************/ + +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_hexword_spc # 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_hexword_spc # 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: +dbgr + +***********************************************************/ + +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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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_hexword_spc # 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: +dbgr + +***********************************************************/ + +print_memory: /* < outside referer */ +mflr r18 # 18544 +srwi r17, r17, 0x04 # 18548 + +print_memory_0x8: +mr r8, r16 # 1854c +bl print_hexword_spc # 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_hexword_spc # 18568 +lwz r8, 0x0004(r16) # 1856c +bl print_hexword_spc # 18570 +lwz r8, 0x0008(r16) # 18574 +bl print_hexword_spc # 18578 +lwz r8, 0x000c(r16) # 1857c +bl print_hexword_spc # 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 print_for_dbgr # 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: +dbgr + +***********************************************************/ + +print_memory_logical: /* < outside referer */ +mflr r18 # 1860c +srwi r17, r17, 0x04 # 18610 + +print_memory_logical_0x8: +mr r8, r16 # 18614 +bl print_hexword_spc # 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_0x3a4 # 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 print_for_dbgr # 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: +dbgr + +************************************************************ + +> r16 = command strings +> r17 = lut + +< cr0 = found +< r17 = ptr to lut entry + +***********************************************************/ + +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: +dbgr + +************************************************************ + +> 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: +dbgr + +***********************************************************/ + +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, 0x04 # 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, 0x04 # 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, 0x04 # 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 + +***********************************************************/ + +.long 0x48000020 # 189e0 +.long 0x60000000 # 189e4 +.long 0x60000000 # 189e8 +.long 0x60000000 # 189ec +.long 0x60000000 # 189f0 +.long 0x60000000 # 189f4 +.long 0x60000000 # 189f8 +.long 0x60000000 # 189fc + + + +/*********************************************************** + + set_up_log + +************************************************************ + +Xrefs: +replace_old_kernel +new_world_setup +fail + +***********************************************************/ + +set_up_log: /* < outside referer */ +stmw r29, -0x0110( r1) # 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 + +set_up_log_0x18: +cmplw r30, r31 # 18a18 +addi r29, r31, 0x04 # 18a1c +bge- set_up_log_0x2c # 18a20 +stwu r29, -0x1000(r31) # 18a24 +b set_up_log_0x18 # 18a28 + +set_up_log_0x2c: +addi r31, r30, 0x1000 # 18a2c +stw r30, -0x0004(r31) # 18a30 +stw r30, -0x0404( r1) # 18a34 +stw r30, -0x0400( r1) # 18a38 +li r29, 0x16 # 18a3c +sth r29, -0x0360( r1) # 18a40 +li r29, 0x18 # 18a44 +sth r29, -0x035e( r1) # 18a48 +li r29, 0x1f6 # 18a4c +sth r29, -0x035c( r1) # 18a50 +li r29, 0x24c # 18a54 +sth r29, -0x035a( r1) # 18a58 +li r29, 0x5e # 18a5c +sth r29, -0x0358( r1) # 18a60 +li r29, 0x30 # 18a64 +sth r29, -0x0356( r1) # 18a68 +lmw r29, -0x0110( r1) # 18a6c +blr # 18a70 + + + +/*********************************************************** + + major_0x18a74 + +************************************************************ + +Xrefs: +print + +***********************************************************/ + +major_0x18a74: /* < outside referer */ +lwz r30, -0x0404( r1) # 18a74 +stb r29, 0x0000(r30) # 18a78 +addi r30, r30, 0x01 # 18a7c +andi. r29, r30, 0xfff # 18a80 +stw r30, -0x0404( r1) # 18a84 +bnelr- # 18a88 +lwz r30, -0x1000(r30) # 18a8c +stw r30, -0x0404( r1) # 18a90 +blr # 18a94 + + + +/*********************************************************** + + major_0x18a98 + +************************************************************ + +Xrefs: +major_0x0c52c +print + +***********************************************************/ + +major_0x18a98: /* < outside referer */ +stmw r2, -0x03e8( r1) # 18a98 +mflr r14 # 18a9c +mfcr r15 # 18aa0 +stw r14, -0x03f0( r1) # 18aa4 +stw r15, -0x03ec( r1) # 18aa8 +addi r26, r1, -0x690 # 18aac +mfspr r2, 275/*sprg3*/ # 18ab0 +mtspr 275/*sprg3*/, r26 # 18ab4 +lwz r26, 0x0edc( r1) # 18ab8 +andi. r26, r26, 0x08 # 18abc +beq- major_0x18bec # 18ac0 +lwz r14, -0x0404( r1) # 18ac4 +lwz r15, -0x0400( r1) # 18ac8 +cmpw r14, r15 # 18acc +beq- major_0x18bec # 18ad0 +bl major_0x18c18 # 18ad4 + +major_0x18a98_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) # 18b00 +lwz r15, -0x0400( r1) # 18b04 +li r16, 0x00 # 18b08 + +major_0x18a98_0x74: +cmpw r14, r15 # 18b0c +beq- major_0x18a98_0x118 # 18b10 +lbz r25, 0x0000(r15) # 18b14 +addi r15, r15, 0x01 # 18b18 +andi. r17, r15, 0xfff # 18b1c +bne+ major_0x18a98_0x90 # 18b20 +lwz r15, -0x1000(r15) # 18b24 + +major_0x18a98_0x90: +cmplwi r25, 0x0d # 18b28 +cmplwi cr1, r25, 0x0a # 18b2c +beq+ major_0x18a98_0x74 # 18b30 +beq- cr1, major_0x18a98_0xc0 # 18b34 +cmpwi r25, 0x00 # 18b38 +cmpwi cr1, r25, 0x07 # 18b3c +beq+ major_0x18a98_0x74 # 18b40 +beq- cr1, major_0x18a98_0xe4 # 18b44 +bl major_0x18e54 # 18b48 +lhz r17, -0x0358( r1) # 18b4c +cmpw r9, r17 # 18b50 +blt+ major_0x18a98_0x74 # 18b54 + +major_0x18a98_0xc0: +cmpwi r16, 0x00 # 18b58 +bne- major_0x18a98_0xcc # 18b5c +mr r16, r15 # 18b60 + +major_0x18a98_0xcc: +bl funny_thing # 18b64 +lhz r17, -0x0356( r1) # 18b68 +cmpw r10, r17 # 18b6c +blt+ major_0x18a98_0x74 # 18b70 +stw r16, -0x0400( r1) # 18b74 +b major_0x18a98_0x40 # 18b78 + +major_0x18a98_0xe4: +lhz r17, -0x0356( r1) # 18b7c +addi r17, r17, -0x01 # 18b80 +cmpw r10, r17 # 18b84 +blt+ major_0x18a98_0x74 # 18b88 +lwz r17, -0x0438( r1) # 18b8c +slwi r25, r17, 0x02 # 18b90 +add r25, r25, r17 # 18b94 +mfspr r17, 22/*dec*/ # 18b98 +subf r17, r25, r17 # 18b9c + +major_0x18a98_0x108: +mfspr r25, 22/*dec*/ # 18ba0 +subf. r25, r17, r25 # 18ba4 +bge+ major_0x18a98_0x108 # 18ba8 +b major_0x18a98_0x74 # 18bac + +major_0x18a98_0x118: +bl funny_thing_0x8 # 18bb0 +mfspr r31, 287/*pvr*/ # 18bb4 +rlwinm. r31, r31, 0, 0, 14 # 18bb8 +li r31, 0x00 # 18bbc +bne- major_0x18a98_0x140 # 18bc0 +mtspr 535/*ibat3l*/, r31 # 18bc4 +isync # 18bc8 +mtspr 534/*ibat3u*/, r18 # 18bcc +mtspr 535/*ibat3l*/, r19 # 18bd0 +b major_0x18a98_0x150 # 18bd4 + +major_0x18a98_0x140: +mtspr 542/*dbat3u*/, r31 # 18bd8 +isync # 18bdc +mtspr 543/*dbat3l*/, r19 # 18be0 +mtspr 542/*dbat3u*/, r18 # 18be4 + +major_0x18a98_0x150: +isync # 18be8 + + + +/*********************************************************** + + major_0x18bec + +************************************************************ + +Xrefs: +major_0x18a98 +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 + +***********************************************************/ + +major_0x18c08: /* < outside referer */ +mfsrin r31, r27 # 18c08 +cmpwi r31, 0x00 # 18c0c +beqlr- # 18c10 +b major_0x05524 # 18c14 + + + +/*********************************************************** + + major_0x18c18 + +************************************************************ + +Xrefs: +major_0x18a98 + +***********************************************************/ + +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, 0x03 # 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 + +***********************************************************/ + +.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 major_0x19b20 # 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: +major_0x18a98 + +***********************************************************/ + +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: +major_0x18a98 +major_0x18e24 +funny_thing + +***********************************************************/ + +major_0x18e54: /* < outside referer */ +mflr r13 # 18e54 +cmpwi cr4, r6, 0x02 # 18e58 +bl major_0x190a0 # 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, 0x10 # 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: +major_0x18a98 + +***********************************************************/ + +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: +major_0x18a98 + +***********************************************************/ + +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 + + + +/*********************************************************** + + major_0x190a0 + +************************************************************ + +Xrefs: +major_0x18e54 + +***********************************************************/ + +major_0x190a0: /* < 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 + +***********************************************************/ + +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 + +***********************************************************/ + +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 + + + +/*********************************************************** + + major_0x19b20 + +************************************************************ + +Xrefs: +major_0x18d5c + +***********************************************************/ + +major_0x19b20: /* < 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/prcl-pefs/AGPLib@CodeRegister b/prcl-pefs/AGPLib@CodeRegister new file mode 100644 index 0000000..54a951d Binary files /dev/null and b/prcl-pefs/AGPLib@CodeRegister differ diff --git a/prcl-pefs/DFMLib@pciclass,0c0010:ieee1394 b/prcl-pefs/DFMLib@pciclass,0c0010:ieee1394 new file mode 100644 index 0000000..dea6be0 Binary files /dev/null and b/prcl-pefs/DFMLib@pciclass,0c0010:ieee1394 differ diff --git a/prcl-pefs/DevNLib@pciclass,0c0010:ieee1394 b/prcl-pefs/DevNLib@pciclass,0c0010:ieee1394 new file mode 100644 index 0000000..b2c3400 Binary files /dev/null and b/prcl-pefs/DevNLib@pciclass,0c0010:ieee1394 differ diff --git a/prcl-pefs/EtherPrintfLib@CodeRegister b/prcl-pefs/EtherPrintfLib@CodeRegister new file mode 100644 index 0000000..34240d4 Binary files /dev/null and b/prcl-pefs/EtherPrintfLib@CodeRegister differ diff --git a/prcl-pefs/FWServicesLib@pciclass,0c0010:ieee1394 b/prcl-pefs/FWServicesLib@pciclass,0c0010:ieee1394 new file mode 100644 index 0000000..8a465cc Binary files /dev/null and b/prcl-pefs/FWServicesLib@pciclass,0c0010:ieee1394 differ diff --git a/prcl-pefs/GenericDriverFamily@pciclass,0c0010:ieee1394 b/prcl-pefs/GenericDriverFamily@pciclass,0c0010:ieee1394 new file mode 100644 index 0000000..8faf892 Binary files /dev/null and b/prcl-pefs/GenericDriverFamily@pciclass,0c0010:ieee1394 differ diff --git a/prcl-pefs/NVRAMServicesLib@CodePrepare b/prcl-pefs/NVRAMServicesLib@CodePrepare new file mode 100644 index 0000000..8f6f637 Binary files /dev/null and b/prcl-pefs/NVRAMServicesLib@CodePrepare differ diff --git a/prcl-pefs/NativePowerMgrLib@CodeRegister b/prcl-pefs/NativePowerMgrLib@CodeRegister new file mode 100644 index 0000000..4d818ba Binary files /dev/null and b/prcl-pefs/NativePowerMgrLib@CodeRegister differ diff --git a/prcl-pefs/PCCard@pci104c,ac1a|pci104c,ac50:cardbus b/prcl-pefs/PCCard@pci104c,ac1a|pci104c,ac50:cardbus new file mode 100644 index 0000000..95fe17f Binary files /dev/null and b/prcl-pefs/PCCard@pci104c,ac1a|pci104c,ac50:cardbus differ diff --git a/prcl-pefs/PCICyclesLib@grackle:pci b/prcl-pefs/PCICyclesLib@grackle:pci new file mode 100644 index 0000000..298636a Binary files /dev/null and b/prcl-pefs/PCICyclesLib@grackle:pci differ diff --git a/prcl-pefs/PCICyclesLib@uni-north:pci b/prcl-pefs/PCICyclesLib@uni-north:pci new file mode 100644 index 0000000..b0ee186 Binary files /dev/null and b/prcl-pefs/PCICyclesLib@uni-north:pci differ diff --git a/prcl-pefs/PMULib@pmu|via-pmu-2000|via-pmu-99:power-mgt b/prcl-pefs/PMULib@pmu|via-pmu-2000|via-pmu-99:power-mgt new file mode 100644 index 0000000..9a7b8c4 Binary files /dev/null and b/prcl-pefs/PMULib@pmu|via-pmu-2000|via-pmu-99:power-mgt differ diff --git a/prcl-pefs/PowerMgrPlugin@cuda:via-cuda b/prcl-pefs/PowerMgrPlugin@cuda:via-cuda new file mode 100644 index 0000000..0189bf8 Binary files /dev/null and b/prcl-pefs/PowerMgrPlugin@cuda:via-cuda differ diff --git a/prcl-pefs/PowerMgrPlugin@pmu:power-mgt b/prcl-pefs/PowerMgrPlugin@pmu:power-mgt new file mode 100644 index 0000000..b6b5ac5 Binary files /dev/null and b/prcl-pefs/PowerMgrPlugin@pmu:power-mgt differ diff --git a/prcl-pefs/PowerMgrPlugin@via-pmu-2000:power-mgt b/prcl-pefs/PowerMgrPlugin@via-pmu-2000:power-mgt new file mode 100644 index 0000000..2628d46 Binary files /dev/null and b/prcl-pefs/PowerMgrPlugin@via-pmu-2000:power-mgt differ diff --git a/prcl-pefs/PowerMgrPlugin@via-pmu-99:power-mgt b/prcl-pefs/PowerMgrPlugin@via-pmu-99:power-mgt new file mode 100644 index 0000000..0456d35 Binary files /dev/null and b/prcl-pefs/PowerMgrPlugin@via-pmu-99:power-mgt differ diff --git a/prcl-pefs/RTCServicesLib@CodePrepare b/prcl-pefs/RTCServicesLib@CodePrepare new file mode 100644 index 0000000..76fab4b Binary files /dev/null and b/prcl-pefs/RTCServicesLib@CodePrepare differ diff --git a/prcl-pefs/StartLib@CodeRegister b/prcl-pefs/StartLib@CodeRegister new file mode 100644 index 0000000..ba21faa Binary files /dev/null and b/prcl-pefs/StartLib@CodeRegister differ diff --git a/prcl-pefs/TimeManagerLib@CodePrepare b/prcl-pefs/TimeManagerLib@CodePrepare new file mode 100644 index 0000000..75a1c8c Binary files /dev/null and b/prcl-pefs/TimeManagerLib@CodePrepare differ diff --git a/prcl-pefs/lanLib@apple21143:network b/prcl-pefs/lanLib@apple21143:network new file mode 100644 index 0000000..6f7ab6a Binary files /dev/null and b/prcl-pefs/lanLib@apple21143:network differ diff --git a/prcl-pefs/lanLib@bmac+:network b/prcl-pefs/lanLib@bmac+:network new file mode 100644 index 0000000..8324dab Binary files /dev/null and b/prcl-pefs/lanLib@bmac+:network differ diff --git a/prcl-pefs/lanLib@gmac:network b/prcl-pefs/lanLib@gmac:network new file mode 100644 index 0000000..018467d Binary files /dev/null and b/prcl-pefs/lanLib@gmac:network differ diff --git a/prcl-pefs/ndrv@backlight:backlight b/prcl-pefs/ndrv@backlight:backlight new file mode 100644 index 0000000..5c666be Binary files /dev/null and b/prcl-pefs/ndrv@backlight:backlight differ diff --git a/prcl-pefs/ndrv@cmd646-ata:ata b/prcl-pefs/ndrv@cmd646-ata:ata new file mode 100644 index 0000000..f44c2ee Binary files /dev/null and b/prcl-pefs/ndrv@cmd646-ata:ata differ diff --git a/prcl-pefs/ndrv@cofb:display b/prcl-pefs/ndrv@cofb:display new file mode 100644 index 0000000..1678b03 Binary files /dev/null and b/prcl-pefs/ndrv@cofb:display differ diff --git a/prcl-pefs/ndrv@heathrow-ata:ata|ide b/prcl-pefs/ndrv@heathrow-ata:ata|ide new file mode 100644 index 0000000..ceeb88d Binary files /dev/null and b/prcl-pefs/ndrv@heathrow-ata:ata|ide differ diff --git a/prcl-pefs/ndrv@kauai-ata:ata b/prcl-pefs/ndrv@kauai-ata:ata new file mode 100644 index 0000000..4486836 Binary files /dev/null and b/prcl-pefs/ndrv@kauai-ata:ata differ diff --git a/prcl-pefs/ndrv@keylargo-ata:ata b/prcl-pefs/ndrv@keylargo-ata:ata new file mode 100644 index 0000000..9664968 Binary files /dev/null and b/prcl-pefs/ndrv@keylargo-ata:ata differ diff --git a/prcl-pefs/ndrv@keywest-i2c|uni-n-i2c:i2c b/prcl-pefs/ndrv@keywest-i2c|uni-n-i2c:i2c new file mode 100644 index 0000000..c642a4b Binary files /dev/null and b/prcl-pefs/ndrv@keywest-i2c|uni-n-i2c:i2c differ diff --git a/prcl-pefs/ndrv@mac-io:nvram b/prcl-pefs/ndrv@mac-io:nvram new file mode 100644 index 0000000..94fda4f Binary files /dev/null and b/prcl-pefs/ndrv@mac-io:nvram differ diff --git a/prcl-pefs/ndrv@nvram,flash:nvram b/prcl-pefs/ndrv@nvram,flash:nvram new file mode 100644 index 0000000..43cc96a Binary files /dev/null and b/prcl-pefs/ndrv@nvram,flash:nvram differ diff --git a/prcl-pefs/ndrv@pci104c,ac1a|pci104c,ac50:cardbus b/prcl-pefs/ndrv@pci104c,ac1a|pci104c,ac50:cardbus new file mode 100644 index 0000000..52d3a23 Binary files /dev/null and b/prcl-pefs/ndrv@pci104c,ac1a|pci104c,ac50:cardbus differ diff --git a/prcl-pefs/ndrv@pciclass,0c0010:ieee1394 b/prcl-pefs/ndrv@pciclass,0c0010:ieee1394 new file mode 100644 index 0000000..c76d8f6 Binary files /dev/null and b/prcl-pefs/ndrv@pciclass,0c0010:ieee1394 differ diff --git a/prcl-pefs/ndrv@via-cuda:rtc b/prcl-pefs/ndrv@via-cuda:rtc new file mode 100644 index 0000000..d6cdb6e Binary files /dev/null and b/prcl-pefs/ndrv@via-cuda:rtc differ diff --git a/prcl-pefs/ndrv@via-pmu:nvram b/prcl-pefs/ndrv@via-pmu:nvram new file mode 100644 index 0000000..0c2dc8f Binary files /dev/null and b/prcl-pefs/ndrv@via-pmu:nvram differ diff --git a/prcl-pefs/ndrv@via-pmu:rtc b/prcl-pefs/ndrv@via-pmu:rtc new file mode 100644 index 0000000..e09c8b6 Binary files /dev/null and b/prcl-pefs/ndrv@via-pmu:rtc differ diff --git a/rom-nokern b/rom-nokern new file mode 100644 index 0000000..ac47189 Binary files /dev/null and b/rom-nokern differ diff --git a/rsrc-template b/rsrc-template new file mode 100644 index 0000000..4391388 Binary files /dev/null and b/rsrc-template differ