This commit is contained in:
Elliot Nunn 2018-07-06 21:30:48 +08:00
parent d09e326082
commit fbfcb55c89
5 changed files with 30 additions and 49 deletions

View File

@ -2,35 +2,7 @@
# NKDir, NKIncDir, NKBin
NKFiles = ¶
{NKDir}NKInit.s ¶
{NKDir}NKReplacementInit.s ¶
{NKDir}NKBuiltinInit.s ¶
{NKDir}NKProcFlagsTbl.s ¶
{NKDir}NKProcInfoTbl.s ¶
{NKDir}NKExceptions.s ¶
{NKDir}NKIntHandlers.s ¶
{NKDir}NKFloatInts.s ¶
{NKDir}NKIntMisc.s ¶
{NKDir}NKPaging.s ¶
{NKDir}NKTranslation.s ¶
{NKDir}NKVMCalls.s ¶
{NKDir}NKPowerCalls.s ¶
{NKDir}NKRTASCalls.s ¶
{NKDir}NKCache.s ¶
{NKDir}NKMPCalls.s ¶
{NKDir}NKSync.s ¶
{NKDir}NKTasks.s ¶
{NKDir}NKAddressSpaces.s ¶
{NKDir}NKPoolAllocator.s ¶
{NKDir}NKTimers.s ¶
{NKDir}NKScheduler.s ¶
{NKDir}NKIndex.s ¶
{NKDir}NKPrimaryIntHandlers.s ¶
{NKDir}NKConsoleLog.s ¶
{NKDir}NKSleep.s ¶
{NKDir}NKThud.s ¶
{NKDir}NKScreenConsole.s ¶
{NKDir}NKAdditions.s ¶
{NKDir}NanoKernel.s ¶
NKIncludes = ¶
{NKDir}NKMacros.s ¶

View File

@ -125,7 +125,7 @@ VMReturn ; OUTSIDE REFERER
VMInit ; OUTSIDE REFERER
lwz r7, KDP.FlatPageListPtr(r1) ; check that zero seg isn't empty
lwz r8, KDP.FlatPageListSegPtrs + 0(r1)
lwz r8, KDP.PARPerSegmentPLEPtrs + 0(r1)
cmpw r7, r8
bne VMReturn1
@ -150,7 +150,7 @@ VMInit_BigLoop
bne VMInit_0x110
bnel cr1, VMPanic
rlwinm r15, r8, 22, 0, 29
addi r3, r1, KDP.FlatPageListSegPtrs
addi r3, r1, KDP.PARPerSegmentPLEPtrs
rlwimi r3, r5, 2, 28, 29
stw r15, 0x0000(r3)
slwi r3, r5, 16
@ -319,7 +319,7 @@ VMInit_0x29c
VMInit_Fail
lwz r7, KDP.TotalPhysicalPages(r1)
lwz r8, KDP.FlatPageListSegPtrs + 0(r1)
lwz r8, KDP.PARPerSegmentPLEPtrs + 0(r1)
stw r7, KDP.VMLogicalPages(r1)
stw r8, KDP.FlatPageListPtr(r1)
@ -798,7 +798,7 @@ VMShouldClean ; OUTSIDE REFERER
VMAllocateMemory ; OUTSIDE REFERER
lwz r7, KDP.FlatPageListPtr(r1)
lwz r8, KDP.FlatPageListSegPtrs + 0(r1)
lwz r8, KDP.PARPerSegmentPLEPtrs + 0(r1)
cmpwi cr6, r5, 0x00
cmpw cr7, r7, r8
or r7, r4, r6
@ -1148,7 +1148,7 @@ VMLastExportedFunc_0xd7
; major_0x09c9c
major_0x09c9c ; OUTSIDE REFERER
addi r8, r1, KDP.FlatPageListSegPtrs
addi r8, r1, KDP.PARPerSegmentPLEPtrs
lwz r9, KDP.TotalPhysicalPages(r1)
rlwimi r8, r7, 18, 28, 29
cmplw r7, r9

View File

