📄 ep931xide.cod
字号:
; 823 : {
00000 |$L33877|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 e24dd004 sub sp, sp, #4
00008 |$M33875|
00008 e1a04000 mov r4, r0
; 824 : volatile BYTE bStatus;
; 825 :
; 826 : DEBUGMSG
; 827 : (
; 828 : ZONE_DMA,
; 829 : (
; 830 : TEXT("ATAPI:EndDMA\r\n")
; 831 : )
; 832 : );
; 833 :
; 834 : //* * * CAMSDB - Clear the IDE IRQ.
; 835 : bStatus = (BYTE)(ATAReadRegister(CSDA_STAT_REG) & 0xFF);
0000c e3a0001e mov r0, #0x1E
00010 eb000000 bl |?ATAReadRegister@@YAKK@Z|
; 836 :
; 837 : //
; 838 : // Clear the M2M DMA interrupt register.
; 839 : //
; 840 : m_pulDmaBase[M2M_INT>>2] = 0;
00014 e594200c ldr r2, [r4, #0xC]
00018 e3a01000 mov r1, #0
0001c e5cd0000 strb r0, [sp]
00020 e5821004 str r1, [r2, #4]
; 841 :
; 842 : //
; 843 : // Disable the DMA channel.
; 844 : //
; 845 : m_pulDmaBase[M2M_CTRL>>2] = 0;
00024 e594300c ldr r3, [r4, #0xC]
; 846 :
; 847 : return TRUE;
00028 e3a00001 mov r0, #1
0002c e5831000 str r1, [r3]
; 848 : }
00030 e28dd004 add sp, sp, #4
00034 e8bd4010 ldmia sp!, {r4, lr}
00038 e12fff1e bx lr
0003c |$M33876|
ENDP ; |?EndDMA@CEP931xPort@@QAAHXZ|, CEP931xPort::EndDMA
EXPORT |?AbortDMA@CEP931xPort@@QAAHXZ| ; CEP931xPort::AbortDMA
00000 AREA |.text| { |?AbortDMA@CEP931xPort@@QAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?AbortDMA@CEP931xPort@@QAAHXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?AbortDMA@CEP931xPort@@QAAHXZ| } ; comdat associative
|$T33888| DCD |$L33887|
DCD 0x40000f01
; Function compile flags: /Ogsy
00000 AREA |.text| { |?AbortDMA@CEP931xPort@@QAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?AbortDMA@CEP931xPort@@QAAHXZ| PROC ; CEP931xPort::AbortDMA
; 857 : {
00000 |$L33887|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M33885|
00004 e1a04000 mov r4, r0
; 858 : BOOL fRet;
; 859 : DEBUGMSG
; 860 : (
; 861 : ZONE_DMA,
; 862 : (
; 863 : TEXT("ATAPI:AbortDMA\r\n")
; 864 : )
; 865 : );
; 866 :
; 867 : //
; 868 : // Clear the status register.
; 869 : //
; 870 : m_pulDmaBase[M2M_INT>>2] = 0;
00008 e594300c ldr r3, [r4, #0xC]
0000c e3a05000 mov r5, #0
00010 e5835004 str r5, [r3, #4]
; 871 :
; 872 : //
; 873 : // Unlock the Buffers and free the mapped pointers.
; 874 : //
; 875 : if(m_fAligned)
00014 e594304c ldr r3, [r4, #0x4C]
00018 e3530000 cmp r3, #0
; 876 : {
; 877 : fRet = UnlockPages
; 878 : (
; 879 : m_pucDmaBuffer,
; 880 : m_ulDmaCount
; 881 : );
0001c 15941038 ldrne r1, [r4, #0x38]
00020 15940030 ldrne r0, [r4, #0x30]
00024 1b000000 blne UnlockPages
; 882 : ASSERT(fRet);
; 883 : }
; 884 :
; 885 : //
; 886 : // Disable the DMA channel.
; 887 : //
; 888 : m_pulDmaBase[M2M_CTRL>>2] = 0;
00028 e594300c ldr r3, [r4, #0xC]
; 889 :
; 890 : return TRUE;
0002c e3a00001 mov r0, #1
00030 e5835000 str r5, [r3]
; 891 : }
00034 e8bd4030 ldmia sp!, {r4, r5, lr}
00038 e12fff1e bx lr
0003c |$M33886|
ENDP ; |?AbortDMA@CEP931xPort@@QAAHXZ|, CEP931xPort::AbortDMA
EXPORT |?CompleteDMA@CEP931xPort@@QAAHPAU_SG_BUF@@KH@Z| ; CEP931xPort::CompleteDMA
00000 AREA |.text| { |?CompleteDMA@CEP931xPort@@QAAHPAU_SG_BUF@@KH@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?CompleteDMA@CEP931xPort@@QAAHPAU_SG_BUF@@KH@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?CompleteDMA@CEP931xPort@@QAAHPAU_SG_BUF@@KH@Z| } ; comdat associative
|$T33908| DCD |$L33907|
DCD 0x40002d01
; Function compile flags: /Ogsy
00000 AREA |.text| { |?CompleteDMA@CEP931xPort@@QAAHPAU_SG_BUF@@KH@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?CompleteDMA@CEP931xPort@@QAAHPAU_SG_BUF@@KH@Z| PROC ; CEP931xPort::CompleteDMA
; 900 : {
00000 |$L33907|
00000 e92d43f0 stmdb sp!, {r4 - r9, lr}
00004 |$M33905|
00004 e1a07002 mov r7, r2
00008 e1a04001 mov r4, r1
0000c e1a05000 mov r5, r0
; 901 : ULONG ulDmaCount;
; 902 : ULONG ulBuffer;
; 903 : LPBYTE pBuffer;
; 904 : BOOL fRet = TRUE;
; 905 : LARGE_INTEGER liStart, liCurrent, liEnd;
; 906 :
; 907 : DEBUGMSG
; 908 : (
; 909 : ZONE_DMA,
; 910 : (
; 911 : TEXT("ATAPI:CompleteDMA\r\n")
; 912 : )
; 913 : );
; 914 :
; 915 : //
; 916 : // Unlock the Buffers and free the mapped pointers.
; 917 : //
; 918 : if(m_fAligned)
00010 e595e04c ldr lr, [r5, #0x4C]
00014 e3a08001 mov r8, #1
00018 e35e0000 cmp lr, #0
0001c 0a000004 beq |$L33894|
; 919 : {
; 920 : fRet = UnlockPages
; 921 : (
; 922 : m_pucDmaBuffer,
; 923 : m_ulDmaCount
; 924 : );
00020 e5951038 ldr r1, [r5, #0x38]
00024 e5950030 ldr r0, [r5, #0x30]
00028 eb000000 bl UnlockPages
0002c e1a08000 mov r8, r0
; 925 : ASSERT(fRet);
; 926 : }
; 927 :
; 928 : //
; 929 : // If the pSgBuf are unaligned, copy the entire buffer to our buffer.
; 930 : //
; 931 : else if(!m_fAligned && fRead)
00030 ea00001c b |$L33172|
00034 |$L33894|
00034 e3530000 cmp r3, #0
00038 0a00001a beq |$L33172|
; 932 : {
; 933 : //QueryPerformanceCounter(&liStart);
; 934 : ulDmaCount = 0;
0003c e3a06000 mov r6, #0
; 935 : for (ulBuffer = 0; ulBuffer < dwSgCount; ulBuffer++)
00040 e3570000 cmp r7, #0
00044 0a000017 beq |$L33172|
00048 e3a09000 mov r9, #0
0004c |$L33170|
; 936 : {
; 937 : pBuffer = (LPBYTE)MapPtrToProcess(pSgBuf[ulBuffer].sb_buf, GetCallerProcess());
0004c eb000000 bl GetCallerProcess
00050 e1a01000 mov r1, r0
00054 e5940000 ldr r0, [r4]
00058 eb000000 bl MapPtrToProcess
; 938 :
; 939 : DEBUGMSG( 1, (TEXT(" * * * About to check and possibly do memcopy * * *\r\n")));
; 940 :
; 941 : if (pSgBuf[ulBuffer].sb_len >0x8000 || pSgBuf[ulBuffer].sb_len <=0 || pBuffer == NULL || m_pucDmaBuffer == NULL)
0005c e5942004 ldr r2, [r4, #4]
00060 e3520902 cmp r2, #2, 18
00064 8a000009 bhi |$L33895|
00068 e3520000 cmp r2, #0
0006c 0a000008 beq |$L33177|
00070 e3500000 cmp r0, #0
00074 0a000006 beq |$L33177|
00078 e5953030 ldr r3, [r5, #0x30]
0007c e3530000 cmp r3, #0
00080 0a000003 beq |$L33177|
; 947 : }
; 948 :
; 949 : if (m_pucDmaBuffer == NULL)
; 950 : DEBUGMSG( 1, (TEXT(" * * * m_pucDmaBuffer was NULL * * *\r\n")));
; 951 :
; 952 : if (pBuffer == NULL)
; 953 : DEBUGMSG( 1, (TEXT(" * * * pBuffer was NULL * * *\r\n")));
; 954 : }
; 955 : else
; 956 : memcpy(pBuffer, m_pucDmaBuffer + ulDmaCount, pSgBuf[ulBuffer].sb_len);
00084 e0831006 add r1, r3, r6
00088 eb000000 bl memcpy
0008c ea000000 b |$L33177|
00090 |$L33895|
; 942 : {
; 943 : if (pSgBuf[ulBuffer].sb_len >0x8000 || pSgBuf[ulBuffer].sb_len <0)
; 944 : {
; 945 : DEBUGMSG( 1, (TEXT(" * * * pSgBuf[ulBuffer].sb_len was %ld * * *\r\n"),pSgBuf[ulBuffer].sb_len));
; 946 : pSgBuf[ulBuffer].sb_len = 0;
00090 e5849004 str r9, [r4, #4]
00094 |$L33177|
; 957 :
; 958 : ulDmaCount+= pSgBuf[ulBuffer].sb_len;
00094 e5943004 ldr r3, [r4, #4]
00098 e2844008 add r4, r4, #8
0009c e2577001 subs r7, r7, #1
000a0 e0866003 add r6, r6, r3
000a4 1affffe8 bne |$L33170|
000a8 |$L33172|
; 959 : }
; 960 : //RETAILMSG( 1, (TEXT(" * * * Unaligned copy in CompleteDMA... * * *\r\n")));
; 961 :
; 962 : //QueryPerformanceCounter(&liEnd);
; 963 :
; 964 : //liCurrent.QuadPart = (liEnd.QuadPart - liStart.QuadPart);
; 965 : //RETAILMSG ( 1, (TEXT("* * * It took %ld uS for CompleteDMA to complete. * * *\r\n"),liCurrent.QuadPart));
; 966 : }
; 967 :
; 968 : return fRet;
000a8 e1a00008 mov r0, r8
; 969 : }
000ac e8bd43f0 ldmia sp!, {r4 - r9, lr}
000b0 e12fff1e bx lr
000b4 |$M33906|
ENDP ; |?CompleteDMA@CEP931xPort@@QAAHPAU_SG_BUF@@KH@Z|, CEP931xPort::CompleteDMA
EXPORT |?PIOMode@CEP931xPort@@QAAXXZ| ; CEP931xPort::PIOMode
00000 AREA |.text| { |?PIOMode@CEP931xPort@@QAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?PIOMode@CEP931xPort@@QAAXXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?PIOMode@CEP931xPort@@QAAXXZ| } ; comdat associative
|$T33916| DCD |$L33915|
DCD 0x40001301
; Function compile flags: /Ogsy
00000 AREA |.text| { |?PIOMode@CEP931xPort@@QAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?PIOMode@CEP931xPort@@QAAXXZ| PROC ; CEP931xPort::PIOMode
; 978 : {
00000 |$L33915|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M33913|
; 979 :
; 980 : if(m_bDMAState)
00004 e5903004 ldr r3, [r0, #4]
00008 e3530000 cmp r3, #0
0000c 0a000009 beq |$L33189|
; 981 : {
; 982 : //
; 983 : // Disable the dma.
; 984 : //
; 985 : *IDE_MDMAOP = 0;
00010 e59f2030 ldr r2, [pc, #0x30]
; 986 : *IDE_UDMAOP = 0;
00014 e59f1028 ldr r1, [pc, #0x28]
; 987 :
; 988 : //
; 989 : // Disable the IDE channel.
; 990 : //
; 991 : *IDE_CFG = IDE_CFG_IDEEN | IDE_CFG_PIOEN | IDE_CFG_PIO4 | (1 <<IDE_CFG_WST_SHIFT);
00018 e59fe020 ldr lr, [pc, #0x20]
0001c e3a03d05 mov r3, #5, 26
00020 e3a04000 mov r4, #0
00024 e5824000 str r4, [r2]
00028 e3833003 orr r3, r3, #3
0002c e5814000 str r4, [r1]
00030 e58e3000 str r3, [lr]
; 992 :
; 993 : //
; 994 : // Set the DMA state to false.
; 995 : //
; 996 : m_bDMAState = FALSE;
00034 e5804004 str r4, [r0, #4]
00038 |$L33189|
; 997 : }
; 998 : }
00038 e8bd4010 ldmia sp!, {r4, lr}
0003c e12fff1e bx lr
00040 |$L33918|
00040 b00a0004 DCD 0xb00a0004
00044 b00a000c DCD 0xb00a000c
00048 b00a0008 DCD 0xb00a0008
0004c |$M33914|
ENDP ; |?PIOMode@CEP931xPort@@QAAXXZ|, CEP931xPort::PIOMode
EXPORT |?DumpDmaState@CEP931xPort@@QAAXXZ| ; CEP931xPort::DumpDmaState
EXPORT |??_C@_1EA@GAHFIFFD@?$AA?5?$AA?5?$AA?5?$AA?5?$AAM?$AA2?$AAM?$AA_?$AAC?$AAT?$AAR?$AAL?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5@| [ DATA ] ; `string'
EXPORT |??_C@_1EA@HNCDLAKG@?$AA?5?$AA?5?$AA?5?$AA?5?$AAM?$AA2?$AAM?$AA_?$AAI?$AAN?$AAT?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5@| [ DATA ] ; `string'
EXPORT |??_C@_1EA@IJLJNJMK@?$AA?5?$AA?5?$AA?5?$AA?5?$AAM?$AA2?$AAM?$AA_?$AAS?$AAT?$AAA?$AAT?$AAU?$AAS?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5@| [ DATA ] ; `string'
EXPORT |??_C@_1EA@PBPJDOMF@?$AA?5?$AA?5?$AA?5?$AA?5?$AAM?$AA2?$AAM?$AA_?$AAB?$AAC?$AAR?$AA0?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5@| [ DATA ] ; `string'
EXPORT |??_C@_1EA@FAMALKCL@?$AA?5?$AA?5?$AA?5?$AA?5?$AAM?$AA2?$AAM?$AA_?$AAB?$AAC?$AAR?$AA1?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5?$AA?5@| [ DATA ] ; `string'
EXPORT |??_C@_1EA@GBGJHPME@?$AA?5?$AA?5?$AA?5?$AA?5?$AAM?$AA2?$AAM?$AA_?$AAS?$AAA?$AAR?$AA_?$AAB?$AAA?$AAS?$AAE?$AA0?
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -