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

📄 fat.cod

📁 Ep93XX TionProV2 BSP
💻 COD
📖 第 1 页 / 共 5 页
字号:
  00064		 |$L38215|

; 176  :         break;

  00064	ea00001a	 b           |$L38211|
  00068		 |$L38216|

; 177  :       case FAT_32:
; 178  :         Cluster &= 0x0fffffff;

  00068	e59d2010	 ldr         r2, [sp, #0x10]
  0006c	e3e0320f	 mvn         r3, #0xF, 4
  00070	e0023003	 and         r3, r2, r3
  00074	e58d3010	 str         r3, [sp, #0x10]

; 179  :         if (Cluster >= 0x00000002 && Cluster <= 0x0fffffef)

  00078	e59d3010	 ldr         r3, [sp, #0x10]
  0007c	e3530002	 cmp         r3, #2
  00080	3a000007	 bcc         |$L38217|
  00084	e59d2010	 ldr         r2, [sp, #0x10]
  00088	e3a03201	 mov         r3, #1, 4
  0008c	e2433011	 sub         r3, r3, #0x11
  00090	e1520003	 cmp         r2, r3
  00094	8a000002	 bhi         |$L38217|

; 180  :             return(TRUE);

  00098	e3a03001	 mov         r3, #1
  0009c	e58d3000	 str         r3, [sp]
  000a0	ea00000d	 b           |$L38209|
  000a4		 |$L38217|

; 181  :         break;

  000a4	ea00000a	 b           |$L38211|
  000a8		 |$L38218|

; 182  :       case FAT_16:
; 183  :       default:
; 184  :         if (Cluster >= 0x0002 && Cluster <= 0xffef)

  000a8	e59d3010	 ldr         r3, [sp, #0x10]
  000ac	e3530002	 cmp         r3, #2
  000b0	3a000007	 bcc         |$L38219|
  000b4	e59d2010	 ldr         r2, [sp, #0x10]
  000b8	e3a03cff	 mov         r3, #0xFF, 24
  000bc	e38330ef	 orr         r3, r3, #0xEF
  000c0	e1520003	 cmp         r2, r3
  000c4	8a000002	 bhi         |$L38219|

; 185  :             return(TRUE);

  000c8	e3a03001	 mov         r3, #1
  000cc	e58d3000	 str         r3, [sp]
  000d0	ea000001	 b           |$L38209|
  000d4		 |$L38219|
  000d4		 |$L38211|

; 186  :     }
; 187  : 
; 188  :     return(FALSE);

  000d4	e3a03000	 mov         r3, #0
  000d8	e58d3000	 str         r3, [sp]
  000dc		 |$L38209|

; 175  :             return(TRUE);

  000dc	e59d0000	 ldr         r0, [sp]

; 189  : }

  000e0	e28dd008	 add         sp, sp, #8
  000e4	e89d6000	 ldmia       sp, {sp, lr}
  000e8	e12fff1e	 bx          lr
  000ec		 |$L38597|
  000ec	00000000	 DCD         |g_FATParms|
  000f0		 |$M38593|

			 ENDP  ; |IsDataCluster|


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

  00000			 AREA	 |.pdata$$IsEOFCluster|, PDATA, SELECTION=5, ASSOC=|.text| { |IsEOFCluster| } ; comdat associative
|$T38604| DCD	|$L38603|
	DCD	0x40003e04
; Function compile flags: /Ods

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

  00000		 |IsEOFCluster| PROC

; 216  : {

  00000		 |$L38603|
  00000	e1a0c00d	 mov         r12, sp
  00004	e92d0001	 stmdb       sp!, {r0}
  00008	e92d5000	 stmdb       sp!, {r12, lr}
  0000c	e24dd008	 sub         sp, sp, #8
  00010		 |$M38601|

; 217  :     switch(g_FATParms.FATType)

  00010	e59f30dc	 ldr         r3, [pc, #0xDC]
  00014	e5933000	 ldr         r3, [r3]
  00018	e58d3004	 str         r3, [sp, #4]
  0001c	e59d3004	 ldr         r3, [sp, #4]
  00020	e3530000	 cmp         r3, #0
  00024	0a000003	 beq         |$L38242|
  00028	e59d3004	 ldr         r3, [sp, #4]
  0002c	e3530002	 cmp         r3, #2
  00030	0a00000e	 beq         |$L38244|
  00034	ea00001b	 b           |$L38246|
  00038		 |$L38242|

; 218  :     {
; 219  :       case FAT_12:
; 220  :         if (Cluster >= 0xff8 && Cluster <= 0xfff)

  00038	e59d2010	 ldr         r2, [sp, #0x10]
  0003c	e3a03eff	 mov         r3, #0xFF, 28
  00040	e3833008	 orr         r3, r3, #8
  00044	e1520003	 cmp         r2, r3
  00048	3a000007	 bcc         |$L38243|
  0004c	e59d2010	 ldr         r2, [sp, #0x10]
  00050	e3a03eff	 mov         r3, #0xFF, 28
  00054	e383300f	 orr         r3, r3, #0xF
  00058	e1520003	 cmp         r2, r3
  0005c	8a000002	 bhi         |$L38243|

; 221  :             return(TRUE);

  00060	e3a03001	 mov         r3, #1
  00064	e58d3000	 str         r3, [sp]
  00068	ea00001d	 b           |$L38237|
  0006c		 |$L38243|

; 222  :         break;

  0006c	ea00001a	 b           |$L38239|
  00070		 |$L38244|

; 223  :       case FAT_32:
; 224  :         Cluster &= 0x0fffffff;

  00070	e59d2010	 ldr         r2, [sp, #0x10]
  00074	e3e0320f	 mvn         r3, #0xF, 4
  00078	e0023003	 and         r3, r2, r3
  0007c	e58d3010	 str         r3, [sp, #0x10]

; 225  :         if (Cluster >= 0x0ffffff8 && Cluster <= 0x0fffffff)

  00080	e59d3010	 ldr         r3, [sp, #0x10]
  00084	e373028f	 cmn         r3, #0x8F, 4
  00088	3a000005	 bcc         |$L38245|
  0008c	e59d3010	 ldr         r3, [sp, #0x10]
  00090	e373021f	 cmn         r3, #0x1F, 4
  00094	8a000002	 bhi         |$L38245|

; 226  :             return(TRUE);

  00098	e3a03001	 mov         r3, #1
  0009c	e58d3000	 str         r3, [sp]
  000a0	ea00000f	 b           |$L38237|
  000a4		 |$L38245|

; 227  :         break;

  000a4	ea00000c	 b           |$L38239|
  000a8		 |$L38246|

; 228  :       case FAT_16:
; 229  :       default:
; 230  :         if (Cluster >= 0xfff8 && Cluster <= 0xffff)

  000a8	e59d2010	 ldr         r2, [sp, #0x10]
  000ac	e3a03cff	 mov         r3, #0xFF, 24
  000b0	e38330f8	 orr         r3, r3, #0xF8
  000b4	e1520003	 cmp         r2, r3
  000b8	3a000007	 bcc         |$L38247|
  000bc	e59d2010	 ldr         r2, [sp, #0x10]
  000c0	e3a03cff	 mov         r3, #0xFF, 24
  000c4	e38330ff	 orr         r3, r3, #0xFF
  000c8	e1520003	 cmp         r2, r3
  000cc	8a000002	 bhi         |$L38247|

; 231  :             return(TRUE);

  000d0	e3a03001	 mov         r3, #1
  000d4	e58d3000	 str         r3, [sp]
  000d8	ea000001	 b           |$L38237|
  000dc		 |$L38247|
  000dc		 |$L38239|

; 232  :     }
; 233  : 
; 234  :     return(FALSE);

  000dc	e3a03000	 mov         r3, #0
  000e0	e58d3000	 str         r3, [sp]
  000e4		 |$L38237|

; 221  :             return(TRUE);

  000e4	e59d0000	 ldr         r0, [sp]

; 235  : }

  000e8	e28dd008	 add         sp, sp, #8
  000ec	e89d6000	 ldmia       sp, {sp, lr}
  000f0	e12fff1e	 bx          lr
  000f4		 |$L38606|
  000f4	00000000	 DCD         |g_FATParms|
  000f8		 |$M38602|

			 ENDP  ; |IsEOFCluster|

	EXPORT	|InitFAT|
	EXPORT	|??_C@_0CE@DAKJNAOI@ERROR?3?5Couldn?8t?5read?5BOOT?5in?5FAT@| [ DATA ] ; `string'
	EXPORT	|??_C@_0CL@JILLCKBB@ERROR?3?5Failed?5to?5initialize?5read@| [ DATA ] ; `string'
	IMPORT	|memcpy|
	IMPORT	|memset|
	IMPORT	|__rt_sdiv|

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

  00000			 AREA	 |.pdata$$InitFAT|, PDATA, SELECTION=5, ASSOC=|.text| { |InitFAT| } ; comdat associative
|$T38614| DCD	|$L38613|
	DCD	0x40023804

  00000			 AREA	 |.rdata| { |??_C@_0CL@JILLCKBB@ERROR?3?5Failed?5to?5initialize?5read@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CL@JILLCKBB@ERROR?3?5Failed?5to?5initialize?5read@| DCB "ERROR: F"
	DCB	"ailed to initialize read buffer.", 0xd, 0xa, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_0CE@DAKJNAOI@ERROR?3?5Couldn?8t?5read?5BOOT?5in?5FAT@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CE@DAKJNAOI@ERROR?3?5Couldn?8t?5read?5BOOT?5in?5FAT@| DCB "ERROR:"
	DCB	" Couldn't read BOOT in FAT.", 0xd, 0xa, 0x0 ; `string'
; Function compile flags: /Ods

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

  00000		 |InitFAT| PROC

; 596  : {

  00000		 |$L38613|
  00000	e1a0c00d	 mov         r12, sp
  00004	e92d0001	 stmdb       sp!, {r0}
  00008	e92d5000	 stmdb       sp!, {r12, lr}
  0000c	e24ddf8d	 sub         sp, sp, #0x8D, 30
  00010		 |$M38611|

; 597  :     UCHAR bsect[SECTOR_SIZE];
; 598  :     PBIOSPB pBPB = NULL;

  00010	e3a03000	 mov         r3, #0
  00014	e58d3000	 str         r3, [sp]

; 599  :     tOffset36_FAT16 *pFAT16Extension = NULL;

  00018	e3a03000	 mov         r3, #0
  0001c	e58d3220	 str         r3, [sp, #0x220]

; 600  :     tOffset36_FAT32 *pFAT32Extension = NULL;

  00020	e3a03000	 mov         r3, #0
  00024	e58d321c	 str         r3, [sp, #0x21C]

; 601  :     
; 602  :     ULONG ReadBufferLen = 0;

  00028	e3a03000	 mov         r3, #0
  0002c	e58d3208	 str         r3, [sp, #0x208]

; 603  :     UCHAR FATType[9];
; 604  : #if defined( NDEF_DWF_PARTIIONS )
; 605  :     pPARTITION_ENTRY pPartition = NULL;
; 606  :     int i;
; 607  : #endif  // ( NDEF_DWF_PARTIIONS )
; 608  :     
; 609  :     // Locate and verify single active partition in MBR.
; 610  : 
; 611  :     memset (&bsect[0], 0, SECTOR_SIZE);

  00030	e3a02c02	 mov         r2, #2, 24
  00034	e3a01000	 mov         r1, #0
  00038	e28d0008	 add         r0, sp, #8
  0003c	eb000000	 bl          memset

; 612  :     if (FALSE == ReadSectors( g_FATParms.DriveId, uFirstPartitionLBA, 1, (PUCHAR) &bsect[0] ) )

  00040	e28d3008	 add         r3, sp, #8
  00044	e3a02001	 mov         r2, #1
  00048	e59d123c	 ldr         r1, [sp, #0x23C]
  0004c	e59f0884	 ldr         r0, [pc, #0x884]
  00050	e5d0001e	 ldrb        r0, [r0, #0x1E]
  00054	eb000000	 bl          ReadSectors
  00058	e5cd0228	 strb        r0, [sp, #0x228]
  0005c	e5dd3228	 ldrb        r3, [sp, #0x228]
  00060	e3530000	 cmp         r3, #0
  00064	1a000004	 bne         |$L38323|

; 613  :     {
; 614  :         SERPRINT( "ERROR: Couldn't read BOOT in FAT.\r\n" );

  00068	e59f086c	 ldr         r0, [pc, #0x86C]
  0006c	eb000000	 bl          EdbgOutputDebugString

; 615  :         return  FALSE;

  00070	e3a03000	 mov         r3, #0
  00074	e58d3224	 str         r3, [sp, #0x224]
  00078	ea000211	 b           |$L38312|
  0007c		 |$L38323|

; 616  :     }
; 617  :     // EdbgDumpHexBuf((PUCHAR)&bsect[0],SECTOR_SIZE);
; 618  : 
; 619  :     //
; 620  :     // The BIOS parameter block is in the MBR just read, so point to that block...
; 621  :     // 
; 622  :     pBPB = (PBIOSPB)&bsect[0];

  0007c	e28d3008	 add         r3, sp, #8
  00080	e58d3000	 str         r3, [sp]

; 623  : 
; 624  :     // setup the extension ptrs for later use...
; 625  :     pFAT16Extension = (tOffset36_FAT16 *)&pBPB->Offset36Extension[ 0 ];

  00084	e59d3000	 ldr         r3, [sp]
  00088	e2833024	 add         r3, r3, #0x24
  0008c	e58d3220	 str         r3, [sp, #0x220]

; 626  :     pFAT32Extension = (tOffset36_FAT32 *)&pBPB->Offset36Extension[ 0 ];

  00090	e59d3000	 ldr         r3, [sp]
  00094	e2833024	 add         r3, r3, #0x24
  00098	e58d321c	 str         r3, [sp, #0x21C]

; 627  :     
; 628  :     //
; 629  :     // Determine FAT type by determining the "count of cluster" on the volume.
; 630  :     // 
; 631  :     
; 632  :     // First find the number of sectors in the root directory.  This will always
; 633  :     // be zero for FAT32 volumes because pBPB->NumRootEntries will be zero!
; 634  :     //
; 635  : 	if( ! pBPB->BytesPerSect  )

  0009c	e59d3000	 ldr         r3, [sp]
  000a0	e283100b	 add         r1, r3, #0xB
  000a4	e5d13001	 ldrb        r3, [r1, #1]
  000a8	e1a03403	 mov         r3, r3, lsl #8
  000ac	e1a02803	 mov         r2, r3, lsl #16
  000b0	e1a02822	 mov         r2, r2, lsr #16
  000b4	e5d13000	 ldrb        r3, [r1]
  000b8	e1833002	 orr         r3, r3, r2
  000bc	e3530000	 cmp         r3, #0
  000c0	1a000002	 bne         |$L38328|

; 636  : 		return(FALSE);

  000c4	e3a03000	 mov         r3, #0
  000c8	e58d3224	 str         r3, [sp, #0x224]
  000cc	ea0001fc	 b           |$L38312|
  000d0		 |$L38328|

; 637  :     g_FATParms.RootDirSectors = 
; 638  :       ((pBPB->NumRootEntries * 32) + (pBPB->BytesPerSect - 1)) / pBPB->BytesPerSect + uFirstPartitionLBA;

  000d0	e59d3000	 ldr         r3, [sp]
  000d4	e2831011	 add         r1, r3, #0x11
  000d8	e5d13001	 ldrb        r3, [r1, #1]
  000dc	e1a03403	 mov         r3, r3, lsl #8
  000e0	e1a02803	 mov         r2, r3, lsl #16
  000e4	e1a02822	 mov         r2, r2, lsr #16
  000e8	e5d13000	 ldrb        r3, [r1]
  000ec	e1833002	 orr         r3, r3, r2
  000f0	e1a02003	 mov         r2, r3
  000f4	e3a03020	 mov         r3, #0x20

⌨️ 快捷键说明

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