📄 diskmain.cod
字号:
; 713 : // Doesn't really know the ultra dma cycle time
; 714 : //
; 715 : m_dwBestUDmaCycleTime = dwCycleTime;
; 716 : m_dwBestUDmaMode = dwBestXferMode;
; 717 :
; 718 : m_dwTransferModeSupported = dwXferMode;
; 719 : m_dwTransferModeCurrent |= dwCurrentMode;
001c8 15d024c8 ldrneb r2, [r0, #0x4C8]
001cc 15d034c9 ldrneb r3, [r0, #0x4C9]
001d0 11923403 orrnes r3, r2, r3, lsl #8
001d4 15d024cc ldrneb r2, [r0, #0x4CC]
001d8 15d034cd ldrneb r3, [r0, #0x4CD]
001dc 11824403 orrne r4, r2, r3, lsl #8
001e0 |$L32961|
001e0 e5804698 str r4, [r0, #0x698]
001e4 e3e04000 mvn r4, #0
001e8 e58056ac str r5, [r0, #0x6AC]
001ec e3e02000 mvn r2, #0
001f0 e3180004 tst r8, #4
001f4 0a000027 beq |$L32982|
001f8 e5d034f4 ldrb r3, [r0, #0x4F4]
001fc e3530000 cmp r3, #0
00200 0a000013 beq |$L32972|
00204 e3130001 tst r3, #1
00208 13a02078 movne r2, #0x78
0020c 13811b02 orrne r1, r1, #2, 22
00210 13a04000 movne r4, #0
00214 e3130002 tst r3, #2
00218 13a02050 movne r2, #0x50
0021c 13811a01 orrne r1, r1, #1, 20
00220 13a04001 movne r4, #1
00224 e3130004 tst r3, #4
00228 13a0203c movne r2, #0x3C
0022c 13811a02 orrne r1, r1, #2, 20
00230 13a04002 movne r4, #2
00234 e3130008 tst r3, #8
00238 13a0202d movne r2, #0x2D
0023c 13811901 orrne r1, r1, #1, 18
00240 13a04003 movne r4, #3
00244 e3130010 tst r3, #0x10
00248 13a0201e movne r2, #0x1E
0024c 13811902 orrne r1, r1, #2, 18
00250 13a04004 movne r4, #4
00254 |$L32972|
00254 e5d034f5 ldrb r3, [r0, #0x4F5]
00258 e3530000 cmp r3, #0
0025c 0a00000d beq |$L32982|
00260 e3130010 tst r3, #0x10
00264 13a0e902 movne lr, #2, 18
00268 1a00000a bne |$L32982|
0026c e3130008 tst r3, #8
00270 13a0e901 movne lr, #1, 18
00274 1a000007 bne |$L32982|
00278 e3130004 tst r3, #4
0027c 13a0ea02 movne lr, #2, 20
00280 1a000004 bne |$L32982|
00284 e3130002 tst r3, #2
00288 13a0ea01 movne lr, #1, 20
0028c 1a000001 bne |$L32982|
00290 e3130001 tst r3, #1
00294 13a0eb02 movne lr, #2, 22
00298 |$L32982|
00298 e59036b4 ldr r3, [r0, #0x6B4]
0029c e580269c str r2, [r0, #0x69C]
002a0 e58046b0 str r4, [r0, #0x6B0]
002a4 e183300e orr r3, r3, lr
002a8 e58036b4 str r3, [r0, #0x6B4]
002ac e58016a0 str r1, [r0, #0x6A0]
002b0 |$L32918|
; 720 :
; 721 :
; 722 : DEBUGMSG( ZONE_INIT, (TEXT("ATAPI:AnalyzeDeviceCapabilities target %d transfer timing:\r\n"),m_dwDevice));
; 723 :
; 724 : //* * * CAMSDB03/30/04 - Added a '0x' for mode display in all the DEBUGMSG's below.
; 725 :
; 726 : DEBUGMSG( ZONE_INIT, (TEXT("ATAPI:AnalyzeDeviceCapabilities PIO mode supported = 0x%04x and best cycle time = %5d ns\r\n"),
; 727 : m_dwTransferModeSupported & PIO_SUPPORT,
; 728 : m_dwBestPioCycleTime));
; 729 : DEBUGMSG( ZONE_INIT, (TEXT("ATAPI:AnalyzeDeviceCapabilities SWDMA mode supported = 0x%04x and best cycle time = %5d ns\r\n"),
; 730 : m_dwTransferModeSupported & SWDMA_SUPPORT,
; 731 : m_dwBestSwDmaCycleTime));
; 732 : DEBUGMSG( ZONE_INIT, (TEXT("ATAPI:AnalyzeDeviceCapabilities MWDMA mode supported = 0x%04x and best cycle time = %5d ns\r\n"),
; 733 : m_dwTransferModeSupported & MWDMA_SUPPORT,
; 734 : m_dwBestSwDmaCycleTime));
; 735 : DEBUGMSG( ZONE_INIT, (TEXT("ATAPI:AnalyzeDeviceCapabilities UDMA mode supported = 0x%04x and best cycle time = %5d ns\r\n"),
; 736 : m_dwTransferModeSupported & UDMA_SUPPORT,
; 737 : m_dwBestUDmaCycleTime));
; 738 :
; 739 : //* * * CAMSDB03/30/04 - Uncommented the line below (START)
; 740 : DEBUGMSG( ZONE_INIT, (TEXT("ATAPI:AnalyzeDeviceCapabilities Current mode bitmap = %04x\r\n"),
; 741 : m_dwTransferModeCurrent));
; 742 : //* * * CAMSDB03/30/04 - Uncommented the line below (END)
; 743 :
; 744 : }
; 745 : } // AnalyzeDeviceCapabilities
002b0 e8bd41f0 ldmia sp!, {r4 - r8, lr}
002b4 e12fff1e bx lr
002b8 |$M33672|
ENDP ; |?AnalyzeDeviceCapabilities@CDisk@@QAAXXZ|, CDisk::AnalyzeDeviceCapabilities
EXPORT |?ValidateSg@CDisk@@CAHPAU_SG_REQ@@K@Z| ; CDisk::ValidateSg
IMPORT |MapCallerPtr|
00000 AREA |.text| { |?ValidateSg@CDisk@@CAHPAU_SG_REQ@@K@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?ValidateSg@CDisk@@CAHPAU_SG_REQ@@K@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?ValidateSg@CDisk@@CAHPAU_SG_REQ@@K@Z| } ; comdat associative
|$T33690| DCD |$L33689|
DCD 0x40002701
; Function compile flags: /Ogsy
00000 AREA |.text| { |?ValidateSg@CDisk@@CAHPAU_SG_REQ@@K@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?ValidateSg@CDisk@@CAHPAU_SG_REQ@@K@Z| PROC ; CDisk::ValidateSg
; 748 : {
00000 |$L33689|
00000 e92d4070 stmdb sp!, {r4 - r6, lr}
00004 |$M33687|
00004 e1a04000 mov r4, r0
; 749 : if (PSLGetCallerTrust()!= OEM_CERTIFY_TRUST) {
00008 e3a02000 mov r2, #0
0000c e2422b0e sub r2, r2, #0xE, 22
00010 e5923000 ldr r3, [r2]
00014 e5133014 ldr r3, [r3, #-0x14]
00018 e3130002 tst r3, #2
0001c 1a000018 bne |$L33007|
00020 e5923000 ldr r3, [r2]
00024 e5133018 ldr r3, [r3, #-0x18]
00028 e3530002 cmp r3, #2
0002c 0a000014 beq |$L33007|
; 750 : if (pSgReq && InBufLen >= (sizeof(SG_REQ) + sizeof(SG_BUF) * (pSgReq->sr_num_sg - 1))) {
00030 e3540000 cmp r4, #0
00034 0a000015 beq |$L33000|
00038 e5942008 ldr r2, [r4, #8]
0003c e2423001 sub r3, r2, #1
00040 e1a03183 mov r3, r3, lsl #3
00044 e283301c add r3, r3, #0x1C
00048 e1510003 cmp r1, r3
0004c 3a00000f bcc |$L33000|
; 751 : DWORD dwIndex;
; 752 : for (dwIndex=0; dwIndex < pSgReq -> sr_num_sg; dwIndex++) {
00050 e3a06000 mov r6, #0
00054 e3520000 cmp r2, #0
00058 0a000009 beq |$L33007|
0005c e1a05004 mov r5, r4
00060 |$L33002|
; 753 : pSgReq->sr_sglist[dwIndex].sb_buf =
; 754 : (PUCHAR)MapCallerPtr((LPVOID)pSgReq->sr_sglist[dwIndex].sb_buf,pSgReq->sr_sglist[dwIndex].sb_len);
00060 e5951018 ldr r1, [r5, #0x18]
00064 e5950014 ldr r0, [r5, #0x14]
00068 eb000000 bl MapCallerPtr
0006c e5850014 str r0, [r5, #0x14]
00070 e5943008 ldr r3, [r4, #8]
00074 e2866001 add r6, r6, #1
00078 e2855008 add r5, r5, #8
0007c e1560003 cmp r6, r3
00080 3afffff6 bcc |$L33002|
00084 |$L33007|
; 759 : }
; 760 : return TRUE;
00084 e3a00001 mov r0, #1
; 761 : }
00088 e8bd4070 ldmia sp!, {r4 - r6, lr}
0008c e12fff1e bx lr
00090 |$L33000|
; 755 : }
; 756 : }
; 757 : else // Parameter Wrong.
; 758 : return FALSE;
00090 e3a00000 mov r0, #0
; 761 : }
00094 e8bd4070 ldmia sp!, {r4 - r6, lr}
00098 e12fff1e bx lr
0009c |$M33688|
ENDP ; |?ValidateSg@CDisk@@CAHPAU_SG_REQ@@K@Z|, CDisk::ValidateSg
EXPORT |?ValidateSg@CDisk@@CAHPAUCDROM_READ@@K@Z| ; CDisk::ValidateSg
00000 AREA |.text| { |?ValidateSg@CDisk@@CAHPAUCDROM_READ@@K@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?ValidateSg@CDisk@@CAHPAUCDROM_READ@@K@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?ValidateSg@CDisk@@CAHPAUCDROM_READ@@K@Z| } ; comdat associative
|$T33706| DCD |$L33705|
DCD 0x40004301
; Function compile flags: /Ogsy
00000 AREA |.text| { |?ValidateSg@CDisk@@CAHPAUCDROM_READ@@K@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?ValidateSg@CDisk@@CAHPAUCDROM_READ@@K@Z| PROC ; CDisk::ValidateSg
; 763 : {
00000 |$L33705|
00000 e92d41f0 stmdb sp!, {r4 - r8, lr}
00004 |$M33703|
00004 e1a06000 mov r6, r0
; 764 : if (PSLGetCallerTrust()!= OEM_CERTIFY_TRUST) {
00008 e3a02000 mov r2, #0
0000c e2422b0e sub r2, r2, #0xE, 22
00010 e5923000 ldr r3, [r2]
00014 e5133014 ldr r3, [r3, #-0x14]
00018 e3130002 tst r3, #2
0001c 1a000034 bne |$L33026|
00020 e5923000 ldr r3, [r2]
00024 e5133018 ldr r3, [r3, #-0x18]
00028 e3530002 cmp r3, #2
0002c 0a000030 beq |$L33026|
; 765 : if (pCdrom && InBufLen >= (sizeof(CDROM_READ) + sizeof(SGX_BUF) * (pCdrom->sgcount - 1))) {
00030 e3560000 cmp r6, #0
00034 0a000031 beq |$L33019|
00038 e5d64014 ldrb r4, [r6, #0x14]
0003c e5d63015 ldrb r3, [r6, #0x15]
00040 e5d62016 ldrb r2, [r6, #0x16]
00044 e5d6e017 ldrb lr, [r6, #0x17]
00048 e1843403 orr r3, r4, r3, lsl #8
0004c e1833802 orr r3, r3, r2, lsl #16
00050 e1832c0e orr r2, r3, lr, lsl #24
00054 e2823003 add r3, r2, #3
00058 e1510183 cmp r1, r3, lsl #3
0005c 3a000027 bcc |$L33019|
; 766 : DWORD dwIndex;
; 767 : for (dwIndex=0; dwIndex < pCdrom-> sgcount; dwIndex++) {
00060 e3a08000 mov r8, #0
00064 e3520000 cmp r2, #0
00068 0a000021 beq |$L33026|
0006c e1a07006 mov r7, r6
00070 |$L33021|
; 768 : pCdrom->sglist[dwIndex].sb_buf =
; 769 : (PUCHAR)MapCallerPtr((LPVOID)pCdrom->sglist[dwIndex].sb_buf,pCdrom->sglist[dwIndex].sb_len);
00070 e5d7001c ldrb r0, [r7, #0x1C]
00074 e5d7201d ldrb r2, [r7, #0x1D]
00078 e5d71018 ldrb r1, [r7, #0x18]
0007c e5d73019 ldrb r3, [r7, #0x19]
00080 e5d7401e ldrb r4, [r7, #0x1E]
00084 e5d7501a ldrb r5, [r7, #0x1A]
00088 e1802402 orr r2, r0, r2, lsl #8
0008c e5d7001f ldrb r0, [r7, #0x1F]
00090 e5d7e01b ldrb lr, [r7, #0x1B]
00094 e1811403 orr r1, r1, r3, lsl #8
00098 e1823804 orr r3, r2, r4, lsl #16
0009c e1812805 orr r2, r1, r5, lsl #16
000a0 e1831c00 orr r1, r3, r0, lsl #24
000a4 e1820c0e orr r0, r2, lr, lsl #24
000a8 eb000000 bl MapCallerPtr
000ac e1a03420 mov r3, r0, lsr #8
000b0 e1a02820 mov r2, r0, lsr #16
000b4 e1a01c20 mov r1, r0, lsr #24
000b8 e5c73019 strb r3, [r7, #0x19]
000bc e5c7201a strb r2, [r7, #0x1A]
000c0 e5c7101b strb r1, [r7, #0x1B]
000c4 e5c70018 strb r0, [r7, #0x18]
000c8 e5d60014 ldrb r0, [r6, #0x14]
000cc e5d63015 ldrb r3, [r6, #0x15]
000d0 e5d62016 ldrb r2, [r6, #0x16]
000d4 e5d61017 ldrb r1, [r6, #0x17]
000d8 e1803403 orr r3, r0, r3, lsl #8
000dc e1833802 orr r3, r3, r2, lsl #16
000e0 e1833c01 orr r3, r3, r1, lsl #24
000e4 e2888001 add r8, r8, #1
000e8 e1580003 cmp r8, r3
000ec e2877008 add r7, r7, #8
000f0 3affffde bcc |$L33021|
000f4 |$L33026|
; 774 : }
; 775 : return TRUE;
000f4 e3a00001 mov r0, #1
; 776 : }
000f8 e8bd41f0 ldmia sp!, {r4 - r8, lr}
000fc e12fff1e bx lr
00100 |$L33019|
; 770 : }
; 771 : }
; 772 : else // Parameter Wrong.
; 773 : return FALSE;
00100 e3a00000 mov r0, #0
; 776 : }
00104 e8bd41f0 ldmia sp!, {r4 - r8, lr}
00108 e12fff1e bx lr
0010c |$M33704|
ENDP ; |?ValidateSg@CDisk@@CAHPAUCDROM_READ@@K@Z|, CDisk::ValidateSg
EXPORT |?PostInit@CDisk@@QAAHPAU_POST_INIT_BUF@@@Z| ; CDisk::PostInit
00000 AREA |.text| { |?PostInit@CDisk@@QAAHPAU_POST_INIT_BUF@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?PostInit@CDisk@@QAAHPAU_POST_INIT_BUF@@@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?PostInit@CDisk@@QAAHPAU_POST_INIT_BUF@@@Z| } ; comdat associative
|$T33719| DCD |$L33718|
DCD 0x40000500
; Function compile flags: /Ogsy
00000 AREA |.text| { |?PostInit@CDisk@@QAAHPAU_POST_INIT_BUF@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?PostInit@CDisk@@QAAHPAU_POST_INIT_BUF@@@Z| PROC ; CDisk::PostInit
; 919 : {
00000 |$L33718|
00000 |$M33716|
00000 e1a02000 mov r2, r0
; 920 : DWORD dwError=ERROR_SUCCESS;
; 921 :
; 922 : DEBUGMSG( ZONEID_INIT, (TEXT("ATAPI: PostInit ( Device :0x%x) \r\n"),m_dwDeviceId));
; 923 : m_hDevice = pPostInitBuf->p_hDevice;
00004 e5913000 ldr r3, [r1]
; 924 : return dwError == ERROR_SUCCESS;
00008 e3a00001 mov r0, #1
0000c e5823014 str r3, [r2, #0x14]
; 925 : }
00010 e12fff1e bx lr
00014 |$M33717|
ENDP ; |?PostInit@CDisk@@QAAHPAU_POST_INIT_BUF@@@Z|, CDisk::PostInit
EXPORT |?GetDiskInfo@CDisk@@QAAKPAU_IOREQ@@@Z| ; CDisk::GetDiskInfo
IMPORT |memcpy|
IMPORT |__C_specific_handler|
; File c:\wince500\platform\bvdmain\drivers\atapi\diskmain.h
00000 AREA |.text| { |?GetDiskInfo@CDisk@@QAAKPAU_IOREQ@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.xdata$$?GetDiskInfo@CDisk@@QAAKPAU_IOREQ@@@Z|, DATA, SELECTION=5, ASSOC=|.text| { |?GetDiskInfo@CDisk@@QAAKPAU_IOREQ@@@Z| } ; comdat associative
|$T33751| DCD 0x1
DCD |$L337
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -