#define _ASMLANGUAGE #include "ppc-asm.h" .text FUNC_START(mmuPpcDataTlbMissHandler) mtspr 799,r18 mfcr r18 stw r18,-4(sp) mfmd_twb r18 lwz r18,0(r18) mtspr 797,r18 clrlwi. r18,r18,31 beq mmuPpcDataTlbError mfmd_twc r18 lwz r18,0(r18) mtspr 798,r18 clrlwi. r18,r18,31 beq mmuPpcDataTlbError lwz r18,-4(sp) mtcr r18 mfm_tw r18 rfi FUNC_END(mmuPpcDataTlbMissHandler) FUNC_START(mmuPpcDataTlbError) lwz r18,-4(sp) mtcr r18 mfm_tw r18 ba 0x300 /* <_sysInit-0xfd00> */ FUNC_END(mmuPpcDataTlbError) FUNC_START(mmuPpcInstTlbMissHandler) mtspr 799,r18 mfcr r18 stw r18,-4(sp) mfmi_epn r18 mtspr 795,r18 mfmd_twb r18 lwz r18,0(r18) mtspr 789,r18 mtspr 797,r18 clrlwi. r18,r18,31 beq mmuPpcInstTlbError mfmd_twc r18 lwz r18,0(r18) mtspr 790,r18 clrlwi. r18,r18,31 beq mmuPpcDataTlbError lwz r18,-4(sp) mtcr r18 mfm_tw r18 rfi FUNC_END(mmuPpcInstTlbMissHandler) FUNC_START(mmuPpcInstTlbError) lwz r18,-4(sp) mtcr r18 mfm_tw r18 ba 400 /* <_sysInit-0xfc00> */ FUNC_END(mmuPpcInstTlbError) FUNC_START(mmuPpcDataTlbErrorHandler) mtspr 799,r18 mfcr r18 stw r18,-4(sp) mfdsisr r18 rlwinm. r18,r18,0,1,1 bne FUNC_NAME(_exit) mfdsisr r18 rlwinm. r18,r18,0,4,4 bne FUNC_NAME(_exit) mfdsisr r18 rlwinm. r18,r18,0,6,6 beq FUNC_NAME(_exit) stw r19,-8(sp) stw r20,-12(sp) stw r21,-16(sp) mfmd_twb r18 lwz r18,0(r18) mtspr 797,r18 mfmd_twc r19 lwz r19,0(r19) rlwinm. r20,r19,20,0,1 bge chk0 andi. r20,r19,1024 beq chk2 b doDAEp FUNC_END(mmuPpcDataTlbErrorHandler) FUNC_START(chk0) mfsrr1 r20 andi. r20,r20,16384 beq chk1 rlwinm r20,r18,28,27,31 mfmd_ap r21 rlwnm. r21,r21,r20,0,0 beq chk2 b doDAEp FUNC_END(chk0) FUNC_START(chk1) rlwinm r20,r18,28,27,31 mfmd_ap r21 rlwnm. r21,r21,r20,1,1 beq chk2 b doDAEp FUNC_END(chk1) FUNC_START(chk2) ori r19,r19,256 mfmd_twc r20 stw r19,0(r20) mtspr 798,r19 lwz r21,-16(sp) lwz r20,-12(sp) lwz r19,-8(sp) lwz r18,-4(sp) mtcr r18 mfm_tw r18 rfi FUNC_END(chk2) FUNC_START(doDAEp) lwz r21,-16(sp) lwz r20,-12(sp) lwz r19,-8(sp) lwz r18,-4(sp) mtcr r18 mfm_tw r18 ba 0x300 FUNC_END(doDAEp)