02.27 <- 02.28

The master branch builds 02.28. This branch builds 02.27, 02.26 and so
on. It will be frequently rebased on master.
This commit is contained in:
Elliot Nunn 2018-04-22 16:12:30 +08:00
parent b1bb36c551
commit 85c87e641a
10 changed files with 62 additions and 271 deletions

View File

@ -466,15 +466,6 @@ BAT2U ds.l 1 ; 90
BAT2L ds.l 1 ; 94
BAT3U ds.l 1 ; 98
BAT3L ds.l 1 ; 9c
ExtraBATs ; the flag that enables these is never set?
ExtraBAT0U ds.l 1 ; a0
ExtraBAT0L ds.l 1 ; a4
ExtraBAT1U ds.l 1 ; a8
ExtraBAT1L ds.l 1 ; ac
ExtraBAT2U ds.l 1 ; b0
ExtraBAT2L ds.l 1 ; b4
ExtraBAT3U ds.l 1 ; b8
ExtraBAT3L ds.l 1 ; bc
Size equ *
endr

View File

@ -211,17 +211,6 @@ _370 ds.l 1 ; -370
_36c ds.l 1 ; -36c
_368 ds.l 1 ; -368
_364 ds.l 1 ; -364
_360 ds.w 1 ; -360
_35e ds.w 1 ; -35e
_35c ds.w 1 ; -35c
_35a ds.w 1 ; -35a
_358 ds.w 1 ; -358
_356 ds.w 1 ; -356
_354 ds.l 1 ; -354
_350 ds.l 1 ; -350
_34c ds.l 1 ; -34c
_348 ds.l 1 ; -348
_344 ds.l 1 ; -344
EWAFiller ds.b 0x340
EndOfPSA

View File

@ -4665,22 +4665,6 @@ SpaceL2PUsingBATs ; LogicalPage *r8, MPAddressSpace *r9 // PhysicalPage *r17
_v2pguts
beq @bat_yes
lwzu r16, 8(r18)
_v2pguts
beq @bat_yes
lwzu r16, 8(r18)
_v2pguts
beq @bat_yes
lwzu r16, 8(r18)
_v2pguts
beq @bat_yes
lwzu r16, 8(r18)
_v2pguts
beq @bat_yes
lwzu r16, 8(r18)
_v2pguts
bne @bat_no

View File

@ -3,7 +3,7 @@
;_______________________________________________________________________
kNanoKernelVersion equ $0228
kNanoKernelVersion equ $0227
; PowerPC Machine Status Register (MSR) bits

View File

@ -16,7 +16,7 @@
if &TYPE('NKDebugShim') != 'UNDEFINED'
MaxMPCallCount equ 300
else
MaxMPCallCount equ 134
MaxMPCallCount equ 133
endif
@ -1418,8 +1418,7 @@ KCStopScheduling ; OUTSIDE REFERER
li r17, 0x00
stb r17, 0x0019(r31)
mr r8, r31
bl SchRdyTaskLater
bl CalculateTimeslice
bl SchRdyTaskNow
mr r8, r31
bl FlagSchEval
lwz r8, 0x064c(r1)
@ -1429,6 +1428,7 @@ KCStopScheduling ; OUTSIDE REFERER
KCStopScheduling_0x94
_AssertAndRelease PSA.SchLock + Lock.Count, scratch=r16
subi r10, r10, 4
b MPCall_6_0x78
@ -2049,73 +2049,5 @@ KCRegisterExternalHandler
DeclareMPCall 133, MPCall_133
MPCall_133 ; OUTSIDE REFERER
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
cmpw r3, r0
lwz r16, 0x0edc(r1)
li r17, 0x0b
blt MPCall_133_0x34
and r3, r3, r17
or r16, r16, r3
b MPCall_133_0x3c
MPCall_133_0x34
orc r3, r3, r17
and r16, r16, r3
MPCall_133_0x3c
stw r16, 0x0edc(r1)
srawi r16, r4, 16
extsh r17, r4
cmpwi r16, -0x01
cmpwi cr1, r17, -0x01
beq MPCall_133_0x60
bgt MPCall_133_0x5c
li r16, 0x00
MPCall_133_0x5c
sth r16, PSA._360(r1)
MPCall_133_0x60
beq cr1, MPCall_133_0x70
bgt cr1, MPCall_133_0x6c
li r17, 0x00
MPCall_133_0x6c
sth r17, PSA._35e(r1)
MPCall_133_0x70
srawi r16, r5, 16
extsh r17, r5
cmpwi r16, -0x01
cmpwi cr1, r17, -0x01
beq MPCall_133_0x90
bgt MPCall_133_0x8c
li r16, 0x00
MPCall_133_0x8c
sth r16, PSA._35c(r1)
MPCall_133_0x90
beq cr1, MPCall_133_0xa0
bgt cr1, MPCall_133_0x9c
li r17, 0x00
MPCall_133_0x9c
sth r17, PSA._35a(r1)
MPCall_133_0xa0
; r1 = kdp
bl ScreenConsole_redraw
; r1 = kdp
b ReleaseAndReturnZeroFromMPCall
MPCall_Panic
b panic

