mirror of
https://github.com/elliotnunn/powermac-rom.git
synced 2024-06-18 05:29:32 +00:00
structs and makefiles
This commit is contained in:
parent
e11b02a8a8
commit
fb782befb6
|
@ -89,134 +89,3 @@ BootstrapVersion ds.b 16 ; f00:f10 ; Bootstrap loader version info, from Config
|
|||
; Move this!
|
||||
|
||||
|
||||
CB record 0,INCR
|
||||
Flags ds.l 1 ; 000 ; (SPAC) copied from kdp by CreateTask
|
||||
Enables ds.l 1 ; 004
|
||||
ds.l 1 ; 008
|
||||
ds.l 1 ; 00c
|
||||
ds.l 1 ; 010
|
||||
ds.l 1 ; 014
|
||||
ds.l 1 ; 018
|
||||
ds.l 1 ; 01c
|
||||
ds.l 1 ; 020
|
||||
LowSave17 ds.l 1 ; 024
|
||||
LowSave20 ds.l 1 ; 028
|
||||
LowSave21 ds.l 1 ; 02c
|
||||
ds.l 1 ; 030
|
||||
LowSave19 ds.l 1 ; 034
|
||||
ds.l 1 ; 038
|
||||
LowSave18 ds.l 1 ; 03c
|
||||
ExceptionOriginFlags ds.l 1 ; 040 ; from before exception
|
||||
ExceptionOriginEnables ds.l 1 ; 044 ; from before exception
|
||||
ds.l 1 ; 048
|
||||
ExceptionHandler ds.l 1 ; 04c
|
||||
ds.l 1 ; 050
|
||||
ExceptionHandlerR4 ds.l 1 ; 054
|
||||
ds.l 1 ; 058
|
||||
ExceptionHandlerRetAddr ds.l 1 ; 05c
|
||||
ds.l 1 ; 060
|
||||
PropagateR17 ds.l 1 ; 064
|
||||
PropagateR20 ds.l 1 ; 068
|
||||
PropagateR21 ds.l 1 ; 06c
|
||||
ds.l 1 ; 070
|
||||
PropagateR19 ds.l 1 ; 074
|
||||
ds.l 1 ; 078
|
||||
PropagateR18 ds.l 1 ; 07c
|
||||
ds.l 1 ; 080
|
||||
ExceptionOriginAddr ds.l 1 ; 084 ; Entry pt of emulator; set by NK Init.s
|
||||
ds.l 1 ; 088
|
||||
ExceptionOriginLR ds.l 1 ; 08c
|
||||
ds.l 1 ; 090
|
||||
ExceptionOriginR3 ds.l 1 ; 094
|
||||
ds.l 1 ; 098
|
||||
ExceptionOriginR4 ds.l 1 ; 09c
|
||||
ds.l 1 ; 0a0
|
||||
MSR ds.l 1 ; 0a4 ; (SPAC) copied from kdp by CreateTask
|
||||
ds.l 1 ; 0a8
|
||||
ds.l 1 ; 0ac
|
||||
ds.l 1 ; 0b0
|
||||
ds.l 1 ; 0b4
|
||||
ds.l 1 ; 0b8
|
||||
ds.l 1 ; 0bc
|
||||
ds.l 1 ; 0c0
|
||||
MQ ds.l 1 ; 0c4 ; 601 only
|
||||
EDPOffsetSWIRelated ds.l 1 ; 0c8
|
||||
PriorityShifty ds.l 1 ; 0cc ; if low nybble is empty, SchInit 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!
|
||||
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
|
||||
ds.l 1 ; 0f8
|
||||
CodePtr ds.l 1 ; 0fc ; probably goes in SRR0?
|
||||
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
|
||||
|
|
2
MakeFile
2
MakeFile
|
@ -36,7 +36,7 @@ NKDir = :NanoKernel:
|
|||
NKIncDir = :Internal:
|
||||
NKBin = {ResultDir}NanoKernel.x
|
||||
NKOpts =
|
||||
#include "{NKDir}InnerMakeFile"
|
||||
#include "{NKDir}NKMakeFile"
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
# I expect these variables to be set already:
|
||||
# NKDir, NKIncDir, NKBin
|
||||
|
||||
NKFiles = ¶
|
||||
{NKDir}NanoKernel.s ¶
|
||||
|
||||
NKIncludes = ¶
|
||||
{NKDir}NKMacros.s ¶
|
||||
{NKDir}NKEquates.s ¶
|
||||
{NKIncDir}InfoRecords.a ¶
|
||||
{NKIncDir}EmulatorPublic.a ¶
|
||||
{NKIncDir}NKPublic.a ¶
|
||||
{NKIncDir}NKOpaque.a ¶
|
||||
|
||||
# We get warning 3202 from ALIGN directives -- kill it
|
||||
{NKBin} Ä {NKDir}NanoKernel.s {NKFiles} {NKIncludes}
|
||||
PPCAsm -o {Targ} -w 3202 -i {NKIncDir} -i "{AIncludes}" {NKDir}NanoKernel.s
|
|
@ -1,9 +0,0 @@
|
|||
# Lets you just run Make in this directory,
|
||||
# while ignoring the rest of the build system
|
||||
|
||||
NKDir = :
|
||||
NKIncDir = {NKDir}:Internal:
|
||||
NKBin = {NKDir}NanoKernel.s.x
|
||||
NKOpts =
|
||||
|
||||
#include "{NKDir}InnerMakeFile"
|
|
@ -267,8 +267,8 @@ SwitchContext ; OldCB *r6, NewCB *r9
|
|||
stw r8, CB.XER(r6)
|
||||
stw r12, CB.LR(r6)
|
||||
mfctr r8
|
||||
stw r10, CB.CodePtr(r6)
|
||||
stw r8, CB.KernelCTR(r6)
|
||||
stw r10, CB.SRR0(r6)
|
||||
stw r8, CB.CTR(r6)
|
||||
|
||||
bc BO_IF_NOT, bitFlagHasMQ, @no_mq
|
||||
lwz r8, CB.MQ(r9)
|
||||
|
@ -329,8 +329,8 @@ SwitchContext ; OldCB *r6, NewCB *r9
|
|||
lwz r8, CB.XER(r6)
|
||||
lwz r12, CB.LR(r6)
|
||||
mtxer r8
|
||||
lwz r8, CB.KernelCTR(r6)
|
||||
lwz r10, CB.CodePtr(r6)
|
||||
lwz r8, CB.CTR(r6)
|
||||
lwz r10, CB.SRR0(r6)
|
||||
mtctr r8
|
||||
|
||||
bnel ReloadFPU ; FP exceptions enabled, so load FPU
|
||||
|
|
21
NanoKernel/NKMakeFile
Normal file
21
NanoKernel/NKMakeFile
Normal file
|
@ -0,0 +1,21 @@
|
|||
# I expect these variables to be set already:
|
||||
# NKDir, NKIncDir, NKBin
|
||||
|
||||
NKFiles = ¶
|
||||
{NKDir}NanoKernel.s ¶
|
||||
{NKDir}NKStructs.s ¶
|
||||
{NKDir}NKEquates.s ¶
|
||||
{NKDir}NKMacros.s ¶
|
||||
{NKDir}NKInit.s ¶
|
||||
{NKDir}NKSystemCrash.s ¶
|
||||
{NKDir}NKIntHandlers.s ¶
|
||||
{NKDir}NKMemory.s ¶
|
||||
{NKDir}NKExceptions.s ¶
|
||||
{NKDir}NKFloatingPt.s ¶
|
||||
{NKDir}NKSoftInt.s ¶
|
||||
{NKDir}NKReset.s ¶
|
||||
{NKDir}NKLegacyVM.s ¶
|
||||
|
||||
# We get warning 3202 from ALIGN directives -- kill it
|
||||
{NKBin} Ä {NKDir}NanoKernel.s {NKFiles}
|
||||
PPCAsm -o {Targ} -w 3202 -i {NKIncDir} -i "{AIncludes}" {NKDir}NanoKernel.s
|
|
@ -1,18 +1,4 @@
|
|||
BAT RECORD 0, INCR
|
||||
U ds.l 1
|
||||
L ds.l 1
|
||||
ENDR
|
||||
|
||||
########################################################################
|
||||
|
||||
MemLayout RECORD 0, INCR
|
||||
SegMapPtr ds.l 1
|
||||
BatMap ds.l 1 ; packed array of 4-bit indices into BATs
|
||||
ENDR
|
||||
|
||||
########################################################################
|
||||
|
||||
VecTbl RECORD 0, INCR
|
||||
VecTbl RECORD 0, INCR ; SPRG3 vector table (looked up by ROM vectors)
|
||||
ds.l 1 ; 00 ; scratch for IVT?
|
||||
SystemResetVector ds.l 1 ; 04 ; called by IVT+100 (system reset)
|
||||
MachineCheckVector ds.l 1 ; 08 ; called by IVT+200 (machine check)
|
||||
|
@ -66,7 +52,7 @@ Size equ *
|
|||
|
||||
########################################################################
|
||||
|
||||
KCallTbl RECORD 0, INCR
|
||||
KCallTbl RECORD 0, INCR ; NanoKernel call table
|
||||
ReturnFromException ds.l 1 ; 00, trap 0
|
||||
RunAlternateContext ds.l 1 ; 04, trap 1
|
||||
ResetSystem ds.l 1 ; 08, trap 2 ; 68k RESET
|
||||
|
@ -109,7 +95,21 @@ Size equ *
|
|||
|
||||
########################################################################
|
||||
|
||||
KDP RECORD 0x80, INCR
|
||||
BAT RECORD 0, INCR
|
||||
U ds.l 1
|
||||
L ds.l 1
|
||||
ENDR
|
||||
|
||||
########################################################################
|
||||
|
||||
MemLayout RECORD 0, INCR
|
||||
SegMapPtr ds.l 1
|
||||
BatMap ds.l 1 ; packed array of 4-bit indices into BATs
|
||||
ENDR
|
||||
|
||||
########################################################################
|
||||
|
||||
KDP RECORD 0x80, INCR ; Kernel Data Page
|
||||
r0 ds.l 1 ; 000 ; used for quick register saves at interrupt time
|
||||
r1 ds.l 1 ; 004
|
||||
r2 ds.l 1 ; 008
|
||||
|
@ -338,3 +338,137 @@ ProcInfo ds NKProcessorInfo ; f80:fc0
|
|||
|
||||
InfoRecBlk ds.b 64 ; fc0:1000 ; Access using ptr equates in InfoRecords
|
||||
ENDR
|
||||
|
||||
########################################################################
|
||||
|
||||
CB RECORD 0,INCR ; ContextBlock (Emulator/System or Native/Alternate)
|
||||
Flags ds.l 1 ; 000
|
||||
Enables ds.l 1 ; 004
|
||||
ds.l 1 ; 008
|
||||
ds.l 1 ; 00c
|
||||
ds.l 1 ; 010
|
||||
ds.l 1 ; 014
|
||||
ds.l 1 ; 018
|
||||
ds.l 1 ; 01c
|
||||
ds.l 1 ; 020
|
||||
LowSave17 ds.l 1 ; 024
|
||||
LowSave20 ds.l 1 ; 028
|
||||
LowSave21 ds.l 1 ; 02c
|
||||
ds.l 1 ; 030
|
||||
LowSave19 ds.l 1 ; 034
|
||||
ds.l 1 ; 038
|
||||
LowSave18 ds.l 1 ; 03c
|
||||
ExceptionOriginFlags ds.l 1 ; 040 ; from before exception
|
||||
ExceptionOriginEnables ds.l 1 ; 044 ; from before exception
|
||||
ds.l 1 ; 048
|
||||
ExceptionHandler ds.l 1 ; 04c
|
||||
ds.l 1 ; 050
|
||||
ExceptionHandlerR4 ds.l 1 ; 054
|
||||
ds.l 1 ; 058
|
||||
ExceptionHandlerRetAddr ds.l 1 ; 05c
|
||||
ds.l 1 ; 060
|
||||
PropagateR17 ds.l 1 ; 064
|
||||
PropagateR20 ds.l 1 ; 068
|
||||
PropagateR21 ds.l 1 ; 06c
|
||||
ds.l 1 ; 070
|
||||
PropagateR19 ds.l 1 ; 074
|
||||
ds.l 1 ; 078
|
||||
PropagateR18 ds.l 1 ; 07c
|
||||
ds.l 1 ; 080
|
||||
ExceptionOriginAddr ds.l 1 ; 084
|
||||
ds.l 1 ; 088
|
||||
ExceptionOriginLR ds.l 1 ; 08c
|
||||
ds.l 1 ; 090
|
||||
ExceptionOriginR3 ds.l 1 ; 094
|
||||
ds.l 1 ; 098
|
||||
ExceptionOriginR4 ds.l 1 ; 09c
|
||||
ds.l 1 ; 0a0
|
||||
MSR ds.l 1 ; 0a4
|
||||
ds.l 1 ; 0a8
|
||||
ds.l 1 ; 0ac
|
||||
ds.l 1 ; 0b0
|
||||
ds.l 1 ; 0b4
|
||||
ds.l 1 ; 0b8
|
||||
ds.l 1 ; 0bc
|
||||
ds.l 1 ; 0c0
|
||||
MQ ds.l 1 ; 0c4 ; 601 only
|
||||
ds.l 1 ; 0c8
|
||||
ds.l 1 ; 0cc
|
||||
ds.l 1 ; 0d0
|
||||
XER ds.l 1 ; 0d4
|
||||
ds.l 1 ; 0d8
|
||||
CR ds.l 1 ; 0dc
|
||||
ds.l 1 ; 0e0
|
||||
ds.l 1 ; 0e4
|
||||
ds.l 1 ; 0e8
|
||||
LR ds.l 1 ; 0ec
|
||||
ds.l 1 ; 0f0
|
||||
CTR ds.l 1 ; 0f4
|
||||
ds.l 1 ; 0f8
|
||||
SRR0 ds.l 1 ; 0fc
|
||||
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
|
||||
|
|
|
@ -1,11 +1,6 @@
|
|||
include 'MacErrors.a'
|
||||
include 'Multiprocessing.a'
|
||||
|
||||
include 'InfoRecords.a'
|
||||
include 'EmulatorPublic.a'
|
||||
include 'NKPublic.a'
|
||||
include 'NKOpaque.a'
|
||||
|
||||
include 'NKStructs.a'
|
||||
include 'NKEquates.s'
|
||||
include 'NKMacros.s'
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user