mirror of
https://github.com/elliotnunn/powermac-rom.git
synced 2024-06-07 08:30:20 +00:00
nearly perfect except fdp
This commit is contained in:
parent
062a081398
commit
90b71fe94e
|
@ -14,7 +14,7 @@ shift&name equ 31 - &bit
|
|||
|
||||
|
||||
|
||||
kNanoKernelVersion equ $0228
|
||||
kNanoKernelVersion equ $0101
|
||||
|
||||
|
||||
; PowerPC Machine Status Register (MSR) bits
|
||||
|
|
|
@ -57,7 +57,7 @@ InitKernelMemory
|
|||
lwz r15, NKSystemInfo.PhysicalMemorySize(rSI) ; Size the HTAB for 2 entries per page
|
||||
subi r15, r15, 1
|
||||
cntlzw r12, r15
|
||||
lis r14, 0x01ff ; r14 = size-1
|
||||
lis r14, 0x00ff ; r14 = size-1
|
||||
srw r14, r14, r12
|
||||
ori r14, r14, 0xffff ; Obey architecture min and max size
|
||||
clrlwi r14, r14, 9
|
||||
|
@ -146,7 +146,7 @@ InitKernelGlobals
|
|||
stw rCI, KDP.ConfigInfoPtr(r1)
|
||||
|
||||
addi r12, r14, 1
|
||||
stw r12, KDP.SysInfo.HashTableSize(r11)
|
||||
stw r12, KDP.SysInfo.HashTableSize(r1)
|
||||
|
||||
addi rED, r1, 0x1000
|
||||
stw rED, KDP.EDPPtr(r1)
|
||||
|
@ -210,7 +210,7 @@ InitKernelGlobals
|
|||
########################################################################
|
||||
|
||||
InitInfoRecords
|
||||
lwz r11, NKConfigurationInfo.LA_KernelData(rCI)
|
||||
lwz r11, NKConfigurationInfo.LA_InfoRecord(rCI)
|
||||
|
||||
addi r12, r11, 0xFC0
|
||||
stw r12, 0xFC0(r1)
|
||||
|
@ -224,39 +224,39 @@ InitInfoRecords
|
|||
stw r12, 0xFD0(r1)
|
||||
stw r0, 0xFD4(r1)
|
||||
|
||||
addi r12, r11, NKProcessorInfoPtr & 0xFFF
|
||||
addi r12, r11, KDP.ProcInfo
|
||||
stw r12, NKProcessorInfoPtr & 0xFFF(r1)
|
||||
li r12, 0x100
|
||||
sth r12, NKProcessorInfoVer & 0xFFF(r1)
|
||||
li r12, 64
|
||||
li r12, NKProcessorInfo.Size
|
||||
sth r12, NKProcessorInfoLen & 0xFFF(r1)
|
||||
|
||||
addi r12, r11, NKNanoKernelInfoPtr & 0xFFF
|
||||
addi r12, r11, KDP.NKInfo
|
||||
stw r12, NKNanoKernelInfoPtr & 0xFFF(r1)
|
||||
li r12, kNanoKernelVersion
|
||||
sth r12, NKNanoKernelInfoVer & 0xFFF(r1)
|
||||
li r12, 256
|
||||
li r12, NKNanoKernelInfo.Size
|
||||
sth r12, NKNanoKernelInfoLen & 0xFFF(r1)
|
||||
|
||||
addi r12, r11, NKDiagInfoPtr & 0xFFF
|
||||
addi r12, r11, KDP.DiagInfo
|
||||
stw r12, NKDiagInfoPtr & 0xFFF(r1)
|
||||
li r12, 0x100
|
||||
sth r12, NKDiagInfoVer & 0xFFF(r1)
|
||||
li r12, 256
|
||||
li r12, NKDiagInfo.Size
|
||||
sth r12, NKDiagInfoLen & 0xFFF(r1)
|
||||
|
||||
addi r12, r11, NKSystemInfoPtr & 0xFFF
|
||||
addi r12, r11, KDP.SysInfo
|
||||
stw r12, NKSystemInfoPtr & 0xFFF(r1)
|
||||
li r12, 0x102
|
||||
sth r12, NKSystemInfoVer & 0xFFF(r1)
|
||||
li r12, 160
|
||||
li r12, NKSystemInfo.Size
|
||||
sth r12, NKSystemInfoLen & 0xFFF(r1)
|
||||
|
||||
addi r12, r11, NKProcessorInfoPtr & 0xFFF
|
||||
addi r12, r11, KDP.ProcInfo
|
||||
stw r12, 0xFF8(r1)
|
||||
li r12, 0x100
|
||||
sth r12, 0xFFC(r1)
|
||||
li r12, 64
|
||||
li r12, NKProcessorInfo.Size
|
||||
sth r12, 0xFFE(r1)
|
||||
|
||||
########################################################################
|
||||
|
@ -270,7 +270,7 @@ InitProcessorInfo
|
|||
li r9, NKProcessorInfo.OvrEnd - NKProcessorInfo.Ovr
|
||||
|
||||
cmpwi r12, 1 ; 601
|
||||
addi r11, r11, NKProcessorInfo.OvrEnd - NKProcessorInfo.Ovr
|
||||
_kaddr r11, r11, ProcessorInfoTable
|
||||
beq CopyProcessorInfo
|
||||
|
||||
cmpwi r12, 3 ; 603
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
_align 6
|
||||
IntExternal0
|
||||
mfsprg r1, 0 ; Init regs and increment ctr
|
||||
stw r0, KDP.r2(r1)
|
||||
stw r0, KDP.r0(r1)
|
||||
stw r2, KDP.r2(r1)
|
||||
lwz r2, KDP.NKInfo.ExternalIntCount(r1)
|
||||
stw r3, KDP.r3(r1)
|
||||
|
@ -37,8 +37,8 @@ IntExternal0
|
|||
mfsprg r2, 2
|
||||
lwz r3, KDP.r3(r1)
|
||||
mtlr r2
|
||||
beq @return ; 0 -> no interrupt
|
||||
bgt @clear ; negative -> clear interrupt
|
||||
beq @clear ; 0 -> clear interrupt
|
||||
bgt @return ; negative -> no interrupt flag
|
||||
; positive -> post interrupt
|
||||
|
||||
lwz r2, KDP.PostIntMaskInit(r1) ; Post an interrupt via Cond Reg
|
||||
|
@ -72,7 +72,7 @@ IntLookupTable
|
|||
_align 6
|
||||
IntExternal1
|
||||
mfsprg r1, 0 ; Init regs and increment ctr
|
||||
stw r0, KDP.r2(r1)
|
||||
stw r0, KDP.r0(r1)
|
||||
stw r2, KDP.r2(r1)
|
||||
lwz r2, KDP.NKInfo.ExternalIntCount(r1)
|
||||
stw r3, KDP.r3(r1)
|
||||
|
@ -80,8 +80,8 @@ IntExternal1
|
|||
stw r2, KDP.NKInfo.ExternalIntCount(r1)
|
||||
|
||||
lis r2, 0x50F3 ; Query OpenPIC at 50F2A000
|
||||
mfmsr r2
|
||||
_bset r0, r2, bitMsrDR
|
||||
mfmsr r3
|
||||
_bset r0, r3, bitMsrDR
|
||||
stw r4, KDP.r4(r1)
|
||||
stw r5, KDP.r5(r1)
|
||||
mfsrr0 r4
|
||||
|
@ -91,7 +91,7 @@ IntExternal1
|
|||
stb r0, -0x6000(r2)
|
||||
eieio
|
||||
lbz r0, -0x6000(r2)
|
||||
mtmsr r2
|
||||
mtmsr r3
|
||||
mtsrr0 r4
|
||||
mtsrr1 r5
|
||||
lwz r4, KDP.r4(r1)
|
||||
|
@ -130,7 +130,7 @@ IntExternal1
|
|||
_align 6
|
||||
IntExternal2
|
||||
mfsprg r1, 0 ; Init regs and increment ctr
|
||||
stw r0, KDP.r2(r1)
|
||||
stw r0, KDP.r0(r1)
|
||||
stw r2, KDP.r2(r1)
|
||||
lwz r2, KDP.NKInfo.ExternalIntCount(r1)
|
||||
stw r3, KDP.r3(r1)
|
||||
|
@ -138,8 +138,8 @@ IntExternal2
|
|||
stw r2, KDP.NKInfo.ExternalIntCount(r1)
|
||||
|
||||
lis r2, 0xF300 ; Query OpenPIC at F3000028/C
|
||||
mfmsr r2
|
||||
_bset r3, r2, bitMsrDR
|
||||
mfmsr r0
|
||||
_bset r3, r0, bitMsrDR
|
||||
stw r4, KDP.r4(r1)
|
||||
stw r5, KDP.r5(r1)
|
||||
mfsrr0 r4
|
||||
|
@ -410,11 +410,11 @@ IntISI
|
|||
sync
|
||||
mtmsr r14
|
||||
mtsprg 3, r24
|
||||
lmw r14, KDP.r14(r8)
|
||||
lmw r14, KDP.r14(r1)
|
||||
b IntReturn
|
||||
|
||||
@not_in_htab
|
||||
lmw r14, KDP.r14(r8)
|
||||
lmw r14, KDP.r14(r1)
|
||||
li r8, ecInstPageFault
|
||||
blt Exception
|
||||
li r8, ecInstInvalidAddress
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
PopulateHTAB ; LogicalAddress r28 // Success cr0.eq
|
||||
lwz r29, KDP.CurrentMemLayout.SegMapPtr(r1)
|
||||
rlwinm r28, r27, 7, 0x0000000F << 2 ; convert segment of passed ptr to offset into SegMap
|
||||
rlwinm r28, r27, 7, 0x0000000F << 3 ; convert segment of passed ptr to offset into SegMap
|
||||
lwzx r29, r29, r28 ; r29 = ptr to start of segment in PageMap
|
||||
rlwinm r28, r27, 20, 0x0000FFFF ; r27 = page index within SegMap
|
||||
lhz r30, PME.LBase(r29)
|
||||
|
|
|
@ -109,7 +109,7 @@ BatMap ds.l 1 ; packed array of 4-bit indices into BATs
|
|||
|
||||
########################################################################
|
||||
|
||||
KDP RECORD 0x80, INCR ; Kernel Data Page
|
||||
KDP RECORD 0, 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
|
||||
|
|
|
@ -5,8 +5,6 @@
|
|||
include 'NKMacros.s'
|
||||
|
||||
NKTop
|
||||
b SystemCrash
|
||||
org 0
|
||||
include 'NKInit.s'
|
||||
include 'NKSystemCrash.s'
|
||||
include 'NKIntHandlers.s'
|
||||
|
|
Loading…
Reference in New Issue
Block a user