2017-11-19 04:11:07 +00:00
|
|
|
|
|
|
|
|
|
align 5
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
panic ; OUTSIDE REFERER
|
|
|
|
|
crset cr1_eq
|
|
|
|
|
b panic_common
|
|
|
|
|
|
|
|
|
|
panic_non_interactive
|
|
|
|
|
crclr cr1_eq
|
|
|
|
|
|
|
|
|
|
panic_common
|
|
|
|
|
mfsprg r1, 0
|
|
|
|
|
stmw r29, EWA.ThudSavedR29(r1)
|
|
|
|
|
lwz r1, EWA.PA_KDP(r1)
|
|
|
|
|
mflr r29
|
|
|
|
|
|
|
|
|
|
_Lock PSA.ThudLock, scratch1=r30, scratch2=r31
|
|
|
|
|
|
|
|
|
|
stw r29, KDP.ThudSavedLR(r1)
|
|
|
|
|
stw r0, KDP.ThudSavedR0(r1)
|
|
|
|
|
mfsprg r0, 1
|
|
|
|
|
stw r0, KDP.ThudSavedR1(r1)
|
|
|
|
|
stw r2, KDP.ThudSavedR2(r1)
|
|
|
|
|
mfsprg r2, 0
|
|
|
|
|
lmw r29, EWA.ThudSavedR29(r2)
|
|
|
|
|
stmw r3, KDP.ThudSavedR3(r1)
|
|
|
|
|
mfcr r0
|
|
|
|
|
stw r0, KDP.ThudSavedCR(r1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; Save the silly multiply-quotient register
|
|
|
|
|
|
|
|
|
|
mfspr r0, pvr
|
|
|
|
|
rlwinm. r0, r0, 0, 0, 14
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne @no_mq
|
2017-11-19 04:11:07 +00:00
|
|
|
|
dialect POWER
|
|
|
|
|
mfmq r0
|
|
|
|
|
dialect PowerPC
|
|
|
|
|
stw r0, KDP.ThudSavedMQ(r1)
|
|
|
|
|
@no_mq
|
|
|
|
|
|
|
|
|
|
mfxer r0
|
|
|
|
|
stw r0, KDP.ThudSavedXER(r1)
|
|
|
|
|
mfsprg r0, 2
|
|
|
|
|
stw r0, KDP.ThudSavedSPRG2(r1)
|
|
|
|
|
mfctr r0
|
|
|
|
|
stw r0, KDP.ThudSavedCTR(r1)
|
|
|
|
|
mfspr r0, pvr
|
|
|
|
|
stw r0, KDP.ThudSavedPVR(r1)
|
|
|
|
|
mfspr r0, dsisr
|
|
|
|
|
stw r0, KDP.ThudSavedDSISR(r1)
|
|
|
|
|
mfspr r0, dar
|
|
|
|
|
stw r0, KDP.ThudSavedDAR(r1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; Save the time
|
|
|
|
|
|
|
|
|
|
mfpvr r0
|
|
|
|
|
rlwinm. r0, r0, 0, 0, 14
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne @not_601
|
2017-11-19 04:11:07 +00:00
|
|
|
|
|
|
|
|
|
@rtcloop
|
|
|
|
|
dialect POWER
|
|
|
|
|
mfrtcu r0
|
|
|
|
|
mfrtcl r2
|
|
|
|
|
mfrtcu r3
|
|
|
|
|
dialect PowerPC
|
|
|
|
|
cmpw r0, r3
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne @rtcloop
|
2017-11-19 04:11:07 +00:00
|
|
|
|
|
|
|
|
|
stw r0, KDP.ThudSavedTBU(r1)
|
|
|
|
|
stw r2, KDP.ThudSavedTB(r1)
|
|
|
|
|
b @end_if_601
|
|
|
|
|
@not_601
|
|
|
|
|
|
|
|
|
|
@tbloop
|
|
|
|
|
mftbu r0
|
|
|
|
|
mftb r2
|
|
|
|
|
mftbu r3
|
|
|
|
|
cmpw r0, r3
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne @tbloop
|
2017-11-19 04:11:07 +00:00
|
|
|
|
stw r0, KDP.ThudSavedTBU(r1)
|
|
|
|
|
stw r2, KDP.ThudSavedTB(r1)
|
|
|
|
|
@end_if_601
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mfspr r0, dec
|
|
|
|
|
stw r0, 0x07a8(r1)
|
|
|
|
|
mfspr r0, hid0
|
|
|
|
|
stw r0, 0x07ac(r1)
|
|
|
|
|
mfspr r0, sdr1
|
|
|
|
|
stw r0, 0x07b0(r1)
|
|
|
|
|
mfspr r0, srr0
|
|
|
|
|
stw r0, 0x07b4(r1)
|
|
|
|
|
mfspr r0, srr1
|
|
|
|
|
stw r0, 0x07b8(r1)
|
|
|
|
|
mfmsr r0
|
|
|
|
|
stw r0, 0x07bc(r1)
|
|
|
|
|
mfsr r0, 0
|
|
|
|
|
stw r0, 0x07c0(r1)
|
|
|
|
|
mfsr r0, 1
|
|
|
|
|
stw r0, 0x07c4(r1)
|
|
|
|
|
mfsr r0, 2
|
|
|
|
|
stw r0, 0x07c8(r1)
|
|
|
|
|
mfsr r0, 3
|
|
|
|
|
stw r0, 0x07cc(r1)
|
|
|
|
|
mfsr r0, 4
|
|
|
|
|
stw r0, 0x07d0(r1)
|
|
|
|
|
mfsr r0, 5
|
|
|
|
|
stw r0, 0x07d4(r1)
|
|
|
|
|
mfsr r0, 6
|
|
|
|
|
stw r0, 0x07d8(r1)
|
|
|
|
|
mfsr r0, 7
|
|
|
|
|
stw r0, 0x07dc(r1)
|
|
|
|
|
mfsr r0, 8
|
|
|
|
|
stw r0, 0x07e0(r1)
|
|
|
|
|
mfsr r0, 9
|
|
|
|
|
stw r0, 0x07e4(r1)
|
|
|
|
|
mfsr r0, 10
|
|
|
|
|
stw r0, 0x07e8(r1)
|
|
|
|
|
mfsr r0, 11
|
|
|
|
|
stw r0, 0x07ec(r1)
|
|
|
|
|
mfsr r0, 12
|
|
|
|
|
stw r0, 0x07f0(r1)
|
|
|
|
|
mfsr r0, 13
|
|
|
|
|
stw r0, 0x07f4(r1)
|
|
|
|
|
mfsr r0, 14
|
|
|
|
|
stw r0, 0x07f8(r1)
|
|
|
|
|
mfsr r0, 15
|
|
|
|
|
stw r0, 0x07fc(r1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mfmsr r0
|
|
|
|
|
_bset r0, r0, MSR_FPbit
|
|
|
|
|
mtmsr r0
|
|
|
|
|
isync
|
|
|
|
|
|
|
|
|
|
stfd f0, 0x0800(r1)
|
|
|
|
|
stfd f1, 0x0808(r1)
|
|
|
|
|
stfd f2, 0x0810(r1)
|
|
|
|
|
stfd f3, 0x0818(r1)
|
|
|
|
|
stfd f4, 0x0820(r1)
|
|
|
|
|
stfd f5, 0x0828(r1)
|
|
|
|
|
stfd f6, 0x0830(r1)
|
|
|
|
|
stfd f7, 0x0838(r1)
|
|
|
|
|
stfd f8, 0x0840(r1)
|
|
|
|
|
stfd f9, 0x0848(r1)
|
|
|
|
|
stfd f10, 0x0850(r1)
|
|
|
|
|
stfd f11, 0x0858(r1)
|
|
|
|
|
stfd f12, 0x0860(r1)
|
|
|
|
|
stfd f13, 0x0868(r1)
|
|
|
|
|
stfd f14, 0x0870(r1)
|
|
|
|
|
stfd f15, 0x0878(r1)
|
|
|
|
|
stfd f16, 0x0880(r1)
|
|
|
|
|
stfd f17, 0x0888(r1)
|
|
|
|
|
stfd f18, 0x0890(r1)
|
|
|
|
|
stfd f19, 0x0898(r1)
|
|
|
|
|
stfd f20, 0x08a0(r1)
|
|
|
|
|
stfd f21, 0x08a8(r1)
|
|
|
|
|
stfd f22, 0x08b0(r1)
|
|
|
|
|
stfd f23, 0x08b8(r1)
|
|
|
|
|
stfd f24, 0x08c0(r1)
|
|
|
|
|
stfd f25, 0x08c8(r1)
|
|
|
|
|
stfd f26, 0x08d0(r1)
|
|
|
|
|
stfd f27, 0x08d8(r1)
|
|
|
|
|
stfd f28, 0x08e0(r1)
|
|
|
|
|
stfd f29, 0x08e8(r1)
|
|
|
|
|
stfd f30, 0x08f0(r1)
|
|
|
|
|
stfd f31, 0x08f8(r1)
|
|
|
|
|
mffs f31
|
|
|
|
|
lwz r0, 0x08fc(r1)
|
|
|
|
|
stfd f31, 0x08fc(r1)
|
|
|
|
|
stw r0, 0x08fc(r1)
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne cr1, @0x260
|
2017-11-19 04:11:07 +00:00
|
|
|
|
|
|
|
|
|
if &TYPE('NKDebugShim') != 'UNDEFINED'
|
|
|
|
|
b @go_here_to_use_saved_debug_command
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
@0x23c
|
|
|
|
|
lwz r1, 0(0)
|
|
|
|
|
addi r1, r1, 1
|
|
|
|
|
stw r1, 0(0)
|
|
|
|
|
|
|
|
|
|
li r1, 0
|
|
|
|
|
dcbst r1, r1
|
|
|
|
|
|
|
|
|
|
bl getchar
|
|
|
|
|
|
|
|
|
|
; gets kdp from print!!!
|
|
|
|
|
cmpwi r8, -0x01
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne @0x260
|
2017-11-19 04:11:07 +00:00
|
|
|
|
b @0x23c
|
|
|
|
|
|
|
|
|
|
@0x260
|
|
|
|
|
lwz r8, 0x0edc(r1)
|
|
|
|
|
ori r8, r8, 0x02
|
|
|
|
|
stw r8, 0x0edc(r1)
|
|
|
|
|
_log '<EFBFBD> NanoKernel debugger^n'
|
|
|
|
|
|
|
|
|
|
@prompt
|
|
|
|
|
|
|
|
|
|
if &TYPE('NKDebugShim') != 'UNDEFINED'
|
|
|
|
|
b @NKDebugShimCode
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
_log '<EFBFBD> ' ; thats an omega, btw
|
|
|
|
|
li r17, 0x00 ; r17 = charcount
|
|
|
|
|
stw r17, -0x08fc(r1)
|
|
|
|
|
|
|
|
|
|
@input_busywait
|
|
|
|
|
bl getchar
|
|
|
|
|
cmpwi r8, -1
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beq @input_busywait
|
2017-11-19 04:11:07 +00:00
|
|
|
|
|
|
|
|
|
mr r16, r8
|
|
|
|
|
cmpwi r16, 8 ; backspace
|
|
|
|
|
cmpwi cr1, r17, 0
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne @not_backspace
|
|
|
|
|
ble cr1, @input_busywait
|
2017-11-19 04:11:07 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; Backspace, wipe position, then backspace again!
|
|
|
|
|
subi r17, r17, 1
|
|
|
|
|
li r8, 8
|
|
|
|
|
bl Printc
|
|
|
|
|
li r8, ' '
|
|
|
|
|
bl Printc
|
|
|
|
|
li r8, 8
|
|
|
|
|
bl Printc
|
|
|
|
|
|
|
|
|
|
b @input_busywait
|
|
|
|
|
@not_backspace
|
|
|
|
|
|
|
|
|
|
; If
|
|
|
|
|
cmpwi cr2, r17, 95
|
|
|
|
|
addi r18, r1, -0x960 ; prepare to copy the line!
|
2018-04-15 07:05:02 +00:00
|
|
|
|
blt cr2, @short_line
|
2017-11-19 04:11:07 +00:00
|
|
|
|
_log '^b'
|
|
|
|
|
b @input_busywait
|
|
|
|
|
|
|
|
|
|
@0x30c
|
|
|
|
|
addi r17, r17, 1 ; accept the character as an addition to the line
|
|
|
|
|
mr r8, r16
|
|
|
|
|
bl Printc
|
|
|
|
|
b @input_busywait
|
|
|
|
|
@short_line
|
|
|
|
|
|
|
|
|
|
cmpwi r16, 13
|
|
|
|
|
stbx r16, r17, r18
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne @0x30c
|
2017-11-19 04:11:07 +00:00
|
|
|
|
li r16, 0x00
|
|
|
|
|
stbx r16, r17, r18
|
|
|
|
|
_log '^n'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@go_here_to_use_saved_debug_command
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; Now a line is expected to be committed:
|
|
|
|
|
|
|
|
|
|
addi r15, r1, -0x960
|
|
|
|
|
|
|
|
|
|
; r15 = start
|
|
|
|
|
bl next_cmd_word
|
|
|
|
|
; r15 = ptr
|
|
|
|
|
; r16 = char
|
|
|
|
|
|
|
|
|
|
cmpwi r16, 0x00
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beq @prompt
|
2017-11-19 04:11:07 +00:00
|
|
|
|
bl @load_commands
|
|
|
|
|
mflr r16
|
|
|
|
|
bl @load_tbl
|
|
|
|
|
mflr r17
|
|
|
|
|
|
|
|
|
|
; r16 = command strings
|
|
|
|
|
; r17 = lut
|
|
|
|
|
bl cmd_lookup
|
|
|
|
|
; cr0 = found
|
|
|
|
|
; r17 = ptr to lut entry
|
|
|
|
|
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne @bad_command
|
2017-11-19 04:11:07 +00:00
|
|
|
|
bl @load_tbl
|
|
|
|
|
mflr r16
|
|
|
|
|
lwz r17, 0x0000(r17)
|
|
|
|
|
add r16, r16, r17
|
|
|
|
|
mtlr r16
|
|
|
|
|
|
|
|
|
|
blr
|
|
|
|
|
|
|
|
|
|
@bad_command
|
|
|
|
|
_log '???^n'
|
|
|
|
|
b @prompt
|
|
|
|
|
|
|
|
|
|
@load_commands
|
|
|
|
|
blrl
|
|
|
|
|
string CString
|
|
|
|
|
dc.b 'dm'
|
|
|
|
|
dc.b 'dml'
|
|
|
|
|
dc.b 'g'
|
|
|
|
|
dc.b 'id'
|
|
|
|
|
dc.b 'kd'
|
|
|
|
|
dc.b 'td'
|
|
|
|
|
dc.b '?'
|
|
|
|
|
dc.b 'help'
|
|
|
|
|
dc.b 0xff
|
|
|
|
|
align 2
|
|
|
|
|
|
|
|
|
|
@load_tbl
|
|
|
|
|
blrl
|
|
|
|
|
|
|
|
|
|
@tbl
|
|
|
|
|
dc.l @cmd_dumpmem_physical - @tbl
|
|
|
|
|
dc.l @cmd_dumpmem_logical - @tbl
|
|
|
|
|
dc.l @cmd_goto - @tbl
|
|
|
|
|
dc.l @cmd_opaque_id_info - @tbl
|
|
|
|
|
dc.l @cmd_display_kern_data - @tbl
|
|
|
|
|
dc.l @cmd_dump_registers - @tbl
|
|
|
|
|
dc.l @cmd_help - @tbl
|
|
|
|
|
dc.l @cmd_help - @tbl
|
|
|
|
|
dc.l 0
|
|
|
|
|
|
|
|
|
|
@cmd_help
|
|
|
|
|
_log 'Commands:^n'
|
|
|
|
|
_log ' dm address [length] -- Display physical^n'
|
|
|
|
|
_log ' dml address [length] -- Display logical^n'
|
|
|
|
|
_log ' g [address] -- Go resume^n'
|
|
|
|
|
_log ' id [-all -p -t -tm -q -s -r -c -sp -e -cg -a -n -nc]^n'
|
|
|
|
|
_log ' id idvalue -- Obtain opaque ID info^n'
|
|
|
|
|
_log ' kd -- Display kernel data^n'
|
|
|
|
|
_log ' td -- Dump registers^n'
|
|
|
|
|
b @prompt
|
|
|
|
|
|
|
|
|
|
@cmd_dumpmem_physical
|
|
|
|
|
; r15 = start
|
|
|
|
|
bl next_cmd_word
|
|
|
|
|
; r15 = ptr
|
|
|
|
|
; r16 = char
|
|
|
|
|
|
|
|
|
|
cmpwi r16, 0x00
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beq @missing_physical_addr
|
2017-11-19 04:11:07 +00:00
|
|
|
|
bl major_0x187b0
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne @bad_length_1
|
2017-11-19 04:11:07 +00:00
|
|
|
|
mr r30, r16
|
|
|
|
|
li r31, 0x10
|
|
|
|
|
|
|
|
|
|
; r15 = start
|
|
|
|
|
bl next_cmd_word
|
|
|
|
|
; r15 = ptr
|
|
|
|
|
; r16 = char
|
|
|
|
|
|
|
|
|
|
cmpwi r16, 0x00
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beq @0x5e0
|
2017-11-19 04:11:07 +00:00
|
|
|
|
bl major_0x187b0
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne @bad_length_1
|
2017-11-19 04:11:07 +00:00
|
|
|
|
mr r31, r16
|
|
|
|
|
|
|
|
|
|
@0x5e0
|
|
|
|
|
addi r31, r31, 0x03
|
|
|
|
|
rlwinm r31, r31, 0, 0, 29
|
|
|
|
|
mr r16, r30
|
|
|
|
|
mr r17, r31
|
|
|
|
|
bl print_memory
|
|
|
|
|
b @prompt
|
|
|
|
|
|
|
|
|
|
@missing_physical_addr
|
|
|
|
|
_log 'Need a physical address^n'
|
|
|
|
|
b @prompt
|
|
|
|
|
|
|
|
|
|
@bad_length_1
|
|
|
|
|
_log 'Length must be a hexadecimal value^n'
|
|
|
|
|
b @prompt
|
|
|
|
|
|
|
|
|
|
@cmd_dumpmem_logical
|
|
|
|
|
_log 'Logical memory^n'
|
|
|
|
|
|
|
|
|
|
; r15 = start
|
|
|
|
|
bl next_cmd_word
|
|
|
|
|
; r15 = ptr
|
|
|
|
|
; r16 = char
|
|
|
|
|
|
|
|
|
|
cmpwi r16, 0x00
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beq @missing_logical_addr
|
2017-11-19 04:11:07 +00:00
|
|
|
|
bl major_0x187b0
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne @bad_length_2
|
2017-11-19 04:11:07 +00:00
|
|
|
|
mr r30, r16
|
|
|
|
|
li r31, 0x10
|
|
|
|
|
|
|
|
|
|
; r15 = start
|
|
|
|
|
bl next_cmd_word
|
|
|
|
|
; r15 = ptr
|
|
|
|
|
; r16 = char
|
|
|
|
|
|
|
|
|
|
cmpwi r16, 0x00
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beq @0x6b0
|
2017-11-19 04:11:07 +00:00
|
|
|
|
bl major_0x187b0
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne @bad_length_2
|
2017-11-19 04:11:07 +00:00
|
|
|
|
mr r31, r16
|
|
|
|
|
|
|
|
|
|
@0x6b0
|
|
|
|
|
addi r31, r31, 0x03
|
|
|
|
|
rlwinm r31, r31, 0, 0, 29
|
|
|
|
|
mr r16, r30
|
|
|
|
|
mr r17, r31
|
|
|
|
|
bl print_memory_logical
|
|
|
|
|
b @prompt
|
|
|
|
|
|
|
|
|
|
@missing_logical_addr
|
|
|
|
|
_log 'Need a logical address^n'
|
|
|
|
|
b @prompt
|
|
|
|
|
|
|
|
|
|
@bad_length_2
|
|
|
|
|
_log 'Length must be a hexadecimal value^n'
|
|
|
|
|
b @prompt
|
|
|
|
|
|
|
|
|
|
@cmd_goto
|
|
|
|
|
; r15 = start
|
|
|
|
|
bl next_cmd_word
|
|
|
|
|
; r15 = ptr
|
|
|
|
|
; r16 = char
|
|
|
|
|
|
|
|
|
|
cmpwi r16, 0x00
|
|
|
|
|
lwz r31, 0x0904(r1)
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beq @0x748
|
2017-11-19 04:11:07 +00:00
|
|
|
|
bl major_0x187b0
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne @bad_resume_address
|
2017-11-19 04:11:07 +00:00
|
|
|
|
stw r16, 0x0904(r1)
|
|
|
|
|
|
|
|
|
|
@0x748
|
|
|
|
|
|
|
|
|
|
@NKDebugShimCode
|
|
|
|
|
_log 'Resuming at '
|
|
|
|
|
lwz r31, 0x0904(r1)
|
|
|
|
|
mr r8, r31
|
|
|
|
|
bl Printw
|
|
|
|
|
_log ' - wish me luck.^n'
|
|
|
|
|
bl prereturn
|
|
|
|
|
lwz r8, 0x0904(r1)
|
2017-12-12 07:54:19 +00:00
|
|
|
|
|
|
|
|
|
_AssertAndRelease PSA.ThudLock, scratch=r9
|
|
|
|
|
|
2017-11-19 04:11:07 +00:00
|
|
|
|
mtlr r8
|
|
|
|
|
blr
|
|
|
|
|
|
|
|
|
|
@bad_resume_address
|
|
|
|
|
_log 'Need hexadecimal value for resume address^n'
|
|
|
|
|
b @prompt
|
|
|
|
|
|
|
|
|
|
@cmd_opaque_id_info
|
|
|
|
|
; r15 = start
|
|
|
|
|
bl next_cmd_word
|
|
|
|
|
; r15 = ptr
|
|
|
|
|
; r16 = char
|
|
|
|
|
|
|
|
|
|
cmpwi r16, 0x00
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beq @missing_opaque_id
|
2017-11-19 04:11:07 +00:00
|
|
|
|
bl @load_id_args
|
|
|
|
|
mflr r16
|
|
|
|
|
li r17, 0x00
|
|
|
|
|
|
|
|
|
|
; r16 = command strings
|
|
|
|
|
; r17 = lut
|
|
|
|
|
bl cmd_lookup
|
|
|
|
|
; cr0 = found
|
|
|
|
|
; r17 = ptr to lut entry
|
|
|
|
|
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne @0x884
|
2017-11-19 04:11:07 +00:00
|
|
|
|
li r29, 0x00
|
|
|
|
|
li r30, 0x00
|
|
|
|
|
srwi r31, r17, 2
|
|
|
|
|
|
|
|
|
|
@0x82c
|
|
|
|
|
mr r8, r30
|
|
|
|
|
mr r9, r31
|
|
|
|
|
bl GetNextIDOfClass
|
|
|
|
|
mr. r30, r8
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beq @0x868
|
2017-11-19 04:11:07 +00:00
|
|
|
|
mr r8, r8
|
|
|
|
|
bl Printw
|
|
|
|
|
addi r29, r29, 0x01
|
|
|
|
|
andi. r29, r29, 0x07
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne @0x82c
|
2017-11-19 04:11:07 +00:00
|
|
|
|
_log '^n'
|
|
|
|
|
b @0x82c
|
|
|
|
|
|
|
|
|
|
@0x868
|
|
|
|
|
cmpwi r29, 0x00
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beq @prompt
|
2017-11-19 04:11:07 +00:00
|
|
|
|
_log '^n'
|
|
|
|
|
b @prompt
|
|
|
|
|
|
|
|
|
|
@0x884
|
|
|
|
|
bl major_0x187b0
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne @bad_opaque_id
|
2017-11-19 04:11:07 +00:00
|
|
|
|
mr r30, r16
|
|
|
|
|
mr r8, r16
|
|
|
|
|
|
|
|
|
|
; r8 = id
|
|
|
|
|
bl LookupID
|
|
|
|
|
; 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
|
|
|
|
|
_log 'ID '
|
|
|
|
|
mr r8, r30
|
|
|
|
|
bl Printw
|
|
|
|
|
bl @load_id_kind_strings
|
|
|
|
|
mflr r17
|
|
|
|
|
slwi r18, r9, 4
|
|
|
|
|
add r8, r17, r18
|
|
|
|
|
bl PrintS
|
|
|
|
|
cmpwi r9, 0x00
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beq @0x978
|
2017-11-19 04:11:07 +00:00
|
|
|
|
_log ' at '
|
|
|
|
|
mr r8, r31
|
|
|
|
|
bl Printw
|
|
|
|
|
_log '^n'
|
|
|
|
|
mr r16, r31
|
|
|
|
|
bl @load_more_jumps
|
|
|
|
|
mflr r17
|
|
|
|
|
slwi r18, r9, 2
|
|
|
|
|
lwzx r17, r17, r18
|
|
|
|
|
bl print_memory
|
|
|
|
|
b @prompt
|
|
|
|
|
|
|
|
|
|
@missing_opaque_id
|
|
|
|
|
_log 'Need an opaque ID^n'
|
|
|
|
|
b @prompt
|
|
|
|
|
|
|
|
|
|
@bad_opaque_id
|
|
|
|
|
_log 'ID must be a hexadecimal value^n'
|
|
|
|
|
b @prompt
|
|
|
|
|
|
|
|
|
|
@0x978
|
|
|
|
|
_log '^n'
|
|
|
|
|
b @prompt
|
|
|
|
|
|
|
|
|
|
@load_id_kind_strings
|
|
|
|
|
blrl
|
|
|
|
|
string CString
|
|
|
|
|
dc.b 'is invalid. '
|
|
|
|
|
dc.b 'Process '
|
|
|
|
|
dc.b 'Task '
|
|
|
|
|
dc.b 'Timer '
|
|
|
|
|
dc.b 'Queue '
|
|
|
|
|
dc.b 'Semaphore '
|
|
|
|
|
dc.b 'Critical Region'
|
|
|
|
|
dc.b 'Cpu '
|
|
|
|
|
dc.b 'Address Space '
|
|
|
|
|
dc.b 'Event Group '
|
|
|
|
|
dc.b 'Coherence Group'
|
|
|
|
|
dc.b 'Area '
|
|
|
|
|
dc.b 'Notification '
|
|
|
|
|
dc.b 'Console Log '
|
|
|
|
|
align 2
|
|
|
|
|
|
|
|
|
|
@load_more_jumps
|
|
|
|
|
blrl
|
|
|
|
|
dc.l 0
|
|
|
|
|
dc.l Process.Size
|
|
|
|
|
dc.l Task.Size
|
|
|
|
|
dc.l Timer.Size
|
|
|
|
|
dc.l Queue.Size
|
|
|
|
|
dc.l Semaphore.Size
|
|
|
|
|
dc.l CriticalRegion.Size
|
|
|
|
|
dc.l CPU.Size
|
|
|
|
|
dc.l AddressSpace.Size
|
|
|
|
|
dc.l EventGroup.Size
|
|
|
|
|
dc.l CoherenceGroup.Size
|
|
|
|
|
dc.l Area.Size
|
|
|
|
|
dc.l Notification.Size
|
|
|
|
|
dc.l ConsoleLog.Size
|
|
|
|
|
|
|
|
|
|
@load_id_args
|
|
|
|
|
blrl
|
|
|
|
|
dc.b '-all'
|
|
|
|
|
dc.b '-p'
|
|
|
|
|
dc.b '-t'
|
|
|
|
|
dc.b '-tm'
|
|
|
|
|
dc.b '-q'
|
|
|
|
|
dc.b '-s'
|
|
|
|
|
dc.b '-r'
|
|
|
|
|
dc.b '-c'
|
|
|
|
|
dc.b '-sp'
|
|
|
|
|
dc.b '-e'
|
|
|
|
|
dc.b '-cg'
|
|
|
|
|
dc.b '-a'
|
|
|
|
|
dc.b '-n'
|
|
|
|
|
dc.b '-nc'
|
|
|
|
|
dc.b 0xff
|
|
|
|
|
align 2
|
|
|
|
|
|
|
|
|
|
@cmd_display_kern_data
|
|
|
|
|
mfsprg r17, 0
|
|
|
|
|
|
|
|
|
|
_log 'Kernel version '
|
|
|
|
|
lhz r8, KDP.InfoRecord + InfoRecord.NKNanoKernelInfoVer(r1)
|
|
|
|
|
bl Printh
|
|
|
|
|
|
|
|
|
|
_log 'Code base '
|
|
|
|
|
lwz r8, KDP.PA_NanoKernelCode(r1)
|
|
|
|
|
bl Printw
|
|
|
|
|
|
|
|
|
|
_log 'PSA '
|
|
|
|
|
addi r8, r17, PSA.Base
|
|
|
|
|
bl Printw
|
|
|
|
|
|
|
|
|
|
_log 'KDP '
|
|
|
|
|
mr r8, r1
|
|
|
|
|
bl Printw
|
|
|
|
|
|
|
|
|
|
_log 'EDP '
|
|
|
|
|
lwz r8, KDP.PA_EmulatorData(r1)
|
|
|
|
|
bl Printw
|
|
|
|
|
|
|
|
|
|
_log '^nCurrent EWA '
|
|
|
|
|
mr r8, r17
|
|
|
|
|
bl Printw
|
|
|
|
|
|
|
|
|
|
_log ' is CPU '
|
2018-02-17 16:57:01 +00:00
|
|
|
|
lhz r8, EWA.CPUIndex(r17)
|
2017-11-19 04:11:07 +00:00
|
|
|
|
bl Printh
|
|
|
|
|
|
|
|
|
|
_log ' ID-'
|
|
|
|
|
lwz r8, -0x0340(r17)
|
|
|
|
|
bl Printw
|
|
|
|
|
|
|
|
|
|
lwz r18, EWA.PA_CurTask(r17)
|
|
|
|
|
_log '^nCurrent task '
|
|
|
|
|
mr r8, r18
|
|
|
|
|
bl Printw
|
|
|
|
|
|
|
|
|
|
_log 'ID-'
|
|
|
|
|
lwz r8, Task.ID(r18)
|
|
|
|
|
bl Printw
|
|
|
|
|
|
|
|
|
|
_log 'name \"'
|
|
|
|
|
lwz r8, Task.Name(r18)
|
|
|
|
|
rotlwi r8, r8, 8
|
|
|
|
|
bl Printc
|
|
|
|
|
rotlwi r8, r8, 8
|
|
|
|
|
bl Printc
|
|
|
|
|
rotlwi r8, r8, 8
|
|
|
|
|
bl Printc
|
|
|
|
|
rotlwi r8, r8, 8
|
|
|
|
|
bl Printc
|
|
|
|
|
|
|
|
|
|
_log '\" Owning process '
|
|
|
|
|
lwz r8, 0x006c(r18)
|
|
|
|
|
bl Printw
|
|
|
|
|
|
|
|
|
|
_log ' ID-'
|
|
|
|
|
lwz r8, 0x0060(r18)
|
|
|
|
|
bl Printw
|
|
|
|
|
|
|
|
|
|
_log '^nAddress Space '
|
|
|
|
|
lwz r18, -0x001c(r17)
|
|
|
|
|
mr r8, r18
|
|
|
|
|
bl Printw
|
|
|
|
|
|
|
|
|
|
_log ' ID-'
|
|
|
|
|
lwz r8, 0x0000(r18)
|
|
|
|
|
bl Printw
|
|
|
|
|
|
|
|
|
|
_log '^n'
|
|
|
|
|
|
|
|
|
|
bl print_xpt_info
|
|
|
|
|
b @prompt
|
|
|
|
|
|
|
|
|
|
@cmd_dump_registers
|
|
|
|
|
_log 'Kernel registers:^n'
|
|
|
|
|
bl print_sprgs
|
|
|
|
|
bl print_sprs
|
|
|
|
|
_log '^n'
|
|
|
|
|
bl print_segment_registers
|
|
|
|
|
_log '^n'
|
|
|
|
|
bl print_gprs
|
|
|
|
|
b @prompt
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mflr r16
|
|
|
|
|
lwz r17, 0x07b4(r1)
|
|
|
|
|
rlwinm r17, r17, 16, 16, 27
|
|
|
|
|
cmpwi r17, 0x6800
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne major_0x18040_0x100
|
2017-11-19 04:11:07 +00:00
|
|
|
|
lwz r17, 0x071c(r1)
|
|
|
|
|
srwi r17, r17, 16
|
|
|
|
|
andi. r17, r17, 0xffa0
|
|
|
|
|
cmpwi r17, 0x2a0
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne major_0x18040_0x64
|
2017-11-19 04:11:07 +00:00
|
|
|
|
_log 'Caused by emulator termination request^n'
|
|
|
|
|
b major_0x18040_0x9c
|
|
|
|
|
|
|
|
|
|
major_0x18040_0x64
|
|
|
|
|
_log 'Caused by unhandled emulator exception^n'
|
|
|
|
|
|
|
|
|
|
major_0x18040_0x9c
|
|
|
|
|
lwz r17, 0x079c(r1)
|
|
|
|
|
lwz r18, 0x0704(r1)
|
|
|
|
|
subf r17, r18, r17
|
|
|
|
|
cmpwi r17, 0x100
|
|
|
|
|
cmpwi cr1, r17, -0x100
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bgt major_0x18040_0x100
|
|
|
|
|
blt cr1, major_0x18040_0x100
|
2017-11-19 04:11:07 +00:00
|
|
|
|
_log 'Looks like interrupt stack overflow by os or application^n'
|
|
|
|
|
|
|
|
|
|
major_0x18040_0x100
|
|
|
|
|
mtlr r16
|
|
|
|
|
blr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print_xpt_info ; OUTSIDE REFERER
|
|
|
|
|
mflr r16
|
|
|
|
|
lwz r18, 0x064c(r1)
|
|
|
|
|
llabel r18, NKBtm
|
|
|
|
|
add r19, r18, r19
|
|
|
|
|
_log 'Termination caller '
|
|
|
|
|
lwz r20, 0x0904(r1)
|
|
|
|
|
mr r8, r20
|
|
|
|
|
bl Printw
|
|
|
|
|
subf. r21, r18, r20
|
|
|
|
|
cmplw cr1, r20, r19
|
2018-04-15 07:05:02 +00:00
|
|
|
|
blt print_xpt_info_0x84
|
|
|
|
|
bge cr1, print_xpt_info_0x84
|
2017-11-19 04:11:07 +00:00
|
|
|
|
_log '( NK+'
|
|
|
|
|
mr r8, r21
|
|
|
|
|
bl Printw
|
|
|
|
|
_log ')^n'
|
|
|
|
|
|
|
|
|
|
print_xpt_info_0x84
|
|
|
|
|
_log ' Last exception at '
|
|
|
|
|
mfspr r8, srr1
|
|
|
|
|
bl Printw
|
|
|
|
|
mfspr r8, srr0
|
|
|
|
|
bl Printw
|
|
|
|
|
mfspr r8, srr0
|
|
|
|
|
subf. r21, r18, r8
|
|
|
|
|
cmplw cr1, r8, r19
|
2018-04-15 07:05:02 +00:00
|
|
|
|
blt print_xpt_info_0xf8
|
|
|
|
|
bge cr1, print_xpt_info_0xf8
|
2017-11-19 04:11:07 +00:00
|
|
|
|
_log '( NK+'
|
|
|
|
|
mr r8, r21
|
|
|
|
|
bl Printw
|
|
|
|
|
_log ')'
|
|
|
|
|
|
|
|
|
|
print_xpt_info_0xf8
|
|
|
|
|
_log '^n'
|
|
|
|
|
mtlr r16
|
|
|
|
|
blr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; print_sprgs
|
|
|
|
|
|
|
|
|
|
; Goldmine. Tells me what the SPRGs do!
|
|
|
|
|
|
|
|
|
|
print_sprgs ; OUTSIDE REFERER
|
|
|
|
|
mflr r16
|
|
|
|
|
_log 'SPRGs ewa: '
|
|
|
|
|
mfsprg r8, 0
|
|
|
|
|
bl Printw
|
|
|
|
|
_log ' r1: '
|
|
|
|
|
mfsprg r8, 1
|
|
|
|
|
bl Printw
|
|
|
|
|
_log ' lr: '
|
|
|
|
|
mfsprg r8, 2
|
|
|
|
|
bl Printw
|
|
|
|
|
_log ' vecBase: '
|
|
|
|
|
mfsprg r8, 3
|
|
|
|
|
bl Printw
|
|
|
|
|
_log '^n'
|
|
|
|
|
mtlr r16
|
|
|
|
|
blr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; print_sprs
|
|
|
|
|
|
|
|
|
|
; Both user-mode and supervisor-only
|
|
|
|
|
|
|
|
|
|
print_sprs ; OUTSIDE REFERER
|
|
|
|
|
mflr r16
|
|
|
|
|
_log ' cr: '
|
|
|
|
|
lwz r8, 0x0780(r1)
|
|
|
|
|
bl Printw
|
|
|
|
|
_log 'xer: '
|
|
|
|
|
lwz r8, 0x0788(r1)
|
|
|
|
|
bl Printw
|
|
|
|
|
_log 'ctr: '
|
|
|
|
|
lwz r8, 0x0790(r1)
|
|
|
|
|
bl Printw
|
|
|
|
|
_log 'lr: '
|
|
|
|
|
lwz r8, 0x078c(r1)
|
|
|
|
|
bl Printw
|
|
|
|
|
_log '^n dsisr: '
|
|
|
|
|
lwz r8, 0x0798(r1)
|
|
|
|
|
bl Printw
|
|
|
|
|
_log 'dar:'
|
|
|
|
|
lwz r8, 0x079c(r1)
|
|
|
|
|
bl Printw
|
|
|
|
|
_log 'pvr: '
|
|
|
|
|
lwz r8, 0x0794(r1)
|
|
|
|
|
bl Printw
|
|
|
|
|
_log '^n'
|
|
|
|
|
mtlr r16
|
|
|
|
|
blr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print_segment_registers ; OUTSIDE REFERER
|
|
|
|
|
mflr r16
|
|
|
|
|
_log ' sr0-sr7 '
|
|
|
|
|
li r17, 0x08
|
|
|
|
|
mtctr r17
|
|
|
|
|
li r18, 0x00
|
|
|
|
|
|
|
|
|
|
print_segment_registers_0x28
|
|
|
|
|
mfsrin r8, r18
|
|
|
|
|
addis r18, r18, 0x1000
|
|
|
|
|
bl Printw
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bdnz print_segment_registers_0x28
|
2017-11-19 04:11:07 +00:00
|
|
|
|
_log '^n sr8-sr15 '
|
|
|
|
|
li r17, 0x08
|
|
|
|
|
mtctr r17
|
|
|
|
|
|
|
|
|
|
print_segment_registers_0x5c
|
|
|
|
|
mfsrin r8, r18
|
|
|
|
|
addis r18, r18, 0x1000
|
|
|
|
|
bl Printw
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bdnz print_segment_registers_0x5c
|
2017-11-19 04:11:07 +00:00
|
|
|
|
_log '^n'
|
|
|
|
|
mtlr r16
|
|
|
|
|
blr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print_gprs ; OUTSIDE REFERER
|
|
|
|
|
mflr r16
|
|
|
|
|
addi r17, r1, 0x6fc
|
|
|
|
|
_log ' r0-r7 '
|
|
|
|
|
li r18, 0x08
|
|
|
|
|
mtctr r18
|
|
|
|
|
|
|
|
|
|
print_gprs_0x28
|
|
|
|
|
lwzu r8, 0x0004(r17)
|
|
|
|
|
bl Printw
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bdnz print_gprs_0x28
|
2017-11-19 04:11:07 +00:00
|
|
|
|
_log '^n r8-r15 '
|
|
|
|
|
li r18, 0x08
|
|
|
|
|
mtctr r18
|
|
|
|
|
|
|
|
|
|
print_gprs_0x58
|
|
|
|
|
lwzu r8, 0x0004(r17)
|
|
|
|
|
bl Printw
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bdnz print_gprs_0x58
|
2017-11-19 04:11:07 +00:00
|
|
|
|
_log '^n r16-r23 '
|
|
|
|
|
li r18, 0x08
|
|
|
|
|
mtctr r18
|
|
|
|
|
|
|
|
|
|
print_gprs_0x88
|
|
|
|
|
lwzu r8, 0x0004(r17)
|
|
|
|
|
bl Printw
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bdnz print_gprs_0x88
|
2017-11-19 04:11:07 +00:00
|
|
|
|
_log '^n r24-r31 '
|
|
|
|
|
li r18, 0x08
|
|
|
|
|
mtctr r18
|
|
|
|
|
|
|
|
|
|
print_gprs_0xb8
|
|
|
|
|
lwzu r8, 0x0004(r17)
|
|
|
|
|
bl Printw
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bdnz print_gprs_0xb8
|
2017-11-19 04:11:07 +00:00
|
|
|
|
_log '^n'
|
|
|
|
|
mtlr r16
|
|
|
|
|
blr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print_memory ; OUTSIDE REFERER
|
|
|
|
|
mflr r18
|
|
|
|
|
srwi r17, r17, 4
|
|
|
|
|
|
|
|
|
|
print_memory_0x8
|
|
|
|
|
mr r8, r16
|
|
|
|
|
bl Printw
|
|
|
|
|
_log ' '
|
|
|
|
|
lwz r8, 0x0000(r16)
|
|
|
|
|
bl Printw
|
|
|
|
|
lwz r8, 0x0004(r16)
|
|
|
|
|
bl Printw
|
|
|
|
|
lwz r8, 0x0008(r16)
|
|
|
|
|
bl Printw
|
|
|
|
|
lwz r8, 0x000c(r16)
|
|
|
|
|
bl Printw
|
|
|
|
|
_log ' *'
|
|
|
|
|
li r8, 0x10
|
|
|
|
|
addi r16, r16, -0x01
|
|
|
|
|
mtctr r8
|
|
|
|
|
|
|
|
|
|
print_memory_0x60
|
|
|
|
|
lbzu r8, 0x0001(r16)
|
|
|
|
|
cmpwi r8, 0xff
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beq print_memory_0x74
|
2017-11-19 04:11:07 +00:00
|
|
|
|
cmpwi r8, 0x20
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bgt print_memory_0x78
|
2017-11-19 04:11:07 +00:00
|
|
|
|
|
|
|
|
|
print_memory_0x74
|
|
|
|
|
li r8, 0x20
|
|
|
|
|
|
|
|
|
|
print_memory_0x78
|
|
|
|
|
bl Printc
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bdnz print_memory_0x60
|
2017-11-19 04:11:07 +00:00
|
|
|
|
_log '*^n'
|
|
|
|
|
addi r16, r16, 0x01
|
|
|
|
|
addi r17, r17, -0x01
|
|
|
|
|
bl getchar
|
|
|
|
|
cmpwi r8, -0x01
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne print_memory_0xb0
|
2017-11-19 04:11:07 +00:00
|
|
|
|
cmpwi r17, 0x00
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne print_memory_0x8
|
2017-11-19 04:11:07 +00:00
|
|
|
|
|
|
|
|
|
print_memory_0xb0
|
|
|
|
|
_log '^n'
|
|
|
|
|
mtlr r18
|
|
|
|
|
blr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print_memory_logical ; OUTSIDE REFERER
|
|
|
|
|
mflr r18
|
|
|
|
|
srwi r17, r17, 4
|
|
|
|
|
|
|
|
|
|
print_memory_logical_0x8
|
|
|
|
|
mr r8, r16
|
|
|
|
|
bl Printw
|
|
|
|
|
_log ' '
|
|
|
|
|
li r19, 0x10
|
|
|
|
|
|
|
|
|
|
print_memory_logical_0x24
|
|
|
|
|
mr r27, r16
|
|
|
|
|
bl PagingFunc1
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beq print_memory_logical_0x5c
|
|
|
|
|
blt print_memory_logical_0x48
|
2017-11-19 04:11:07 +00:00
|
|
|
|
_log '..'
|
|
|
|
|
b print_memory_logical_0x6c
|
|
|
|
|
|
|
|
|
|
print_memory_logical_0x48
|
|
|
|
|
_log '--'
|
|
|
|
|
b print_memory_logical_0x6c
|
|
|
|
|
|
|
|
|
|
print_memory_logical_0x5c
|
2018-03-31 08:17:23 +00:00
|
|
|
|
bl PagingL2PWithoutBATs
|
2017-11-19 04:11:07 +00:00
|
|
|
|
rlwimi r31, r27, 0, 20, 31
|
|
|
|
|
lbz r8, 0x0000(r31)
|
|
|
|
|
bl print_unknown
|
|
|
|
|
|
|
|
|
|
print_memory_logical_0x6c
|
|
|
|
|
addi r16, r16, 0x01
|
|
|
|
|
addi r19, r19, -0x01
|
|
|
|
|
andi. r8, r19, 0x03
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne print_memory_logical_0x84
|
2017-11-19 04:11:07 +00:00
|
|
|
|
li r8, 0x20
|
|
|
|
|
bl Printc
|
|
|
|
|
|
|
|
|
|
print_memory_logical_0x84
|
|
|
|
|
cmpwi r19, 0x00
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bgt print_memory_logical_0x24
|
2017-11-19 04:11:07 +00:00
|
|
|
|
_log ' *'
|
|
|
|
|
li r8, 0x10
|
|
|
|
|
addi r16, r16, -0x10
|
|
|
|
|
mtctr r8
|
|
|
|
|
|
|
|
|
|
print_memory_logical_0xac
|
|
|
|
|
mr r27, r16
|
|
|
|
|
bl PagingFunc1
|
|
|
|
|
li r8, 0x20
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne print_memory_logical_0xdc
|
2018-03-31 08:17:23 +00:00
|
|
|
|
bl PagingL2PWithoutBATs
|
2017-11-19 04:11:07 +00:00
|
|
|
|
rlwimi r31, r27, 0, 20, 31
|
|
|
|
|
lbz r8, 0x0000(r31)
|
|
|
|
|
cmpwi r8, 0xff
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beq print_memory_logical_0xd8
|
2017-11-19 04:11:07 +00:00
|
|
|
|
cmpwi r8, 0x20
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bgt print_memory_logical_0xdc
|
2017-11-19 04:11:07 +00:00
|
|
|
|
|
|
|
|
|
print_memory_logical_0xd8
|
|
|
|
|
li r8, 0x20
|
|
|
|
|
|
|
|
|
|
print_memory_logical_0xdc
|
|
|
|
|
bl Printc
|
|
|
|
|
addi r16, r16, 0x01
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bdnz print_memory_logical_0xac
|
2017-11-19 04:11:07 +00:00
|
|
|
|
_log '*^n'
|
|
|
|
|
addi r17, r17, -0x01
|
|
|
|
|
bl getchar
|
|
|
|
|
cmpwi r8, -0x01
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne print_memory_logical_0x114
|
2017-11-19 04:11:07 +00:00
|
|
|
|
cmpwi r17, 0x00
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne print_memory_logical_0x8
|
2017-11-19 04:11:07 +00:00
|
|
|
|
|
|
|
|
|
print_memory_logical_0x114
|
|
|
|
|
_log '^n'
|
|
|
|
|
mtlr r18
|
|
|
|
|
blr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; > r16 = command strings
|
|
|
|
|
; > r17 = lut
|
|
|
|
|
|
|
|
|
|
; < cr0 = found
|
|
|
|
|
; < r17 = ptr to lut entry
|
|
|
|
|
|
|
|
|
|
cmd_lookup ; OUTSIDE REFERER
|
|
|
|
|
addi r15, r15, -0x01
|
|
|
|
|
addi r16, r16, -0x01
|
|
|
|
|
mr r18, r15
|
|
|
|
|
|
|
|
|
|
cmd_lookup_0xc
|
|
|
|
|
lbzu r21, 0x0001(r16)
|
|
|
|
|
lbzu r20, 0x0001(r15)
|
|
|
|
|
cmpwi r21, 0xff
|
|
|
|
|
cmpwi cr1, r21, 0x00
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beq cmd_lookup_0x44
|
|
|
|
|
beq cr1, cmd_lookup_0x50
|
2017-11-19 04:11:07 +00:00
|
|
|
|
cmpw r20, r21
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beq cmd_lookup_0xc
|
2017-11-19 04:11:07 +00:00
|
|
|
|
|
|
|
|
|
cmd_lookup_0x2c
|
|
|
|
|
lbzu r21, 0x0001(r16)
|
|
|
|
|
cmpwi r21, 0x00
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne cmd_lookup_0x2c
|
2017-11-19 04:11:07 +00:00
|
|
|
|
|
|
|
|
|
cmd_lookup_0x38
|
|
|
|
|
addi r17, r17, 0x04
|
|
|
|
|
mr r15, r18
|
|
|
|
|
b cmd_lookup_0xc
|
|
|
|
|
|
|
|
|
|
cmd_lookup_0x44
|
|
|
|
|
addi r15, r18, 0x01
|
|
|
|
|
cmpw r15, r18
|
|
|
|
|
blr
|
|
|
|
|
|
|
|
|
|
cmd_lookup_0x50
|
|
|
|
|
cmpwi r20, 0x20
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beqlr
|
2017-11-19 04:11:07 +00:00
|
|
|
|
cmpwi r20, 0x00
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beqlr
|
2017-11-19 04:11:07 +00:00
|
|
|
|
b cmd_lookup_0x38
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; > r15 = start
|
|
|
|
|
|
|
|
|
|
; < r15 = ptr
|
|
|
|
|
; < r16 = char
|
|
|
|
|
|
|
|
|
|
next_cmd_word ; OUTSIDE REFERER
|
|
|
|
|
addi r15, r15, -0x01
|
|
|
|
|
|
|
|
|
|
next_cmd_word_0x4
|
|
|
|
|
lbzu r16, 0x0001(r15)
|
|
|
|
|
cmpwi r16, 0x20
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beq next_cmd_word_0x4
|
2017-11-19 04:11:07 +00:00
|
|
|
|
blr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
major_0x187b0 ; OUTSIDE REFERER
|
|
|
|
|
addi r15, r15, -0x01
|
|
|
|
|
li r16, 0x00
|
|
|
|
|
|
|
|
|
|
major_0x187b0_0x8
|
|
|
|
|
lbzu r17, 0x0001(r15)
|
|
|
|
|
cmplwi r17, 0x30
|
|
|
|
|
cmplwi cr1, r17, 0x39
|
2018-04-15 07:05:02 +00:00
|
|
|
|
blt major_0x187b0_0x28
|
|
|
|
|
bgt cr1, major_0x187b0_0x28
|
2017-11-19 04:11:07 +00:00
|
|
|
|
slwi r16, r16, 4
|
|
|
|
|
rlwimi r16, r17, 0, 28, 31
|
|
|
|
|
b major_0x187b0_0x8
|
|
|
|
|
|
|
|
|
|
major_0x187b0_0x28
|
|
|
|
|
cmplwi r17, 0x61
|
|
|
|
|
cmplwi cr1, r17, 0x66
|
2018-04-15 07:05:02 +00:00
|
|
|
|
blt major_0x187b0_0x48
|
|
|
|
|
bgt cr1, major_0x187b0_0x48
|
2017-11-19 04:11:07 +00:00
|
|
|
|
addi r17, r17, -0x57
|
|
|
|
|
slwi r16, r16, 4
|
|
|
|
|
rlwimi r16, r17, 0, 28, 31
|
|
|
|
|
b major_0x187b0_0x8
|
|
|
|
|
|
|
|
|
|
major_0x187b0_0x48
|
|
|
|
|
cmplwi r17, 0x41
|
|
|
|
|
cmplwi cr1, r17, 0x46
|
2018-04-15 07:05:02 +00:00
|
|
|
|
blt major_0x187b0_0x68
|
|
|
|
|
bgt cr1, major_0x187b0_0x68
|
2017-11-19 04:11:07 +00:00
|
|
|
|
addi r17, r17, -0x37
|
|
|
|
|
slwi r16, r16, 4
|
|
|
|
|
rlwimi r16, r17, 0, 28, 31
|
|
|
|
|
b major_0x187b0_0x8
|
|
|
|
|
|
|
|
|
|
major_0x187b0_0x68
|
|
|
|
|
cmpwi r17, 0x00
|
2018-04-15 07:05:02 +00:00
|
|
|
|
beqlr
|
2017-11-19 04:11:07 +00:00
|
|
|
|
cmpwi r17, 0x20
|
|
|
|
|
blr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
prereturn ; OUTSIDE REFERER
|
|
|
|
|
lwz r1, EWA.PA_KDP(r1)
|
|
|
|
|
|
|
|
|
|
mfmsr r0
|
|
|
|
|
_bset r0, r0, MSR_FPbit
|
|
|
|
|
mtmsr r0
|
|
|
|
|
isync
|
|
|
|
|
|
|
|
|
|
lfd f31, 0x08fc(r1)
|
|
|
|
|
mtfsf 0xff, f31
|
|
|
|
|
lfd f0, 0x0800(r1)
|
|
|
|
|
lfd f1, 0x0808(r1)
|
|
|
|
|
lfd f2, 0x0810(r1)
|
|
|
|
|
lfd f3, 0x0818(r1)
|
|
|
|
|
lfd f4, 0x0820(r1)
|
|
|
|
|
lfd f5, 0x0828(r1)
|
|
|
|
|
lfd f6, 0x0830(r1)
|
|
|
|
|
lfd f7, 0x0838(r1)
|
|
|
|
|
lfd f8, 0x0840(r1)
|
|
|
|
|
lfd f9, 0x0848(r1)
|
|
|
|
|
lfd f10, 0x0850(r1)
|
|
|
|
|
lfd f11, 0x0858(r1)
|
|
|
|
|
lfd f12, 0x0860(r1)
|
|
|
|
|
lfd f13, 0x0868(r1)
|
|
|
|
|
lfd f14, 0x0870(r1)
|
|
|
|
|
lfd f15, 0x0878(r1)
|
|
|
|
|
lfd f16, 0x0880(r1)
|
|
|
|
|
lfd f17, 0x0888(r1)
|
|
|
|
|
lfd f18, 0x0890(r1)
|
|
|
|
|
lfd f19, 0x0898(r1)
|
|
|
|
|
lfd f20, 0x08a0(r1)
|
|
|
|
|
lfd f21, 0x08a8(r1)
|
|
|
|
|
lfd f22, 0x08b0(r1)
|
|
|
|
|
lfd f23, 0x08b8(r1)
|
|
|
|
|
lfd f24, 0x08c0(r1)
|
|
|
|
|
lfd f25, 0x08c8(r1)
|
|
|
|
|
lfd f26, 0x08d0(r1)
|
|
|
|
|
lfd f27, 0x08d8(r1)
|
|
|
|
|
lfd f28, 0x08e0(r1)
|
|
|
|
|
lfd f29, 0x08e8(r1)
|
|
|
|
|
lfd f30, 0x08f0(r1)
|
|
|
|
|
lfd f31, 0x08f8(r1)
|
|
|
|
|
|
|
|
|
|
lwz r0, 0x07c0(r1)
|
|
|
|
|
mtsr 0x00, r0
|
|
|
|
|
lwz r0, 0x07c4(r1)
|
|
|
|
|
mtsr 0x01, r0
|
|
|
|
|
lwz r0, 0x07c8(r1)
|
|
|
|
|
mtsr 0x02, r0
|
|
|
|
|
lwz r0, 0x07cc(r1)
|
|
|
|
|
mtsr 0x03, r0
|
|
|
|
|
lwz r0, 0x07d0(r1)
|
|
|
|
|
mtsr 0x04, r0
|
|
|
|
|
lwz r0, 0x07d4(r1)
|
|
|
|
|
mtsr 0x05, r0
|
|
|
|
|
lwz r0, 0x07d8(r1)
|
|
|
|
|
mtsr 0x06, r0
|
|
|
|
|
lwz r0, 0x07dc(r1)
|
|
|
|
|
mtsr 0x07, r0
|
|
|
|
|
lwz r0, 0x07e0(r1)
|
|
|
|
|
mtsr 0x08, r0
|
|
|
|
|
lwz r0, 0x07e4(r1)
|
|
|
|
|
mtsr 0x09, r0
|
|
|
|
|
lwz r0, 0x07e8(r1)
|
|
|
|
|
mtsr 0x0a, r0
|
|
|
|
|
lwz r0, 0x07ec(r1)
|
|
|
|
|
mtsr 0x0b, r0
|
|
|
|
|
lwz r0, 0x07f0(r1)
|
|
|
|
|
mtsr 0x0c, r0
|
|
|
|
|
lwz r0, 0x07f4(r1)
|
|
|
|
|
mtsr 0x0d, r0
|
|
|
|
|
lwz r0, 0x07f8(r1)
|
|
|
|
|
mtsr 0x0e, r0
|
|
|
|
|
lwz r0, 0x07fc(r1)
|
|
|
|
|
mtsr 0x0f, r0
|
|
|
|
|
|
|
|
|
|
lwz r0, 0x07a8(r1)
|
|
|
|
|
mtspr dec, r0
|
|
|
|
|
|
|
|
|
|
lwz r0, 0x07b4(r1)
|
|
|
|
|
mtspr srr0, r0
|
|
|
|
|
lwz r0, 0x07b8(r1)
|
|
|
|
|
mtspr srr1, r0
|
|
|
|
|
|
|
|
|
|
lwz r0, 0x07bc(r1)
|
|
|
|
|
mtmsr r0
|
|
|
|
|
|
|
|
|
|
mfpvr r0
|
|
|
|
|
rlwinm. r0, r0, 0, 0, 14
|
|
|
|
|
|
2018-04-15 07:05:02 +00:00
|
|
|
|
bne @not_601
|
2017-11-19 04:11:07 +00:00
|
|
|
|
lwz r0, 0x0784(r1)
|
|
|
|
|
mtspr mq, r0
|
|
|
|
|
@not_601
|
|
|
|
|
|
|
|
|
|
lwz r0, 0x0788(r1)
|
|
|
|
|
mtxer r0
|
|
|
|
|
lwz r0, 0x078c(r1)
|
|
|
|
|
mtsprg 2, r0
|
|
|
|
|
lwz r0, 0x0790(r1)
|
|
|
|
|
mtctr r0
|
|
|
|
|
|
|
|
|
|
; Only because this crashes QEMU
|
|
|
|
|
|
|
|
|
|
if &TYPE('NKDebugShim') = 'UNDEFINED'
|
|
|
|
|
lwz r0, 0x0794(r1)
|
|
|
|
|
mtspr pvr, r0
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
lwz r0, 0x0798(r1)
|
|
|
|
|
mtspr dsisr, r0
|
|
|
|
|
lwz r0, 0x079c(r1)
|
|
|
|
|
mtspr dar, r0
|
|
|
|
|
lwz r0, 0x0780(r1)
|
|
|
|
|
mtcr r0
|
|
|
|
|
lwz r0, 0x0700(r1)
|
|
|
|
|
lwz r2, 0x0704(r1)
|
|
|
|
|
mtsprg 1, r2
|
|
|
|
|
lmw r2, 0x0708(r1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
blr
|
|
|
|
|
|
|
|
|
|
align 5
|