looks good

This commit is contained in:
Elliot Nunn 2018-07-06 21:44:52 +08:00
parent fbfcb55c89
commit 6cd7d2f29e
5 changed files with 45 additions and 30 deletions

View File

@ -635,7 +635,7 @@ PTEGMask ds.l 1 ; 6a0
HTABORG ds.l 1 ; 6a4
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
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
CpuSpecificBytes
CpuSpecificByte1 ds.b 1 ; 6b8 ; seems to contain flags (set from PVR & tbl by Init.s)

View File

@ -124,14 +124,14 @@ VMReturn ; OUTSIDE REFERER
DeclareVMCall 0, VMInit
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)
cmpw r7, r8
bne VMReturn1
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)
li r5, 0x00
@ -197,7 +197,7 @@ VMInit_0x110
lwz r7, KDP.TotalPhysicalPages(r1)
cmpw r4, r7
bnel VMPanic
lwz r5, KDP.FlatPageListPtr(r1)
lwz r5, KDP.PARPageListPtr(r1)
lwz r4, KDP.VMLogicalPages(r1)
andi. r7, r5, 0xfff
@ -227,7 +227,7 @@ VMInit_0x110
srwi r7, r5, 12
bl major_0x09c9c
stw r9, KDP.FlatPageListPtr(r1)
stw r9, KDP.PARPageListPtr(r1)
mr r15, r9
srwi r7, r5, 12
add r7, r7, r6
@ -263,7 +263,7 @@ VMInit_0x1ec
ori r16, r9, 0x21
stwx r16, r15, r6
bne VMInit_0x1ec
lwz r15, KDP.FlatPageListPtr(r1)
lwz r15, KDP.PARPageListPtr(r1)
srwi r7, r5, 10
add r15, r15, r7
lwz r5, KDP.VMLogicalPages(r1)
@ -295,7 +295,7 @@ VMInit_0x250
ble VMInit_0x250
lwz r6, 0x05e8(r1)
lwz r9, KDP.VMLogicalPages(r1)
lwz r15, KDP.FlatPageListPtr(r1)
lwz r15, KDP.PARPageListPtr(r1)
VMInit_0x288
lwz r8, 0x0000(r6)
@ -321,7 +321,7 @@ VMInit_Fail
lwz r7, KDP.TotalPhysicalPages(r1)
lwz r8, KDP.PARPerSegmentPLEPtrs + 0(r1)
stw r7, KDP.VMLogicalPages(r1)
stw r8, KDP.FlatPageListPtr(r1)
stw r8, KDP.PARPageListPtr(r1)
b VMReturn
@ -436,7 +436,7 @@ VMIsUnmodified ; OUTSIDE REFERER
VMLRU ; OUTSIDE REFERER
rlwinm. r9, r9, 2, 0, 29
lwz r15, KDP.FlatPageListPtr(r1)
lwz r15, KDP.PARPageListPtr(r1)
lwz r14, KDP.HTABORG(r1)
add r15, r15, r9
srwi r4, r9, 2
@ -691,7 +691,7 @@ VMMarkUndefined ; OUTSIDE REFERER
bge VMReturnMinus1
bgt cr1, VMReturnMinus1
bgt cr2, VMReturnMinus1
lwz r15, KDP.FlatPageListPtr(r1)
lwz r15, KDP.PARPageListPtr(r1)
slwi r8, r7, 2
li r7, 0x01
@ -797,7 +797,7 @@ VMShouldClean ; OUTSIDE REFERER
DeclareVMCall 25, VMAllocateMemory
VMAllocateMemory ; OUTSIDE REFERER
lwz r7, KDP.FlatPageListPtr(r1)
lwz r7, KDP.PARPageListPtr(r1)
lwz r8, KDP.PARPerSegmentPLEPtrs + 0(r1)
cmpwi cr6, r5, 0x00
cmpw cr7, r7, r8
@ -877,7 +877,7 @@ VMAllocateMemory_0xf4
stw r8, KDP.SystemInfo + NKSystemInfo.LogicalMemorySize(r1)
addi r14, r1, 120
lwz r15, KDP.FlatPageListPtr(r1)
lwz r15, KDP.PARPageListPtr(r1)
li r8, 0
addi r7, r7, -0x01
ori r8, r8, 0xffff
@ -900,7 +900,7 @@ VMAllocateMemory_0x34c
VMAllocateMemory_0x2e8
lwz r16, 0x0000(r15)
lwz r7, KDP.TotalPhysicalPages(r1)
lwz r8, KDP.FlatPageListPtr(r1)
lwz r8, KDP.PARPageListPtr(r1)
slwi r7, r7, 2
add r7, r7, r8
slwi r8, r5, 2
@ -936,7 +936,7 @@ VMAllocateMemory_0x324
GetPARPageInfo ; OUTSIDE REFERER
cmplw cr4, r4, r9 ;r9 is VMMaxVirtualPages by convention
lwz r15, KDP.FlatPageListPtr(r1)
lwz r15, KDP.PARPageListPtr(r1)
slwi r8, r4, 2
bge cr4, GetPARPageInfo_0x40

