📄 sianodma.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4345
TTL E:\WM604\PLATFORM\SEUICBSP\SRC\DRIVERS\DMBDRV\DmaPxaXXX\.\SianoDMA.c
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
EXPORT |dpCurSettings| [ DATA ]
00000 AREA |.data|, DATA
|dpCurSettings| DCB "P", 0x0, "x", 0x0, "a", 0x0, " ", 0x0, "D", 0x0, "m", 0x0
DCB "a", 0x0, " ", 0x0, "D", 0x0, "r", 0x0, "i", 0x0, "v", 0x0
DCB "e", 0x0, "r", 0x0, 0x0, 0x0
% 34
DCB "E", 0x0, "r", 0x0, "r", 0x0, "o", 0x0, "r", 0x0, "s", 0x0
DCB 0x0, 0x0
% 50
DCB "W", 0x0, "a", 0x0, "r", 0x0, "n", 0x0, "i", 0x0, "n", 0x0
DCB "g", 0x0, "s", 0x0, 0x0, 0x0
% 46
DCB "I", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, 0x0, 0x0
% 54
DCB "U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
DCB "n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
% 44
DCB "U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
DCB "n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
% 44
DCB "U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
DCB "n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
% 44
DCB "U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
DCB "n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
% 44
DCB "T", 0x0, "e", 0x0, "m", 0x0, "p", 0x0, "o", 0x0, "r", 0x0
DCB "a", 0x0, "r", 0x0, "y", 0x0, 0x0, 0x0
% 44
DCB "U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
DCB "n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
% 44
DCB "U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
DCB "n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
% 44
DCB "U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
DCB "n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
% 44
DCB "U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
DCB "n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
% 44
DCB "U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
DCB "n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
% 44
DCB "U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
DCB "n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
% 44
DCB "U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
DCB "n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
% 44
DCB "U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0
DCB "n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0
% 44
DCD 0x9
EXPORT |SetEvent|
IMPORT |EventModify|
; File e:\wm604\public\common\sdk\inc\kfuncs.h
00000 AREA |.text| { |SetEvent| }, CODE, ARM, SELECTION=2 ; comdat any
00000 AREA |.pdata$$SetEvent|, PDATA, SELECTION=5, ASSOC=|.text| { |SetEvent| } ; comdat associative
|$T38450| DCD |$L38449|
DCD 0x40000501
; Function compile flags: /Ogsy
00000 AREA |.text| { |SetEvent| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |SetEvent| PROC
; 186 : _inline BOOL SetEvent(HANDLE h) {
00000 |$L38449|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M38447|
; 187 : return EventModify(h,EVENT_SET);
00004 e3a01003 mov r1, #3
00008 eb000000 bl EventModify
; 188 : }
0000c e49de004 ldr lr, [sp], #4
00010 e12fff1e bx lr
00014 |$M38448|
ENDP ; |SetEvent|
IMPORT |PhyDmaSendDescriptor|
; File e:\wm604\platform\seuicbsp\src\drivers\dmbdrv\dmapxaxxx\sianodma.c
00000 AREA |.text| { |sendDmaTransactionFromDb| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$sendDmaTransactionFromDb|, PDATA, SELECTION=5, ASSOC=|.text| { |sendDmaTransactionFromDb| } ; comdat associative
|$T38459| DCD |$L38458|
DCD 0x40000a01
; Function compile flags: /Ogsy
00000 AREA |.text| { |sendDmaTransactionFromDb| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |sendDmaTransactionFromDb| PROC
; 26 : {
00000 |$L38458|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M38456|
; 27 : DMA_DATABASE_ST* dataBase;
; 28 :
; 29 : dataBase = ((DMA_DRV_PARAMS_ST*)dev)->dataBase;
00004 e5902020 ldr r2, [r0, #0x20]
; 30 :
; 31 : if (dataBase->firstMsg != dataBase->lastMsg)
00008 e5921000 ldr r1, [r2]
0000c e5923004 ldr r3, [r2, #4]
00010 e1510003 cmp r1, r3
; 32 : { //We have a transaction in the database
; 33 : PhyDmaSendDescriptor( (DMA_DRV_PARAMS_ST*)dev,
; 34 : &dataBase->transactions[dataBase->firstMsg]);
00014 10823201 addne r3, r2, r1, lsl #4
00018 12831008 addne r1, r3, #8
0001c 1b000000 blne PhyDmaSendDescriptor
; 35 : }
; 36 :
; 37 : }
00020 e49de004 ldr lr, [sp], #4
00024 e12fff1e bx lr
00028 |$M38457|
ENDP ; |sendDmaTransactionFromDb|
IMPORT |ReleaseSemaphore|
IMPORT |WaitForSingleObject|
00000 AREA |.text| { |addDmaTransactionToDb| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$addDmaTransactionToDb|, PDATA, SELECTION=5, ASSOC=|.text| { |addDmaTransactionToDb| } ; comdat associative
|$T38480| DCD |$L38479|
DCD 0x40003a02
; Function compile flags: /Ogsy
00000 AREA |.text| { |addDmaTransactionToDb| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |addDmaTransactionToDb| PROC
; 44 : {
00000 |$L38479|
00000 e92d47f0 stmdb sp!, {r4 - r10, lr}
00004 e24dd004 sub sp, sp, #4
00008 |$M38477|
00008 e1a04003 mov r4, r3
0000c e1a09002 mov r9, r2
00010 e1a0a001 mov r10, r1
00014 e1a05000 mov r5, r0
; 45 : DMA_DATABASE_ST* dataBase;
; 46 : BOOL sendNow;
; 47 : DWORD status;
; 48 :
; 49 : dataBase = ((DMA_DRV_PARAMS_ST*)dev)->dataBase;
; 50 :
; 51 : WaitForSingleObject(((DMA_DRV_PARAMS_ST*)dev)->databaseSemaphore, INFINITE);
00018 e5950028 ldr r0, [r5, #0x28]
0001c e5956020 ldr r6, [r5, #0x20]
00020 e3e01000 mvn r1, #0
00024 eb000000 bl WaitForSingleObject
; 52 : if (dataBase->firstMsg == dataBase->lastMsg)
00028 e5960004 ldr r0, [r6, #4]
; 53 : sendNow = TRUE;
; 54 : else
; 55 : sendNow = FALSE;
; 56 :
; 57 : if (dataBase->firstMsg == (dataBase->lastMsg + 1) % MAX_NUM_OF_WAITING_TRANSACTIONS)
0002c e59f80b0 ldr r8, [pc, #0xB0]
00030 e596e000 ldr lr, [r6]
00034 e2801001 add r1, r0, #1
00038 e0832891 umull r2, r3, r1, r8
0003c e15e0000 cmp lr, r0
00040 e1a031a3 mov r3, r3, lsr #3
00044 e0833103 add r3, r3, r3, lsl #2
00048 e0413083 sub r3, r1, r3, lsl #1
0004c 03a07001 moveq r7, #1
00050 13a07000 movne r7, #0
00054 e15e0003 cmp lr, r3
; 58 : {
; 59 : return FALSE;
00058 03a00000 moveq r0, #0
0005c 0a00001d beq |$L38283|
; 60 : }
; 61 : dataBase->transactions[dataBase->lastMsg].desc = desc;
00060 e0863200 add r3, r6, r0, lsl #4
00064 e583a008 str r10, [r3, #8]
; 62 : dataBase->transactions[dataBase->lastMsg].callBack = callBack;
00068 e5963004 ldr r3, [r6, #4]
; 63 : dataBase->transactions[dataBase->lastMsg].transactionId = transactionId;
; 64 : dataBase->lastMsg = (dataBase->lastMsg + 1) % MAX_NUM_OF_WAITING_TRANSACTIONS;
; 65 : ReleaseSemaphore(((DMA_DRV_PARAMS_ST*)dev)->databaseSemaphore, 1, &status);
0006c e28d2000 add r2, sp, #0
00070 e3a01001 mov r1, #1
00074 e0863203 add r3, r6, r3, lsl #4
00078 e5839010 str r9, [r3, #0x10]
0007c e5963004 ldr r3, [r6, #4]
00080 e0863203 add r3, r6, r3, lsl #4
00084 e5834014 str r4, [r3, #0x14]
00088 e5963004 ldr r3, [r6, #4]
0008c e2834001 add r4, r3, #1
00090 e083e894 umull lr, r3, r4, r8
00094 e1a031a3 mov r3, r3, lsr #3
00098 e0833103 add r3, r3, r3, lsl #2
0009c e0443083 sub r3, r4, r3, lsl #1
000a0 e5863004 str r3, [r6, #4]
000a4 e5950028 ldr r0, [r5, #0x28]
000a8 eb000000 bl ReleaseSemaphore
; 66 : if (sendNow == TRUE)
000ac e3570001 cmp r7, #1
000b0 1a000007 bne |$L38466|
; 67 : sendDmaTransactionFromDb(dev);
000b4 e5952020 ldr r2, [r5, #0x20]
000b8 e5921000 ldr r1, [r2]
000bc e5923004 ldr r3, [r2, #4]
000c0 e1510003 cmp r1, r3
000c4 10823201 addne r3, r2, r1, lsl #4
000c8 12831008 addne r1, r3, #8
000cc 11a00005 movne r0, r5
000d0 1b000000 blne PhyDmaSendDescriptor
000d4 |$L38466|
; 68 : return TRUE;
000d4 e3a00001 mov r0, #1
000d8 |$L38283|
; 69 : }
000d8 e28dd004 add sp, sp, #4
000dc e8bd47f0 ldmia sp!, {r4 - r10, lr}
000e0 e12fff1e bx lr
000e4 |$L38482|
000e4 cccccccd DCD 0xcccccccd
000e8 |$M38478|
ENDP ; |addDmaTransactionToDb|
EXPORT |DmaIst|
EXPORT |??_C@_1HA@NJLDGKHM@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAm?$AAa?$AAI?$AAs?$AAt@| [ DATA ] ; `string'
IMPORT |LocalFree|
IMPORT |PhyDmaIntHandler|
IMPORT |NKDbgPrintfW|
00000 AREA |.text| { |DmaIst| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DmaIst|, PDATA, SELECTION=5, ASSOC=|.text| { |DmaIst| } ; comdat associative
|$T38506| DCD |$L38505|
DCD 0x40004d02
00000 AREA |.rdata| { |??_C@_1HA@NJLDGKHM@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAm?$AAa?$AAI?$AAs?$AAt@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HA@NJLDGKHM@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAm?$AAa?$AAI?$AAs?$AAt@| DCB "S"
DCB 0x0, "i", 0x0, "a", 0x0, "n", 0x0, "o", 0x0, " ", 0x0, "P"
DCB 0x0, "x", 0x0, "a", 0x0, "D", 0x0, "M", 0x0, "A", 0x0, ","
DCB 0x0, " ", 0x0, "D", 0x0, "m", 0x0, "a", 0x0, "I", 0x0, "s"
DCB 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " ", 0x0, "-", 0x0, " "
DCB 0x0, "B", 0x0, "a", 0x0, "d", 0x0, " ", 0x0, "s", 0x0, "t"
DCB 0x0, "a", 0x0, "t", 0x0, "u", 0x0, "s", 0x0, " ", 0x0, "a"
DCB 0x0, "f", 0x0, "t", 0x0, "e", 0x0, "r", 0x0, " ", 0x0, "D"
DCB 0x0, "M", 0x0, "A", 0x0, " ", 0x0, "t", 0x0, "r", 0x0, "a"
DCB 0x0, "n", 0x0, "s", 0x0, "f", 0x0, "e", 0x0, "r", 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |DmaIst| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DmaIst| PROC
; 79 : {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -