powermac-rom/Internal/EmulatorPublic.a
Elliot Nunn 8800ff5a77 Reverse part of the Emulator Data Page
Version 02.11 of the NanoKernel prints an annotated crash dump of the
EDP. This version has been partly reversed (using Hopper!), and the
sometimes-cryptic EDP field names have been added to EmulatorPublic.a.
2018-03-30 10:05:13 +08:00

177 lines
3.8 KiB
Plaintext

EDP record 0,INCR
D0 ds.l 1 ; 000 ; r8
D1 ds.l 1 ; 004 ; r9
D2 ds.l 1 ; 008 ; r10
D3 ds.l 1 ; 00c ; r11
D4 ds.l 1 ; 010 ; r12
D5 ds.l 1 ; 014 ; r13
D6 ds.l 1 ; 018 ; r14
D7 ds.l 1 ; 01c ; r15
A0 ds.l 1 ; 020 ; r16
A1 ds.l 1 ; 024 ; r17
A2 ds.l 1 ; 028 ; r18
A3 ds.l 1 ; 02c ; r19
A4 ds.l 1 ; 030 ; r20
A5 ds.l 1 ; 034 ; r30
A6 ds.l 1 ; 038 ; r31
A7 ds.l 1 ; 03c ; r1 (PowerPC SP)
SR ds.l 1 ; 040
PC ds.l 1 ; 044
USP ds.l 1 ; 048
ISP ds.l 1 ; 04c
MSP ds.l 1 ; 050
VBR ds.l 1 ; 054
SFC ds.l 1 ; 058
DFC ds.l 1 ; 05c
ds.l 1 ; 060 ; these four are 'cac-ar,instr,trc_pc'
ds.l 1 ; 064
ds.l 1 ; 068
ds.l 1 ; 06c
INTM_L ds.l 1 ; 070 ; interrupt level or -1
DISP ds.l 1 ; 074
CODE ds.l 1 ; 078
SP ds.l 1 ; 07c
ds.l 1 ; 080 ; these four are 'ctxflg,info-adr,uea'
ds.l 1 ; 084
ds.l 1 ; 088
ds.l 1 ; 08c
ds.l 1 ; 090 ; these four are 'data_h-l,data,imm_d'
ds.l 1 ; 094
ds.l 1 ; 098
ds.l 1 ; 09c
B_DSP ds.l 1 ; 0a0
SR_FLG ds.l 1 ; 0a4
CTR ds.l 1 ; 0a8
LR ds.l 1 ; 0ac
NIA ds.l 1 ; 0b0
XER ds.l 1 ; 0b4
CRL_VFL ds.l 1 ; 0b8
SSW ds.l 1 ; 0bc
org 0x100
ContextBlock ds.b 768 ; 100:300 ; Emulator Context Block, ECB; NKv2 ties this to blue task
org 0xf00
BootstrapVersion ds.b 16 ; f00:f10 ; Bootstrap loader version info, from ConfigInfo
endr
; Lives in EDP. Keeping a separate record to EDP makes the code nicer.
; Gets called the "system context"
ContextBlock record 0,INCR
Flags ds.l 1 ; 000 ; (SPAC) copied from kdp by CreateTask
Enables ds.l 1 ; 004
org 0x5c
LA_EmulatorKernelTrapTable ds.l 1
org 0x84
LA_EmulatorEntry ds.l 1 ; 084 ; Entry pt of emulator; set by NK Init.s
org 0x94
LA_EmulatorData ds.l 1
org 0x9c
LA_DispatchTable ds.l 1
org 0xa4
MSR ds.l 1 ; 0a4 ; (SPAC) copied from kdp by CreateTask
org 0xc4
MQ ds.l 1 ; 0c4 ; 601 only
EDPOffsetSWIRelated ds.l 1 ; 0c8
PriorityShifty ds.l 1 ; 0cc ; if low nybble is empty, InitRDYQs sets this to 2
SWIEventGroupID ds.l 1 ; 0d0 ; what?
XER ds.l 1 ; 0d4
VectorSaveArea ds.l 1 ; 0d8 ; AltiVec hack: vector registers don't fit in CB!
org 0xdc
CR ds.l 1 ; 0dc ; from heartbeat code, unsure of meaning (ANDed with PostIntMaskInit) r13
PageInSystemHeap ds.l 1 ; 0e0 ; these are set by StartInit.a:FiddleWithEmulator
OtherPageInSystemHeap ds.l 1 ; 0e4
FE000000 ds.l 1 ; 0e8 ; also LR?
LR ds.l 1 ; 0ec
CTR ds.l 1 ; 0f0
KernelCTR ds.l 1 ; 0f4
org 0xfc
CodePtr ds.l 1 ; 0fc ; probably goes in SRR0?
org 0x100
ds.l 1
r0 ds.l 1 ; 104
ds.l 1
r1 ds.l 1 ; 10c
ds.l 1
r2 ds.l 1 ; 114
ds.l 1
r3 ds.l 1 ; 11c
ds.l 1
r4 ds.l 1 ; 124
ds.l 1
r5 ds.l 1 ; 12c
ds.l 1
r6 ds.l 1 ; 134
ds.l 1
r7 ds.l 1 ; 13c
ds.l 1
r8 ds.l 1 ; 144
ds.l 1
r9 ds.l 1 ; 14c
ds.l 1
r10 ds.l 1 ; 154
ds.l 1
r11 ds.l 1 ; 15c
ds.l 1
r12 ds.l 1 ; 164
ds.l 1
r13 ds.l 1 ; 16c
ds.l 1
r14 ds.l 1 ; 174
ds.l 1
r15 ds.l 1 ; 17c
ds.l 1
r16 ds.l 1 ; 184
ds.l 1
r17 ds.l 1 ; 18c
ds.l 1
r18 ds.l 1 ; 194
ds.l 1
r19 ds.l 1 ; 19c
ds.l 1
r20 ds.l 1 ; 1a4
ds.l 1
r21 ds.l 1 ; 1ac
ds.l 1
r22 ds.l 1 ; 1b4
ds.l 1
r23 ds.l 1 ; 1bc
ds.l 1
r24 ds.l 1 ; 1c4
ds.l 1
r25 ds.l 1 ; 1cc
ds.l 1
r26 ds.l 1 ; 1d4
ds.l 1
r27 ds.l 1 ; 1dc
ds.l 1
r28 ds.l 1 ; 1e4
ds.l 1
r29 ds.l 1 ; 1ec
ds.l 1
r30 ds.l 1 ; 1f4
ds.l 1
r31 ds.l 1 ; 1fc
FloatRegisters ds.d 32 ; 200:300
endr