View File

@ -4,16 +4,16 @@
; These registers will be used throughout
rCI set rCI
rCI set r26
lwz rCI, KDP.PA_ConfigInfo(r1)
rNK set rNK
rNK set r25
lwz rNK, KDP.PA_NanoKernelCode(r1)
rPgMap set rPgMap
rPgMap set r18
lwz rPgMap, KDP.PA_PageMapStart(r1)
rXER set rXER
rXER set r17
mfxer rXER
@ -54,16 +54,16 @@ rAlt set r8
stw r23, VecTable.ISIVector(rSys)
stw r23, VecTable.ISIVector(rAlt)
lbz r22, NKConfigurationInfo.InterruptHandlerKind(rAlt)
lbz r22, NKConfigurationInfo.InterruptHandlerKind(rCI)
cmpwi r22, 0
_kaddr r24, rNK, IntForEmulator_1
_kaddr r23, rNK, IntForEmulator_1
beq @chosenIntHandler
cmpwi r22, 1
_kaddr r24, rNK, IntForEmulator_2
_kaddr r23, rNK, IntForEmulator_2
beq @chosenIntHandler
cmpwi r22, 2
_kaddr r24, rNK, IntForEmulator_3
_kaddr r23, rNK, IntForEmulator_3
beq @chosenIntHandler
@chosenIntHandler
@ -93,10 +93,6 @@ rAlt set r8
stw r23, VecTable.SyscallVector(rSys)
stw r23, VecTable.SyscallVector(rAlt)
_kaddr r23, rNK, IntPerfMonitor
stw r23, VecTable.PerfMonitorVector(rSys)
stw r23, VecTable.PerfMonitorVector(rAlt)
_kaddr r23, rNK, IntTrace
stw r23, VecTable.TraceVector(rSys)
stw r23, VecTable.TraceVector(rAlt)
@ -242,14 +238,14 @@ CopyPageMap
lwz r8, NKConfigurationInfo.PageMapKDPOffset(rCI)
add r8, rPgMap, r8
lwz r23, PageMapEntry.PBaseAndFlags(r8)
rlwimi r23, r19, 0, 0, 0xFFFFF000
rlwimi r23, r19, 0, 0xFFFFF000
stw r23, PageMapEntry.PBaseAndFlags(r8)
lwz r19, KDP.PA_EmulatorData(r1)
lwz r8, NKConfigurationInfo.PageMapEDPOffset(rCI)
add r8, rPgMap, r8
lwz r23, PageMapEntry.PBaseAndFlags(r8)
rlwimi r23, r19, 0, 0, 0xFFFFF000
rlwimi r23, r19, 0, 0xFFFFF000
stw r23, PageMapEntry.PBaseAndFlags(r8)
@ -410,6 +406,8 @@ CreatePARInPageMap
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
stw r21, KDP.PARPageListPtr(r1)
@next_segment
cmplwi r22, 0xffff ; continue (bgt) while there are still pages left

View File

@ -210,7 +210,6 @@ KCallPrioritizeInterrupts
; Move registers from CB to EWA, and Thud.
align kIntAlign
KCallallSystemCrash
stw r0, EWA.r0(r1)

View File

@ -31,7 +31,25 @@ SchSwitchSpace
CauseNotification
FDPEmulateInstruction
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
IntReturn