powermac-rom/NanoKernel/MROptabCode.s

499 lines
12 KiB
ArmAsm
Raw Normal View History

2018-07-28 05:37:20 +00:00
; AUTO-GENERATED SYMBOL LIST
########################################################################
MRPriCrash ; C00
2018-07-24 04:56:38 +00:00
bl SystemCrash
MRSecException ; C04
2018-07-27 08:41:59 +00:00
b MRSecException2
2018-07-24 04:56:38 +00:00
########################################################################
MRPriSTFSx ; C08
2018-07-24 04:56:38 +00:00
rlwinm r17, r17, 0,16,10
MRPriSTFSUx ; C0C
2018-07-24 04:56:38 +00:00
crclr cr7_so
b MRDoTableSTFD
MRPriSTFDx ; C14
2018-07-24 04:56:38 +00:00
rlwinm r17, r17, 0,16,10
MRPriSTFDUx ; C18
2018-07-24 04:56:38 +00:00
crset cr7_so
MRDoTableSTFD ; C1C
; This table is of the form:
; stfd <reg>, KDP.FloatScratch(r1)
2018-07-24 04:56:38 +00:00
; b
clrrwi r19, r25, 10
rlwimi r19, r17, 14,24,28
addi r19, r19, STFDTable-MRBase
2018-07-24 04:56:38 +00:00
mtlr r19
rlwimi r14, r11, 0,18,18
mtmsr r14
blr
MRDoneTableSTFD ; c38
ori r11, r11, 0x2000
lwz r20, KDP.FloatScratch(r1)
lwz r21, KDP.FloatScratch+4(r1)
bso cr7, MRPriUpdLoad
2018-07-24 04:56:38 +00:00
extrwi r23, r20, 11,1
cmpwi r23, 0x380
insrwi r20, r20, 27,2
inslwi r20, r21, 3,29
mr r21, r20
bgt MRPriUpdLoad
2018-07-24 04:56:38 +00:00
cmpwi r23, 0x36A
clrrwi r21, r20, 31
blt MRPriUpdLoad
2018-07-24 04:56:38 +00:00
oris r20, r20, 0x80
neg r23, r23
clrlwi r20, r20, 8
srw r20, r20, r23
rlwimi r21, r20, 31,9,31
b MRPriUpdLoad
2018-07-24 04:56:38 +00:00
########################################################################
MRPriSTWBRX ; C84
2018-07-24 04:56:38 +00:00
rlwinm r28, r17, 13,25,29
lwbrx r21, r1, r28
b MRPriPlainLoad
2018-07-24 04:56:38 +00:00
MRPriSTHBRX ; C90
2018-07-24 04:56:38 +00:00
rlwinm r28, r17, 13,25,29
addi r21, r1, 2
lhbrx r21, r21, r28
b MRPriPlainLoad
2018-07-24 04:56:38 +00:00
########################################################################
MRPriUpdStore ; CA0
2018-07-24 04:56:38 +00:00
rlwinm r28, r17, 13,25,29
lwzx r21, r1, r28
b MRPriUpdLoad
2018-07-24 04:56:38 +00:00
MRPriPlainStore ; CAC
2018-07-24 04:56:38 +00:00
rlwinm r28, r17, 13,25,29
lwzx r21, r1, r28
MRPriPlainLoad ; CB4
2018-07-24 04:56:38 +00:00
rlwinm r17, r17, 0,16,10
MRPriUpdLoad ; CB8
2018-07-24 04:56:38 +00:00
extrwi. r22, r17, 4,27
add r19, r18, r22
########################################################################
MRPriDone ; CC0
2018-07-24 04:56:38 +00:00
clrrwi r25, r25, 10
insrwi r25, r19, 3,28
insrwi r25, r17, 4,24
lha r22, MRMemtab-MRBase(r25)
2018-07-24 04:56:38 +00:00
addi r23, r1, KDP.VecTblMemRetry
add r22, r22, r25
mtlr r22
mtsprg 3, r23
mtmsr r15
insrwi r25, r26, 8,22
bnelr
b MRDoSecondary
2018-07-24 04:56:38 +00:00
########################################################################
MRStore22 ; Fast return paths from MemAccess code
2018-07-24 04:56:38 +00:00
srwi r23, r21, 16
sth r23, -4(r19)
addi r17, r17, -4
sth r21, -2(r19)
b MRDoSecondary
MRLoad22
2018-07-24 04:56:38 +00:00
lhz r23, -4(r19)
addi r17, r17, -4
insrwi r21, r23, 16,0
MRLoad2
2018-07-24 04:56:38 +00:00
lhz r23, -2(r19)
insrwi r21, r23, 16,16
MRDoSecondary ; D18
2018-07-24 04:56:38 +00:00
sync
rlwinm. r28, r17, 18,25,29
mtlr r25
cror cr0_eq, cr0_eq, mrOpflag3
2018-07-24 04:56:38 +00:00
mtmsr r14
mtsprg 3, r24
beqlr
crset mrFlagDidLoad
2018-07-24 04:56:38 +00:00
stwx r18, r1, r28
blr
########################################################################
MRSecLoadExt ; D40
extsh r21, r21
MRSecLoad ; D44
rlwinm r28, r17, 13,25,29
crset mrFlagDidLoad
2018-07-24 04:56:38 +00:00
stwx r21, r1, r28
########################################################################
2018-07-27 08:41:59 +00:00
MRSecDone
andi. r23, r16, ContextFlagTraceWhenDone ; Time to return from interrupt
2018-07-24 04:56:38 +00:00
addi r10, r10, 4
mtsrr0 r10
mtsrr1 r11
2018-07-27 08:41:59 +00:00
bne @trace ; Is a Trace flagged?
2018-07-24 04:56:38 +00:00
mtlr r12
2018-07-27 08:41:59 +00:00
bc BO_IF_NOT, mrFlagDidLoad, @load_ewa_registers
2018-07-24 04:56:38 +00:00
mtcr r13
lmw r2, KDP.r2(r1)
lwz r0, KDP.r0(r1)
lwz r1, KDP.r1(r1)
rfi
2018-07-27 08:41:59 +00:00
@load_ewa_registers ; Only load changed registers
2018-07-24 04:56:38 +00:00
mtcr r13
lmw r10, KDP.r10(r1)
lwz r1, KDP.r1(r1)
rfi
2018-07-27 08:41:59 +00:00
@trace ; Jump to Trace int handler
2018-07-24 04:56:38 +00:00
mfsprg r24, 3
mtsprg 2, r12
2018-07-27 08:41:59 +00:00
_clear r16, r16, bitContextFlagTraceWhenDone
2018-07-24 04:56:38 +00:00
lwz r12, VecTbl.Trace(r24)
stw r16, KDP.Flags(r1)
mtcr r13
mtlr r12
lmw r2, KDP.r2(r1)
lwz r0, KDP.r0(r1)
lwz r1, KDP.r1(r1)
mtsprg 1, r1
blrl
########################################################################
MRSecLHBRX ; DC0
slwi r21, r21, 16
MRSecLWBRX ; DC4
rlwinm r28, r17, 13,25,29
crset mrFlagDidLoad
2018-07-24 04:56:38 +00:00
stwbrx r21, r1, r28
b MRSecDone
2018-07-24 04:56:38 +00:00
########################################################################
MRSecLFSu ; DD4
clrrwi r20, r21, 31
xor. r21, r20, r21
beq MRSecLFDu
rlwinm. r23, r21, 16,17,24
addi r23, r23, 0x80
rlwimi r20, r21, 29,5,31
extsh r23, r23
rlwimi r20, r21, 0,1,1
slwi r21, r21, 29
addi r23, r23, -0x4080
rlwimi r20, r23, 0,2,4
bne MRSecLFDu
srwi r21, r21, 20
insrwi r21, r20, 20,0
cntlzw r23, r21
slw r21, r21, r23
neg r23, r23
rlwimi r20, r21, 21,12,31
addi r23, r23, 0x380
slwi r21, r21, 21
insrwi r20, r23, 11,1
MRSecLFDu ; E28
; This table is of the form:
; lfd <reg>, KDP.FloatScratch(r1)
; b MRSecDone
clrrwi r23, r25, 10
2018-07-24 04:56:38 +00:00
rlwimi r23, r17, 14,24,28
addi r23, r23, LFDTable-MRBase
2018-07-24 04:56:38 +00:00
mtlr r23
stw r20, KDP.FloatScratch(r1)
stw r21, KDP.FloatScratch+4(r1)
2018-07-24 04:56:38 +00:00
rlwimi r14, r11, 0,18,18
mtmsr r14
ori r11, r11, 0x2000
blr
########################################################################
MRSecLMW ; E50
rlwinm. r28, r17, 13,25,29
rlwinm r23, r17, 18,25,29
cmpw cr7, r28, r23
addis r17, r17, 0x20
beq loc_E68
beq cr7, loc_E6C
loc_E68 ; E68
stwx r21, r1, r28
loc_E6C ; E6C
cmpwi r28, 0x7C
li r22, 9
insrwi r17, r22, 6,26
addi r19, r19, 4
bne MRPriDone
b MRSecDone
2018-07-24 04:56:38 +00:00
MRSecSTMW ; E84
addis r17, r17, 0x20
rlwinm. r28, r17, 13,25,29
beq MRSecDone
2018-07-24 04:56:38 +00:00
lwzx r21, r1, r28
li r22, 8
insrwi r17, r22, 6,26
addi r19, r19, 4
b MRPriDone
2018-07-24 04:56:38 +00:00
########################################################################
MRPriDCBZ ; Zero four 8b chunks of the cache blk
2018-07-24 04:56:38 +00:00
clrrwi r19, r18, 5 ; r19 = address of chunk to zero
b MRComDCBZ ; (for use by this code only)
MRSecDCBZ ; EAC
andi. r22, r19, 0x18
clrrwi r19, r19, 3 ; MemAccess code decrements this reg
beq MRSecDone ; Zeroed all foun chunks -> done!
2018-07-24 04:56:38 +00:00
MRComDCBZ ; EB8
li r22, 0x10 ; Set 8 bytes (? set bit 27)
insrwi. r17, r22, 6,26
addi r19, r19, 8 ; Align ptr to right hand size of chunk
li r20, 0 ; Contents = zeros
li r21, 0
b MRPriDone ; Go, then come back to MRSecDCBZ
2018-07-24 04:56:38 +00:00
########################################################################
MRSecLWARX ; ED0
rlwinm r28, r17, 13,25,29
crset mrFlagDidLoad
2018-07-24 04:56:38 +00:00
stwx r21, r1, r28
stwcx. r21, r1, r28
b MRSecDone
2018-07-24 04:56:38 +00:00
MRSecSTWCX ; EE4
stwcx. r0, 0, r1
mfcr r23
rlwinm r23, r23, 0,3,1
rlwimi r13, r23, 0,0,3
b MRSecDone
2018-07-24 04:56:38 +00:00
########################################################################
2018-07-27 08:41:59 +00:00
MRSecRedoNoTrace ; Rerun the (cache) instruction, but not its Trace Exception
rlwinm r16, r16, 0, ~(ContextFlagTraceWhenDone | ContextFlagMemRetryErr)
subi r10, r10, 4
2018-07-24 04:56:38 +00:00
stw r16, KDP.Flags(r1)
b MRSecDone
2018-07-24 04:56:38 +00:00
########################################################################
2018-07-27 08:41:59 +00:00
MRSecException2 ; F08
2018-07-24 04:56:38 +00:00
li r8, ecDataInvalidAddress
2018-07-27 08:41:59 +00:00
b MRException
2018-07-24 04:56:38 +00:00
########################################################################
MRPriSTSWI ; F10
2018-07-24 04:56:38 +00:00
addi r22, r27, -0x800
extrwi r22, r22, 5,16
b loc_F2C
MRPriSTSWX ; F1C
2018-07-24 04:56:38 +00:00
mfxer r22
andi. r22, r22, 0x7F
addi r22, r22, -1
beq MRSecDone
2018-07-24 04:56:38 +00:00
loc_F2C ; F2C
rlwimi r17, r22, 4,21,25
not r22, r22
insrwi r17, r22, 2,4
mr r19, r18
b loc_1008
MRSecStrStore ; F40
andi. r22, r17, 0x7C0
addis r28, r17, 0x20
rlwimi r17, r28, 0,6,10
addi r17, r17, -0x40
bne loc_1008
b MRSecDone
2018-07-24 04:56:38 +00:00
########################################################################
MRPriLSWI ; F58
2018-07-24 04:56:38 +00:00
addi r22, r27, -0x800
extrwi r22, r22, 5,16
addis r28, r27, 0x3E0
rlwimi r17, r28, 22,16,20
b loc_F80
MRPriLSWX ; F6C
2018-07-24 04:56:38 +00:00
mfxer r22
andi. r22, r22, 0x7F
rlwimi r17, r27, 0,16,20
addi r22, r22, -1
beq MRSecDone
2018-07-24 04:56:38 +00:00
loc_F80 ; F80
andis. r23, r17, 0x1F
rlwimi r17, r22, 4,21,25
not r22, r22
insrwi r17, r22, 2,4
mr r19, r18
bne loc_1070
rlwimi r17, r17, 5,11,15
b loc_1070
MRSecLSWix ; FA0
andi. r22, r17, 0x7C0
rlwinm r28, r17, 13,25,29
bne loc_1044
rlwinm r22, r17, 9,27,28
slw r21, r21, r22
b loc_1044
########################################################################
2018-07-27 08:41:59 +00:00
MRPriLSCBX ; FB8
2018-07-24 04:56:38 +00:00
mfxer r22
andi. r22, r22, 0x7F
rlwimi r17, r27, 0,16,20
insrwi r17, r27, 1,3
addi r22, r22, -1
beq MRSecDone
2018-07-24 04:56:38 +00:00
andis. r23, r17, 0x1F
rlwimi r17, r22, 4,21,25
not r22, r22
insrwi r17, r22, 2,4
mr r19, r18
bne loc_10C8
rlwimi r17, r17, 5,11,15
b loc_10C8
2018-07-27 08:41:59 +00:00
MRSecLSCBX ; FF0
2018-07-24 04:56:38 +00:00
rlwinm. r22, r17, 28,25,29
rlwinm r28, r17, 13,25,29
bne loc_109C
rlwinm r23, r17, 9,27,28
slw r21, r21, r23
b loc_109C
2018-07-27 08:41:59 +00:00
########################################################################
2018-07-24 04:56:38 +00:00
loc_1008 ; 1008
andi. r23, r17, 0x7C0
rlwinm r28, r17, 13,25,29
lwzx r21, r1, r28
li r22, 8
insrwi r17, r22, 6,26
addi r19, r19, 4
bne MRPriDone
2018-07-24 04:56:38 +00:00
rlwinm r22, r17, 9,27,28
srw r21, r21, r22
extrwi r22, r17, 2,4
neg r22, r22
add r19, r19, r22
addi r22, r22, 4
insrwi. r17, r22, 5,26
b MRPriDone
2018-07-24 04:56:38 +00:00
loc_1044 ; 1044
rlwinm r23, r17, 18,25,29
cmpw cr7, r28, r23
rlwinm r23, r17, 23,25,29
cmpw cr6, r28, r23
beq cr7, loc_1060
beq cr6, loc_1060
stwx r21, r1, r28
loc_1060 ; 1060
addis r28, r17, 0x20
rlwimi r17, r28, 0,6,10
addi r17, r17, -0x40
beq MRSecDone
2018-07-24 04:56:38 +00:00
loc_1070 ; 1070
andi. r23, r17, 0x7C0
li r22, 9
insrwi r17, r22, 6,26
addi r19, r19, 4
bne MRPriDone
2018-07-24 04:56:38 +00:00
extrwi r22, r17, 2,4
neg r22, r22
add r19, r19, r22
addi r22, r22, 4
insrwi. r17, r22, 5,26
b MRPriDone
2018-07-24 04:56:38 +00:00
loc_109C ; 109C
rlwinm r23, r17, 18,25,29
cmpw cr7, r28, r23
rlwinm r23, r17, 23,25,29
cmpw cr6, r28, r23
beq cr7, loc_10B8
beq cr6, loc_10B8
stwx r21, r1, r28
loc_10B8 ; 10B8
addis r28, r17, 0x20
rlwimi r17, r28, 0,6,10
addi r17, r17, -0x40
beq MRSecDone
2018-07-24 04:56:38 +00:00
loc_10C8 ; 10C8
not r22, r22
rlwimi r22, r17, 6,30,31
li r28, 1
mfxer r23
extrwi r23, r23, 8,16
srwi r20, r21, 24
cmpw cr7, r20, r23
add. r22, r22, r28
beq cr7, loc_112C
beq loc_112C
extrwi r20, r21, 8,8
cmpw cr7, r20, r23
add. r22, r22, r28
beq cr7, loc_112C
beq loc_112C
extrwi r20, r21, 8,16
cmpw cr7, r20, r23
add. r22, r22, r28
beq cr7, loc_112C
beq loc_112C
clrlwi r20, r21, 24
cmpw cr7, r20, r23
add. r22, r22, r28
beq cr7, loc_112C
bne loc_1070
loc_112C ; 112C
rlwinm. r28, r17, 0,3,3
mfxer r23
add r22, r22, r23
insrwi r23, r22, 7,25
mtxer r23
beq MRSecDone
2018-07-24 04:56:38 +00:00
mfcr r23
clrlwi r23, r23, 30
insrwi r13, r23, 4,0
b MRSecDone