View File

@ -966,7 +966,7 @@ SchSwitchSpace
cmplw r16, r17
lwz r17, AddressSpace.BAT3L(r8)
beq cr1, @definitely_set_BAT3
beq @skip_setting_BAT3
beqlr
@definitely_set_BAT3
mtspr dbat3u, r0
@ -979,80 +979,6 @@ SchSwitchSpace
@skip_setting_BAT3
; This is weird. If the hasExtraBATs flag (my name) is set in ProcessorInfo,
; populate a second (undocumented?) set of BATs from the same struct.
lwz r17, KDP.ProcessorInfo + NKProcessorInfo.ProcessorFlags(r1)
lwz r16, AddressSpace.ExtraBAT0U(r8)
rlwinm. r17, r17, 0, 31-NKProcessorInfo.hasExtraBATs, 31-NKProcessorInfo.hasExtraBATs
lwz r17, AddressSpace.ExtraBAT0U(r9)
beq @return
cmplw r16, r17
lwz r17, AddressSpace.ExtraBAT0L(r8)
beq cr1, @definitely_set_ExtraBAT0
beq @skip_setting_ExtraBAT0
@definitely_set_ExtraBAT0
mtspr 0x238, r0
mtspr 0x239, r17
mtspr 0x238, r16
mtspr 0x230, r0
mtspr 0x231, r17
mtspr 0x230, r16
@skip_setting_ExtraBAT0
lwz r16, AddressSpace.ExtraBAT1U(r8)
lwz r17, AddressSpace.ExtraBAT1U(r9)
cmplw r16, r17
lwz r17, AddressSpace.ExtraBAT1L(r8)
beq cr1, @definitely_set_ExtraBAT1
beq @skip_setting_ExtraBAT1
@definitely_set_ExtraBAT1
mtspr 0x23a, r0
mtspr 0x23b, r17
mtspr 0x23a, r16
mtspr 0x232, r0
mtspr 0x233, r17
mtspr 0x232, r16
@skip_setting_ExtraBAT1
lwz r16, AddressSpace.ExtraBAT2U(r8)
lwz r17, AddressSpace.ExtraBAT2U(r9)
cmplw r16, r17
lwz r17, AddressSpace.ExtraBAT2L(r8)
beq cr1, @definitely_set_ExtraBAT2
beq @skip_setting_ExtraBAT2
@definitely_set_ExtraBAT2
mtspr 0x23c, r0
mtspr 0x23d, r17
mtspr 0x23c, r16
mtspr 0x234, r0
mtspr 0x235, r17
mtspr 0x234, r16
@skip_setting_ExtraBAT2
lwz r16, AddressSpace.ExtraBAT3U(r8)
lwz r17, AddressSpace.ExtraBAT3U(r9)
cmplw r16, r17
lwz r17, AddressSpace.ExtraBAT3L(r8)
beq cr1, @definitely_set_ExtraBAT3
beq @skip_setting_ExtraBAT3
@definitely_set_ExtraBAT3
mtspr 0x23e, r0
mtspr 0x23f, r17
mtspr 0x23e, r16
mtspr 0x236, r0
mtspr 0x237, r17
mtspr 0x236, r16
@skip_setting_ExtraBAT3
@return
blr

View File

@ -18,60 +18,6 @@ ScreenConsoleFG equ 0x44444444
align 8 ; odd!
; > r1 = kdp
InitScreenConsole ; OUTSIDE REFERER
stmw r29, -0x0110(r1)
lis r30, -0x01
ori r30, r30, 0x7000
add r30, r30, r1
addi r31, r30, 0x2000
addi r30, r30, 0x04
InitScreenConsole_0x18
cmplw r30, r31
addi r29, r31, 0x04
bge InitScreenConsole_0x2c
stwu r29, -0x1000(r31)
b InitScreenConsole_0x18
InitScreenConsole_0x2c
addi r31, r30, 0x1000
stw r30, -0x0004(r31)
stw r30, PSA._404(r1)
stw r30, PSA._400(r1)
li r29, ScreenConsoleY
sth r29, PSA._360(r1)
li r29, ScreenConsoleX
sth r29, PSA._35e(r1)
li r29, ScreenConsoleHeight
sth r29, PSA._35c(r1)
li r29, ScreenConsoleWidth
sth r29, PSA._35a(r1)
li r29, 0x5e
sth r29, PSA._358(r1)
li r29, 0x30
sth r29, PSA._356(r1)
lmw r29, -0x0110(r1)
blr
; > r1 = kdp
ScreenConsole_putchar ; OUTSIDE REFERER
lwz r30, PSA._404(r1)
stb r29, 0x0000(r30)
addi r30, r30, 0x01
andi. r29, r30, 0xfff
stw r30, PSA._404(r1)
bnelr
lwz r30, -0x1000(r30)
stw r30, PSA._404(r1)
blr
; > r1 = kdp
ScreenConsole_redraw ; OUTSIDE REFERER
stmw r2, PSA._3e8(r1)
mflr r14
@ -124,8 +70,7 @@ ScreenConsole_redraw_0x90
beq ScreenConsole_redraw_0x74
beq cr1, ScreenConsole_redraw_0xe4
bl major_0x18e54
lhz r17, PSA._358(r1)
cmpw r9, r17
cmpwi r9, 0x5e
blt ScreenConsole_redraw_0x74
ScreenConsole_redraw_0xc0
@ -135,16 +80,13 @@ ScreenConsole_redraw_0xc0
ScreenConsole_redraw_0xcc
bl funny_thing
lhz r17, PSA._356(r1)
cmpw r10, r17
cmpwi r10, 0x30
blt ScreenConsole_redraw_0x74
stw r16, PSA._400(r1)
b ScreenConsole_redraw_0x40
ScreenConsole_redraw_0xe4
lhz r17, PSA._356(r1)
addi r17, r17, -0x01
cmpw r10, r17
cmpwi r10, 0x30-1
blt ScreenConsole_redraw_0x74
lwz r17, PSA.DecClockRateHzCopy(r1)
slwi r25, r17, 2
@ -342,18 +284,6 @@ major_0x18d5c_0x70
major_0x18d5c_0x88
isync
mfmsr r22
lhz r29, PSA._360(r1)
lhz r30, PSA._35c(r1)
subf r29, r29, r30
li r30, 0x0a
divw r29, r29, r30
sth r29, PSA._356(r1)
lhz r29, PSA._35e(r1)
lhz r30, PSA._35a(r1)
subf r29, r29, r30
li r30, 0x06
divw r29, r29, r30
sth r29, PSA._358(r1)
mtlr r13
blr
@ -363,13 +293,10 @@ major_0x18e24 ; OUTSIDE REFERER
mflr r12
major_0x18e24_0x4
lhz r25, PSA._358(r1)
cmpw cr1, r9, r25
lbz r25, 0x0000(r21)
cmplwi r25, 0x00
addi r21, r21, 0x01
beq major_0x18e24_0x28
bge cr1, major_0x18e24_0x4
bl major_0x18e54
b major_0x18e24_0x4
@ -391,12 +318,6 @@ major_0x18e54 ; OUTSIDE REFERER
mullw r7, r7, r6
add r7, r7, r27
add r7, r7, r3
lhz r27, PSA._360(r1)
lhz r28, PSA._35e(r1)
mullw r27, r5, r27
mullw r28, r6, r28
add r7, r7, r27
add r7, r7, r28
subf. r27, r3, r7
blt major_0x18e54_0x174
li r8, 0x00
@ -500,8 +421,7 @@ funny_thing_0xc
mflr r12
funny_thing_0x10
lhz r25, PSA._358(r1)
cmpw r9, r25
cmpwi r9, 0x5e
bge funny_thing_0x28
li r25, 0x20
bl major_0x18e54

View File

@ -704,7 +704,7 @@ major_0x18040_0x9c
cmpwi cr1, r17, -0x100
bgt major_0x18040_0x100
blt cr1, major_0x18040_0x100
_log 'Looks like interrupt stack overflow by os or application^n'
_log 'Looks like interrupt stack underflow by os or application^n'
major_0x18040_0x100
mtlr r16
@ -1232,4 +1232,48 @@ prereturn ; OUTSIDE REFERER
blr
; > r1 = kdp
InitScreenConsole ; OUTSIDE REFERER
stmw r29, -0x0110(r1)
lis r30, -0x01
ori r30, r30, 0x7000
add r30, r30, r1
addi r31, r30, 0x2000
addi r30, r30, 0x04
InitScreenConsole_0x18
cmplw r30, r31
addi r29, r31, 0x04
bge InitScreenConsole_0x2c
stwu r29, -0x1000(r31)
b InitScreenConsole_0x18
InitScreenConsole_0x2c
addi r31, r30, 0x1000
stw r30, -0x0004(r31)
stw r30, PSA._404(r1)
stw r30, PSA._400(r1)
lmw r29, -0x0110(r1)
blr
; > r1 = kdp
ScreenConsole_putchar ; OUTSIDE REFERER
lwz r30, PSA._404(r1)
stb r29, 0x0000(r30)
addi r30, r30, 0x01
andi. r29, r30, 0xfff
stw r30, PSA._404(r1)
bnelr
lwz r30, -0x1000(r30)
stw r30, PSA._404(r1)
blr
align 5

View File

@ -2065,19 +2065,19 @@ FDP_1024
FDP_104c
oris r11, r11, 0x0200
lbz r21, 0x0000(r23)
b FDP_00E4
b FDP_00E8
FDP_1058
oris r11, r11, 0x0200
lhz r21, 0x0000(r23)
b FDP_00E4
b FDP_00E8
FDP_1064
oris r11, r11, 0x0200
lwz r21, 0x0000(r23)
b FDP_00E4
b FDP_00E8

View File

@ -216,6 +216,11 @@ VMFinalInit ; OUTSIDE REFERER
ble @loop
@skip
foo set KDP.NanoKernelInfo + NKNanoKernelInfo.ConfigFlags
lwz r8, foo(r1)
_bclr r8, r8, 28
stw r8, foo(r1)
mfsprg r8, 0
lmw r29, EWA.r29(r8)
b VMReturn1