⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 system.cod

📁 ARM对MMC卡的编程文档
💻 COD
📖 第 1 页 / 共 4 页
字号:
  00030	1afffffa	 bne       |$L36937|

; 166  :     if (pd == pDisk) {

  00034	ea000000	 b         |$L36938|
  00038		 |$L37195|

; 167  :         ret = TRUE;

  00038	e3a05001	 mov       r5, #1
  0003c		 |$L36938|

; 171  :     }
; 172  :     LeaveCriticalSection(&v_DiskCrit);

  0003c	e59f000c	 ldr       r0, [pc, #0xC]
  00040	eb000000	 bl        LeaveCriticalSection

; 173  :     return ret;

  00044	e20500ff	 and       r0, r5, #0xFF

; 174  : }   


  00048	e8bd4030	 ldmia     sp!, {r4, r5, lr}
  0004c	e12fff1e	 bx        lr
  00050		 |$L37206|
  00050	00000000	 DCD       |v_DiskCrit|
  00054	00000000	 DCD       |v_DiskList|
  00058		 |$M37203|

			 ENDP  ; |IsValidDisk|

	EXPORT	|GetDiskStateError|
	EXPORT	|??_C@_1DI@KHFL@?$AAs?$AAy?$AAs?$AAt?$AAe?$AAm?$AA?9?$AA?9?$AAG?$AAe?$AAt?$AAD?$AAi?$AAs?$AAk?$AAS?$AAt?$AAa?$AAt?$AAe@| [ DATA ] ; `string'

  00000			 AREA	 |.text| { |GetDiskStateError| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$GetDiskStateError|, PDATA, SELECTION=5, ASSOC=|.text| { |GetDiskStateError| } ; comdat associative
|$T37213| DCD	|GetDiskStateError|
	DCD	0x40001001

  00000			 AREA	 |.rdata| { |??_C@_1DI@KHFL@?$AAs?$AAy?$AAs?$AAt?$AAe?$AAm?$AA?9?$AA?9?$AAG?$AAe?$AAt?$AAD?$AAi?$AAs?$AAk?$AAS?$AAt?$AAa?$AAt?$AAe@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DI@KHFL@?$AAs?$AAy?$AAs?$AAt?$AAe?$AAm?$AA?9?$AA?9?$AAG?$AAe?$AAt?$AAD?$AAi?$AAs?$AAk?$AAS?$AAt?$AAa?$AAt?$AAe@| DCB "s"
	DCB	0x0, "y", 0x0, "s", 0x0, "t", 0x0, "e", 0x0, "m", 0x0, "-"
	DCB	0x0, "-", 0x0, "G", 0x0, "e", 0x0, "t", 0x0, "D", 0x0, "i"
	DCB	0x0, "s", 0x0, "k", 0x0, "S", 0x0, "t", 0x0, "a", 0x0, "t"
	DCB	0x0, "e", 0x0, "E", 0x0, "r", 0x0, "r", 0x0, "o", 0x0, "r"
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string'
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |GetDiskStateError| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |GetDiskStateError| PROC

; 181  : {

  00000	e92d4010	 stmdb     sp!, {r4, lr}
  00004		 |$M37211|
  00004	e1a04000	 mov       r4, r0

; 182  : 	RETAILMSG(1, (TEXT("system--GetDiskStateError\r\n")));

  00008	e59f002c	 ldr       r0, [pc, #0x2C]
  0000c	eb000000	 bl        NKDbgPrintfW

; 183  : #ifdef DEBUG1
; 184  :     LPTSTR lpState;
; 185  :     switch (DiskState) {
; 186  :     case STATE_INITING:lpState = TEXT("STATE_INITING");break;
; 187  :     case STATE_CLOSED:lpState = TEXT("STATE_CLOSED");break;
; 188  :     case STATE_OPENED:lpState = TEXT("STATE_OPENED");break;
; 189  :     case STATE_DEAD:lpState = TEXT("STATE_DEAD");break;
; 190  :     case STATE_REMOVED:lpState = TEXT("STATE_REMOVED");break;
; 191  :     default:lpState = TEXT("Unknown");break;
; 192  :     }
; 193  :     RETAILMSG(1, (TEXT("MmcDISK:GetDiskStateError: State of disk is %s=%d\r\n"), lpState, DiskState));
; 194  : #endif
; 195  :     
; 196  :     switch (DiskState) {

  00010	e3540004	 cmp       r4, #4
  00014	0a000005	 beq       |$L36948|
  00018	e3540005	 cmp       r4, #5

; 202  :     }
; 203  :     return ERROR_GEN_FAILURE;

  0001c	13a0001f	 movne     r0, #0x1F

; 204  : }

  00020	18bd4010	 ldmneia   sp!, {r4, lr}

; 199  : 
; 200  :     case STATE_REMOVED:
; 201  :     return DISK_REMOVED_ERROR;

  00024	03a00014	 moveq     r0, #0x14

; 204  : }

  00028	08bd4010	 ldmeqia   sp!, {r4, lr}
  0002c	e12fff1e	 bx        lr
  00030		 |$L36948|

; 197  :     case STATE_DEAD:
; 198  :     return DISK_DEAD_ERROR;

  00030	e3a00015	 mov       r0, #0x15

; 204  : }

  00034	e8bd4010	 ldmia     sp!, {r4, lr}
  00038	e12fff1e	 bx        lr
  0003c		 |$L37215|
  0003c	00000000	 DCD       |??_C@_1DI@KHFL@?$AAs?$AAy?$AAs?$AAt?$AAe?$AAm?$AA?9?$AA?9?$AAG?$AAe?$AAt?$AAD?$AAi?$AAs?$AAk?$AAS?$AAt?$AAa?$AAt?$AAe@|
  00040		 |$M37212|

			 ENDP  ; |GetDiskStateError|

	EXPORT	|mmcinit|
	EXPORT	|DSK_Init|
	EXPORT	|??_C@_1CI@BHOK@?$AAM?$AAm?$AAc?$AAD?$AAI?$AAS?$AAK?$AA?3?$AA?5?$AAD?$AAS?$AAK?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'

  00000			 AREA	 |.text| { |DSK_Init| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$DSK_Init|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_Init| } ; comdat associative
|$T37222| DCD	|DSK_Init|
	DCD	0x40000901

  00000			 AREA	 |.rdata| { |??_C@_1CI@BHOK@?$AAM?$AAm?$AAc?$AAD?$AAI?$AAS?$AAK?$AA?3?$AA?5?$AAD?$AAS?$AAK?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$AN?$AA?6?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CI@BHOK@?$AAM?$AAm?$AAc?$AAD?$AAI?$AAS?$AAK?$AA?3?$AA?5?$AAD?$AAS?$AAK?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$AN?$AA?6?$AA?$AA@| DCB "M"
	DCB	0x0, "m", 0x0, "c", 0x0, "D", 0x0, "I", 0x0, "S", 0x0, "K"
	DCB	0x0, ":", 0x0, " ", 0x0, "D", 0x0, "S", 0x0, "K", 0x0, "_"
	DCB	0x0, "I", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, 0xd, 0x0, 0xa
	DCB	0x0, 0x0, 0x0				; `string'
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |DSK_Init| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |DSK_Init| PROC

; 227  : {

  00000	e92d4010	 stmdb     sp!, {r4, lr}
  00004		 |$M37220|
  00004	e1a04000	 mov       r4, r0

; 228  : 
; 229  :     

; 230  :     

; 231  :     

; 232  : 	

; 233  : 	

; 234  : 
; 235  :     RETAILMSG(1, (TEXT("MmcDISK: DSK_Init\r\n")));

  00008	e59f0010	 ldr       r0, [pc, #0x10]
  0000c	eb000000	 bl        NKDbgPrintfW

; 236  : 
; 237  :     return (DWORD)mmcinit((LPTSTR)dwContext);

  00010	e1a00004	 mov       r0, r4
  00014	eb000000	 bl        mmcinit

; 238  : #if 0
; 239  : 	a = (DWORD)mmcinit((LPTSTR)dwContext);
; 240  :     mmc_read(0, 0, buf, 1);
; 241  : 	

; 242  :     return a;    
; 243  : #endif
; 244  : }   


  00018	e8bd4010	 ldmia     sp!, {r4, lr}
  0001c	e12fff1e	 bx        lr
  00020		 |$L37224|
  00020	00000000	 DCD       |??_C@_1CI@BHOK@?$AAM?$AAm?$AAc?$AAD?$AAI?$AAS?$AAK?$AA?3?$AA?5?$AAD?$AAS?$AAK?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?$AN?$AA?6?$AA?$AA@|
  00024		 |$M37221|

			 ENDP  ; |DSK_Init|

	EXPORT	|DSK_Close|

  00000			 AREA	 |.text| { |DSK_Close| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$DSK_Close|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_Close| } ; comdat associative
|$T37231| DCD	|DSK_Close|
	DCD	0x40001701
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |DSK_Close| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |DSK_Close| PROC

; 251  : {

  00000	e92d4030	 stmdb     sp!, {r4, r5, lr}
  00004		 |$M37229|
  00004	e1a05000	 mov       r5, r0

; 252  : 	
; 253  :     bool bClose = TRUE;
; 254  :     PDISK pDisk = (PDISK)Handle;
; 255  : 
; 256  : 

; 257  :     DEBUGMSG(ZONE_IO, (TEXT("MmcDISK: DSK_Close\r\n")));
; 258  : 
; 259  :     if (!IsValidDisk(pDisk)) {

  00008	eb000000	 bl        IsValidDisk
  0000c	e3500000	 cmp       r0, #0

; 260  :     return FALSE;

  00010	03a00000	 moveq     r0, #0

; 274  : }   


  00014	08bd4030	 ldmeqia   sp!, {r4, r5, lr}
  00018	012fff1e	 bxeq      lr

; 261  :     }
; 262  : 
; 263  :     if (pDisk->d_DiskCardState == STATE_OPENED) {

  0001c	e595001c	 ldr       r0, [r5, #0x1C]
  00020	e3500003	 cmp       r0, #3
  00024	1a000009	 bne       |$L36971|

; 264  :     EnterCriticalSection(&(pDisk->d_DiskCardCrit));

  00028	e2854004	 add       r4, r5, #4
  0002c	e1a00004	 mov       r0, r4
  00030	eb000000	 bl        EnterCriticalSection

; 265  :     pDisk->d_OpenCount--;

  00034	e595303c	 ldr       r3, [r5, #0x3C]
  00038	e2530001	 subs      r0, r3, #1
  0003c	e585003c	 str       r0, [r5, #0x3C]

; 266  :     if (pDisk->d_OpenCount == 0) {
; 267  :         pDisk->d_DiskCardState = STATE_CLOSED;

  00040	03a00002	 moveq     r0, #2
  00044	0585001c	 streq     r0, [r5, #0x1C]

; 268  :     } else {
; 269  :         bClose = FALSE;
; 270  :     }
; 271  :     LeaveCriticalSection(&(pDisk->d_DiskCardCrit));

  00048	e1a00004	 mov       r0, r4
  0004c	eb000000	 bl        LeaveCriticalSection
  00050		 |$L36971|

; 272  :     }
; 273  :     return TRUE;

  00050	e3a00001	 mov       r0, #1

; 274  : }   


  00054	e8bd4030	 ldmia     sp!, {r4, r5, lr}
  00058	e12fff1e	 bx        lr
  0005c		 |$M37230|

			 ENDP  ; |DSK_Close|

	EXPORT	|DSK_Deinit|
	EXPORT	|??_C@_1CK@CKAG@?$AAs?$AAy?$AAs?$AAt?$AAe?$AAm?$AA?9?$AA?9?$AAD?$AAS?$AAK?$AA_?$AAD?$AAe?$AAi?$AAn?$AAi?$AAt?$AA?$AN?$AA?6@| [ DATA ] ; `string'
	IMPORT	|CloseDisk|

  00000			 AREA	 |.text| { |DSK_Deinit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$DSK_Deinit|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_Deinit| } ; comdat associative
|$T37239| DCD	|DSK_Deinit|
	DCD	0x40000c01

  00000			 AREA	 |.rdata| { |??_C@_1CK@CKAG@?$AAs?$AAy?$AAs?$AAt?$AAe?$AAm?$AA?9?$AA?9?$AAD?$AAS?$AAK?$AA_?$AAD?$AAe?$AAi?$AAn?$AAi?$AAt?$AA?$AN?$AA?6@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CK@CKAG@?$AAs?$AAy?$AAs?$AAt?$AAe?$AAm?$AA?9?$AA?9?$AAD?$AAS?$AAK?$AA_?$AAD?$AAe?$AAi?$AAn?$AAi?$AAt?$AA?$AN?$AA?6@| DCB "s"
	DCB	0x0, "y", 0x0, "s", 0x0, "t", 0x0, "e", 0x0, "m", 0x0, "-"
	DCB	0x0, "-", 0x0, "D", 0x0, "S", 0x0, "K", 0x0, "_", 0x0, "D"
	DCB	0x0, "e", 0x0, "i", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, 0xd
	DCB	0x0, 0xa, 0x0, 0x0, 0x0			; `string'
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |DSK_Deinit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |DSK_Deinit| PROC

; 285  : {

  00000	e92d4010	 stmdb     sp!, {r4, lr}
  00004		 |$M37237|
  00004	e1a04000	 mov       r4, r0

; 286  :     PDISK pDisk = (PDISK)dwContext;
; 287  : 
; 288  : 	RETAILMSG(1, (TEXT("system--DSK_Deinit\r\n")));

  00008	e59f001c	 ldr       r0, [pc, #0x1C]
  0000c	eb000000	 bl        NKDbgPrintfW

; 289  :     DSK_Close(dwContext);

  00010	e1a00004	 mov       r0, r4
  00014	eb000000	 bl        DSK_Close

; 290  :     CloseDisk(pDisk);

  00018	e1a00004	 mov       r0, r4
  0001c	eb000000	 bl        CloseDisk

; 291  :     return TRUE;

  00020	e3a00001	 mov       r0, #1

; 292  : }   


  00024	e8bd4010	 ldmia     sp!, {r4, lr}
  00028	e12fff1e	 bx        lr
  0002c		 |$L37241|
  0002c	00000000	 DCD       |??_C@_1CK@CKAG@?$AAs?$AAy?$AAs?$AAt?$AAe?$AAm?$AA?9?$AA?9?$AAD?$AAS?$AAK?$AA_?$AAD?$AAe?$AAi?$AAn?$AAi?$AAt?$AA?$AN?$AA?6@|
  00030		 |$M37238|

			 ENDP  ; |DSK_Deinit|

	EXPORT	|DSK_Open|
	IMPORT	|SetLastError|

  00000			 AREA	 |.text| { |DSK_Open| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$DSK_Open|, PDATA, SELECTION=5, ASSOC=|.text| { |DSK_Open| } ; comdat associative
|$T37249| DCD	|DSK_Open|
	DCD	0x40001d01
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |DSK_Open| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |DSK_Open| PROC

; 303  : {

  00000	e92d4030	 stmdb     sp!, {r4, r5, lr}
  00004		 |$M37247|
  00004	e1a05000	 mov       r5, r0

; 304  :     PDISK pDisk = (PDISK)dwData;
; 305  :     DWORD rett = 0;
; 306  : 
; 307  : 

; 308  : 
; 309  :     if (IsValidDisk(pDisk) == FALSE) {

  00008	eb000000	 bl        IsValidDisk
  0000c	e3500000	 cmp       r0, #0

; 310  :     DEBUGMSG(ZONE_IO, (TEXT("MmcDisk DSK_Open - Passed invalid disk handle\r\n")));
; 311  :     return rett;

  00010	0a000006	 beq       |$L37246|

; 312  :     }
; 313  : 
; 314  :     if ((pDisk->d_DiskCardState != STATE_CLOSED) &&
; 315  :     (pDisk->d_DiskCardState != STATE_OPENED)) {

  00014	e595001c	 ldr       r0, [r5, #0x1C]
  00018	e3500002	 cmp       r0, #2
  0001c	0a000005	 beq       |$L36994|
  00020	e3500003	 cmp       r0, #3
  00024	0a000003	 beq       |$L36994|

; 316  :     SetLastError(GetDiskStateError(pDisk->d_DiskCardState));

  00028	eb000000	 bl        GetDiskStateError
  0002c	eb000000	 bl        SetLastError
  00030		 |$L37246|

; 317  :     return rett;

  00030	e3a05000	 mov       r5, #0
  00034	ea00000b	 b         |$L36988|
  00038		 |$L36994|

; 318  :     }
; 319  : 
; 320  :     EnterCriticalSection(&(pDisk->d_DiskCardCrit));

  00038	e2854004	 add       r4, r5, #4
  0003c	e1a00004	 mov       r0, r4

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -