MRCrash ; C00 bl SystemCrash MRSecFail ; C04 b MRIOInstFail ######################################################################## MRPrimSTFSx ; C08 rlwinm r17, r17, 0,16,10 MRPrimSTFSUx ; C0C crclr cr7_so b MRDoTableSTFD MRPrimSTFDx ; C14 rlwinm r17, r17, 0,16,10 MRPrimSTFDUx ; C18 crset cr7_so MRDoTableSTFD ; C1C ; This table is of the form: ; stfd , KDP.FloatEmScratch(r1) ; b clrrwi r19, r25, 10 rlwimi r19, r17, 14,24,28 addi r19, r19, STFDTable-MRTop mtlr r19 rlwimi r14, r11, 0,18,18 mtmsr r14 blr MRDoneTableSTFD ; c38 ori r11, r11, 0x2000 lwz r20, KDP.FloatEmScratch(r1) lwz r21, KDP.FloatEmScratch+4(r1) bso cr7, MRPrimUpdLoad extrwi r23, r20, 11,1 cmpwi r23, 0x380 insrwi r20, r20, 27,2 inslwi r20, r21, 3,29 mr r21, r20 bgt MRPrimUpdLoad cmpwi r23, 0x36A clrrwi r21, r20, 31 blt MRPrimUpdLoad oris r20, r20, 0x80 neg r23, r23 clrlwi r20, r20, 8 srw r20, r20, r23 rlwimi r21, r20, 31,9,31 b MRPrimUpdLoad ######################################################################## MRPrimSTWBRX ; C84 rlwinm r28, r17, 13,25,29 lwbrx r21, r1, r28 b MRPrimPlainLoad MRPrimSTHBRX ; C90 rlwinm r28, r17, 13,25,29 addi r21, r1, 2 lhbrx r21, r21, r28 b MRPrimPlainLoad ######################################################################## MRPrimUpdStore ; CA0 rlwinm r28, r17, 13,25,29 lwzx r21, r1, r28 b MRPrimUpdLoad MRPrimPlainStore ; CAC rlwinm r28, r17, 13,25,29 lwzx r21, r1, r28 MRPrimPlainLoad ; CB4 rlwinm r17, r17, 0,16,10 MRPrimUpdLoad ; CB8 extrwi. r22, r17, 4,27 add r19, r18, r22 ######################################################################## MRDoMemAccess ; CC0 clrrwi r25, r25, 10 insrwi r25, r19, 3,28 insrwi r25, r17, 4,24 lha r22, MRMemtab-MRTop(r25) addi r23, r1, KDP.VecTblMemRetry add r22, r22, r25 mtlr r22 mtsprg 3, r23 mtmsr r15 insrwi r25, r26, 8,22 bnelr b MRDoneMemAccess MRStore22Fast ; Fast return paths from MemAccess code srwi r23, r21, 16 sth r23, -4(r19) addi r17, r17, -4 sth r21, -2(r19) b MRDoneMemAccess MRLoad22Fast lhz r23, -4(r19) addi r17, r17, -4 insrwi r21, r23, 16,0 MRLoad2Fast lhz r23, -2(r19) insrwi r21, r23, 16,16 MRDoneMemAccess ; D18 sync rlwinm. r28, r17, 18,25,29 mtlr r25 cror cr0_eq, cr0_eq, cr3_eq mtmsr r14 mtsprg 3, r24 beqlr crset cr3_so stwx r18, r1, r28 blr ######################################################################## MRSecLoadExt ; D40 extsh r21, r21 MRSecLoad ; D44 rlwinm r28, r17, 13,25,29 crset cr3_so stwx r21, r1, r28 ######################################################################## MRExit ; D50 andi. r23, r16, 0x20 addi r10, r10, 4 mtsrr0 r10 mtsrr1 r11 bne @trace mtlr r12 bns cr3, @otherway mtcr r13 lmw r2, KDP.r2(r1) lwz r0, KDP.r0(r1) lwz r1, KDP.r1(r1) rfi @otherway mtcr r13 lmw r10, KDP.r10(r1) lwz r1, KDP.r1(r1) rfi @trace mfsprg r24, 3 mtsprg 2, r12 rlwinm r16, r16, 0,27,25 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 cr3_so stwbrx r21, r1, r28 b MRExit ######################################################################## 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 , KDP.FloatEmScratch(r1) ; b MRExit rlwimi r23, r17, 14,24,28 addi r23, r23, LFDTable-MRTop mtlr r23 stw r20, KDP.FloatEmScratch(r1) stw r21, KDP.FloatEmScratch+4(r1) 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 MRDoMemAccess b MRExit MRSecSTMW ; E84 addis r17, r17, 0x20 rlwinm. r28, r17, 13,25,29 beq MRExit lwzx r21, r1, r28 li r22, 8 insrwi r17, r22, 6,26 addi r19, r19, 4 b MRDoMemAccess ######################################################################## MRPrimDCBZ ; Zero four 8b chunks of the cache blk 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 MRExit ; Zeroed all foun chunks -> done! 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 MRDoMemAccess ; Go, then come back to MRSecDCBZ ######################################################################## MRSecLWARX ; ED0 rlwinm r28, r17, 13,25,29 crset cr3_so stwx r21, r1, r28 stwcx. r21, r1, r28 b MRExit MRSecSTWCX ; EE4 stwcx. r0, 0, r1 mfcr r23 rlwinm r23, r23, 0,3,1 rlwimi r13, r23, 0,0,3 b MRExit ######################################################################## MRSecCacheWang ; EF8 rlwinm r16, r16, 0,28,25 addi r10, r10, -4 stw r16, KDP.Flags(r1) b MRExit ######################################################################## MRIOInstFail ; F08 li r8, ecDataInvalidAddress b ExceptionMemRetried ######################################################################## MRPrimSTSWI ; F10 addi r22, r27, -0x800 extrwi r22, r22, 5,16 b loc_F2C MRPrimSTSWX ; F1C mfxer r22 andi. r22, r22, 0x7F addi r22, r22, -1 beq MRExit 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 MRExit ######################################################################## MRPrimLSWI ; F58 addi r22, r27, -0x800 extrwi r22, r22, 5,16 addis r28, r27, 0x3E0 rlwimi r17, r28, 22,16,20 b loc_F80 MRPrimLSWX ; F6C mfxer r22 andi. r22, r22, 0x7F rlwimi r17, r27, 0,16,20 addi r22, r22, -1 beq MRExit 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 ######################################################################## MRPrimUnknown ; FB8 mfxer r22 andi. r22, r22, 0x7F rlwimi r17, r27, 0,16,20 insrwi r17, r27, 1,3 addi r22, r22, -1 beq MRExit 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 MRSecUnknown ; FF0 rlwinm. r22, r17, 28,25,29 rlwinm r28, r17, 13,25,29 bne loc_109C rlwinm r23, r17, 9,27,28 loc_1000 ; 1000 slw r21, r21, r23 b loc_109C 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 MRDoMemAccess 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 MRDoMemAccess 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 MRExit loc_1070 ; 1070 andi. r23, r17, 0x7C0 li r22, 9 insrwi r17, r22, 6,26 addi r19, r19, 4 bne MRDoMemAccess extrwi r22, r17, 2,4 neg r22, r22 add r19, r19, r22 addi r22, r22, 4 insrwi. r17, r22, 5,26 b MRDoMemAccess 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 MRExit 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 MRExit mfcr r23 clrlwi r23, r23, 30 insrwi r13, r23, 4,0 b MRExit