mirror of
https://github.com/elliotnunn/powermac-rom.git
synced 2024-10-19 03:24:43 +00:00
looks good
This commit is contained in:
parent
fbfcb55c89
commit
6cd7d2f29e
@ -635,7 +635,7 @@ PTEGMask ds.l 1 ; 6a0
|
|||||||
HTABORG ds.l 1 ; 6a4
|
HTABORG ds.l 1 ; 6a4
|
||||||
VMLogicalPages ds.l 1 ; 6a8 ; set at init and changed by VMInit
|
VMLogicalPages ds.l 1 ; 6a8 ; set at init and changed by VMInit
|
||||||
TotalPhysicalPages ds.l 1 ; 6ac ; does not take into acct maximum MacOS memory
|
TotalPhysicalPages ds.l 1 ; 6ac ; does not take into acct maximum MacOS memory
|
||||||
FlatPageListPtr ds.l 1 ; 6b0 ; VM puts this in system heap
|
PARPageListPtr ds.l 1 ; 6b0 ; VM puts this in system heap
|
||||||
VMMaxVirtualPages ds.l 1 ; 6b4 ; always 5fffe000, even with VM on
|
VMMaxVirtualPages ds.l 1 ; 6b4 ; always 5fffe000, even with VM on
|
||||||
CpuSpecificBytes
|
CpuSpecificBytes
|
||||||
CpuSpecificByte1 ds.b 1 ; 6b8 ; seems to contain flags (set from PVR & tbl by Init.s)
|
CpuSpecificByte1 ds.b 1 ; 6b8 ; seems to contain flags (set from PVR & tbl by Init.s)
|
||||||
|
@ -124,14 +124,14 @@ VMReturn ; OUTSIDE REFERER
|
|||||||
DeclareVMCall 0, VMInit
|
DeclareVMCall 0, VMInit
|
||||||
|
|
||||||
VMInit ; OUTSIDE REFERER
|
VMInit ; OUTSIDE REFERER
|
||||||
lwz r7, KDP.FlatPageListPtr(r1) ; check that zero seg isn't empty
|
lwz r7, KDP.PARPageListPtr(r1) ; check that zero seg isn't empty
|
||||||
lwz r8, KDP.PARPerSegmentPLEPtrs + 0(r1)
|
lwz r8, KDP.PARPerSegmentPLEPtrs + 0(r1)
|
||||||
cmpw r7, r8
|
cmpw r7, r8
|
||||||
bne VMReturn1
|
bne VMReturn1
|
||||||
|
|
||||||
stw r4, KDP.VMLogicalPages(r1) ; resize PAR
|
stw r4, KDP.VMLogicalPages(r1) ; resize PAR
|
||||||
|
|
||||||
stw r5, KDP.FlatPageListPtr(r1) ; where did NK find this???
|
stw r5, KDP.PARPageListPtr(r1) ; where did NK find this???
|
||||||
|
|
||||||
lwz r6, 0x05e8(r1)
|
lwz r6, 0x05e8(r1)
|
||||||
li r5, 0x00
|
li r5, 0x00
|
||||||
@ -197,7 +197,7 @@ VMInit_0x110
|
|||||||
lwz r7, KDP.TotalPhysicalPages(r1)
|
lwz r7, KDP.TotalPhysicalPages(r1)
|
||||||
cmpw r4, r7
|
cmpw r4, r7
|
||||||
bnel VMPanic
|
bnel VMPanic
|
||||||
lwz r5, KDP.FlatPageListPtr(r1)
|
lwz r5, KDP.PARPageListPtr(r1)
|
||||||
lwz r4, KDP.VMLogicalPages(r1)
|
lwz r4, KDP.VMLogicalPages(r1)
|
||||||
andi. r7, r5, 0xfff
|
andi. r7, r5, 0xfff
|
||||||
|
|
||||||
@ -227,7 +227,7 @@ VMInit_0x110
|
|||||||
|
|
||||||
srwi r7, r5, 12
|
srwi r7, r5, 12
|
||||||
bl major_0x09c9c
|
bl major_0x09c9c
|
||||||
stw r9, KDP.FlatPageListPtr(r1)
|
stw r9, KDP.PARPageListPtr(r1)
|
||||||
mr r15, r9
|
mr r15, r9
|
||||||
srwi r7, r5, 12
|
srwi r7, r5, 12
|
||||||
add r7, r7, r6
|
add r7, r7, r6
|
||||||
@ -263,7 +263,7 @@ VMInit_0x1ec
|
|||||||
ori r16, r9, 0x21
|
ori r16, r9, 0x21
|
||||||
stwx r16, r15, r6
|
stwx r16, r15, r6
|
||||||
bne VMInit_0x1ec
|
bne VMInit_0x1ec
|
||||||
lwz r15, KDP.FlatPageListPtr(r1)
|
lwz r15, KDP.PARPageListPtr(r1)
|
||||||
srwi r7, r5, 10
|
srwi r7, r5, 10
|
||||||
add r15, r15, r7
|
add r15, r15, r7
|
||||||
lwz r5, KDP.VMLogicalPages(r1)
|
lwz r5, KDP.VMLogicalPages(r1)
|
||||||
@ -295,7 +295,7 @@ VMInit_0x250
|
|||||||
ble VMInit_0x250
|
ble VMInit_0x250
|
||||||
lwz r6, 0x05e8(r1)
|
lwz r6, 0x05e8(r1)
|
||||||
lwz r9, KDP.VMLogicalPages(r1)
|
lwz r9, KDP.VMLogicalPages(r1)
|
||||||
lwz r15, KDP.FlatPageListPtr(r1)
|
lwz r15, KDP.PARPageListPtr(r1)
|
||||||
|
|
||||||
VMInit_0x288
|
VMInit_0x288
|
||||||
lwz r8, 0x0000(r6)
|
lwz r8, 0x0000(r6)
|
||||||
@ -321,7 +321,7 @@ VMInit_Fail
|
|||||||
lwz r7, KDP.TotalPhysicalPages(r1)
|
lwz r7, KDP.TotalPhysicalPages(r1)
|
||||||
lwz r8, KDP.PARPerSegmentPLEPtrs + 0(r1)
|
lwz r8, KDP.PARPerSegmentPLEPtrs + 0(r1)
|
||||||
stw r7, KDP.VMLogicalPages(r1)
|
stw r7, KDP.VMLogicalPages(r1)
|
||||||
stw r8, KDP.FlatPageListPtr(r1)
|
stw r8, KDP.PARPageListPtr(r1)
|
||||||
|
|
||||||
b VMReturn
|
b VMReturn
|
||||||
|
|
||||||
@ -436,7 +436,7 @@ VMIsUnmodified ; OUTSIDE REFERER
|
|||||||
|
|
||||||
VMLRU ; OUTSIDE REFERER
|
VMLRU ; OUTSIDE REFERER
|
||||||
rlwinm. r9, r9, 2, 0, 29
|
rlwinm. r9, r9, 2, 0, 29
|
||||||
lwz r15, KDP.FlatPageListPtr(r1)
|
lwz r15, KDP.PARPageListPtr(r1)
|
||||||
lwz r14, KDP.HTABORG(r1)
|
lwz r14, KDP.HTABORG(r1)
|
||||||
add r15, r15, r9
|
add r15, r15, r9
|
||||||
srwi r4, r9, 2
|
srwi r4, r9, 2
|
||||||
@ -691,7 +691,7 @@ VMMarkUndefined ; OUTSIDE REFERER
|
|||||||
bge VMReturnMinus1
|
bge VMReturnMinus1
|
||||||
bgt cr1, VMReturnMinus1
|
bgt cr1, VMReturnMinus1
|
||||||
bgt cr2, VMReturnMinus1
|
bgt cr2, VMReturnMinus1
|
||||||
lwz r15, KDP.FlatPageListPtr(r1)
|
lwz r15, KDP.PARPageListPtr(r1)
|
||||||
slwi r8, r7, 2
|
slwi r8, r7, 2
|
||||||
li r7, 0x01
|
li r7, 0x01
|
||||||
|
|
||||||
@ -797,7 +797,7 @@ VMShouldClean ; OUTSIDE REFERER
|
|||||||
DeclareVMCall 25, VMAllocateMemory
|
DeclareVMCall 25, VMAllocateMemory
|
||||||
|
|
||||||
VMAllocateMemory ; OUTSIDE REFERER
|
VMAllocateMemory ; OUTSIDE REFERER
|
||||||
lwz r7, KDP.FlatPageListPtr(r1)
|
lwz r7, KDP.PARPageListPtr(r1)
|
||||||
lwz r8, KDP.PARPerSegmentPLEPtrs + 0(r1)
|
lwz r8, KDP.PARPerSegmentPLEPtrs + 0(r1)
|
||||||
cmpwi cr6, r5, 0x00
|
cmpwi cr6, r5, 0x00
|
||||||
cmpw cr7, r7, r8
|
cmpw cr7, r7, r8
|
||||||
@ -877,7 +877,7 @@ VMAllocateMemory_0xf4
|
|||||||
stw r8, KDP.SystemInfo + NKSystemInfo.LogicalMemorySize(r1)
|
stw r8, KDP.SystemInfo + NKSystemInfo.LogicalMemorySize(r1)
|
||||||
|
|
||||||
addi r14, r1, 120
|
addi r14, r1, 120
|
||||||
lwz r15, KDP.FlatPageListPtr(r1)
|
lwz r15, KDP.PARPageListPtr(r1)
|
||||||
li r8, 0
|
li r8, 0
|
||||||
addi r7, r7, -0x01
|
addi r7, r7, -0x01
|
||||||
ori r8, r8, 0xffff
|
ori r8, r8, 0xffff
|
||||||
@ -900,7 +900,7 @@ VMAllocateMemory_0x34c
|
|||||||
VMAllocateMemory_0x2e8
|
VMAllocateMemory_0x2e8
|
||||||
lwz r16, 0x0000(r15)
|
lwz r16, 0x0000(r15)
|
||||||
lwz r7, KDP.TotalPhysicalPages(r1)
|
lwz r7, KDP.TotalPhysicalPages(r1)
|
||||||
lwz r8, KDP.FlatPageListPtr(r1)
|
lwz r8, KDP.PARPageListPtr(r1)
|
||||||
slwi r7, r7, 2
|
slwi r7, r7, 2
|
||||||
add r7, r7, r8
|
add r7, r7, r8
|
||||||
slwi r8, r5, 2
|
slwi r8, r5, 2
|
||||||
@ -936,7 +936,7 @@ VMAllocateMemory_0x324
|
|||||||
|
|
||||||
GetPARPageInfo ; OUTSIDE REFERER
|
GetPARPageInfo ; OUTSIDE REFERER
|
||||||
cmplw cr4, r4, r9 ;r9 is VMMaxVirtualPages by convention
|
cmplw cr4, r4, r9 ;r9 is VMMaxVirtualPages by convention
|
||||||
lwz r15, KDP.FlatPageListPtr(r1)
|
lwz r15, KDP.PARPageListPtr(r1)
|
||||||
slwi r8, r4, 2
|
slwi r8, r4, 2
|
||||||
bge cr4, GetPARPageInfo_0x40
|
bge cr4, GetPARPageInfo_0x40
|
||||||
|
|
||||||
|
@ -4,16 +4,16 @@
|
|||||||
|
|
||||||
; These registers will be used throughout
|
; These registers will be used throughout
|
||||||
|
|
||||||
rCI set rCI
|
rCI set r26
|
||||||
lwz rCI, KDP.PA_ConfigInfo(r1)
|
lwz rCI, KDP.PA_ConfigInfo(r1)
|
||||||
|
|
||||||
rNK set rNK
|
rNK set r25
|
||||||
lwz rNK, KDP.PA_NanoKernelCode(r1)
|
lwz rNK, KDP.PA_NanoKernelCode(r1)
|
||||||
|
|
||||||
rPgMap set rPgMap
|
rPgMap set r18
|
||||||
lwz rPgMap, KDP.PA_PageMapStart(r1)
|
lwz rPgMap, KDP.PA_PageMapStart(r1)
|
||||||
|
|
||||||
rXER set rXER
|
rXER set r17
|
||||||
mfxer rXER
|
mfxer rXER
|
||||||
|
|
||||||
|
|
||||||
@ -54,16 +54,16 @@ rAlt set r8
|
|||||||
stw r23, VecTable.ISIVector(rSys)
|
stw r23, VecTable.ISIVector(rSys)
|
||||||
stw r23, VecTable.ISIVector(rAlt)
|
stw r23, VecTable.ISIVector(rAlt)
|
||||||
|
|
||||||
lbz r22, NKConfigurationInfo.InterruptHandlerKind(rAlt)
|
lbz r22, NKConfigurationInfo.InterruptHandlerKind(rCI)
|
||||||
|
|
||||||
cmpwi r22, 0
|
cmpwi r22, 0
|
||||||
_kaddr r24, rNK, IntForEmulator_1
|
_kaddr r23, rNK, IntForEmulator_1
|
||||||
beq @chosenIntHandler
|
beq @chosenIntHandler
|
||||||
cmpwi r22, 1
|
cmpwi r22, 1
|
||||||
_kaddr r24, rNK, IntForEmulator_2
|
_kaddr r23, rNK, IntForEmulator_2
|
||||||
beq @chosenIntHandler
|
beq @chosenIntHandler
|
||||||
cmpwi r22, 2
|
cmpwi r22, 2
|
||||||
_kaddr r24, rNK, IntForEmulator_3
|
_kaddr r23, rNK, IntForEmulator_3
|
||||||
beq @chosenIntHandler
|
beq @chosenIntHandler
|
||||||
|
|
||||||
@chosenIntHandler
|
@chosenIntHandler
|
||||||
@ -93,10 +93,6 @@ rAlt set r8
|
|||||||
stw r23, VecTable.SyscallVector(rSys)
|
stw r23, VecTable.SyscallVector(rSys)
|
||||||
stw r23, VecTable.SyscallVector(rAlt)
|
stw r23, VecTable.SyscallVector(rAlt)
|
||||||
|
|
||||||
_kaddr r23, rNK, IntPerfMonitor
|
|
||||||
stw r23, VecTable.PerfMonitorVector(rSys)
|
|
||||||
stw r23, VecTable.PerfMonitorVector(rAlt)
|
|
||||||
|
|
||||||
_kaddr r23, rNK, IntTrace
|
_kaddr r23, rNK, IntTrace
|
||||||
stw r23, VecTable.TraceVector(rSys)
|
stw r23, VecTable.TraceVector(rSys)
|
||||||
stw r23, VecTable.TraceVector(rAlt)
|
stw r23, VecTable.TraceVector(rAlt)
|
||||||
@ -242,14 +238,14 @@ CopyPageMap
|
|||||||
lwz r8, NKConfigurationInfo.PageMapKDPOffset(rCI)
|
lwz r8, NKConfigurationInfo.PageMapKDPOffset(rCI)
|
||||||
add r8, rPgMap, r8
|
add r8, rPgMap, r8
|
||||||
lwz r23, PageMapEntry.PBaseAndFlags(r8)
|
lwz r23, PageMapEntry.PBaseAndFlags(r8)
|
||||||
rlwimi r23, r19, 0, 0, 0xFFFFF000
|
rlwimi r23, r19, 0, 0xFFFFF000
|
||||||
stw r23, PageMapEntry.PBaseAndFlags(r8)
|
stw r23, PageMapEntry.PBaseAndFlags(r8)
|
||||||
|
|
||||||
lwz r19, KDP.PA_EmulatorData(r1)
|
lwz r19, KDP.PA_EmulatorData(r1)
|
||||||
lwz r8, NKConfigurationInfo.PageMapEDPOffset(rCI)
|
lwz r8, NKConfigurationInfo.PageMapEDPOffset(rCI)
|
||||||
add r8, rPgMap, r8
|
add r8, rPgMap, r8
|
||||||
lwz r23, PageMapEntry.PBaseAndFlags(r8)
|
lwz r23, PageMapEntry.PBaseAndFlags(r8)
|
||||||
rlwimi r23, r19, 0, 0, 0xFFFFF000
|
rlwimi r23, r19, 0, 0xFFFFF000
|
||||||
stw r23, PageMapEntry.PBaseAndFlags(r8)
|
stw r23, PageMapEntry.PBaseAndFlags(r8)
|
||||||
|
|
||||||
|
|
||||||
@ -410,6 +406,8 @@ CreatePARInPageMap
|
|||||||
addi r29, r1, KDP.PARPerSegmentPLEPtrs - 4 ; where to save per-segment PLE ptr
|
addi r29, r1, KDP.PARPerSegmentPLEPtrs - 4 ; where to save per-segment PLE ptr
|
||||||
addi r19, r1, KDP.SegMap32SupInit - 8 ; which part of PageMap to update
|
addi r19, r1, KDP.SegMap32SupInit - 8 ; which part of PageMap to update
|
||||||
|
|
||||||
|
stw r21, KDP.PARPageListPtr(r1)
|
||||||
|
|
||||||
@next_segment
|
@next_segment
|
||||||
cmplwi r22, 0xffff ; continue (bgt) while there are still pages left
|
cmplwi r22, 0xffff ; continue (bgt) while there are still pages left
|
||||||
|
|
||||||
|
@ -210,7 +210,6 @@ KCallPrioritizeInterrupts
|
|||||||
|
|
||||||
; Move registers from CB to EWA, and Thud.
|
; Move registers from CB to EWA, and Thud.
|
||||||
|
|
||||||
align kIntAlign
|
|
||||||
KCallallSystemCrash
|
KCallallSystemCrash
|
||||||
|
|
||||||
stw r0, EWA.r0(r1)
|
stw r0, EWA.r0(r1)
|
||||||
|
@ -31,7 +31,25 @@ SchSwitchSpace
|
|||||||
CauseNotification
|
CauseNotification
|
||||||
FDPEmulateInstruction
|
FDPEmulateInstruction
|
||||||
ReturnFromExceptionFastPath
|
ReturnFromExceptionFastPath
|
||||||
|
IntAlignment
|
||||||
|
IntDecrementerAlternate
|
||||||
|
IntDecrementerSystem
|
||||||
|
IntDSI
|
||||||
|
IntForEmulator_1
|
||||||
|
IntForEmulator_2
|
||||||
|
IntForEmulator_3
|
||||||
|
IntFPUnavail
|
||||||
|
IntISI
|
||||||
|
IntMachineCheck
|
||||||
|
IntPerfMonitor
|
||||||
|
KCallReturnFromException
|
||||||
|
KCallSystemCrash
|
||||||
|
KCallThud
|
||||||
|
KCallVMDispatch
|
||||||
|
MemRetryDSI
|
||||||
|
MemRetryMachineCheck
|
||||||
|
PagingFlushTLB
|
||||||
|
PagingFunc2
|
||||||
|
|
||||||
org 0x23AC
|
org 0x23AC
|
||||||
IntReturn
|
IntReturn
|
||||||
|
Loading…
Reference in New Issue
Block a user