@ -302,3 +302,11 @@ _bclr_lbit set 31
ENDIF
ENDM
MACRO
_kaddr &rd, &rs, &label
addi &rd, &rs, (&label-NKTop)
ENDM

View File

@ -1,6 +1,7 @@
; AUTO-GENERATED SYMBOL LIST
; These registers will be used throughout
rCI set rCI
@ -121,7 +122,7 @@ InitKCalls
; Start with a default function
_kaddr r23, rNK, kcThud
_kaddr r23, rNK, KCallSystemCrash
addi r8, r1, KDP.NanoKernelCallTable
@ -135,22 +136,22 @@ InitKCalls
; Then some overrides (names still pretty poor)
_kaddr r23, rNK, kcReturnFromException
_kaddr r23, rNK, KCallReturnFromException
stw r23, NanoKernelCallTable.ReturnFromException(r8)
_kaddr r23, rNK, kcRunAlternateContext
_kaddr r23, rNK, KCallRunAlternateContext
stw r23, NanoKernelCallTable.RunAlternateContext(r8)
_kaddr r23, rNK, kcResetSystem
_kaddr r23, rNK, KCallResetSystem
stw r23, NanoKernelCallTable.ResetSystem(r8)
_kaddr r23, rNK, kcVMDispatch
_kaddr r23, rNK, KCallVMDispatch
stw r23, NanoKernelCallTable.VMDispatch(r8)
_kaddr r23, rNK, kcPrioritizeInterrupts
_kaddr r23, rNK, KCallPrioritizeInterrupts
stw r23, NanoKernelCallTable.PrioritizeInterrupts(r8)
_kaddr r23, rNK, kcThud
_kaddr r23, rNK, KCallThud
stw r23, NanoKernelCallTable.Thud(r8)

View File

@ -163,10 +163,10 @@ KCallResetSystem ; PPC trap 1, or indirectly, 68k RESET
xoris r8, r3, 'Ga'
cmplwi r8, 'ry'
bne @actually_reset
bne Reset
xoris r8, r4, 0x0505
cmplwi r8, 0x1956
bne @actually_reset
bne Reset
; Gary Davidian skeleton key: r5/D0 = MSR bits to unset, r7/D2 = MSR bits to set
andc r11, r11, r5
@ -174,11 +174,11 @@ KCallResetSystem ; PPC trap 1, or indirectly, 68k RESET
or r11, r11, r8
b IntReturn
@actually_reset
Reset
include 'NKReset.s'
lmw r14, EWA.r14(r1)
b kcPrioritizeInterrupts
b KCallPrioritizeInterrupts
########################################################################
@ -204,7 +204,7 @@ KCallPrioritizeInterrupts
lwz r8, ContextBlock.r8(r6)
lwz r9, ContextBlock.r9(r6)
lwz r6, EWA.r6(r1)
blrl ; (could this ever fall though to kcThud?)
blrl ; (could this ever fall though to KCallallSystemCrash?)
########################################################################
@ -309,8 +309,8 @@ IntProgram ; (also called when the Alternate Context gets an External Int => Exc
stw r10, KDP.NanoKernelInfo + NKNanoKernelInfo.NanoKernelCallCounts(r8)
lwz r8, KDP.NanoKernelCallTable(r8)
mtlr r8
addi r10, r10, 4 ; continue executing the next instruction
rlwimi r7, r7, 32-5, 26, 26 ; something about MSR[SE]
addi r10, r10, 4 ; continue executing the next instruction
rlwimi r7, r7, 32-5, 26, 26 ; something about MSR[SE]
blr
; Cannot service with a KCall => throw Exception
@ -336,7 +336,7 @@ IntProgram ; (also called when the Alternate Context gets an External Int => Exc
li r8, ecFloatException
bc BO_IF, 15, Exception ; SRR1[15] set => handler can retry
addi r10, r10, 4
rlwimi r7, r7, 32-5, 26, 26 ; something about MSR[SE]
rlwimi r7, r7, 32-5, 26, 26 ; something about MSR[SE]
b Exception ; SRR1[15] unset => can't retry
########################################################################