13917 lines
753 KiB
Plaintext
13917 lines
753 KiB
Plaintext
1 .syntax unified
|
|
2 .cpu cortex-m3
|
|
3 .fpu softvfp
|
|
4 .eabi_attribute 20, 1
|
|
5 .eabi_attribute 21, 1
|
|
6 .eabi_attribute 23, 3
|
|
7 .eabi_attribute 24, 1
|
|
8 .eabi_attribute 25, 1
|
|
9 .eabi_attribute 26, 1
|
|
10 .eabi_attribute 30, 1
|
|
11 .eabi_attribute 34, 1
|
|
12 .eabi_attribute 18, 4
|
|
13 .thumb
|
|
14 .file "ff.c"
|
|
15 .text
|
|
16 .Ltext0:
|
|
17 .cfi_sections .debug_frame
|
|
18 .section .text.mem_cpy,"ax",%progbits
|
|
19 .align 2
|
|
20 .thumb
|
|
21 .thumb_func
|
|
23 mem_cpy:
|
|
24 .LFB0:
|
|
25 .file 1 "../../../Source/third_party/fatfs/src/ff.c"
|
|
1:../../../Source/third_party/fatfs/src/ff.c **** /*----------------------------------------------------------------------------/
|
|
2:../../../Source/third_party/fatfs/src/ff.c **** / FatFs - FAT file system module R0.09b (C)ChaN, 2013
|
|
3:../../../Source/third_party/fatfs/src/ff.c **** /-----------------------------------------------------------------------------/
|
|
4:../../../Source/third_party/fatfs/src/ff.c **** / FatFs module is a generic FAT file system module for small embedded systems.
|
|
5:../../../Source/third_party/fatfs/src/ff.c **** / This is a free software that opened for education, research and commercial
|
|
6:../../../Source/third_party/fatfs/src/ff.c **** / developments under license policy of following terms.
|
|
7:../../../Source/third_party/fatfs/src/ff.c **** /
|
|
8:../../../Source/third_party/fatfs/src/ff.c **** / Copyright (C) 2013, ChaN, all right reserved.
|
|
9:../../../Source/third_party/fatfs/src/ff.c **** /
|
|
10:../../../Source/third_party/fatfs/src/ff.c **** / * The FatFs module is a free software and there is NO WARRANTY.
|
|
11:../../../Source/third_party/fatfs/src/ff.c **** / * No restriction on use. You can use, modify and redistribute it for
|
|
12:../../../Source/third_party/fatfs/src/ff.c **** / personal, non-profit or commercial products UNDER YOUR RESPONSIBILITY.
|
|
13:../../../Source/third_party/fatfs/src/ff.c **** / * Redistributions of source code must retain the above copyright notice.
|
|
14:../../../Source/third_party/fatfs/src/ff.c **** /
|
|
15:../../../Source/third_party/fatfs/src/ff.c **** /-----------------------------------------------------------------------------/
|
|
16:../../../Source/third_party/fatfs/src/ff.c **** / Feb 26,'06 R0.00 Prototype.
|
|
17:../../../Source/third_party/fatfs/src/ff.c **** /
|
|
18:../../../Source/third_party/fatfs/src/ff.c **** / Apr 29,'06 R0.01 First stable version.
|
|
19:../../../Source/third_party/fatfs/src/ff.c **** /
|
|
20:../../../Source/third_party/fatfs/src/ff.c **** / Jun 01,'06 R0.02 Added FAT12 support.
|
|
21:../../../Source/third_party/fatfs/src/ff.c **** / Removed unbuffered mode.
|
|
22:../../../Source/third_party/fatfs/src/ff.c **** / Fixed a problem on small (<32M) partition.
|
|
23:../../../Source/third_party/fatfs/src/ff.c **** / Jun 10,'06 R0.02a Added a configuration option (_FS_MINIMUM).
|
|
24:../../../Source/third_party/fatfs/src/ff.c **** /
|
|
25:../../../Source/third_party/fatfs/src/ff.c **** / Sep 22,'06 R0.03 Added f_rename().
|
|
26:../../../Source/third_party/fatfs/src/ff.c **** / Changed option _FS_MINIMUM to _FS_MINIMIZE.
|
|
27:../../../Source/third_party/fatfs/src/ff.c **** / Dec 11,'06 R0.03a Improved cluster scan algorithm to write files fast.
|
|
28:../../../Source/third_party/fatfs/src/ff.c **** / Fixed f_mkdir() creates incorrect directory on FAT32.
|
|
29:../../../Source/third_party/fatfs/src/ff.c **** /
|
|
30:../../../Source/third_party/fatfs/src/ff.c **** / Feb 04,'07 R0.04 Supported multiple drive system.
|
|
31:../../../Source/third_party/fatfs/src/ff.c **** / Changed some interfaces for multiple drive system.
|
|
32:../../../Source/third_party/fatfs/src/ff.c **** / Changed f_mountdrv() to f_mount().
|
|
33:../../../Source/third_party/fatfs/src/ff.c **** / Added f_mkfs().
|
|
34:../../../Source/third_party/fatfs/src/ff.c **** / Apr 01,'07 R0.04a Supported multiple partitions on a physical drive.
|
|
35:../../../Source/third_party/fatfs/src/ff.c **** / Added a capability of extending file size to f_lseek().
|
|
36:../../../Source/third_party/fatfs/src/ff.c **** / Added minimization level 3.
|
|
37:../../../Source/third_party/fatfs/src/ff.c **** / Fixed an endian sensitive code in f_mkfs().
|
|
38:../../../Source/third_party/fatfs/src/ff.c **** / May 05,'07 R0.04b Added a configuration option _USE_NTFLAG.
|
|
39:../../../Source/third_party/fatfs/src/ff.c **** / Added FSInfo support.
|
|
40:../../../Source/third_party/fatfs/src/ff.c **** / Fixed DBCS name can result FR_INVALID_NAME.
|
|
41:../../../Source/third_party/fatfs/src/ff.c **** / Fixed short seek (<= csize) collapses the file object.
|
|
42:../../../Source/third_party/fatfs/src/ff.c **** /
|
|
43:../../../Source/third_party/fatfs/src/ff.c **** / Aug 25,'07 R0.05 Changed arguments of f_read(), f_write() and f_mkfs().
|
|
44:../../../Source/third_party/fatfs/src/ff.c **** / Fixed f_mkfs() on FAT32 creates incorrect FSInfo.
|
|
45:../../../Source/third_party/fatfs/src/ff.c **** / Fixed f_mkdir() on FAT32 creates incorrect directory.
|
|
46:../../../Source/third_party/fatfs/src/ff.c **** / Feb 03,'08 R0.05a Added f_truncate() and f_utime().
|
|
47:../../../Source/third_party/fatfs/src/ff.c **** / Fixed off by one error at FAT sub-type determination.
|
|
48:../../../Source/third_party/fatfs/src/ff.c **** / Fixed btr in f_read() can be mistruncated.
|
|
49:../../../Source/third_party/fatfs/src/ff.c **** / Fixed cached sector is not flushed when create and close without write.
|
|
50:../../../Source/third_party/fatfs/src/ff.c **** /
|
|
51:../../../Source/third_party/fatfs/src/ff.c **** / Apr 01,'08 R0.06 Added fputc(), fputs(), fprintf() and fgets().
|
|
52:../../../Source/third_party/fatfs/src/ff.c **** / Improved performance of f_lseek() on moving to the same or following cluster.
|
|
53:../../../Source/third_party/fatfs/src/ff.c **** /
|
|
54:../../../Source/third_party/fatfs/src/ff.c **** / Apr 01,'09 R0.07 Merged Tiny-FatFs as a configuration option. (_FS_TINY)
|
|
55:../../../Source/third_party/fatfs/src/ff.c **** / Added long file name feature.
|
|
56:../../../Source/third_party/fatfs/src/ff.c **** / Added multiple code page feature.
|
|
57:../../../Source/third_party/fatfs/src/ff.c **** / Added re-entrancy for multitask operation.
|
|
58:../../../Source/third_party/fatfs/src/ff.c **** / Added auto cluster size selection to f_mkfs().
|
|
59:../../../Source/third_party/fatfs/src/ff.c **** / Added rewind option to f_readdir().
|
|
60:../../../Source/third_party/fatfs/src/ff.c **** / Changed result code of critical errors.
|
|
61:../../../Source/third_party/fatfs/src/ff.c **** / Renamed string functions to avoid name collision.
|
|
62:../../../Source/third_party/fatfs/src/ff.c **** / Apr 14,'09 R0.07a Separated out OS dependent code on reentrant cfg.
|
|
63:../../../Source/third_party/fatfs/src/ff.c **** / Added multiple sector size feature.
|
|
64:../../../Source/third_party/fatfs/src/ff.c **** / Jun 21,'09 R0.07c Fixed f_unlink() can return FR_OK on error.
|
|
65:../../../Source/third_party/fatfs/src/ff.c **** / Fixed wrong cache control in f_lseek().
|
|
66:../../../Source/third_party/fatfs/src/ff.c **** / Added relative path feature.
|
|
67:../../../Source/third_party/fatfs/src/ff.c **** / Added f_chdir() and f_chdrive().
|
|
68:../../../Source/third_party/fatfs/src/ff.c **** / Added proper case conversion to extended char.
|
|
69:../../../Source/third_party/fatfs/src/ff.c **** / Nov 03,'09 R0.07e Separated out configuration options from ff.h to ffconf.h.
|
|
70:../../../Source/third_party/fatfs/src/ff.c **** / Fixed f_unlink() fails to remove a sub-dir on _FS_RPATH.
|
|
71:../../../Source/third_party/fatfs/src/ff.c **** / Fixed name matching error on the 13 char boundary.
|
|
72:../../../Source/third_party/fatfs/src/ff.c **** / Added a configuration option, _LFN_UNICODE.
|
|
73:../../../Source/third_party/fatfs/src/ff.c **** / Changed f_readdir() to return the SFN with always upper case on non-LFN cfg.
|
|
74:../../../Source/third_party/fatfs/src/ff.c **** /
|
|
75:../../../Source/third_party/fatfs/src/ff.c **** / May 15,'10 R0.08 Added a memory configuration option. (_USE_LFN = 3)
|
|
76:../../../Source/third_party/fatfs/src/ff.c **** / Added file lock feature. (_FS_SHARE)
|
|
77:../../../Source/third_party/fatfs/src/ff.c **** / Added fast seek feature. (_USE_FASTSEEK)
|
|
78:../../../Source/third_party/fatfs/src/ff.c **** / Changed some types on the API, XCHAR->TCHAR.
|
|
79:../../../Source/third_party/fatfs/src/ff.c **** / Changed fname member in the FILINFO structure on Unicode cfg.
|
|
80:../../../Source/third_party/fatfs/src/ff.c **** / String functions support UTF-8 encoding files on Unicode cfg.
|
|
81:../../../Source/third_party/fatfs/src/ff.c **** / Aug 16,'10 R0.08a Added f_getcwd(). (_FS_RPATH = 2)
|
|
82:../../../Source/third_party/fatfs/src/ff.c **** / Added sector erase feature. (_USE_ERASE)
|
|
83:../../../Source/third_party/fatfs/src/ff.c **** / Moved file lock semaphore table from fs object to the bss.
|
|
84:../../../Source/third_party/fatfs/src/ff.c **** / Fixed a wrong directory entry is created on non-LFN cfg when the given name con
|
|
85:../../../Source/third_party/fatfs/src/ff.c **** / Fixed f_mkfs() creates wrong FAT32 volume.
|
|
86:../../../Source/third_party/fatfs/src/ff.c **** / Jan 15,'11 R0.08b Fast seek feature is also applied to f_read() and f_write().
|
|
87:../../../Source/third_party/fatfs/src/ff.c **** / f_lseek() reports required table size on creating CLMP.
|
|
88:../../../Source/third_party/fatfs/src/ff.c **** / Extended format syntax of f_printf function.
|
|
89:../../../Source/third_party/fatfs/src/ff.c **** / Ignores duplicated directory separators in given path name.
|
|
90:../../../Source/third_party/fatfs/src/ff.c **** /
|
|
91:../../../Source/third_party/fatfs/src/ff.c **** / Sep 06,'11 R0.09 f_mkfs() supports multiple partition to finish the multiple partition feature.
|
|
92:../../../Source/third_party/fatfs/src/ff.c **** / Added f_fdisk(). (_MULTI_PARTITION = 2)
|
|
93:../../../Source/third_party/fatfs/src/ff.c **** / Aug 27,'12 R0.09a Fixed assertion failure due to OS/2 EA on FAT12/16 volume.
|
|
94:../../../Source/third_party/fatfs/src/ff.c **** / Changed f_open() and f_opendir reject null object pointer to avoid crash.
|
|
95:../../../Source/third_party/fatfs/src/ff.c **** / Changed option name _FS_SHARE to _FS_LOCK.
|
|
96:../../../Source/third_party/fatfs/src/ff.c **** / Jan 24,'13 R0.09b Added f_setlabel() and f_getlabel(). (_USE_LABEL = 1)
|
|
97:../../../Source/third_party/fatfs/src/ff.c **** /---------------------------------------------------------------------------*/
|
|
98:../../../Source/third_party/fatfs/src/ff.c ****
|
|
99:../../../Source/third_party/fatfs/src/ff.c **** #include "ff.h" /* FatFs configurations and declarations */
|
|
100:../../../Source/third_party/fatfs/src/ff.c **** #include "diskio.h" /* Declarations of low level disk I/O functions */
|
|
101:../../../Source/third_party/fatfs/src/ff.c ****
|
|
102:../../../Source/third_party/fatfs/src/ff.c ****
|
|
103:../../../Source/third_party/fatfs/src/ff.c **** /*--------------------------------------------------------------------------
|
|
104:../../../Source/third_party/fatfs/src/ff.c ****
|
|
105:../../../Source/third_party/fatfs/src/ff.c **** Module Private Definitions
|
|
106:../../../Source/third_party/fatfs/src/ff.c ****
|
|
107:../../../Source/third_party/fatfs/src/ff.c **** ---------------------------------------------------------------------------*/
|
|
108:../../../Source/third_party/fatfs/src/ff.c ****
|
|
109:../../../Source/third_party/fatfs/src/ff.c **** #if _FATFS != 82786 /* Revision ID */
|
|
110:../../../Source/third_party/fatfs/src/ff.c **** #error Wrong include file (ff.h).
|
|
111:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
112:../../../Source/third_party/fatfs/src/ff.c ****
|
|
113:../../../Source/third_party/fatfs/src/ff.c ****
|
|
114:../../../Source/third_party/fatfs/src/ff.c **** /* Definitions on sector size */
|
|
115:../../../Source/third_party/fatfs/src/ff.c **** #if _MAX_SS != 512 && _MAX_SS != 1024 && _MAX_SS != 2048 && _MAX_SS != 4096
|
|
116:../../../Source/third_party/fatfs/src/ff.c **** #error Wrong sector size.
|
|
117:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
118:../../../Source/third_party/fatfs/src/ff.c **** #if _MAX_SS != 512
|
|
119:../../../Source/third_party/fatfs/src/ff.c **** #define SS(fs) ((fs)->ssize) /* Variable sector size */
|
|
120:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
121:../../../Source/third_party/fatfs/src/ff.c **** #define SS(fs) 512U /* Fixed sector size */
|
|
122:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
123:../../../Source/third_party/fatfs/src/ff.c ****
|
|
124:../../../Source/third_party/fatfs/src/ff.c ****
|
|
125:../../../Source/third_party/fatfs/src/ff.c **** /* Reentrancy related */
|
|
126:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_REENTRANT
|
|
127:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN == 1
|
|
128:../../../Source/third_party/fatfs/src/ff.c **** #error Static LFN work area must not be used in re-entrant configuration.
|
|
129:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
130:../../../Source/third_party/fatfs/src/ff.c **** #define ENTER_FF(fs) { if (!lock_fs(fs)) return FR_TIMEOUT; }
|
|
131:../../../Source/third_party/fatfs/src/ff.c **** #define LEAVE_FF(fs, res) { unlock_fs(fs, res); return res; }
|
|
132:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
133:../../../Source/third_party/fatfs/src/ff.c **** #define ENTER_FF(fs)
|
|
134:../../../Source/third_party/fatfs/src/ff.c **** #define LEAVE_FF(fs, res) return res
|
|
135:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
136:../../../Source/third_party/fatfs/src/ff.c ****
|
|
137:../../../Source/third_party/fatfs/src/ff.c **** #define ABORT(fs, res) { fp->flag |= FA__ERROR; LEAVE_FF(fs, res); }
|
|
138:../../../Source/third_party/fatfs/src/ff.c ****
|
|
139:../../../Source/third_party/fatfs/src/ff.c ****
|
|
140:../../../Source/third_party/fatfs/src/ff.c **** /* File access control feature */
|
|
141:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_LOCK
|
|
142:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_READONLY
|
|
143:../../../Source/third_party/fatfs/src/ff.c **** #error _FS_LOCK must be 0 on read-only cfg.
|
|
144:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
145:../../../Source/third_party/fatfs/src/ff.c **** typedef struct {
|
|
146:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs; /* File ID 1, volume (NULL:blank entry) */
|
|
147:../../../Source/third_party/fatfs/src/ff.c **** DWORD clu; /* File ID 2, directory */
|
|
148:../../../Source/third_party/fatfs/src/ff.c **** WORD idx; /* File ID 3, directory index */
|
|
149:../../../Source/third_party/fatfs/src/ff.c **** WORD ctr; /* File open counter, 0:none, 0x01..0xFF:read open count, 0x100:write mode */
|
|
150:../../../Source/third_party/fatfs/src/ff.c **** } FILESEM;
|
|
151:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
152:../../../Source/third_party/fatfs/src/ff.c ****
|
|
153:../../../Source/third_party/fatfs/src/ff.c ****
|
|
154:../../../Source/third_party/fatfs/src/ff.c ****
|
|
155:../../../Source/third_party/fatfs/src/ff.c **** /* DBCS code ranges and SBCS extend char conversion table */
|
|
156:../../../Source/third_party/fatfs/src/ff.c ****
|
|
157:../../../Source/third_party/fatfs/src/ff.c **** #if _CODE_PAGE == 932 /* Japanese Shift-JIS */
|
|
158:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0x81 /* DBC 1st byte range 1 start */
|
|
159:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1E 0x9F /* DBC 1st byte range 1 end */
|
|
160:../../../Source/third_party/fatfs/src/ff.c **** #define _DF2S 0xE0 /* DBC 1st byte range 2 start */
|
|
161:../../../Source/third_party/fatfs/src/ff.c **** #define _DF2E 0xFC /* DBC 1st byte range 2 end */
|
|
162:../../../Source/third_party/fatfs/src/ff.c **** #define _DS1S 0x40 /* DBC 2nd byte range 1 start */
|
|
163:../../../Source/third_party/fatfs/src/ff.c **** #define _DS1E 0x7E /* DBC 2nd byte range 1 end */
|
|
164:../../../Source/third_party/fatfs/src/ff.c **** #define _DS2S 0x80 /* DBC 2nd byte range 2 start */
|
|
165:../../../Source/third_party/fatfs/src/ff.c **** #define _DS2E 0xFC /* DBC 2nd byte range 2 end */
|
|
166:../../../Source/third_party/fatfs/src/ff.c ****
|
|
167:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 936 /* Simplified Chinese GBK */
|
|
168:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0x81
|
|
169:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1E 0xFE
|
|
170:../../../Source/third_party/fatfs/src/ff.c **** #define _DS1S 0x40
|
|
171:../../../Source/third_party/fatfs/src/ff.c **** #define _DS1E 0x7E
|
|
172:../../../Source/third_party/fatfs/src/ff.c **** #define _DS2S 0x80
|
|
173:../../../Source/third_party/fatfs/src/ff.c **** #define _DS2E 0xFE
|
|
174:../../../Source/third_party/fatfs/src/ff.c ****
|
|
175:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 949 /* Korean */
|
|
176:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0x81
|
|
177:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1E 0xFE
|
|
178:../../../Source/third_party/fatfs/src/ff.c **** #define _DS1S 0x41
|
|
179:../../../Source/third_party/fatfs/src/ff.c **** #define _DS1E 0x5A
|
|
180:../../../Source/third_party/fatfs/src/ff.c **** #define _DS2S 0x61
|
|
181:../../../Source/third_party/fatfs/src/ff.c **** #define _DS2E 0x7A
|
|
182:../../../Source/third_party/fatfs/src/ff.c **** #define _DS3S 0x81
|
|
183:../../../Source/third_party/fatfs/src/ff.c **** #define _DS3E 0xFE
|
|
184:../../../Source/third_party/fatfs/src/ff.c ****
|
|
185:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 950 /* Traditional Chinese Big5 */
|
|
186:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0x81
|
|
187:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1E 0xFE
|
|
188:../../../Source/third_party/fatfs/src/ff.c **** #define _DS1S 0x40
|
|
189:../../../Source/third_party/fatfs/src/ff.c **** #define _DS1E 0x7E
|
|
190:../../../Source/third_party/fatfs/src/ff.c **** #define _DS2S 0xA1
|
|
191:../../../Source/third_party/fatfs/src/ff.c **** #define _DS2E 0xFE
|
|
192:../../../Source/third_party/fatfs/src/ff.c ****
|
|
193:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 437 /* U.S. (OEM) */
|
|
194:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
195:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x9A,0x90,0x41,0x8E,0x41,0x8F,0x80,0x45,0x45,0x45,0x49,0x49,0x49,0x8E,0x8F,0x9
|
|
196:../../../Source/third_party/fatfs/src/ff.c **** 0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,
|
|
197:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
198:../../../Source/third_party/fatfs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,
|
|
199:../../../Source/third_party/fatfs/src/ff.c ****
|
|
200:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 720 /* Arabic (OEM) */
|
|
201:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
202:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x81,0x45,0x41,0x84,0x41,0x86,0x43,0x45,0x45,0x45,0x49,0x49,0x8D,0x8E,0x8F,0x9
|
|
203:../../../Source/third_party/fatfs/src/ff.c **** 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,
|
|
204:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
205:../../../Source/third_party/fatfs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,
|
|
206:../../../Source/third_party/fatfs/src/ff.c ****
|
|
207:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 737 /* Greek (OEM) */
|
|
208:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
209:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x9
|
|
210:../../../Source/third_party/fatfs/src/ff.c **** 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0xAA,0x92,0x93,0x94,0x95,0x96,0xB0,0xB1,0xB2,
|
|
211:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
212:../../../Source/third_party/fatfs/src/ff.c **** 0x97,0xEA,0xEB,0xEC,0xE4,0xED,0xEE,0xE7,0xE8,0xF1,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,
|
|
213:../../../Source/third_party/fatfs/src/ff.c ****
|
|
214:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 775 /* Baltic (OEM) */
|
|
215:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
216:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x9A,0x91,0xA0,0x8E,0x95,0x8F,0x80,0xAD,0xED,0x8A,0x8A,0xA1,0x8D,0x8E,0x8F,0x9
|
|
217:../../../Source/third_party/fatfs/src/ff.c **** 0xA0,0xA1,0xE0,0xA3,0xA3,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,
|
|
218:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xB5,0xB6,0xB7,
|
|
219:../../../Source/third_party/fatfs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE3,0xE8,0xE8,0xEA,0xEA,0xEE,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,
|
|
220:../../../Source/third_party/fatfs/src/ff.c ****
|
|
221:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 850 /* Multilingual Latin 1 (OEM) */
|
|
222:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
223:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xB7,0x8F,0x80,0xD2,0xD3,0xD4,0xD8,0xD7,0xDE,0x8E,0x8F,0x9
|
|
224:../../../Source/third_party/fatfs/src/ff.c **** 0xB5,0xD6,0xE0,0xE9,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,
|
|
225:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
226:../../../Source/third_party/fatfs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE7,0xE7,0xE9,0xEA,0xEB,0xED,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,
|
|
227:../../../Source/third_party/fatfs/src/ff.c ****
|
|
228:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 852 /* Latin 2 (OEM) */
|
|
229:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
230:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xDE,0x8F,0x80,0x9D,0xD3,0x8A,0x8A,0xD7,0x8D,0x8E,0x8F,0x9
|
|
231:../../../Source/third_party/fatfs/src/ff.c **** 0xB5,0xD6,0xE0,0xE9,0xA4,0xA4,0xA6,0xA6,0xA8,0xA8,0xAA,0x8D,0xAC,0xB8,0xAE,0xAF,0xB0,0xB1,0xB2,
|
|
232:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC6,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD1,0xD1,0xD2,
|
|
233:../../../Source/third_party/fatfs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE3,0xD5,0xE6,0xE6,0xE8,0xE9,0xE8,0xEB,0xED,0xED,0xDD,0xEF,0xF0,0xF1,0xF2,
|
|
234:../../../Source/third_party/fatfs/src/ff.c ****
|
|
235:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 855 /* Cyrillic (OEM) */
|
|
236:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
237:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x81,0x81,0x83,0x83,0x85,0x85,0x87,0x87,0x89,0x89,0x8B,0x8B,0x8D,0x8D,0x8F,0x8F,0x9
|
|
238:../../../Source/third_party/fatfs/src/ff.c **** 0xA1,0xA1,0xA3,0xA3,0xA5,0xA5,0xA7,0xA7,0xA9,0xA9,0xAB,0xAB,0xAD,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,
|
|
239:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD1,0xD1,0xD3,
|
|
240:../../../Source/third_party/fatfs/src/ff.c **** 0xE0,0xE2,0xE2,0xE4,0xE4,0xE6,0xE6,0xE8,0xE8,0xEA,0xEA,0xEC,0xEC,0xEE,0xEE,0xEF,0xF0,0xF2,0xF2,
|
|
241:../../../Source/third_party/fatfs/src/ff.c ****
|
|
242:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 857 /* Turkish (OEM) */
|
|
243:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
244:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xB7,0x8F,0x80,0xD2,0xD3,0xD4,0xD8,0xD7,0x98,0x8E,0x8F,0x9
|
|
245:../../../Source/third_party/fatfs/src/ff.c **** 0xB5,0xD6,0xE0,0xE9,0xA5,0xA5,0xA6,0xA6,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,
|
|
246:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
247:../../../Source/third_party/fatfs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xDE,0x59,0xEE,0xEF,0xF0,0xF1,0xF2,
|
|
248:../../../Source/third_party/fatfs/src/ff.c ****
|
|
249:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 858 /* Multilingual Latin 1 + Euro (OEM) */
|
|
250:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
251:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xB7,0x8F,0x80,0xD2,0xD3,0xD4,0xD8,0xD7,0xDE,0x8E,0x8F,0x9
|
|
252:../../../Source/third_party/fatfs/src/ff.c **** 0xB5,0xD6,0xE0,0xE9,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,
|
|
253:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD1,0xD1,0xD2,
|
|
254:../../../Source/third_party/fatfs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE7,0xE7,0xE9,0xEA,0xEB,0xED,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,
|
|
255:../../../Source/third_party/fatfs/src/ff.c ****
|
|
256:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 862 /* Hebrew (OEM) */
|
|
257:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
258:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x9
|
|
259:../../../Source/third_party/fatfs/src/ff.c **** 0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,
|
|
260:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
261:../../../Source/third_party/fatfs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,
|
|
262:../../../Source/third_party/fatfs/src/ff.c ****
|
|
263:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 866 /* Russian (OEM) */
|
|
264:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
265:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x9
|
|
266:../../../Source/third_party/fatfs/src/ff.c **** 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0xB0,0xB1,0xB2,
|
|
267:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
268:../../../Source/third_party/fatfs/src/ff.c **** 0x90,0x91,0x92,0x93,0x9d,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xF0,0xF0,0xF2,
|
|
269:../../../Source/third_party/fatfs/src/ff.c ****
|
|
270:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 874 /* Thai (OEM, Windows) */
|
|
271:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
272:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x9
|
|
273:../../../Source/third_party/fatfs/src/ff.c **** 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,
|
|
274:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
275:../../../Source/third_party/fatfs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,
|
|
276:../../../Source/third_party/fatfs/src/ff.c ****
|
|
277:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 1250 /* Central Europe (Windows) */
|
|
278:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
279:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x9
|
|
280:../../../Source/third_party/fatfs/src/ff.c **** 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,
|
|
281:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
282:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
283:../../../Source/third_party/fatfs/src/ff.c ****
|
|
284:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 1251 /* Cyrillic (Windows) */
|
|
285:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
286:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x81,0x82,0x82,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x8
|
|
287:../../../Source/third_party/fatfs/src/ff.c **** 0xA0,0xA2,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,
|
|
288:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
289:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
290:../../../Source/third_party/fatfs/src/ff.c ****
|
|
291:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 1252 /* Latin 1 (Windows) */
|
|
292:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
293:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x9
|
|
294:../../../Source/third_party/fatfs/src/ff.c **** 0xA0,0x21,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,
|
|
295:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
296:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
297:../../../Source/third_party/fatfs/src/ff.c ****
|
|
298:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 1253 /* Greek (Windows) */
|
|
299:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
300:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x9
|
|
301:../../../Source/third_party/fatfs/src/ff.c **** 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,
|
|
302:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
303:../../../Source/third_party/fatfs/src/ff.c **** 0xE0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xF2,
|
|
304:../../../Source/third_party/fatfs/src/ff.c ****
|
|
305:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 1254 /* Turkish (Windows) */
|
|
306:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
307:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x9
|
|
308:../../../Source/third_party/fatfs/src/ff.c **** 0xA0,0x21,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,
|
|
309:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
310:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
311:../../../Source/third_party/fatfs/src/ff.c ****
|
|
312:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 1255 /* Hebrew (Windows) */
|
|
313:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
314:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x9
|
|
315:../../../Source/third_party/fatfs/src/ff.c **** 0xA0,0x21,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,
|
|
316:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
317:../../../Source/third_party/fatfs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,
|
|
318:../../../Source/third_party/fatfs/src/ff.c ****
|
|
319:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 1256 /* Arabic (Windows) */
|
|
320:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
321:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x9
|
|
322:../../../Source/third_party/fatfs/src/ff.c **** 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,
|
|
323:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
324:../../../Source/third_party/fatfs/src/ff.c **** 0x41,0xE1,0x41,0xE3,0xE4,0xE5,0xE6,0x43,0x45,0x45,0x45,0x45,0xEC,0xED,0x49,0x49,0xF0,0xF1,0xF2,
|
|
325:../../../Source/third_party/fatfs/src/ff.c ****
|
|
326:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 1257 /* Baltic (Windows) */
|
|
327:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
328:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x9
|
|
329:../../../Source/third_party/fatfs/src/ff.c **** 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,
|
|
330:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
331:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
332:../../../Source/third_party/fatfs/src/ff.c ****
|
|
333:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 1258 /* Vietnam (OEM, Windows) */
|
|
334:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
335:../../../Source/third_party/fatfs/src/ff.c **** #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x9
|
|
336:../../../Source/third_party/fatfs/src/ff.c **** 0xA0,0x21,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,
|
|
337:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
|
338:../../../Source/third_party/fatfs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xEC,0xCD,0xCE,0xCF,0xD0,0xD1,0xF2,
|
|
339:../../../Source/third_party/fatfs/src/ff.c ****
|
|
340:../../../Source/third_party/fatfs/src/ff.c **** #elif _CODE_PAGE == 1 /* ASCII (for only non-LFN cfg) */
|
|
341:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN
|
|
342:../../../Source/third_party/fatfs/src/ff.c **** #error Cannot use LFN feature without valid code page.
|
|
343:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
344:../../../Source/third_party/fatfs/src/ff.c **** #define _DF1S 0
|
|
345:../../../Source/third_party/fatfs/src/ff.c ****
|
|
346:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
347:../../../Source/third_party/fatfs/src/ff.c **** #error Unknown code page
|
|
348:../../../Source/third_party/fatfs/src/ff.c ****
|
|
349:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
350:../../../Source/third_party/fatfs/src/ff.c ****
|
|
351:../../../Source/third_party/fatfs/src/ff.c ****
|
|
352:../../../Source/third_party/fatfs/src/ff.c **** /* Character code support macros */
|
|
353:../../../Source/third_party/fatfs/src/ff.c **** #define IsUpper(c) (((c)>='A')&&((c)<='Z'))
|
|
354:../../../Source/third_party/fatfs/src/ff.c **** #define IsLower(c) (((c)>='a')&&((c)<='z'))
|
|
355:../../../Source/third_party/fatfs/src/ff.c **** #define IsDigit(c) (((c)>='0')&&((c)<='9'))
|
|
356:../../../Source/third_party/fatfs/src/ff.c ****
|
|
357:../../../Source/third_party/fatfs/src/ff.c **** #if _DF1S /* Code page is DBCS */
|
|
358:../../../Source/third_party/fatfs/src/ff.c ****
|
|
359:../../../Source/third_party/fatfs/src/ff.c **** #ifdef _DF2S /* Two 1st byte areas */
|
|
360:../../../Source/third_party/fatfs/src/ff.c **** #define IsDBCS1(c) (((BYTE)(c) >= _DF1S && (BYTE)(c) <= _DF1E) || ((BYTE)(c) >= _DF2S && (BYTE)(c)
|
|
361:../../../Source/third_party/fatfs/src/ff.c **** #else /* One 1st byte area */
|
|
362:../../../Source/third_party/fatfs/src/ff.c **** #define IsDBCS1(c) ((BYTE)(c) >= _DF1S && (BYTE)(c) <= _DF1E)
|
|
363:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
364:../../../Source/third_party/fatfs/src/ff.c ****
|
|
365:../../../Source/third_party/fatfs/src/ff.c **** #ifdef _DS3S /* Three 2nd byte areas */
|
|
366:../../../Source/third_party/fatfs/src/ff.c **** #define IsDBCS2(c) (((BYTE)(c) >= _DS1S && (BYTE)(c) <= _DS1E) || ((BYTE)(c) >= _DS2S && (BYTE)(c)
|
|
367:../../../Source/third_party/fatfs/src/ff.c **** #else /* Two 2nd byte areas */
|
|
368:../../../Source/third_party/fatfs/src/ff.c **** #define IsDBCS2(c) (((BYTE)(c) >= _DS1S && (BYTE)(c) <= _DS1E) || ((BYTE)(c) >= _DS2S && (BYTE)(c)
|
|
369:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
370:../../../Source/third_party/fatfs/src/ff.c ****
|
|
371:../../../Source/third_party/fatfs/src/ff.c **** #else /* Code page is SBCS */
|
|
372:../../../Source/third_party/fatfs/src/ff.c ****
|
|
373:../../../Source/third_party/fatfs/src/ff.c **** #define IsDBCS1(c) 0
|
|
374:../../../Source/third_party/fatfs/src/ff.c **** #define IsDBCS2(c) 0
|
|
375:../../../Source/third_party/fatfs/src/ff.c ****
|
|
376:../../../Source/third_party/fatfs/src/ff.c **** #endif /* _DF1S */
|
|
377:../../../Source/third_party/fatfs/src/ff.c ****
|
|
378:../../../Source/third_party/fatfs/src/ff.c ****
|
|
379:../../../Source/third_party/fatfs/src/ff.c **** /* Name status flags */
|
|
380:../../../Source/third_party/fatfs/src/ff.c **** #define NS 11 /* Index of name status byte in fn[] */
|
|
381:../../../Source/third_party/fatfs/src/ff.c **** #define NS_LOSS 0x01 /* Out of 8.3 format */
|
|
382:../../../Source/third_party/fatfs/src/ff.c **** #define NS_LFN 0x02 /* Force to create LFN entry */
|
|
383:../../../Source/third_party/fatfs/src/ff.c **** #define NS_LAST 0x04 /* Last segment */
|
|
384:../../../Source/third_party/fatfs/src/ff.c **** #define NS_BODY 0x08 /* Lower case flag (body) */
|
|
385:../../../Source/third_party/fatfs/src/ff.c **** #define NS_EXT 0x10 /* Lower case flag (ext) */
|
|
386:../../../Source/third_party/fatfs/src/ff.c **** #define NS_DOT 0x20 /* Dot entry */
|
|
387:../../../Source/third_party/fatfs/src/ff.c ****
|
|
388:../../../Source/third_party/fatfs/src/ff.c ****
|
|
389:../../../Source/third_party/fatfs/src/ff.c **** /* FAT sub-type boundaries */
|
|
390:../../../Source/third_party/fatfs/src/ff.c **** /* Note that the FAT spec by Microsoft says 4085 but Windows works with 4087! */
|
|
391:../../../Source/third_party/fatfs/src/ff.c **** #define MIN_FAT16 4086 /* Minimum number of clusters for FAT16 */
|
|
392:../../../Source/third_party/fatfs/src/ff.c **** #define MIN_FAT32 65526 /* Minimum number of clusters for FAT32 */
|
|
393:../../../Source/third_party/fatfs/src/ff.c ****
|
|
394:../../../Source/third_party/fatfs/src/ff.c ****
|
|
395:../../../Source/third_party/fatfs/src/ff.c **** /* FatFs refers the members in the FAT structures as byte array instead of
|
|
396:../../../Source/third_party/fatfs/src/ff.c **** / structure member because the structure is not binary compatible between
|
|
397:../../../Source/third_party/fatfs/src/ff.c **** / different platforms */
|
|
398:../../../Source/third_party/fatfs/src/ff.c ****
|
|
399:../../../Source/third_party/fatfs/src/ff.c **** #define BS_jmpBoot 0 /* Jump instruction (3) */
|
|
400:../../../Source/third_party/fatfs/src/ff.c **** #define BS_OEMName 3 /* OEM name (8) */
|
|
401:../../../Source/third_party/fatfs/src/ff.c **** #define BPB_BytsPerSec 11 /* Sector size [byte] (2) */
|
|
402:../../../Source/third_party/fatfs/src/ff.c **** #define BPB_SecPerClus 13 /* Cluster size [sector] (1) */
|
|
403:../../../Source/third_party/fatfs/src/ff.c **** #define BPB_RsvdSecCnt 14 /* Size of reserved area [sector] (2) */
|
|
404:../../../Source/third_party/fatfs/src/ff.c **** #define BPB_NumFATs 16 /* Number of FAT copies (1) */
|
|
405:../../../Source/third_party/fatfs/src/ff.c **** #define BPB_RootEntCnt 17 /* Number of root dir entries for FAT12/16 (2) */
|
|
406:../../../Source/third_party/fatfs/src/ff.c **** #define BPB_TotSec16 19 /* Volume size [sector] (2) */
|
|
407:../../../Source/third_party/fatfs/src/ff.c **** #define BPB_Media 21 /* Media descriptor (1) */
|
|
408:../../../Source/third_party/fatfs/src/ff.c **** #define BPB_FATSz16 22 /* FAT size [sector] (2) */
|
|
409:../../../Source/third_party/fatfs/src/ff.c **** #define BPB_SecPerTrk 24 /* Track size [sector] (2) */
|
|
410:../../../Source/third_party/fatfs/src/ff.c **** #define BPB_NumHeads 26 /* Number of heads (2) */
|
|
411:../../../Source/third_party/fatfs/src/ff.c **** #define BPB_HiddSec 28 /* Number of special hidden sectors (4) */
|
|
412:../../../Source/third_party/fatfs/src/ff.c **** #define BPB_TotSec32 32 /* Volume size [sector] (4) */
|
|
413:../../../Source/third_party/fatfs/src/ff.c **** #define BS_DrvNum 36 /* Physical drive number (2) */
|
|
414:../../../Source/third_party/fatfs/src/ff.c **** #define BS_BootSig 38 /* Extended boot signature (1) */
|
|
415:../../../Source/third_party/fatfs/src/ff.c **** #define BS_VolID 39 /* Volume serial number (4) */
|
|
416:../../../Source/third_party/fatfs/src/ff.c **** #define BS_VolLab 43 /* Volume label (8) */
|
|
417:../../../Source/third_party/fatfs/src/ff.c **** #define BS_FilSysType 54 /* File system type (1) */
|
|
418:../../../Source/third_party/fatfs/src/ff.c **** #define BPB_FATSz32 36 /* FAT size [sector] (4) */
|
|
419:../../../Source/third_party/fatfs/src/ff.c **** #define BPB_ExtFlags 40 /* Extended flags (2) */
|
|
420:../../../Source/third_party/fatfs/src/ff.c **** #define BPB_FSVer 42 /* File system version (2) */
|
|
421:../../../Source/third_party/fatfs/src/ff.c **** #define BPB_RootClus 44 /* Root dir first cluster (4) */
|
|
422:../../../Source/third_party/fatfs/src/ff.c **** #define BPB_FSInfo 48 /* Offset of FSInfo sector (2) */
|
|
423:../../../Source/third_party/fatfs/src/ff.c **** #define BPB_BkBootSec 50 /* Offset of backup boot sector (2) */
|
|
424:../../../Source/third_party/fatfs/src/ff.c **** #define BS_DrvNum32 64 /* Physical drive number (2) */
|
|
425:../../../Source/third_party/fatfs/src/ff.c **** #define BS_BootSig32 66 /* Extended boot signature (1) */
|
|
426:../../../Source/third_party/fatfs/src/ff.c **** #define BS_VolID32 67 /* Volume serial number (4) */
|
|
427:../../../Source/third_party/fatfs/src/ff.c **** #define BS_VolLab32 71 /* Volume label (8) */
|
|
428:../../../Source/third_party/fatfs/src/ff.c **** #define BS_FilSysType32 82 /* File system type (1) */
|
|
429:../../../Source/third_party/fatfs/src/ff.c **** #define FSI_LeadSig 0 /* FSI: Leading signature (4) */
|
|
430:../../../Source/third_party/fatfs/src/ff.c **** #define FSI_StrucSig 484 /* FSI: Structure signature (4) */
|
|
431:../../../Source/third_party/fatfs/src/ff.c **** #define FSI_Free_Count 488 /* FSI: Number of free clusters (4) */
|
|
432:../../../Source/third_party/fatfs/src/ff.c **** #define FSI_Nxt_Free 492 /* FSI: Last allocated cluster (4) */
|
|
433:../../../Source/third_party/fatfs/src/ff.c **** #define MBR_Table 446 /* MBR: Partition table offset (2) */
|
|
434:../../../Source/third_party/fatfs/src/ff.c **** #define SZ_PTE 16 /* MBR: Size of a partition table entry */
|
|
435:../../../Source/third_party/fatfs/src/ff.c **** #define BS_55AA 510 /* Boot sector signature (2) */
|
|
436:../../../Source/third_party/fatfs/src/ff.c ****
|
|
437:../../../Source/third_party/fatfs/src/ff.c **** #define DIR_Name 0 /* Short file name (11) */
|
|
438:../../../Source/third_party/fatfs/src/ff.c **** #define DIR_Attr 11 /* Attribute (1) */
|
|
439:../../../Source/third_party/fatfs/src/ff.c **** #define DIR_NTres 12 /* NT flag (1) */
|
|
440:../../../Source/third_party/fatfs/src/ff.c **** #define DIR_CrtTimeTenth 13 /* Created time sub-second (1) */
|
|
441:../../../Source/third_party/fatfs/src/ff.c **** #define DIR_CrtTime 14 /* Created time (2) */
|
|
442:../../../Source/third_party/fatfs/src/ff.c **** #define DIR_CrtDate 16 /* Created date (2) */
|
|
443:../../../Source/third_party/fatfs/src/ff.c **** #define DIR_LstAccDate 18 /* Last accessed date (2) */
|
|
444:../../../Source/third_party/fatfs/src/ff.c **** #define DIR_FstClusHI 20 /* Higher 16-bit of first cluster (2) */
|
|
445:../../../Source/third_party/fatfs/src/ff.c **** #define DIR_WrtTime 22 /* Modified time (2) */
|
|
446:../../../Source/third_party/fatfs/src/ff.c **** #define DIR_WrtDate 24 /* Modified date (2) */
|
|
447:../../../Source/third_party/fatfs/src/ff.c **** #define DIR_FstClusLO 26 /* Lower 16-bit of first cluster (2) */
|
|
448:../../../Source/third_party/fatfs/src/ff.c **** #define DIR_FileSize 28 /* File size (4) */
|
|
449:../../../Source/third_party/fatfs/src/ff.c **** #define LDIR_Ord 0 /* LFN entry order and LLE flag (1) */
|
|
450:../../../Source/third_party/fatfs/src/ff.c **** #define LDIR_Attr 11 /* LFN attribute (1) */
|
|
451:../../../Source/third_party/fatfs/src/ff.c **** #define LDIR_Type 12 /* LFN type (1) */
|
|
452:../../../Source/third_party/fatfs/src/ff.c **** #define LDIR_Chksum 13 /* Sum of corresponding SFN entry */
|
|
453:../../../Source/third_party/fatfs/src/ff.c **** #define LDIR_FstClusLO 26 /* Filled by zero (0) */
|
|
454:../../../Source/third_party/fatfs/src/ff.c **** #define SZ_DIR 32 /* Size of a directory entry */
|
|
455:../../../Source/third_party/fatfs/src/ff.c **** #define LLE 0x40 /* Last long entry flag in LDIR_Ord */
|
|
456:../../../Source/third_party/fatfs/src/ff.c **** #define DDE 0xE5 /* Deleted directory entry mark in DIR_Name[0] */
|
|
457:../../../Source/third_party/fatfs/src/ff.c **** #define NDDE 0x05 /* Replacement of the character collides with DDE */
|
|
458:../../../Source/third_party/fatfs/src/ff.c ****
|
|
459:../../../Source/third_party/fatfs/src/ff.c ****
|
|
460:../../../Source/third_party/fatfs/src/ff.c **** /*------------------------------------------------------------*/
|
|
461:../../../Source/third_party/fatfs/src/ff.c **** /* Module private work area */
|
|
462:../../../Source/third_party/fatfs/src/ff.c **** /*------------------------------------------------------------*/
|
|
463:../../../Source/third_party/fatfs/src/ff.c **** /* Note that uninitialized variables with static duration are
|
|
464:../../../Source/third_party/fatfs/src/ff.c **** / zeroed/nulled at start-up. If not, the compiler or start-up
|
|
465:../../../Source/third_party/fatfs/src/ff.c **** / routine is out of ANSI-C standard.
|
|
466:../../../Source/third_party/fatfs/src/ff.c **** */
|
|
467:../../../Source/third_party/fatfs/src/ff.c ****
|
|
468:../../../Source/third_party/fatfs/src/ff.c **** #if _VOLUMES
|
|
469:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
470:../../../Source/third_party/fatfs/src/ff.c **** FATFS *FatFs[_VOLUMES]; /* Pointer to the file system objects (logical drives) */
|
|
471:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
472:../../../Source/third_party/fatfs/src/ff.c **** #error Number of volumes must not be 0.
|
|
473:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
474:../../../Source/third_party/fatfs/src/ff.c ****
|
|
475:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
476:../../../Source/third_party/fatfs/src/ff.c **** WORD Fsid; /* File system mount ID */
|
|
477:../../../Source/third_party/fatfs/src/ff.c ****
|
|
478:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_RPATH
|
|
479:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
480:../../../Source/third_party/fatfs/src/ff.c **** BYTE CurrVol; /* Current drive */
|
|
481:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
482:../../../Source/third_party/fatfs/src/ff.c ****
|
|
483:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_LOCK
|
|
484:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
485:../../../Source/third_party/fatfs/src/ff.c **** FILESEM Files[_FS_LOCK]; /* File lock semaphores */
|
|
486:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
487:../../../Source/third_party/fatfs/src/ff.c ****
|
|
488:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN == 0 /* No LFN feature */
|
|
489:../../../Source/third_party/fatfs/src/ff.c **** #define DEF_NAMEBUF BYTE sfn[12]
|
|
490:../../../Source/third_party/fatfs/src/ff.c **** #define INIT_BUF(dobj) (dobj).fn = sfn
|
|
491:../../../Source/third_party/fatfs/src/ff.c **** #define FREE_BUF()
|
|
492:../../../Source/third_party/fatfs/src/ff.c ****
|
|
493:../../../Source/third_party/fatfs/src/ff.c **** #elif _USE_LFN == 1 /* LFN feature with static working buffer */
|
|
494:../../../Source/third_party/fatfs/src/ff.c **** static WCHAR LfnBuf[_MAX_LFN+1];
|
|
495:../../../Source/third_party/fatfs/src/ff.c **** #define DEF_NAMEBUF BYTE sfn[12]
|
|
496:../../../Source/third_party/fatfs/src/ff.c **** #define INIT_BUF(dobj) { (dobj).fn = sfn; (dobj).lfn = LfnBuf; }
|
|
497:../../../Source/third_party/fatfs/src/ff.c **** #define FREE_BUF()
|
|
498:../../../Source/third_party/fatfs/src/ff.c ****
|
|
499:../../../Source/third_party/fatfs/src/ff.c **** #elif _USE_LFN == 2 /* LFN feature with dynamic working buffer on the stack */
|
|
500:../../../Source/third_party/fatfs/src/ff.c **** #define DEF_NAMEBUF BYTE sfn[12]; WCHAR lbuf[_MAX_LFN+1]
|
|
501:../../../Source/third_party/fatfs/src/ff.c **** #define INIT_BUF(dobj) { (dobj).fn = sfn; (dobj).lfn = lbuf; }
|
|
502:../../../Source/third_party/fatfs/src/ff.c **** #define FREE_BUF()
|
|
503:../../../Source/third_party/fatfs/src/ff.c ****
|
|
504:../../../Source/third_party/fatfs/src/ff.c **** #elif _USE_LFN == 3 /* LFN feature with dynamic working buffer on the heap */
|
|
505:../../../Source/third_party/fatfs/src/ff.c **** #define DEF_NAMEBUF BYTE sfn[12]; WCHAR *lfn
|
|
506:../../../Source/third_party/fatfs/src/ff.c **** #define INIT_BUF(dobj) { lfn = ff_memalloc((_MAX_LFN + 1) * 2); \
|
|
507:../../../Source/third_party/fatfs/src/ff.c **** if (!lfn) LEAVE_FF((dobj).fs, FR_NOT_ENOUGH_CORE); \
|
|
508:../../../Source/third_party/fatfs/src/ff.c **** (dobj).lfn = lfn; (dobj).fn = sfn; }
|
|
509:../../../Source/third_party/fatfs/src/ff.c **** #define FREE_BUF() ff_memfree(lfn)
|
|
510:../../../Source/third_party/fatfs/src/ff.c ****
|
|
511:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
512:../../../Source/third_party/fatfs/src/ff.c **** #error Wrong LFN configuration.
|
|
513:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
514:../../../Source/third_party/fatfs/src/ff.c ****
|
|
515:../../../Source/third_party/fatfs/src/ff.c ****
|
|
516:../../../Source/third_party/fatfs/src/ff.c **** #ifdef _EXCVT
|
|
517:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
518:../../../Source/third_party/fatfs/src/ff.c **** const BYTE ExCvt[] = _EXCVT; /* Upper conversion table for extended chars */
|
|
519:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
520:../../../Source/third_party/fatfs/src/ff.c ****
|
|
521:../../../Source/third_party/fatfs/src/ff.c ****
|
|
522:../../../Source/third_party/fatfs/src/ff.c ****
|
|
523:../../../Source/third_party/fatfs/src/ff.c ****
|
|
524:../../../Source/third_party/fatfs/src/ff.c ****
|
|
525:../../../Source/third_party/fatfs/src/ff.c ****
|
|
526:../../../Source/third_party/fatfs/src/ff.c **** /*--------------------------------------------------------------------------
|
|
527:../../../Source/third_party/fatfs/src/ff.c ****
|
|
528:../../../Source/third_party/fatfs/src/ff.c **** Module Private Functions
|
|
529:../../../Source/third_party/fatfs/src/ff.c ****
|
|
530:../../../Source/third_party/fatfs/src/ff.c **** ---------------------------------------------------------------------------*/
|
|
531:../../../Source/third_party/fatfs/src/ff.c ****
|
|
532:../../../Source/third_party/fatfs/src/ff.c ****
|
|
533:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
534:../../../Source/third_party/fatfs/src/ff.c **** /* String functions */
|
|
535:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
536:../../../Source/third_party/fatfs/src/ff.c ****
|
|
537:../../../Source/third_party/fatfs/src/ff.c **** /* Copy memory to memory */
|
|
538:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
539:../../../Source/third_party/fatfs/src/ff.c **** void mem_cpy (void* dst, const void* src, UINT cnt) {
|
|
26 .loc 1 539 0
|
|
27 .cfi_startproc
|
|
28 @ args = 0, pretend = 0, frame = 0
|
|
29 @ frame_needed = 0, uses_anonymous_args = 0
|
|
30 @ link register save eliminated.
|
|
31 .LVL0:
|
|
540:../../../Source/third_party/fatfs/src/ff.c **** BYTE *d = (BYTE*)dst;
|
|
541:../../../Source/third_party/fatfs/src/ff.c **** const BYTE *s = (const BYTE*)src;
|
|
542:../../../Source/third_party/fatfs/src/ff.c ****
|
|
543:../../../Source/third_party/fatfs/src/ff.c **** #if _WORD_ACCESS == 1
|
|
544:../../../Source/third_party/fatfs/src/ff.c **** while (cnt >= sizeof (int)) {
|
|
545:../../../Source/third_party/fatfs/src/ff.c **** *(int*)d = *(int*)s;
|
|
546:../../../Source/third_party/fatfs/src/ff.c **** d += sizeof (int); s += sizeof (int);
|
|
547:../../../Source/third_party/fatfs/src/ff.c **** cnt -= sizeof (int);
|
|
548:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
549:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
550:../../../Source/third_party/fatfs/src/ff.c **** while (cnt--)
|
|
32 .loc 1 550 0
|
|
33 0000 3AB1 cbz r2, .L1
|
|
34 0002 0138 subs r0, r0, #1
|
|
35 .LVL1:
|
|
36 0004 8A18 adds r2, r1, r2
|
|
37 .LVL2:
|
|
38 .L3:
|
|
551:../../../Source/third_party/fatfs/src/ff.c **** *d++ = *s++;
|
|
39 .loc 1 551 0
|
|
40 0006 11F8013B ldrb r3, [r1], #1 @ zero_extendqisi2
|
|
41 .LVL3:
|
|
42 000a 00F8013F strb r3, [r0, #1]!
|
|
43 .LVL4:
|
|
550:../../../Source/third_party/fatfs/src/ff.c **** *d++ = *s++;
|
|
44 .loc 1 550 0
|
|
45 000e 9142 cmp r1, r2
|
|
46 0010 F9D1 bne .L3
|
|
47 .LVL5:
|
|
48 .L1:
|
|
49 0012 7047 bx lr
|
|
50 .cfi_endproc
|
|
51 .LFE0:
|
|
53 .section .text.ld_clust,"ax",%progbits
|
|
54 .align 2
|
|
55 .thumb
|
|
56 .thumb_func
|
|
58 ld_clust:
|
|
59 .LFB15:
|
|
552:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
553:../../../Source/third_party/fatfs/src/ff.c ****
|
|
554:../../../Source/third_party/fatfs/src/ff.c **** /* Fill memory */
|
|
555:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
556:../../../Source/third_party/fatfs/src/ff.c **** void mem_set (void* dst, int val, UINT cnt) {
|
|
557:../../../Source/third_party/fatfs/src/ff.c **** BYTE *d = (BYTE*)dst;
|
|
558:../../../Source/third_party/fatfs/src/ff.c ****
|
|
559:../../../Source/third_party/fatfs/src/ff.c **** while (cnt--)
|
|
560:../../../Source/third_party/fatfs/src/ff.c **** *d++ = (BYTE)val;
|
|
561:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
562:../../../Source/third_party/fatfs/src/ff.c ****
|
|
563:../../../Source/third_party/fatfs/src/ff.c **** /* Compare memory to memory */
|
|
564:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
565:../../../Source/third_party/fatfs/src/ff.c **** int mem_cmp (const void* dst, const void* src, UINT cnt) {
|
|
566:../../../Source/third_party/fatfs/src/ff.c **** const BYTE *d = (const BYTE *)dst, *s = (const BYTE *)src;
|
|
567:../../../Source/third_party/fatfs/src/ff.c **** int r = 0;
|
|
568:../../../Source/third_party/fatfs/src/ff.c ****
|
|
569:../../../Source/third_party/fatfs/src/ff.c **** while (cnt-- && (r = *d++ - *s++) == 0) ;
|
|
570:../../../Source/third_party/fatfs/src/ff.c **** return r;
|
|
571:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
572:../../../Source/third_party/fatfs/src/ff.c ****
|
|
573:../../../Source/third_party/fatfs/src/ff.c **** /* Check if chr is contained in the string */
|
|
574:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
575:../../../Source/third_party/fatfs/src/ff.c **** int chk_chr (const char* str, int chr) {
|
|
576:../../../Source/third_party/fatfs/src/ff.c **** while (*str && *str != chr) str++;
|
|
577:../../../Source/third_party/fatfs/src/ff.c **** return *str;
|
|
578:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
579:../../../Source/third_party/fatfs/src/ff.c ****
|
|
580:../../../Source/third_party/fatfs/src/ff.c ****
|
|
581:../../../Source/third_party/fatfs/src/ff.c ****
|
|
582:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
583:../../../Source/third_party/fatfs/src/ff.c **** /* Request/Release grant to access the volume */
|
|
584:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
585:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_REENTRANT
|
|
586:../../../Source/third_party/fatfs/src/ff.c ****
|
|
587:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
588:../../../Source/third_party/fatfs/src/ff.c **** int lock_fs (
|
|
589:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs /* File system object */
|
|
590:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
591:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
592:../../../Source/third_party/fatfs/src/ff.c **** return ff_req_grant(fs->sobj);
|
|
593:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
594:../../../Source/third_party/fatfs/src/ff.c ****
|
|
595:../../../Source/third_party/fatfs/src/ff.c ****
|
|
596:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
597:../../../Source/third_party/fatfs/src/ff.c **** void unlock_fs (
|
|
598:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs, /* File system object */
|
|
599:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res /* Result code to be returned */
|
|
600:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
601:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
602:../../../Source/third_party/fatfs/src/ff.c **** if (fs &&
|
|
603:../../../Source/third_party/fatfs/src/ff.c **** res != FR_NOT_ENABLED &&
|
|
604:../../../Source/third_party/fatfs/src/ff.c **** res != FR_INVALID_DRIVE &&
|
|
605:../../../Source/third_party/fatfs/src/ff.c **** res != FR_INVALID_OBJECT &&
|
|
606:../../../Source/third_party/fatfs/src/ff.c **** res != FR_TIMEOUT) {
|
|
607:../../../Source/third_party/fatfs/src/ff.c **** ff_rel_grant(fs->sobj);
|
|
608:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
609:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
610:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
611:../../../Source/third_party/fatfs/src/ff.c ****
|
|
612:../../../Source/third_party/fatfs/src/ff.c ****
|
|
613:../../../Source/third_party/fatfs/src/ff.c ****
|
|
614:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
615:../../../Source/third_party/fatfs/src/ff.c **** /* File lock control functions */
|
|
616:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
617:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_LOCK
|
|
618:../../../Source/third_party/fatfs/src/ff.c ****
|
|
619:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
620:../../../Source/third_party/fatfs/src/ff.c **** FRESULT chk_lock ( /* Check if the file can be accessed */
|
|
621:../../../Source/third_party/fatfs/src/ff.c **** DIR* dj, /* Directory object pointing the file to be checked */
|
|
622:../../../Source/third_party/fatfs/src/ff.c **** int acc /* Desired access (0:Read, 1:Write, 2:Delete/Rename) */
|
|
623:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
624:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
625:../../../Source/third_party/fatfs/src/ff.c **** UINT i, be;
|
|
626:../../../Source/third_party/fatfs/src/ff.c ****
|
|
627:../../../Source/third_party/fatfs/src/ff.c **** /* Search file semaphore table */
|
|
628:../../../Source/third_party/fatfs/src/ff.c **** for (i = be = 0; i < _FS_LOCK; i++) {
|
|
629:../../../Source/third_party/fatfs/src/ff.c **** if (Files[i].fs) { /* Existing entry */
|
|
630:../../../Source/third_party/fatfs/src/ff.c **** if (Files[i].fs == dj->fs && /* Check if the file matched with an open file */
|
|
631:../../../Source/third_party/fatfs/src/ff.c **** Files[i].clu == dj->sclust &&
|
|
632:../../../Source/third_party/fatfs/src/ff.c **** Files[i].idx == dj->index) break;
|
|
633:../../../Source/third_party/fatfs/src/ff.c **** } else { /* Blank entry */
|
|
634:../../../Source/third_party/fatfs/src/ff.c **** be++;
|
|
635:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
636:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
637:../../../Source/third_party/fatfs/src/ff.c **** if (i == _FS_LOCK) /* The file is not opened */
|
|
638:../../../Source/third_party/fatfs/src/ff.c **** return (be || acc == 2) ? FR_OK : FR_TOO_MANY_OPEN_FILES; /* Is there a blank entry for new file?
|
|
639:../../../Source/third_party/fatfs/src/ff.c ****
|
|
640:../../../Source/third_party/fatfs/src/ff.c **** /* The file has been opened. Reject any open against writing file and all write mode open */
|
|
641:../../../Source/third_party/fatfs/src/ff.c **** return (acc || Files[i].ctr == 0x100) ? FR_LOCKED : FR_OK;
|
|
642:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
643:../../../Source/third_party/fatfs/src/ff.c ****
|
|
644:../../../Source/third_party/fatfs/src/ff.c ****
|
|
645:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
646:../../../Source/third_party/fatfs/src/ff.c **** int enq_lock (void) /* Check if an entry is available for a new file */
|
|
647:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
648:../../../Source/third_party/fatfs/src/ff.c **** UINT i;
|
|
649:../../../Source/third_party/fatfs/src/ff.c ****
|
|
650:../../../Source/third_party/fatfs/src/ff.c **** for (i = 0; i < _FS_LOCK && Files[i].fs; i++) ;
|
|
651:../../../Source/third_party/fatfs/src/ff.c **** return (i == _FS_LOCK) ? 0 : 1;
|
|
652:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
653:../../../Source/third_party/fatfs/src/ff.c ****
|
|
654:../../../Source/third_party/fatfs/src/ff.c ****
|
|
655:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
656:../../../Source/third_party/fatfs/src/ff.c **** UINT inc_lock ( /* Increment file open counter and returns its index (0:int error) */
|
|
657:../../../Source/third_party/fatfs/src/ff.c **** DIR* dj, /* Directory object pointing the file to register or increment */
|
|
658:../../../Source/third_party/fatfs/src/ff.c **** int acc /* Desired access mode (0:Read, !0:Write) */
|
|
659:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
660:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
661:../../../Source/third_party/fatfs/src/ff.c **** UINT i;
|
|
662:../../../Source/third_party/fatfs/src/ff.c ****
|
|
663:../../../Source/third_party/fatfs/src/ff.c ****
|
|
664:../../../Source/third_party/fatfs/src/ff.c **** for (i = 0; i < _FS_LOCK; i++) { /* Find the file */
|
|
665:../../../Source/third_party/fatfs/src/ff.c **** if (Files[i].fs == dj->fs &&
|
|
666:../../../Source/third_party/fatfs/src/ff.c **** Files[i].clu == dj->sclust &&
|
|
667:../../../Source/third_party/fatfs/src/ff.c **** Files[i].idx == dj->index) break;
|
|
668:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
669:../../../Source/third_party/fatfs/src/ff.c ****
|
|
670:../../../Source/third_party/fatfs/src/ff.c **** if (i == _FS_LOCK) { /* Not opened. Register it as new. */
|
|
671:../../../Source/third_party/fatfs/src/ff.c **** for (i = 0; i < _FS_LOCK && Files[i].fs; i++) ;
|
|
672:../../../Source/third_party/fatfs/src/ff.c **** if (i == _FS_LOCK) return 0; /* No space to register (int err) */
|
|
673:../../../Source/third_party/fatfs/src/ff.c **** Files[i].fs = dj->fs;
|
|
674:../../../Source/third_party/fatfs/src/ff.c **** Files[i].clu = dj->sclust;
|
|
675:../../../Source/third_party/fatfs/src/ff.c **** Files[i].idx = dj->index;
|
|
676:../../../Source/third_party/fatfs/src/ff.c **** Files[i].ctr = 0;
|
|
677:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
678:../../../Source/third_party/fatfs/src/ff.c ****
|
|
679:../../../Source/third_party/fatfs/src/ff.c **** if (acc && Files[i].ctr) return 0; /* Access violation (int err) */
|
|
680:../../../Source/third_party/fatfs/src/ff.c ****
|
|
681:../../../Source/third_party/fatfs/src/ff.c **** Files[i].ctr = acc ? 0x100 : Files[i].ctr + 1; /* Set semaphore value */
|
|
682:../../../Source/third_party/fatfs/src/ff.c ****
|
|
683:../../../Source/third_party/fatfs/src/ff.c **** return i + 1;
|
|
684:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
685:../../../Source/third_party/fatfs/src/ff.c ****
|
|
686:../../../Source/third_party/fatfs/src/ff.c ****
|
|
687:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
688:../../../Source/third_party/fatfs/src/ff.c **** FRESULT dec_lock ( /* Decrement file open counter */
|
|
689:../../../Source/third_party/fatfs/src/ff.c **** UINT i /* Semaphore index */
|
|
690:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
691:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
692:../../../Source/third_party/fatfs/src/ff.c **** WORD n;
|
|
693:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
694:../../../Source/third_party/fatfs/src/ff.c ****
|
|
695:../../../Source/third_party/fatfs/src/ff.c ****
|
|
696:../../../Source/third_party/fatfs/src/ff.c **** if (--i < _FS_LOCK) {
|
|
697:../../../Source/third_party/fatfs/src/ff.c **** n = Files[i].ctr;
|
|
698:../../../Source/third_party/fatfs/src/ff.c **** if (n == 0x100) n = 0;
|
|
699:../../../Source/third_party/fatfs/src/ff.c **** if (n) n--;
|
|
700:../../../Source/third_party/fatfs/src/ff.c **** Files[i].ctr = n;
|
|
701:../../../Source/third_party/fatfs/src/ff.c **** if (!n) Files[i].fs = 0;
|
|
702:../../../Source/third_party/fatfs/src/ff.c **** res = FR_OK;
|
|
703:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
704:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INT_ERR;
|
|
705:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
706:../../../Source/third_party/fatfs/src/ff.c **** return res;
|
|
707:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
708:../../../Source/third_party/fatfs/src/ff.c ****
|
|
709:../../../Source/third_party/fatfs/src/ff.c ****
|
|
710:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
711:../../../Source/third_party/fatfs/src/ff.c **** void clear_lock ( /* Clear lock entries of the volume */
|
|
712:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs
|
|
713:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
714:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
715:../../../Source/third_party/fatfs/src/ff.c **** UINT i;
|
|
716:../../../Source/third_party/fatfs/src/ff.c ****
|
|
717:../../../Source/third_party/fatfs/src/ff.c **** for (i = 0; i < _FS_LOCK; i++) {
|
|
718:../../../Source/third_party/fatfs/src/ff.c **** if (Files[i].fs == fs) Files[i].fs = 0;
|
|
719:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
720:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
721:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
722:../../../Source/third_party/fatfs/src/ff.c ****
|
|
723:../../../Source/third_party/fatfs/src/ff.c ****
|
|
724:../../../Source/third_party/fatfs/src/ff.c ****
|
|
725:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
726:../../../Source/third_party/fatfs/src/ff.c **** /* Move/Flush disk access window */
|
|
727:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
728:../../../Source/third_party/fatfs/src/ff.c ****
|
|
729:../../../Source/third_party/fatfs/src/ff.c ****
|
|
730:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
731:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
732:../../../Source/third_party/fatfs/src/ff.c **** FRESULT sync_window (
|
|
733:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs /* File system object */
|
|
734:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
735:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
736:../../../Source/third_party/fatfs/src/ff.c **** DWORD wsect;
|
|
737:../../../Source/third_party/fatfs/src/ff.c **** UINT nf;
|
|
738:../../../Source/third_party/fatfs/src/ff.c ****
|
|
739:../../../Source/third_party/fatfs/src/ff.c ****
|
|
740:../../../Source/third_party/fatfs/src/ff.c **** if (fs->wflag) { /* Write back the sector if it is dirty */
|
|
741:../../../Source/third_party/fatfs/src/ff.c **** wsect = fs->winsect; /* Current sector number */
|
|
742:../../../Source/third_party/fatfs/src/ff.c **** if (disk_write(fs->drv, fs->win, wsect, 1) != RES_OK)
|
|
743:../../../Source/third_party/fatfs/src/ff.c **** return FR_DISK_ERR;
|
|
744:../../../Source/third_party/fatfs/src/ff.c **** fs->wflag = 0;
|
|
745:../../../Source/third_party/fatfs/src/ff.c **** if (wsect >= fs->fatbase && wsect < (fs->fatbase + fs->fsize)) { /* In FAT area? */
|
|
746:../../../Source/third_party/fatfs/src/ff.c **** for (nf = fs->n_fats; nf >= 2; nf--) { /* Reflect the change to all FAT copies */
|
|
747:../../../Source/third_party/fatfs/src/ff.c **** wsect += fs->fsize;
|
|
748:../../../Source/third_party/fatfs/src/ff.c **** disk_write(fs->drv, fs->win, wsect, 1);
|
|
749:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
750:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
751:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
752:../../../Source/third_party/fatfs/src/ff.c **** return FR_OK;
|
|
753:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
754:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
755:../../../Source/third_party/fatfs/src/ff.c ****
|
|
756:../../../Source/third_party/fatfs/src/ff.c ****
|
|
757:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
758:../../../Source/third_party/fatfs/src/ff.c **** FRESULT move_window (
|
|
759:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs, /* File system object */
|
|
760:../../../Source/third_party/fatfs/src/ff.c **** DWORD sector /* Sector number to make appearance in the fs->win[] */
|
|
761:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
762:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
763:../../../Source/third_party/fatfs/src/ff.c **** if (sector != fs->winsect) { /* Changed current window */
|
|
764:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
765:../../../Source/third_party/fatfs/src/ff.c **** if (sync_window(fs) != FR_OK)
|
|
766:../../../Source/third_party/fatfs/src/ff.c **** return FR_DISK_ERR;
|
|
767:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
768:../../../Source/third_party/fatfs/src/ff.c **** if (disk_read(fs->drv, fs->win, sector, 1) != RES_OK)
|
|
769:../../../Source/third_party/fatfs/src/ff.c **** return FR_DISK_ERR;
|
|
770:../../../Source/third_party/fatfs/src/ff.c **** fs->winsect = sector;
|
|
771:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
772:../../../Source/third_party/fatfs/src/ff.c ****
|
|
773:../../../Source/third_party/fatfs/src/ff.c **** return FR_OK;
|
|
774:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
775:../../../Source/third_party/fatfs/src/ff.c ****
|
|
776:../../../Source/third_party/fatfs/src/ff.c ****
|
|
777:../../../Source/third_party/fatfs/src/ff.c ****
|
|
778:../../../Source/third_party/fatfs/src/ff.c ****
|
|
779:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
780:../../../Source/third_party/fatfs/src/ff.c **** /* Synchronize file system and strage device */
|
|
781:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
782:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
783:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
784:../../../Source/third_party/fatfs/src/ff.c **** FRESULT sync_fs ( /* FR_OK: successful, FR_DISK_ERR: failed */
|
|
785:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs /* File system object */
|
|
786:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
787:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
788:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
789:../../../Source/third_party/fatfs/src/ff.c ****
|
|
790:../../../Source/third_party/fatfs/src/ff.c ****
|
|
791:../../../Source/third_party/fatfs/src/ff.c **** res = sync_window(fs);
|
|
792:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
793:../../../Source/third_party/fatfs/src/ff.c **** /* Update FSInfo sector if needed */
|
|
794:../../../Source/third_party/fatfs/src/ff.c **** if (fs->fs_type == FS_FAT32 && fs->fsi_flag) {
|
|
795:../../../Source/third_party/fatfs/src/ff.c **** fs->winsect = 0;
|
|
796:../../../Source/third_party/fatfs/src/ff.c **** /* Create FSInfo structure */
|
|
797:../../../Source/third_party/fatfs/src/ff.c **** mem_set(fs->win, 0, 512);
|
|
798:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(fs->win+BS_55AA, 0xAA55);
|
|
799:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(fs->win+FSI_LeadSig, 0x41615252);
|
|
800:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(fs->win+FSI_StrucSig, 0x61417272);
|
|
801:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(fs->win+FSI_Free_Count, fs->free_clust);
|
|
802:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(fs->win+FSI_Nxt_Free, fs->last_clust);
|
|
803:../../../Source/third_party/fatfs/src/ff.c **** /* Write it into the FSInfo sector */
|
|
804:../../../Source/third_party/fatfs/src/ff.c **** disk_write(fs->drv, fs->win, fs->fsi_sector, 1);
|
|
805:../../../Source/third_party/fatfs/src/ff.c **** fs->fsi_flag = 0;
|
|
806:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
807:../../../Source/third_party/fatfs/src/ff.c **** /* Make sure that no pending write process in the physical drive */
|
|
808:../../../Source/third_party/fatfs/src/ff.c **** if (disk_ioctl(fs->drv, CTRL_SYNC, 0) != RES_OK)
|
|
809:../../../Source/third_party/fatfs/src/ff.c **** res = FR_DISK_ERR;
|
|
810:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
811:../../../Source/third_party/fatfs/src/ff.c ****
|
|
812:../../../Source/third_party/fatfs/src/ff.c **** return res;
|
|
813:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
814:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
815:../../../Source/third_party/fatfs/src/ff.c ****
|
|
816:../../../Source/third_party/fatfs/src/ff.c ****
|
|
817:../../../Source/third_party/fatfs/src/ff.c ****
|
|
818:../../../Source/third_party/fatfs/src/ff.c ****
|
|
819:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
820:../../../Source/third_party/fatfs/src/ff.c **** /* Get sector# from cluster# */
|
|
821:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
822:../../../Source/third_party/fatfs/src/ff.c ****
|
|
823:../../../Source/third_party/fatfs/src/ff.c ****
|
|
824:../../../Source/third_party/fatfs/src/ff.c **** DWORD clust2sect ( /* !=0: Sector number, 0: Failed - invalid cluster# */
|
|
825:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs, /* File system object */
|
|
826:../../../Source/third_party/fatfs/src/ff.c **** DWORD clst /* Cluster# to be converted */
|
|
827:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
828:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
829:../../../Source/third_party/fatfs/src/ff.c **** clst -= 2;
|
|
830:../../../Source/third_party/fatfs/src/ff.c **** if (clst >= (fs->n_fatent - 2)) return 0; /* Invalid cluster# */
|
|
831:../../../Source/third_party/fatfs/src/ff.c **** return clst * fs->csize + fs->database;
|
|
832:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
833:../../../Source/third_party/fatfs/src/ff.c ****
|
|
834:../../../Source/third_party/fatfs/src/ff.c ****
|
|
835:../../../Source/third_party/fatfs/src/ff.c ****
|
|
836:../../../Source/third_party/fatfs/src/ff.c ****
|
|
837:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
838:../../../Source/third_party/fatfs/src/ff.c **** /* FAT access - Read value of a FAT entry */
|
|
839:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
840:../../../Source/third_party/fatfs/src/ff.c ****
|
|
841:../../../Source/third_party/fatfs/src/ff.c ****
|
|
842:../../../Source/third_party/fatfs/src/ff.c **** DWORD get_fat ( /* 0xFFFFFFFF:Disk error, 1:Internal error, Else:Cluster status */
|
|
843:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs, /* File system object */
|
|
844:../../../Source/third_party/fatfs/src/ff.c **** DWORD clst /* Cluster# to get the link information */
|
|
845:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
846:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
847:../../../Source/third_party/fatfs/src/ff.c **** UINT wc, bc;
|
|
848:../../../Source/third_party/fatfs/src/ff.c **** BYTE *p;
|
|
849:../../../Source/third_party/fatfs/src/ff.c ****
|
|
850:../../../Source/third_party/fatfs/src/ff.c ****
|
|
851:../../../Source/third_party/fatfs/src/ff.c **** if (clst < 2 || clst >= fs->n_fatent) /* Check range */
|
|
852:../../../Source/third_party/fatfs/src/ff.c **** return 1;
|
|
853:../../../Source/third_party/fatfs/src/ff.c ****
|
|
854:../../../Source/third_party/fatfs/src/ff.c **** switch (fs->fs_type) {
|
|
855:../../../Source/third_party/fatfs/src/ff.c **** case FS_FAT12 :
|
|
856:../../../Source/third_party/fatfs/src/ff.c **** bc = (UINT)clst; bc += bc / 2;
|
|
857:../../../Source/third_party/fatfs/src/ff.c **** if (move_window(fs, fs->fatbase + (bc / SS(fs)))) break;
|
|
858:../../../Source/third_party/fatfs/src/ff.c **** wc = fs->win[bc % SS(fs)]; bc++;
|
|
859:../../../Source/third_party/fatfs/src/ff.c **** if (move_window(fs, fs->fatbase + (bc / SS(fs)))) break;
|
|
860:../../../Source/third_party/fatfs/src/ff.c **** wc |= fs->win[bc % SS(fs)] << 8;
|
|
861:../../../Source/third_party/fatfs/src/ff.c **** return (clst & 1) ? (wc >> 4) : (wc & 0xFFF);
|
|
862:../../../Source/third_party/fatfs/src/ff.c ****
|
|
863:../../../Source/third_party/fatfs/src/ff.c **** case FS_FAT16 :
|
|
864:../../../Source/third_party/fatfs/src/ff.c **** if (move_window(fs, fs->fatbase + (clst / (SS(fs) / 2)))) break;
|
|
865:../../../Source/third_party/fatfs/src/ff.c **** p = &fs->win[clst * 2 % SS(fs)];
|
|
866:../../../Source/third_party/fatfs/src/ff.c **** return LD_WORD(p);
|
|
867:../../../Source/third_party/fatfs/src/ff.c ****
|
|
868:../../../Source/third_party/fatfs/src/ff.c **** case FS_FAT32 :
|
|
869:../../../Source/third_party/fatfs/src/ff.c **** if (move_window(fs, fs->fatbase + (clst / (SS(fs) / 4)))) break;
|
|
870:../../../Source/third_party/fatfs/src/ff.c **** p = &fs->win[clst * 4 % SS(fs)];
|
|
871:../../../Source/third_party/fatfs/src/ff.c **** return LD_DWORD(p) & 0x0FFFFFFF;
|
|
872:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
873:../../../Source/third_party/fatfs/src/ff.c ****
|
|
874:../../../Source/third_party/fatfs/src/ff.c **** return 0xFFFFFFFF; /* An error occurred at the disk I/O layer */
|
|
875:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
876:../../../Source/third_party/fatfs/src/ff.c ****
|
|
877:../../../Source/third_party/fatfs/src/ff.c ****
|
|
878:../../../Source/third_party/fatfs/src/ff.c ****
|
|
879:../../../Source/third_party/fatfs/src/ff.c ****
|
|
880:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
881:../../../Source/third_party/fatfs/src/ff.c **** /* FAT access - Change value of a FAT entry */
|
|
882:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
883:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
884:../../../Source/third_party/fatfs/src/ff.c ****
|
|
885:../../../Source/third_party/fatfs/src/ff.c **** FRESULT put_fat (
|
|
886:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs, /* File system object */
|
|
887:../../../Source/third_party/fatfs/src/ff.c **** DWORD clst, /* Cluster# to be changed in range of 2 to fs->n_fatent - 1 */
|
|
888:../../../Source/third_party/fatfs/src/ff.c **** DWORD val /* New value to mark the cluster */
|
|
889:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
890:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
891:../../../Source/third_party/fatfs/src/ff.c **** UINT bc;
|
|
892:../../../Source/third_party/fatfs/src/ff.c **** BYTE *p;
|
|
893:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
894:../../../Source/third_party/fatfs/src/ff.c ****
|
|
895:../../../Source/third_party/fatfs/src/ff.c ****
|
|
896:../../../Source/third_party/fatfs/src/ff.c **** if (clst < 2 || clst >= fs->n_fatent) { /* Check range */
|
|
897:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INT_ERR;
|
|
898:../../../Source/third_party/fatfs/src/ff.c ****
|
|
899:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
900:../../../Source/third_party/fatfs/src/ff.c **** switch (fs->fs_type) {
|
|
901:../../../Source/third_party/fatfs/src/ff.c **** case FS_FAT12 :
|
|
902:../../../Source/third_party/fatfs/src/ff.c **** bc = (UINT)clst; bc += bc / 2;
|
|
903:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(fs, fs->fatbase + (bc / SS(fs)));
|
|
904:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
905:../../../Source/third_party/fatfs/src/ff.c **** p = &fs->win[bc % SS(fs)];
|
|
906:../../../Source/third_party/fatfs/src/ff.c **** *p = (clst & 1) ? ((*p & 0x0F) | ((BYTE)val << 4)) : (BYTE)val;
|
|
907:../../../Source/third_party/fatfs/src/ff.c **** bc++;
|
|
908:../../../Source/third_party/fatfs/src/ff.c **** fs->wflag = 1;
|
|
909:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(fs, fs->fatbase + (bc / SS(fs)));
|
|
910:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
911:../../../Source/third_party/fatfs/src/ff.c **** p = &fs->win[bc % SS(fs)];
|
|
912:../../../Source/third_party/fatfs/src/ff.c **** *p = (clst & 1) ? (BYTE)(val >> 4) : ((*p & 0xF0) | ((BYTE)(val >> 8) & 0x0F));
|
|
913:../../../Source/third_party/fatfs/src/ff.c **** break;
|
|
914:../../../Source/third_party/fatfs/src/ff.c ****
|
|
915:../../../Source/third_party/fatfs/src/ff.c **** case FS_FAT16 :
|
|
916:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(fs, fs->fatbase + (clst / (SS(fs) / 2)));
|
|
917:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
918:../../../Source/third_party/fatfs/src/ff.c **** p = &fs->win[clst * 2 % SS(fs)];
|
|
919:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(p, (WORD)val);
|
|
920:../../../Source/third_party/fatfs/src/ff.c **** break;
|
|
921:../../../Source/third_party/fatfs/src/ff.c ****
|
|
922:../../../Source/third_party/fatfs/src/ff.c **** case FS_FAT32 :
|
|
923:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(fs, fs->fatbase + (clst / (SS(fs) / 4)));
|
|
924:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
925:../../../Source/third_party/fatfs/src/ff.c **** p = &fs->win[clst * 4 % SS(fs)];
|
|
926:../../../Source/third_party/fatfs/src/ff.c **** val |= LD_DWORD(p) & 0xF0000000;
|
|
927:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(p, val);
|
|
928:../../../Source/third_party/fatfs/src/ff.c **** break;
|
|
929:../../../Source/third_party/fatfs/src/ff.c ****
|
|
930:../../../Source/third_party/fatfs/src/ff.c **** default :
|
|
931:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INT_ERR;
|
|
932:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
933:../../../Source/third_party/fatfs/src/ff.c **** fs->wflag = 1;
|
|
934:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
935:../../../Source/third_party/fatfs/src/ff.c ****
|
|
936:../../../Source/third_party/fatfs/src/ff.c **** return res;
|
|
937:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
938:../../../Source/third_party/fatfs/src/ff.c **** #endif /* !_FS_READONLY */
|
|
939:../../../Source/third_party/fatfs/src/ff.c ****
|
|
940:../../../Source/third_party/fatfs/src/ff.c ****
|
|
941:../../../Source/third_party/fatfs/src/ff.c ****
|
|
942:../../../Source/third_party/fatfs/src/ff.c ****
|
|
943:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
944:../../../Source/third_party/fatfs/src/ff.c **** /* FAT handling - Remove a cluster chain */
|
|
945:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
946:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
947:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
948:../../../Source/third_party/fatfs/src/ff.c **** FRESULT remove_chain (
|
|
949:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs, /* File system object */
|
|
950:../../../Source/third_party/fatfs/src/ff.c **** DWORD clst /* Cluster# to remove a chain from */
|
|
951:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
952:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
953:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
954:../../../Source/third_party/fatfs/src/ff.c **** DWORD nxt;
|
|
955:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_ERASE
|
|
956:../../../Source/third_party/fatfs/src/ff.c **** DWORD scl = clst, ecl = clst, rt[2];
|
|
957:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
958:../../../Source/third_party/fatfs/src/ff.c ****
|
|
959:../../../Source/third_party/fatfs/src/ff.c **** if (clst < 2 || clst >= fs->n_fatent) { /* Check range */
|
|
960:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INT_ERR;
|
|
961:../../../Source/third_party/fatfs/src/ff.c ****
|
|
962:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
963:../../../Source/third_party/fatfs/src/ff.c **** res = FR_OK;
|
|
964:../../../Source/third_party/fatfs/src/ff.c **** while (clst < fs->n_fatent) { /* Not a last link? */
|
|
965:../../../Source/third_party/fatfs/src/ff.c **** nxt = get_fat(fs, clst); /* Get cluster status */
|
|
966:../../../Source/third_party/fatfs/src/ff.c **** if (nxt == 0) break; /* Empty cluster? */
|
|
967:../../../Source/third_party/fatfs/src/ff.c **** if (nxt == 1) { res = FR_INT_ERR; break; } /* Internal error? */
|
|
968:../../../Source/third_party/fatfs/src/ff.c **** if (nxt == 0xFFFFFFFF) { res = FR_DISK_ERR; break; } /* Disk error? */
|
|
969:../../../Source/third_party/fatfs/src/ff.c **** res = put_fat(fs, clst, 0); /* Mark the cluster "empty" */
|
|
970:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
971:../../../Source/third_party/fatfs/src/ff.c **** if (fs->free_clust != 0xFFFFFFFF) { /* Update FSInfo */
|
|
972:../../../Source/third_party/fatfs/src/ff.c **** fs->free_clust++;
|
|
973:../../../Source/third_party/fatfs/src/ff.c **** fs->fsi_flag = 1;
|
|
974:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
975:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_ERASE
|
|
976:../../../Source/third_party/fatfs/src/ff.c **** if (ecl + 1 == nxt) { /* Is next cluster contiguous? */
|
|
977:../../../Source/third_party/fatfs/src/ff.c **** ecl = nxt;
|
|
978:../../../Source/third_party/fatfs/src/ff.c **** } else { /* End of contiguous clusters */
|
|
979:../../../Source/third_party/fatfs/src/ff.c **** rt[0] = clust2sect(fs, scl); /* Start sector */
|
|
980:../../../Source/third_party/fatfs/src/ff.c **** rt[1] = clust2sect(fs, ecl) + fs->csize - 1; /* End sector */
|
|
981:../../../Source/third_party/fatfs/src/ff.c **** disk_ioctl(fs->drv, CTRL_ERASE_SECTOR, rt); /* Erase the block */
|
|
982:../../../Source/third_party/fatfs/src/ff.c **** scl = ecl = nxt;
|
|
983:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
984:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
985:../../../Source/third_party/fatfs/src/ff.c **** clst = nxt; /* Next cluster */
|
|
986:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
987:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
988:../../../Source/third_party/fatfs/src/ff.c ****
|
|
989:../../../Source/third_party/fatfs/src/ff.c **** return res;
|
|
990:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
991:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
992:../../../Source/third_party/fatfs/src/ff.c ****
|
|
993:../../../Source/third_party/fatfs/src/ff.c ****
|
|
994:../../../Source/third_party/fatfs/src/ff.c ****
|
|
995:../../../Source/third_party/fatfs/src/ff.c ****
|
|
996:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
997:../../../Source/third_party/fatfs/src/ff.c **** /* FAT handling - Stretch or Create a cluster chain */
|
|
998:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
999:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
1000:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
1001:../../../Source/third_party/fatfs/src/ff.c **** DWORD create_chain ( /* 0:No free cluster, 1:Internal error, 0xFFFFFFFF:Disk error, >=2:New cluster
|
|
1002:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs, /* File system object */
|
|
1003:../../../Source/third_party/fatfs/src/ff.c **** DWORD clst /* Cluster# to stretch. 0 means create a new chain. */
|
|
1004:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
1005:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
1006:../../../Source/third_party/fatfs/src/ff.c **** DWORD cs, ncl, scl;
|
|
1007:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
1008:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1009:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1010:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0) { /* Create a new chain */
|
|
1011:../../../Source/third_party/fatfs/src/ff.c **** scl = fs->last_clust; /* Get suggested start point */
|
|
1012:../../../Source/third_party/fatfs/src/ff.c **** if (!scl || scl >= fs->n_fatent) scl = 1;
|
|
1013:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1014:../../../Source/third_party/fatfs/src/ff.c **** else { /* Stretch the current chain */
|
|
1015:../../../Source/third_party/fatfs/src/ff.c **** cs = get_fat(fs, clst); /* Check the cluster status */
|
|
1016:../../../Source/third_party/fatfs/src/ff.c **** if (cs < 2) return 1; /* It is an invalid cluster */
|
|
1017:../../../Source/third_party/fatfs/src/ff.c **** if (cs < fs->n_fatent) return cs; /* It is already followed by next cluster */
|
|
1018:../../../Source/third_party/fatfs/src/ff.c **** scl = clst;
|
|
1019:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1020:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1021:../../../Source/third_party/fatfs/src/ff.c **** ncl = scl; /* Start cluster */
|
|
1022:../../../Source/third_party/fatfs/src/ff.c **** for (;;) {
|
|
1023:../../../Source/third_party/fatfs/src/ff.c **** ncl++; /* Next cluster */
|
|
1024:../../../Source/third_party/fatfs/src/ff.c **** if (ncl >= fs->n_fatent) { /* Wrap around */
|
|
1025:../../../Source/third_party/fatfs/src/ff.c **** ncl = 2;
|
|
1026:../../../Source/third_party/fatfs/src/ff.c **** if (ncl > scl) return 0; /* No free cluster */
|
|
1027:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1028:../../../Source/third_party/fatfs/src/ff.c **** cs = get_fat(fs, ncl); /* Get the cluster status */
|
|
1029:../../../Source/third_party/fatfs/src/ff.c **** if (cs == 0) break; /* Found a free cluster */
|
|
1030:../../../Source/third_party/fatfs/src/ff.c **** if (cs == 0xFFFFFFFF || cs == 1)/* An error occurred */
|
|
1031:../../../Source/third_party/fatfs/src/ff.c **** return cs;
|
|
1032:../../../Source/third_party/fatfs/src/ff.c **** if (ncl == scl) return 0; /* No free cluster */
|
|
1033:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1034:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1035:../../../Source/third_party/fatfs/src/ff.c **** res = put_fat(fs, ncl, 0x0FFFFFFF); /* Mark the new cluster "last link" */
|
|
1036:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK && clst != 0) {
|
|
1037:../../../Source/third_party/fatfs/src/ff.c **** res = put_fat(fs, clst, ncl); /* Link it to the previous one if needed */
|
|
1038:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1039:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
1040:../../../Source/third_party/fatfs/src/ff.c **** fs->last_clust = ncl; /* Update FSINFO */
|
|
1041:../../../Source/third_party/fatfs/src/ff.c **** if (fs->free_clust != 0xFFFFFFFF) {
|
|
1042:../../../Source/third_party/fatfs/src/ff.c **** fs->free_clust--;
|
|
1043:../../../Source/third_party/fatfs/src/ff.c **** fs->fsi_flag = 1;
|
|
1044:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1045:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
1046:../../../Source/third_party/fatfs/src/ff.c **** ncl = (res == FR_DISK_ERR) ? 0xFFFFFFFF : 1;
|
|
1047:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1048:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1049:../../../Source/third_party/fatfs/src/ff.c **** return ncl; /* Return new cluster number or error code */
|
|
1050:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1051:../../../Source/third_party/fatfs/src/ff.c **** #endif /* !_FS_READONLY */
|
|
1052:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1053:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1054:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1055:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1056:../../../Source/third_party/fatfs/src/ff.c **** /* FAT handling - Convert offset into cluster with link map table */
|
|
1057:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1058:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1059:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_FASTSEEK
|
|
1060:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
1061:../../../Source/third_party/fatfs/src/ff.c **** DWORD clmt_clust ( /* <2:Error, >=2:Cluster number */
|
|
1062:../../../Source/third_party/fatfs/src/ff.c **** FIL* fp, /* Pointer to the file object */
|
|
1063:../../../Source/third_party/fatfs/src/ff.c **** DWORD ofs /* File offset to be converted to cluster# */
|
|
1064:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
1065:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
1066:../../../Source/third_party/fatfs/src/ff.c **** DWORD cl, ncl, *tbl;
|
|
1067:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1068:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1069:../../../Source/third_party/fatfs/src/ff.c **** tbl = fp->cltbl + 1; /* Top of CLMT */
|
|
1070:../../../Source/third_party/fatfs/src/ff.c **** cl = ofs / SS(fp->fs) / fp->fs->csize; /* Cluster order from top of the file */
|
|
1071:../../../Source/third_party/fatfs/src/ff.c **** for (;;) {
|
|
1072:../../../Source/third_party/fatfs/src/ff.c **** ncl = *tbl++; /* Number of cluters in the fragment */
|
|
1073:../../../Source/third_party/fatfs/src/ff.c **** if (!ncl) return 0; /* End of table? (error) */
|
|
1074:../../../Source/third_party/fatfs/src/ff.c **** if (cl < ncl) break; /* In this fragment? */
|
|
1075:../../../Source/third_party/fatfs/src/ff.c **** cl -= ncl; tbl++; /* Next fragment */
|
|
1076:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1077:../../../Source/third_party/fatfs/src/ff.c **** return cl + *tbl; /* Return the cluster number */
|
|
1078:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1079:../../../Source/third_party/fatfs/src/ff.c **** #endif /* _USE_FASTSEEK */
|
|
1080:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1081:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1082:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1083:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1084:../../../Source/third_party/fatfs/src/ff.c **** /* Directory handling - Set directory index */
|
|
1085:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1086:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1087:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
1088:../../../Source/third_party/fatfs/src/ff.c **** FRESULT dir_sdi (
|
|
1089:../../../Source/third_party/fatfs/src/ff.c **** DIR *dj, /* Pointer to directory object */
|
|
1090:../../../Source/third_party/fatfs/src/ff.c **** WORD idx /* Index of directory table */
|
|
1091:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
1092:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
1093:../../../Source/third_party/fatfs/src/ff.c **** DWORD clst;
|
|
1094:../../../Source/third_party/fatfs/src/ff.c **** WORD ic;
|
|
1095:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1096:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1097:../../../Source/third_party/fatfs/src/ff.c **** dj->index = idx;
|
|
1098:../../../Source/third_party/fatfs/src/ff.c **** clst = dj->sclust;
|
|
1099:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 1 || clst >= dj->fs->n_fatent) /* Check start cluster range */
|
|
1100:../../../Source/third_party/fatfs/src/ff.c **** return FR_INT_ERR;
|
|
1101:../../../Source/third_party/fatfs/src/ff.c **** if (!clst && dj->fs->fs_type == FS_FAT32) /* Replace cluster# 0 with root cluster# if in FAT32 */
|
|
1102:../../../Source/third_party/fatfs/src/ff.c **** clst = dj->fs->dirbase;
|
|
1103:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1104:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0) { /* Static table (root-dir in FAT12/16) */
|
|
1105:../../../Source/third_party/fatfs/src/ff.c **** dj->clust = clst;
|
|
1106:../../../Source/third_party/fatfs/src/ff.c **** if (idx >= dj->fs->n_rootdir) /* Index is out of range */
|
|
1107:../../../Source/third_party/fatfs/src/ff.c **** return FR_INT_ERR;
|
|
1108:../../../Source/third_party/fatfs/src/ff.c **** dj->sect = dj->fs->dirbase + idx / (SS(dj->fs) / SZ_DIR); /* Sector# */
|
|
1109:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1110:../../../Source/third_party/fatfs/src/ff.c **** else { /* Dynamic table (sub-dirs or root-dir in FAT32) */
|
|
1111:../../../Source/third_party/fatfs/src/ff.c **** ic = SS(dj->fs) / SZ_DIR * dj->fs->csize; /* Entries per cluster */
|
|
1112:../../../Source/third_party/fatfs/src/ff.c **** while (idx >= ic) { /* Follow cluster chain */
|
|
1113:../../../Source/third_party/fatfs/src/ff.c **** clst = get_fat(dj->fs, clst); /* Get next cluster */
|
|
1114:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */
|
|
1115:../../../Source/third_party/fatfs/src/ff.c **** if (clst < 2 || clst >= dj->fs->n_fatent) /* Reached to end of table or int error */
|
|
1116:../../../Source/third_party/fatfs/src/ff.c **** return FR_INT_ERR;
|
|
1117:../../../Source/third_party/fatfs/src/ff.c **** idx -= ic;
|
|
1118:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1119:../../../Source/third_party/fatfs/src/ff.c **** dj->clust = clst;
|
|
1120:../../../Source/third_party/fatfs/src/ff.c **** dj->sect = clust2sect(dj->fs, clst) + idx / (SS(dj->fs) / SZ_DIR); /* Sector# */
|
|
1121:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1122:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1123:../../../Source/third_party/fatfs/src/ff.c **** dj->dir = dj->fs->win + (idx % (SS(dj->fs) / SZ_DIR)) * SZ_DIR; /* Ptr to the entry in the sector
|
|
1124:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1125:../../../Source/third_party/fatfs/src/ff.c **** return FR_OK; /* Seek succeeded */
|
|
1126:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1127:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1128:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1129:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1130:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1131:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1132:../../../Source/third_party/fatfs/src/ff.c **** /* Directory handling - Move directory table index next */
|
|
1133:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1134:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1135:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
1136:../../../Source/third_party/fatfs/src/ff.c **** FRESULT dir_next ( /* FR_OK:Succeeded, FR_NO_FILE:End of table, FR_DENIED:Could not stretch */
|
|
1137:../../../Source/third_party/fatfs/src/ff.c **** DIR *dj, /* Pointer to the directory object */
|
|
1138:../../../Source/third_party/fatfs/src/ff.c **** int stretch /* 0: Do not stretch table, 1: Stretch table if needed */
|
|
1139:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
1140:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
1141:../../../Source/third_party/fatfs/src/ff.c **** DWORD clst;
|
|
1142:../../../Source/third_party/fatfs/src/ff.c **** WORD i;
|
|
1143:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1144:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1145:../../../Source/third_party/fatfs/src/ff.c **** stretch = stretch; /* To suppress warning on read-only cfg. */
|
|
1146:../../../Source/third_party/fatfs/src/ff.c **** i = dj->index + 1;
|
|
1147:../../../Source/third_party/fatfs/src/ff.c **** if (!i || !dj->sect) /* Report EOT when index has reached 65535 */
|
|
1148:../../../Source/third_party/fatfs/src/ff.c **** return FR_NO_FILE;
|
|
1149:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1150:../../../Source/third_party/fatfs/src/ff.c **** if (!(i % (SS(dj->fs) / SZ_DIR))) { /* Sector changed? */
|
|
1151:../../../Source/third_party/fatfs/src/ff.c **** dj->sect++; /* Next sector */
|
|
1152:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1153:../../../Source/third_party/fatfs/src/ff.c **** if (dj->clust == 0) { /* Static table */
|
|
1154:../../../Source/third_party/fatfs/src/ff.c **** if (i >= dj->fs->n_rootdir) /* Report EOT when end of table */
|
|
1155:../../../Source/third_party/fatfs/src/ff.c **** return FR_NO_FILE;
|
|
1156:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1157:../../../Source/third_party/fatfs/src/ff.c **** else { /* Dynamic table */
|
|
1158:../../../Source/third_party/fatfs/src/ff.c **** if (((i / (SS(dj->fs) / SZ_DIR)) & (dj->fs->csize - 1)) == 0) { /* Cluster changed? */
|
|
1159:../../../Source/third_party/fatfs/src/ff.c **** clst = get_fat(dj->fs, dj->clust); /* Get next cluster */
|
|
1160:../../../Source/third_party/fatfs/src/ff.c **** if (clst <= 1) return FR_INT_ERR;
|
|
1161:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR;
|
|
1162:../../../Source/third_party/fatfs/src/ff.c **** if (clst >= dj->fs->n_fatent) { /* When it reached end of dynamic table */
|
|
1163:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
1164:../../../Source/third_party/fatfs/src/ff.c **** BYTE c;
|
|
1165:../../../Source/third_party/fatfs/src/ff.c **** if (!stretch) return FR_NO_FILE; /* When do not stretch, report EOT */
|
|
1166:../../../Source/third_party/fatfs/src/ff.c **** clst = create_chain(dj->fs, dj->clust); /* Stretch cluster chain */
|
|
1167:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0) return FR_DENIED; /* No free cluster */
|
|
1168:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 1) return FR_INT_ERR;
|
|
1169:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR;
|
|
1170:../../../Source/third_party/fatfs/src/ff.c **** /* Clean-up stretched table */
|
|
1171:../../../Source/third_party/fatfs/src/ff.c **** if (sync_window(dj->fs)) return FR_DISK_ERR; /* Flush active window */
|
|
1172:../../../Source/third_party/fatfs/src/ff.c **** mem_set(dj->fs->win, 0, SS(dj->fs)); /* Clear window buffer */
|
|
1173:../../../Source/third_party/fatfs/src/ff.c **** dj->fs->winsect = clust2sect(dj->fs, clst); /* Cluster start sector */
|
|
1174:../../../Source/third_party/fatfs/src/ff.c **** for (c = 0; c < dj->fs->csize; c++) { /* Fill the new cluster with 0 */
|
|
1175:../../../Source/third_party/fatfs/src/ff.c **** dj->fs->wflag = 1;
|
|
1176:../../../Source/third_party/fatfs/src/ff.c **** if (sync_window(dj->fs)) return FR_DISK_ERR;
|
|
1177:../../../Source/third_party/fatfs/src/ff.c **** dj->fs->winsect++;
|
|
1178:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1179:../../../Source/third_party/fatfs/src/ff.c **** dj->fs->winsect -= c; /* Rewind window address */
|
|
1180:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
1181:../../../Source/third_party/fatfs/src/ff.c **** return FR_NO_FILE; /* Report EOT */
|
|
1182:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1183:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1184:../../../Source/third_party/fatfs/src/ff.c **** dj->clust = clst; /* Initialize data for new cluster */
|
|
1185:../../../Source/third_party/fatfs/src/ff.c **** dj->sect = clust2sect(dj->fs, clst);
|
|
1186:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1187:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1188:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1189:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1190:../../../Source/third_party/fatfs/src/ff.c **** dj->index = i;
|
|
1191:../../../Source/third_party/fatfs/src/ff.c **** dj->dir = dj->fs->win + (i % (SS(dj->fs) / SZ_DIR)) * SZ_DIR;
|
|
1192:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1193:../../../Source/third_party/fatfs/src/ff.c **** return FR_OK;
|
|
1194:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1195:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1196:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1197:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1198:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1199:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1200:../../../Source/third_party/fatfs/src/ff.c **** /* Directory handling - Reserve directory entry */
|
|
1201:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1202:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1203:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
1204:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
1205:../../../Source/third_party/fatfs/src/ff.c **** FRESULT dir_alloc (
|
|
1206:../../../Source/third_party/fatfs/src/ff.c **** DIR* dj, /* Pointer to the directory object */
|
|
1207:../../../Source/third_party/fatfs/src/ff.c **** UINT nent /* Number of contiguous entries to allocate (1-21) */
|
|
1208:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
1209:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
1210:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
1211:../../../Source/third_party/fatfs/src/ff.c **** UINT n;
|
|
1212:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1213:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1214:../../../Source/third_party/fatfs/src/ff.c **** res = dir_sdi(dj, 0);
|
|
1215:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
1216:../../../Source/third_party/fatfs/src/ff.c **** n = 0;
|
|
1217:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
1218:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(dj->fs, dj->sect);
|
|
1219:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
1220:../../../Source/third_party/fatfs/src/ff.c **** if (dj->dir[0] == DDE || dj->dir[0] == 0) { /* Is it a blank entry? */
|
|
1221:../../../Source/third_party/fatfs/src/ff.c **** if (++n == nent) break; /* A block of contiguous entry is found */
|
|
1222:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
1223:../../../Source/third_party/fatfs/src/ff.c **** n = 0; /* Not a blank entry. Restart to search */
|
|
1224:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1225:../../../Source/third_party/fatfs/src/ff.c **** res = dir_next(dj, 1); /* Next entry with table stretch enabled */
|
|
1226:../../../Source/third_party/fatfs/src/ff.c **** } while (res == FR_OK);
|
|
1227:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1228:../../../Source/third_party/fatfs/src/ff.c **** return res;
|
|
1229:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1230:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1231:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1232:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1233:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1234:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1235:../../../Source/third_party/fatfs/src/ff.c **** /* Directory handling - Load/Store start cluster number */
|
|
1236:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1237:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1238:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
1239:../../../Source/third_party/fatfs/src/ff.c **** DWORD ld_clust (
|
|
1240:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs, /* Pointer to the fs object */
|
|
1241:../../../Source/third_party/fatfs/src/ff.c **** BYTE *dir /* Pointer to the directory entry */
|
|
1242:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
1243:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
60 .loc 1 1243 0
|
|
61 .cfi_startproc
|
|
62 @ args = 0, pretend = 0, frame = 0
|
|
63 @ frame_needed = 0, uses_anonymous_args = 0
|
|
64 @ link register save eliminated.
|
|
65 .LVL6:
|
|
1244:../../../Source/third_party/fatfs/src/ff.c **** DWORD cl;
|
|
1245:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1246:../../../Source/third_party/fatfs/src/ff.c **** cl = LD_WORD(dir+DIR_FstClusLO);
|
|
66 .loc 1 1246 0
|
|
67 0000 CA7E ldrb r2, [r1, #27] @ zero_extendqisi2
|
|
68 0002 8B7E ldrb r3, [r1, #26] @ zero_extendqisi2
|
|
69 0004 43EA0223 orr r3, r3, r2, lsl #8
|
|
70 .LVL7:
|
|
1247:../../../Source/third_party/fatfs/src/ff.c **** if (fs->fs_type == FS_FAT32)
|
|
71 .loc 1 1247 0
|
|
72 0008 0278 ldrb r2, [r0] @ zero_extendqisi2
|
|
73 000a 032A cmp r2, #3
|
|
74 000c 05D1 bne .L6
|
|
1248:../../../Source/third_party/fatfs/src/ff.c **** cl |= (DWORD)LD_WORD(dir+DIR_FstClusHI) << 16;
|
|
75 .loc 1 1248 0
|
|
76 000e 487D ldrb r0, [r1, #21] @ zero_extendqisi2
|
|
77 .LVL8:
|
|
78 0010 0A7D ldrb r2, [r1, #20] @ zero_extendqisi2
|
|
79 0012 42EA0022 orr r2, r2, r0, lsl #8
|
|
80 0016 43EA0243 orr r3, r3, r2, lsl #16
|
|
81 .LVL9:
|
|
82 .L6:
|
|
1249:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1250:../../../Source/third_party/fatfs/src/ff.c **** return cl;
|
|
1251:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
83 .loc 1 1251 0
|
|
84 001a 1846 mov r0, r3
|
|
85 001c 7047 bx lr
|
|
86 .cfi_endproc
|
|
87 .LFE15:
|
|
89 001e 00BF .section .text.sum_sfn,"ax",%progbits
|
|
90 .align 2
|
|
91 .thumb
|
|
92 .thumb_func
|
|
94 sum_sfn:
|
|
95 .LFB21:
|
|
1252:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1253:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1254:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
1255:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
1256:../../../Source/third_party/fatfs/src/ff.c **** void st_clust (
|
|
1257:../../../Source/third_party/fatfs/src/ff.c **** BYTE *dir, /* Pointer to the directory entry */
|
|
1258:../../../Source/third_party/fatfs/src/ff.c **** DWORD cl /* Value to be set */
|
|
1259:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
1260:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
1261:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(dir+DIR_FstClusLO, cl);
|
|
1262:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(dir+DIR_FstClusHI, cl >> 16);
|
|
1263:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1264:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1265:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1266:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1267:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1268:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1269:../../../Source/third_party/fatfs/src/ff.c **** /* LFN handling - Test/Pick/Fit an LFN segment from/to directory entry */
|
|
1270:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1271:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN
|
|
1272:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
1273:../../../Source/third_party/fatfs/src/ff.c **** const BYTE LfnOfs[] = {1,3,5,7,9,14,16,18,20,22,24,28,30}; /* Offset of LFN chars in the directory
|
|
1274:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1275:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1276:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
1277:../../../Source/third_party/fatfs/src/ff.c **** int cmp_lfn ( /* 1:Matched, 0:Not matched */
|
|
1278:../../../Source/third_party/fatfs/src/ff.c **** WCHAR *lfnbuf, /* Pointer to the LFN to be compared */
|
|
1279:../../../Source/third_party/fatfs/src/ff.c **** BYTE *dir /* Pointer to the directory entry containing a part of LFN */
|
|
1280:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
1281:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
1282:../../../Source/third_party/fatfs/src/ff.c **** UINT i, s;
|
|
1283:../../../Source/third_party/fatfs/src/ff.c **** WCHAR wc, uc;
|
|
1284:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1285:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1286:../../../Source/third_party/fatfs/src/ff.c **** i = ((dir[LDIR_Ord] & ~LLE) - 1) * 13; /* Get offset in the LFN buffer */
|
|
1287:../../../Source/third_party/fatfs/src/ff.c **** s = 0; wc = 1;
|
|
1288:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
1289:../../../Source/third_party/fatfs/src/ff.c **** uc = LD_WORD(dir+LfnOfs[s]); /* Pick an LFN character from the entry */
|
|
1290:../../../Source/third_party/fatfs/src/ff.c **** if (wc) { /* Last char has not been processed */
|
|
1291:../../../Source/third_party/fatfs/src/ff.c **** wc = ff_wtoupper(uc); /* Convert it to upper case */
|
|
1292:../../../Source/third_party/fatfs/src/ff.c **** if (i >= _MAX_LFN || wc != ff_wtoupper(lfnbuf[i++])) /* Compare it */
|
|
1293:../../../Source/third_party/fatfs/src/ff.c **** return 0; /* Not matched */
|
|
1294:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
1295:../../../Source/third_party/fatfs/src/ff.c **** if (uc != 0xFFFF) return 0; /* Check filler */
|
|
1296:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1297:../../../Source/third_party/fatfs/src/ff.c **** } while (++s < 13); /* Repeat until all chars in the entry are checked */
|
|
1298:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1299:../../../Source/third_party/fatfs/src/ff.c **** if ((dir[LDIR_Ord] & LLE) && wc && lfnbuf[i]) /* Last segment matched but different length */
|
|
1300:../../../Source/third_party/fatfs/src/ff.c **** return 0;
|
|
1301:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1302:../../../Source/third_party/fatfs/src/ff.c **** return 1; /* The part of LFN matched */
|
|
1303:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1304:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1305:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1306:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1307:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
1308:../../../Source/third_party/fatfs/src/ff.c **** int pick_lfn ( /* 1:Succeeded, 0:Buffer overflow */
|
|
1309:../../../Source/third_party/fatfs/src/ff.c **** WCHAR *lfnbuf, /* Pointer to the Unicode-LFN buffer */
|
|
1310:../../../Source/third_party/fatfs/src/ff.c **** BYTE *dir /* Pointer to the directory entry */
|
|
1311:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
1312:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
1313:../../../Source/third_party/fatfs/src/ff.c **** UINT i, s;
|
|
1314:../../../Source/third_party/fatfs/src/ff.c **** WCHAR wc, uc;
|
|
1315:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1316:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1317:../../../Source/third_party/fatfs/src/ff.c **** i = ((dir[LDIR_Ord] & 0x3F) - 1) * 13; /* Offset in the LFN buffer */
|
|
1318:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1319:../../../Source/third_party/fatfs/src/ff.c **** s = 0; wc = 1;
|
|
1320:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
1321:../../../Source/third_party/fatfs/src/ff.c **** uc = LD_WORD(dir+LfnOfs[s]); /* Pick an LFN character from the entry */
|
|
1322:../../../Source/third_party/fatfs/src/ff.c **** if (wc) { /* Last char has not been processed */
|
|
1323:../../../Source/third_party/fatfs/src/ff.c **** if (i >= _MAX_LFN) return 0; /* Buffer overflow? */
|
|
1324:../../../Source/third_party/fatfs/src/ff.c **** lfnbuf[i++] = wc = uc; /* Store it */
|
|
1325:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
1326:../../../Source/third_party/fatfs/src/ff.c **** if (uc != 0xFFFF) return 0; /* Check filler */
|
|
1327:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1328:../../../Source/third_party/fatfs/src/ff.c **** } while (++s < 13); /* Read all character in the entry */
|
|
1329:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1330:../../../Source/third_party/fatfs/src/ff.c **** if (dir[LDIR_Ord] & LLE) { /* Put terminator if it is the last LFN part */
|
|
1331:../../../Source/third_party/fatfs/src/ff.c **** if (i >= _MAX_LFN) return 0; /* Buffer overflow? */
|
|
1332:../../../Source/third_party/fatfs/src/ff.c **** lfnbuf[i] = 0;
|
|
1333:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1334:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1335:../../../Source/third_party/fatfs/src/ff.c **** return 1;
|
|
1336:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1337:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1338:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1339:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
1340:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
1341:../../../Source/third_party/fatfs/src/ff.c **** void fit_lfn (
|
|
1342:../../../Source/third_party/fatfs/src/ff.c **** const WCHAR *lfnbuf, /* Pointer to the LFN buffer */
|
|
1343:../../../Source/third_party/fatfs/src/ff.c **** BYTE *dir, /* Pointer to the directory entry */
|
|
1344:../../../Source/third_party/fatfs/src/ff.c **** BYTE ord, /* LFN order (1-20) */
|
|
1345:../../../Source/third_party/fatfs/src/ff.c **** BYTE sum /* SFN sum */
|
|
1346:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
1347:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
1348:../../../Source/third_party/fatfs/src/ff.c **** UINT i, s;
|
|
1349:../../../Source/third_party/fatfs/src/ff.c **** WCHAR wc;
|
|
1350:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1351:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1352:../../../Source/third_party/fatfs/src/ff.c **** dir[LDIR_Chksum] = sum; /* Set check sum */
|
|
1353:../../../Source/third_party/fatfs/src/ff.c **** dir[LDIR_Attr] = AM_LFN; /* Set attribute. LFN entry */
|
|
1354:../../../Source/third_party/fatfs/src/ff.c **** dir[LDIR_Type] = 0;
|
|
1355:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(dir+LDIR_FstClusLO, 0);
|
|
1356:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1357:../../../Source/third_party/fatfs/src/ff.c **** i = (ord - 1) * 13; /* Get offset in the LFN buffer */
|
|
1358:../../../Source/third_party/fatfs/src/ff.c **** s = wc = 0;
|
|
1359:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
1360:../../../Source/third_party/fatfs/src/ff.c **** if (wc != 0xFFFF) wc = lfnbuf[i++]; /* Get an effective char */
|
|
1361:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(dir+LfnOfs[s], wc); /* Put it */
|
|
1362:../../../Source/third_party/fatfs/src/ff.c **** if (!wc) wc = 0xFFFF; /* Padding chars following last char */
|
|
1363:../../../Source/third_party/fatfs/src/ff.c **** } while (++s < 13);
|
|
1364:../../../Source/third_party/fatfs/src/ff.c **** if (wc == 0xFFFF || !lfnbuf[i]) ord |= LLE; /* Bottom LFN part is the start of LFN sequence */
|
|
1365:../../../Source/third_party/fatfs/src/ff.c **** dir[LDIR_Ord] = ord; /* Set the LFN order */
|
|
1366:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1367:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1368:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1369:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1370:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1371:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1372:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1373:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1374:../../../Source/third_party/fatfs/src/ff.c **** /* Create numbered name */
|
|
1375:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1376:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN
|
|
1377:../../../Source/third_party/fatfs/src/ff.c **** void gen_numname (
|
|
1378:../../../Source/third_party/fatfs/src/ff.c **** BYTE *dst, /* Pointer to generated SFN */
|
|
1379:../../../Source/third_party/fatfs/src/ff.c **** const BYTE *src, /* Pointer to source SFN to be modified */
|
|
1380:../../../Source/third_party/fatfs/src/ff.c **** const WCHAR *lfn, /* Pointer to LFN */
|
|
1381:../../../Source/third_party/fatfs/src/ff.c **** WORD seq /* Sequence number */
|
|
1382:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
1383:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
1384:../../../Source/third_party/fatfs/src/ff.c **** BYTE ns[8], c;
|
|
1385:../../../Source/third_party/fatfs/src/ff.c **** UINT i, j;
|
|
1386:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1387:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1388:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(dst, src, 11);
|
|
1389:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1390:../../../Source/third_party/fatfs/src/ff.c **** if (seq > 5) { /* On many collisions, generate a hash number instead of sequential number */
|
|
1391:../../../Source/third_party/fatfs/src/ff.c **** do seq = (seq >> 1) + (seq << 15) + (WORD)*lfn++; while (*lfn);
|
|
1392:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1393:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1394:../../../Source/third_party/fatfs/src/ff.c **** /* itoa (hexdecimal) */
|
|
1395:../../../Source/third_party/fatfs/src/ff.c **** i = 7;
|
|
1396:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
1397:../../../Source/third_party/fatfs/src/ff.c **** c = (seq % 16) + '0';
|
|
1398:../../../Source/third_party/fatfs/src/ff.c **** if (c > '9') c += 7;
|
|
1399:../../../Source/third_party/fatfs/src/ff.c **** ns[i--] = c;
|
|
1400:../../../Source/third_party/fatfs/src/ff.c **** seq /= 16;
|
|
1401:../../../Source/third_party/fatfs/src/ff.c **** } while (seq);
|
|
1402:../../../Source/third_party/fatfs/src/ff.c **** ns[i] = '~';
|
|
1403:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1404:../../../Source/third_party/fatfs/src/ff.c **** /* Append the number */
|
|
1405:../../../Source/third_party/fatfs/src/ff.c **** for (j = 0; j < i && dst[j] != ' '; j++) {
|
|
1406:../../../Source/third_party/fatfs/src/ff.c **** if (IsDBCS1(dst[j])) {
|
|
1407:../../../Source/third_party/fatfs/src/ff.c **** if (j == i - 1) break;
|
|
1408:../../../Source/third_party/fatfs/src/ff.c **** j++;
|
|
1409:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1410:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1411:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
1412:../../../Source/third_party/fatfs/src/ff.c **** dst[j++] = (i < 8) ? ns[i++] : ' ';
|
|
1413:../../../Source/third_party/fatfs/src/ff.c **** } while (j < 8);
|
|
1414:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1415:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1416:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1417:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1418:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1419:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1420:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1421:../../../Source/third_party/fatfs/src/ff.c **** /* Calculate sum of an SFN */
|
|
1422:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1423:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN
|
|
1424:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
1425:../../../Source/third_party/fatfs/src/ff.c **** BYTE sum_sfn (
|
|
1426:../../../Source/third_party/fatfs/src/ff.c **** const BYTE *dir /* Ptr to directory entry */
|
|
1427:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
1428:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
96 .loc 1 1428 0
|
|
97 .cfi_startproc
|
|
98 @ args = 0, pretend = 0, frame = 0
|
|
99 @ frame_needed = 0, uses_anonymous_args = 0
|
|
100 @ link register save eliminated.
|
|
101 .LVL10:
|
|
102 0000 00F10B01 add r1, r0, #11
|
|
1429:../../../Source/third_party/fatfs/src/ff.c **** BYTE sum = 0;
|
|
103 .loc 1 1429 0
|
|
104 0004 0023 movs r3, #0
|
|
105 .LVL11:
|
|
106 .L8:
|
|
1430:../../../Source/third_party/fatfs/src/ff.c **** UINT n = 11;
|
|
1431:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1432:../../../Source/third_party/fatfs/src/ff.c **** do sum = (sum >> 1) + (sum << 7) + *dir++; while (--n);
|
|
107 .loc 1 1432 0 discriminator 1
|
|
108 0006 DA01 lsls r2, r3, #7
|
|
109 0008 42EA5303 orr r3, r2, r3, lsr #1
|
|
110 .LVL12:
|
|
111 000c 10F8012B ldrb r2, [r0], #1 @ zero_extendqisi2
|
|
112 .LVL13:
|
|
113 0010 1344 add r3, r3, r2
|
|
114 0012 03F0FF03 and r3, r3, #255
|
|
115 .LVL14:
|
|
116 0016 8842 cmp r0, r1
|
|
117 0018 F5D1 bne .L8
|
|
1433:../../../Source/third_party/fatfs/src/ff.c **** return sum;
|
|
1434:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
118 .loc 1 1434 0
|
|
119 001a 1846 mov r0, r3
|
|
120 .LVL15:
|
|
121 001c 7047 bx lr
|
|
122 .cfi_endproc
|
|
123 .LFE21:
|
|
125 001e 00BF .section .text.check_fs,"ax",%progbits
|
|
126 .align 2
|
|
127 .thumb
|
|
128 .thumb_func
|
|
130 check_fs:
|
|
131 .LFB29:
|
|
1435:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1436:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1437:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1438:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1439:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1440:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1441:../../../Source/third_party/fatfs/src/ff.c **** /* Directory handling - Find an object in the directory */
|
|
1442:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1443:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1444:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
1445:../../../Source/third_party/fatfs/src/ff.c **** FRESULT dir_find (
|
|
1446:../../../Source/third_party/fatfs/src/ff.c **** DIR *dj /* Pointer to the directory object linked to the file name */
|
|
1447:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
1448:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
1449:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
1450:../../../Source/third_party/fatfs/src/ff.c **** BYTE c, *dir;
|
|
1451:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN
|
|
1452:../../../Source/third_party/fatfs/src/ff.c **** BYTE a, ord, sum;
|
|
1453:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1454:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1455:../../../Source/third_party/fatfs/src/ff.c **** res = dir_sdi(dj, 0); /* Rewind directory object */
|
|
1456:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) return res;
|
|
1457:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1458:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN
|
|
1459:../../../Source/third_party/fatfs/src/ff.c **** ord = sum = 0xFF;
|
|
1460:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1461:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
1462:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(dj->fs, dj->sect);
|
|
1463:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
1464:../../../Source/third_party/fatfs/src/ff.c **** dir = dj->dir; /* Ptr to the directory entry of current index */
|
|
1465:../../../Source/third_party/fatfs/src/ff.c **** c = dir[DIR_Name];
|
|
1466:../../../Source/third_party/fatfs/src/ff.c **** if (c == 0) { res = FR_NO_FILE; break; } /* Reached to end of table */
|
|
1467:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN /* LFN configuration */
|
|
1468:../../../Source/third_party/fatfs/src/ff.c **** a = dir[DIR_Attr] & AM_MASK;
|
|
1469:../../../Source/third_party/fatfs/src/ff.c **** if (c == DDE || ((a & AM_VOL) && a != AM_LFN)) { /* An entry without valid data */
|
|
1470:../../../Source/third_party/fatfs/src/ff.c **** ord = 0xFF;
|
|
1471:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
1472:../../../Source/third_party/fatfs/src/ff.c **** if (a == AM_LFN) { /* An LFN entry is found */
|
|
1473:../../../Source/third_party/fatfs/src/ff.c **** if (dj->lfn) {
|
|
1474:../../../Source/third_party/fatfs/src/ff.c **** if (c & LLE) { /* Is it start of LFN sequence? */
|
|
1475:../../../Source/third_party/fatfs/src/ff.c **** sum = dir[LDIR_Chksum];
|
|
1476:../../../Source/third_party/fatfs/src/ff.c **** c &= ~LLE; ord = c; /* LFN start order */
|
|
1477:../../../Source/third_party/fatfs/src/ff.c **** dj->lfn_idx = dj->index;
|
|
1478:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1479:../../../Source/third_party/fatfs/src/ff.c **** /* Check validity of the LFN entry and compare it with given name */
|
|
1480:../../../Source/third_party/fatfs/src/ff.c **** ord = (c == ord && sum == dir[LDIR_Chksum] && cmp_lfn(dj->lfn, dir)) ? ord - 1 : 0xFF;
|
|
1481:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1482:../../../Source/third_party/fatfs/src/ff.c **** } else { /* An SFN entry is found */
|
|
1483:../../../Source/third_party/fatfs/src/ff.c **** if (!ord && sum == sum_sfn(dir)) break; /* LFN matched? */
|
|
1484:../../../Source/third_party/fatfs/src/ff.c **** ord = 0xFF; dj->lfn_idx = 0xFFFF; /* Reset LFN sequence */
|
|
1485:../../../Source/third_party/fatfs/src/ff.c **** if (!(dj->fn[NS] & NS_LOSS) && !mem_cmp(dir, dj->fn, 11)) break; /* SFN matched? */
|
|
1486:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1487:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1488:../../../Source/third_party/fatfs/src/ff.c **** #else /* Non LFN configuration */
|
|
1489:../../../Source/third_party/fatfs/src/ff.c **** if (!(dir[DIR_Attr] & AM_VOL) && !mem_cmp(dir, dj->fn, 11)) /* Is it a valid entry? */
|
|
1490:../../../Source/third_party/fatfs/src/ff.c **** break;
|
|
1491:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1492:../../../Source/third_party/fatfs/src/ff.c **** res = dir_next(dj, 0); /* Next entry */
|
|
1493:../../../Source/third_party/fatfs/src/ff.c **** } while (res == FR_OK);
|
|
1494:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1495:../../../Source/third_party/fatfs/src/ff.c **** return res;
|
|
1496:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1497:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1498:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1499:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1500:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1501:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1502:../../../Source/third_party/fatfs/src/ff.c **** /* Read an object from the directory */
|
|
1503:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1504:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_MINIMIZE <= 1 || _USE_LABEL || _FS_RPATH >= 2
|
|
1505:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
1506:../../../Source/third_party/fatfs/src/ff.c **** FRESULT dir_read (
|
|
1507:../../../Source/third_party/fatfs/src/ff.c **** DIR *dj, /* Pointer to the directory object */
|
|
1508:../../../Source/third_party/fatfs/src/ff.c **** int vol /* Filtered by 0:file/dir or 1:volume label */
|
|
1509:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
1510:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
1511:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
1512:../../../Source/third_party/fatfs/src/ff.c **** BYTE a, c, *dir;
|
|
1513:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN
|
|
1514:../../../Source/third_party/fatfs/src/ff.c **** BYTE ord = 0xFF, sum = 0xFF;
|
|
1515:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1516:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1517:../../../Source/third_party/fatfs/src/ff.c **** res = FR_NO_FILE;
|
|
1518:../../../Source/third_party/fatfs/src/ff.c **** while (dj->sect) {
|
|
1519:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(dj->fs, dj->sect);
|
|
1520:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
1521:../../../Source/third_party/fatfs/src/ff.c **** dir = dj->dir; /* Ptr to the directory entry of current index */
|
|
1522:../../../Source/third_party/fatfs/src/ff.c **** c = dir[DIR_Name];
|
|
1523:../../../Source/third_party/fatfs/src/ff.c **** if (c == 0) { res = FR_NO_FILE; break; } /* Reached to end of table */
|
|
1524:../../../Source/third_party/fatfs/src/ff.c **** a = dir[DIR_Attr] & AM_MASK;
|
|
1525:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN /* LFN configuration */
|
|
1526:../../../Source/third_party/fatfs/src/ff.c **** if (c == DDE || (!_FS_RPATH && c == '.') || (a == AM_VOL) != vol) { /* An entry without valid dat
|
|
1527:../../../Source/third_party/fatfs/src/ff.c **** ord = 0xFF;
|
|
1528:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
1529:../../../Source/third_party/fatfs/src/ff.c **** if (a == AM_LFN) { /* An LFN entry is found */
|
|
1530:../../../Source/third_party/fatfs/src/ff.c **** if (c & LLE) { /* Is it start of LFN sequence? */
|
|
1531:../../../Source/third_party/fatfs/src/ff.c **** sum = dir[LDIR_Chksum];
|
|
1532:../../../Source/third_party/fatfs/src/ff.c **** c &= ~LLE; ord = c;
|
|
1533:../../../Source/third_party/fatfs/src/ff.c **** dj->lfn_idx = dj->index;
|
|
1534:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1535:../../../Source/third_party/fatfs/src/ff.c **** /* Check LFN validity and capture it */
|
|
1536:../../../Source/third_party/fatfs/src/ff.c **** ord = (c == ord && sum == dir[LDIR_Chksum] && pick_lfn(dj->lfn, dir)) ? ord - 1 : 0xFF;
|
|
1537:../../../Source/third_party/fatfs/src/ff.c **** } else { /* An SFN entry is found */
|
|
1538:../../../Source/third_party/fatfs/src/ff.c **** if (ord || sum != sum_sfn(dir)) /* Is there a valid LFN? */
|
|
1539:../../../Source/third_party/fatfs/src/ff.c **** dj->lfn_idx = 0xFFFF; /* It has no LFN. */
|
|
1540:../../../Source/third_party/fatfs/src/ff.c **** break;
|
|
1541:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1542:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1543:../../../Source/third_party/fatfs/src/ff.c **** #else /* Non LFN configuration */
|
|
1544:../../../Source/third_party/fatfs/src/ff.c **** if (c != DDE && (_FS_RPATH || c != '.') && a != AM_LFN && (a == AM_VOL) == vol) /* Is it a valid
|
|
1545:../../../Source/third_party/fatfs/src/ff.c **** break;
|
|
1546:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1547:../../../Source/third_party/fatfs/src/ff.c **** res = dir_next(dj, 0); /* Next entry */
|
|
1548:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
1549:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1550:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1551:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) dj->sect = 0;
|
|
1552:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1553:../../../Source/third_party/fatfs/src/ff.c **** return res;
|
|
1554:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1555:../../../Source/third_party/fatfs/src/ff.c **** #endif /* _FS_MINIMIZE <= 1 || _USE_LABEL || _FS_RPATH >= 2 */
|
|
1556:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1557:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1558:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1559:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1560:../../../Source/third_party/fatfs/src/ff.c **** /* Register an object to the directory */
|
|
1561:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1562:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
1563:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
1564:../../../Source/third_party/fatfs/src/ff.c **** FRESULT dir_register ( /* FR_OK:Successful, FR_DENIED:No free entry or too many SFN collision, FR_D
|
|
1565:../../../Source/third_party/fatfs/src/ff.c **** DIR *dj /* Target directory with object name to be created */
|
|
1566:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
1567:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
1568:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
1569:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN /* LFN configuration */
|
|
1570:../../../Source/third_party/fatfs/src/ff.c **** WORD n, ne;
|
|
1571:../../../Source/third_party/fatfs/src/ff.c **** BYTE sn[12], *fn, sum;
|
|
1572:../../../Source/third_party/fatfs/src/ff.c **** WCHAR *lfn;
|
|
1573:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1574:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1575:../../../Source/third_party/fatfs/src/ff.c **** fn = dj->fn; lfn = dj->lfn;
|
|
1576:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(sn, fn, 12);
|
|
1577:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1578:../../../Source/third_party/fatfs/src/ff.c **** if (_FS_RPATH && (sn[NS] & NS_DOT)) /* Cannot create dot entry */
|
|
1579:../../../Source/third_party/fatfs/src/ff.c **** return FR_INVALID_NAME;
|
|
1580:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1581:../../../Source/third_party/fatfs/src/ff.c **** if (sn[NS] & NS_LOSS) { /* When LFN is out of 8.3 format, generate a numbered name */
|
|
1582:../../../Source/third_party/fatfs/src/ff.c **** fn[NS] = 0; dj->lfn = 0; /* Find only SFN */
|
|
1583:../../../Source/third_party/fatfs/src/ff.c **** for (n = 1; n < 100; n++) {
|
|
1584:../../../Source/third_party/fatfs/src/ff.c **** gen_numname(fn, sn, lfn, n); /* Generate a numbered name */
|
|
1585:../../../Source/third_party/fatfs/src/ff.c **** res = dir_find(dj); /* Check if the name collides with existing SFN */
|
|
1586:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
1587:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1588:../../../Source/third_party/fatfs/src/ff.c **** if (n == 100) return FR_DENIED; /* Abort if too many collisions */
|
|
1589:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_NO_FILE) return res; /* Abort if the result is other than 'not collided' */
|
|
1590:../../../Source/third_party/fatfs/src/ff.c **** fn[NS] = sn[NS]; dj->lfn = lfn;
|
|
1591:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1592:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1593:../../../Source/third_party/fatfs/src/ff.c **** if (sn[NS] & NS_LFN) { /* When LFN is to be created, allocate entries for an SFN + LFNs. */
|
|
1594:../../../Source/third_party/fatfs/src/ff.c **** for (n = 0; lfn[n]; n++) ;
|
|
1595:../../../Source/third_party/fatfs/src/ff.c **** ne = (n + 25) / 13;
|
|
1596:../../../Source/third_party/fatfs/src/ff.c **** } else { /* Otherwise allocate an entry for an SFN */
|
|
1597:../../../Source/third_party/fatfs/src/ff.c **** ne = 1;
|
|
1598:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1599:../../../Source/third_party/fatfs/src/ff.c **** res = dir_alloc(dj, ne); /* Allocate entries */
|
|
1600:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1601:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK && --ne) { /* Set LFN entry if needed */
|
|
1602:../../../Source/third_party/fatfs/src/ff.c **** res = dir_sdi(dj, (WORD)(dj->index - ne));
|
|
1603:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
1604:../../../Source/third_party/fatfs/src/ff.c **** sum = sum_sfn(dj->fn); /* Sum value of the SFN tied to the LFN */
|
|
1605:../../../Source/third_party/fatfs/src/ff.c **** do { /* Store LFN entries in bottom first */
|
|
1606:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(dj->fs, dj->sect);
|
|
1607:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
1608:../../../Source/third_party/fatfs/src/ff.c **** fit_lfn(dj->lfn, dj->dir, (BYTE)ne, sum);
|
|
1609:../../../Source/third_party/fatfs/src/ff.c **** dj->fs->wflag = 1;
|
|
1610:../../../Source/third_party/fatfs/src/ff.c **** res = dir_next(dj, 0); /* Next entry */
|
|
1611:../../../Source/third_party/fatfs/src/ff.c **** } while (res == FR_OK && --ne);
|
|
1612:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1613:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1614:../../../Source/third_party/fatfs/src/ff.c **** #else /* Non LFN configuration */
|
|
1615:../../../Source/third_party/fatfs/src/ff.c **** res = dir_alloc(dj, 1); /* Allocate an entry for SFN */
|
|
1616:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1617:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1618:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) { /* Set SFN entry */
|
|
1619:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(dj->fs, dj->sect);
|
|
1620:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
1621:../../../Source/third_party/fatfs/src/ff.c **** mem_set(dj->dir, 0, SZ_DIR); /* Clean the entry */
|
|
1622:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(dj->dir, dj->fn, 11); /* Put SFN */
|
|
1623:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN
|
|
1624:../../../Source/third_party/fatfs/src/ff.c **** dj->dir[DIR_NTres] = *(dj->fn+NS) & (NS_BODY | NS_EXT); /* Put NT flag */
|
|
1625:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1626:../../../Source/third_party/fatfs/src/ff.c **** dj->fs->wflag = 1;
|
|
1627:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1628:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1629:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1630:../../../Source/third_party/fatfs/src/ff.c **** return res;
|
|
1631:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1632:../../../Source/third_party/fatfs/src/ff.c **** #endif /* !_FS_READONLY */
|
|
1633:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1634:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1635:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1636:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1637:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1638:../../../Source/third_party/fatfs/src/ff.c **** /* Remove an object from the directory */
|
|
1639:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1640:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY && !_FS_MINIMIZE
|
|
1641:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
1642:../../../Source/third_party/fatfs/src/ff.c **** FRESULT dir_remove ( /* FR_OK: Successful, FR_DISK_ERR: A disk error */
|
|
1643:../../../Source/third_party/fatfs/src/ff.c **** DIR *dj /* Directory object pointing the entry to be removed */
|
|
1644:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
1645:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
1646:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
1647:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN /* LFN configuration */
|
|
1648:../../../Source/third_party/fatfs/src/ff.c **** WORD i;
|
|
1649:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1650:../../../Source/third_party/fatfs/src/ff.c **** i = dj->index; /* SFN index */
|
|
1651:../../../Source/third_party/fatfs/src/ff.c **** res = dir_sdi(dj, (WORD)((dj->lfn_idx == 0xFFFF) ? i : dj->lfn_idx)); /* Goto the SFN or top of th
|
|
1652:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
1653:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
1654:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(dj->fs, dj->sect);
|
|
1655:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
1656:../../../Source/third_party/fatfs/src/ff.c **** *dj->dir = DDE; /* Mark the entry "deleted" */
|
|
1657:../../../Source/third_party/fatfs/src/ff.c **** dj->fs->wflag = 1;
|
|
1658:../../../Source/third_party/fatfs/src/ff.c **** if (dj->index >= i) break; /* When reached SFN, all entries of the object has been deleted. */
|
|
1659:../../../Source/third_party/fatfs/src/ff.c **** res = dir_next(dj, 0); /* Next entry */
|
|
1660:../../../Source/third_party/fatfs/src/ff.c **** } while (res == FR_OK);
|
|
1661:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_NO_FILE) res = FR_INT_ERR;
|
|
1662:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1663:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1664:../../../Source/third_party/fatfs/src/ff.c **** #else /* Non LFN configuration */
|
|
1665:../../../Source/third_party/fatfs/src/ff.c **** res = dir_sdi(dj, dj->index);
|
|
1666:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
1667:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(dj->fs, dj->sect);
|
|
1668:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
1669:../../../Source/third_party/fatfs/src/ff.c **** *dj->dir = DDE; /* Mark the entry "deleted" */
|
|
1670:../../../Source/third_party/fatfs/src/ff.c **** dj->fs->wflag = 1;
|
|
1671:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1672:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1673:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1674:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1675:../../../Source/third_party/fatfs/src/ff.c **** return res;
|
|
1676:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1677:../../../Source/third_party/fatfs/src/ff.c **** #endif /* !_FS_READONLY */
|
|
1678:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1679:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1680:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1681:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1682:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1683:../../../Source/third_party/fatfs/src/ff.c **** /* Pick a segment and create the object name in directory form */
|
|
1684:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1685:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1686:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
1687:../../../Source/third_party/fatfs/src/ff.c **** FRESULT create_name (
|
|
1688:../../../Source/third_party/fatfs/src/ff.c **** DIR *dj, /* Pointer to the directory object */
|
|
1689:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR **path /* Pointer to pointer to the segment in the path string */
|
|
1690:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
1691:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
1692:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN /* LFN configuration */
|
|
1693:../../../Source/third_party/fatfs/src/ff.c **** BYTE b, cf;
|
|
1694:../../../Source/third_party/fatfs/src/ff.c **** WCHAR w, *lfn;
|
|
1695:../../../Source/third_party/fatfs/src/ff.c **** UINT i, ni, si, di;
|
|
1696:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR *p;
|
|
1697:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1698:../../../Source/third_party/fatfs/src/ff.c **** /* Create LFN in Unicode */
|
|
1699:../../../Source/third_party/fatfs/src/ff.c **** for (p = *path; *p == '/' || *p == '\\'; p++) ; /* Strip duplicated separator */
|
|
1700:../../../Source/third_party/fatfs/src/ff.c **** lfn = dj->lfn;
|
|
1701:../../../Source/third_party/fatfs/src/ff.c **** si = di = 0;
|
|
1702:../../../Source/third_party/fatfs/src/ff.c **** for (;;) {
|
|
1703:../../../Source/third_party/fatfs/src/ff.c **** w = p[si++]; /* Get a character */
|
|
1704:../../../Source/third_party/fatfs/src/ff.c **** if (w < ' ' || w == '/' || w == '\\') break; /* Break on end of segment */
|
|
1705:../../../Source/third_party/fatfs/src/ff.c **** if (di >= _MAX_LFN) /* Reject too long name */
|
|
1706:../../../Source/third_party/fatfs/src/ff.c **** return FR_INVALID_NAME;
|
|
1707:../../../Source/third_party/fatfs/src/ff.c **** #if !_LFN_UNICODE
|
|
1708:../../../Source/third_party/fatfs/src/ff.c **** w &= 0xFF;
|
|
1709:../../../Source/third_party/fatfs/src/ff.c **** if (IsDBCS1(w)) { /* Check if it is a DBC 1st byte (always false on SBCS cfg) */
|
|
1710:../../../Source/third_party/fatfs/src/ff.c **** b = (BYTE)p[si++]; /* Get 2nd byte */
|
|
1711:../../../Source/third_party/fatfs/src/ff.c **** if (!IsDBCS2(b))
|
|
1712:../../../Source/third_party/fatfs/src/ff.c **** return FR_INVALID_NAME; /* Reject invalid sequence */
|
|
1713:../../../Source/third_party/fatfs/src/ff.c **** w = (w << 8) + b; /* Create a DBC */
|
|
1714:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1715:../../../Source/third_party/fatfs/src/ff.c **** w = ff_convert(w, 1); /* Convert ANSI/OEM to Unicode */
|
|
1716:../../../Source/third_party/fatfs/src/ff.c **** if (!w) return FR_INVALID_NAME; /* Reject invalid code */
|
|
1717:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1718:../../../Source/third_party/fatfs/src/ff.c **** if (w < 0x80 && chk_chr("\"*:<>\?|\x7F", w)) /* Reject illegal chars for LFN */
|
|
1719:../../../Source/third_party/fatfs/src/ff.c **** return FR_INVALID_NAME;
|
|
1720:../../../Source/third_party/fatfs/src/ff.c **** lfn[di++] = w; /* Store the Unicode char */
|
|
1721:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1722:../../../Source/third_party/fatfs/src/ff.c **** *path = &p[si]; /* Return pointer to the next segment */
|
|
1723:../../../Source/third_party/fatfs/src/ff.c **** cf = (w < ' ') ? NS_LAST : 0; /* Set last segment flag if end of path */
|
|
1724:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_RPATH
|
|
1725:../../../Source/third_party/fatfs/src/ff.c **** if ((di == 1 && lfn[di-1] == '.') || /* Is this a dot entry? */
|
|
1726:../../../Source/third_party/fatfs/src/ff.c **** (di == 2 && lfn[di-1] == '.' && lfn[di-2] == '.')) {
|
|
1727:../../../Source/third_party/fatfs/src/ff.c **** lfn[di] = 0;
|
|
1728:../../../Source/third_party/fatfs/src/ff.c **** for (i = 0; i < 11; i++)
|
|
1729:../../../Source/third_party/fatfs/src/ff.c **** dj->fn[i] = (i < di) ? '.' : ' ';
|
|
1730:../../../Source/third_party/fatfs/src/ff.c **** dj->fn[i] = cf | NS_DOT; /* This is a dot entry */
|
|
1731:../../../Source/third_party/fatfs/src/ff.c **** return FR_OK;
|
|
1732:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1733:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1734:../../../Source/third_party/fatfs/src/ff.c **** while (di) { /* Strip trailing spaces and dots */
|
|
1735:../../../Source/third_party/fatfs/src/ff.c **** w = lfn[di-1];
|
|
1736:../../../Source/third_party/fatfs/src/ff.c **** if (w != ' ' && w != '.') break;
|
|
1737:../../../Source/third_party/fatfs/src/ff.c **** di--;
|
|
1738:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1739:../../../Source/third_party/fatfs/src/ff.c **** if (!di) return FR_INVALID_NAME; /* Reject nul string */
|
|
1740:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1741:../../../Source/third_party/fatfs/src/ff.c **** lfn[di] = 0; /* LFN is created */
|
|
1742:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1743:../../../Source/third_party/fatfs/src/ff.c **** /* Create SFN in directory form */
|
|
1744:../../../Source/third_party/fatfs/src/ff.c **** mem_set(dj->fn, ' ', 11);
|
|
1745:../../../Source/third_party/fatfs/src/ff.c **** for (si = 0; lfn[si] == ' ' || lfn[si] == '.'; si++) ; /* Strip leading spaces and dots */
|
|
1746:../../../Source/third_party/fatfs/src/ff.c **** if (si) cf |= NS_LOSS | NS_LFN;
|
|
1747:../../../Source/third_party/fatfs/src/ff.c **** while (di && lfn[di - 1] != '.') di--; /* Find extension (di<=si: no extension) */
|
|
1748:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1749:../../../Source/third_party/fatfs/src/ff.c **** b = i = 0; ni = 8;
|
|
1750:../../../Source/third_party/fatfs/src/ff.c **** for (;;) {
|
|
1751:../../../Source/third_party/fatfs/src/ff.c **** w = lfn[si++]; /* Get an LFN char */
|
|
1752:../../../Source/third_party/fatfs/src/ff.c **** if (!w) break; /* Break on end of the LFN */
|
|
1753:../../../Source/third_party/fatfs/src/ff.c **** if (w == ' ' || (w == '.' && si != di)) { /* Remove spaces and dots */
|
|
1754:../../../Source/third_party/fatfs/src/ff.c **** cf |= NS_LOSS | NS_LFN; continue;
|
|
1755:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1756:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1757:../../../Source/third_party/fatfs/src/ff.c **** if (i >= ni || si == di) { /* Extension or end of SFN */
|
|
1758:../../../Source/third_party/fatfs/src/ff.c **** if (ni == 11) { /* Long extension */
|
|
1759:../../../Source/third_party/fatfs/src/ff.c **** cf |= NS_LOSS | NS_LFN; break;
|
|
1760:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1761:../../../Source/third_party/fatfs/src/ff.c **** if (si != di) cf |= NS_LOSS | NS_LFN; /* Out of 8.3 format */
|
|
1762:../../../Source/third_party/fatfs/src/ff.c **** if (si > di) break; /* No extension */
|
|
1763:../../../Source/third_party/fatfs/src/ff.c **** si = di; i = 8; ni = 11; /* Enter extension section */
|
|
1764:../../../Source/third_party/fatfs/src/ff.c **** b <<= 2; continue;
|
|
1765:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1766:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1767:../../../Source/third_party/fatfs/src/ff.c **** if (w >= 0x80) { /* Non ASCII char */
|
|
1768:../../../Source/third_party/fatfs/src/ff.c **** #ifdef _EXCVT
|
|
1769:../../../Source/third_party/fatfs/src/ff.c **** w = ff_convert(w, 0); /* Unicode -> OEM code */
|
|
1770:../../../Source/third_party/fatfs/src/ff.c **** if (w) w = ExCvt[w - 0x80]; /* Convert extended char to upper (SBCS) */
|
|
1771:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
1772:../../../Source/third_party/fatfs/src/ff.c **** w = ff_convert(ff_wtoupper(w), 0); /* Upper converted Unicode -> OEM code */
|
|
1773:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1774:../../../Source/third_party/fatfs/src/ff.c **** cf |= NS_LFN; /* Force create LFN entry */
|
|
1775:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1776:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1777:../../../Source/third_party/fatfs/src/ff.c **** if (_DF1S && w >= 0x100) { /* Double byte char (always false on SBCS cfg) */
|
|
1778:../../../Source/third_party/fatfs/src/ff.c **** if (i >= ni - 1) {
|
|
1779:../../../Source/third_party/fatfs/src/ff.c **** cf |= NS_LOSS | NS_LFN; i = ni; continue;
|
|
1780:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1781:../../../Source/third_party/fatfs/src/ff.c **** dj->fn[i++] = (BYTE)(w >> 8);
|
|
1782:../../../Source/third_party/fatfs/src/ff.c **** } else { /* Single byte char */
|
|
1783:../../../Source/third_party/fatfs/src/ff.c **** if (!w || chk_chr("+,;=[]", w)) { /* Replace illegal chars for SFN */
|
|
1784:../../../Source/third_party/fatfs/src/ff.c **** w = '_'; cf |= NS_LOSS | NS_LFN;/* Lossy conversion */
|
|
1785:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
1786:../../../Source/third_party/fatfs/src/ff.c **** if (IsUpper(w)) { /* ASCII large capital */
|
|
1787:../../../Source/third_party/fatfs/src/ff.c **** b |= 2;
|
|
1788:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
1789:../../../Source/third_party/fatfs/src/ff.c **** if (IsLower(w)) { /* ASCII small capital */
|
|
1790:../../../Source/third_party/fatfs/src/ff.c **** b |= 1; w -= 0x20;
|
|
1791:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1792:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1793:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1794:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1795:../../../Source/third_party/fatfs/src/ff.c **** dj->fn[i++] = (BYTE)w;
|
|
1796:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1797:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1798:../../../Source/third_party/fatfs/src/ff.c **** if (dj->fn[0] == DDE) dj->fn[0] = NDDE; /* If the first char collides with deleted mark, replace i
|
|
1799:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1800:../../../Source/third_party/fatfs/src/ff.c **** if (ni == 8) b <<= 2;
|
|
1801:../../../Source/third_party/fatfs/src/ff.c **** if ((b & 0x0C) == 0x0C || (b & 0x03) == 0x03) /* Create LFN entry when there are composite capital
|
|
1802:../../../Source/third_party/fatfs/src/ff.c **** cf |= NS_LFN;
|
|
1803:../../../Source/third_party/fatfs/src/ff.c **** if (!(cf & NS_LFN)) { /* When LFN is in 8.3 format without extended char, NT flags are create
|
|
1804:../../../Source/third_party/fatfs/src/ff.c **** if ((b & 0x03) == 0x01) cf |= NS_EXT; /* NT flag (Extension has only small capital) */
|
|
1805:../../../Source/third_party/fatfs/src/ff.c **** if ((b & 0x0C) == 0x04) cf |= NS_BODY; /* NT flag (Filename has only small capital) */
|
|
1806:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1807:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1808:../../../Source/third_party/fatfs/src/ff.c **** dj->fn[NS] = cf; /* SFN is created */
|
|
1809:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1810:../../../Source/third_party/fatfs/src/ff.c **** return FR_OK;
|
|
1811:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1812:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1813:../../../Source/third_party/fatfs/src/ff.c **** #else /* Non-LFN configuration */
|
|
1814:../../../Source/third_party/fatfs/src/ff.c **** BYTE b, c, d, *sfn;
|
|
1815:../../../Source/third_party/fatfs/src/ff.c **** UINT ni, si, i;
|
|
1816:../../../Source/third_party/fatfs/src/ff.c **** const char *p;
|
|
1817:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1818:../../../Source/third_party/fatfs/src/ff.c **** /* Create file name in directory form */
|
|
1819:../../../Source/third_party/fatfs/src/ff.c **** for (p = *path; *p == '/' || *p == '\\'; p++) ; /* Strip duplicated separator */
|
|
1820:../../../Source/third_party/fatfs/src/ff.c **** sfn = dj->fn;
|
|
1821:../../../Source/third_party/fatfs/src/ff.c **** mem_set(sfn, ' ', 11);
|
|
1822:../../../Source/third_party/fatfs/src/ff.c **** si = i = b = 0; ni = 8;
|
|
1823:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_RPATH
|
|
1824:../../../Source/third_party/fatfs/src/ff.c **** if (p[si] == '.') { /* Is this a dot entry? */
|
|
1825:../../../Source/third_party/fatfs/src/ff.c **** for (;;) {
|
|
1826:../../../Source/third_party/fatfs/src/ff.c **** c = (BYTE)p[si++];
|
|
1827:../../../Source/third_party/fatfs/src/ff.c **** if (c != '.' || si >= 3) break;
|
|
1828:../../../Source/third_party/fatfs/src/ff.c **** sfn[i++] = c;
|
|
1829:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1830:../../../Source/third_party/fatfs/src/ff.c **** if (c != '/' && c != '\\' && c > ' ') return FR_INVALID_NAME;
|
|
1831:../../../Source/third_party/fatfs/src/ff.c **** *path = &p[si]; /* Return pointer to the next segment */
|
|
1832:../../../Source/third_party/fatfs/src/ff.c **** sfn[NS] = (c <= ' ') ? NS_LAST | NS_DOT : NS_DOT; /* Set last segment flag if end of path */
|
|
1833:../../../Source/third_party/fatfs/src/ff.c **** return FR_OK;
|
|
1834:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1835:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1836:../../../Source/third_party/fatfs/src/ff.c **** for (;;) {
|
|
1837:../../../Source/third_party/fatfs/src/ff.c **** c = (BYTE)p[si++];
|
|
1838:../../../Source/third_party/fatfs/src/ff.c **** if (c <= ' ' || c == '/' || c == '\\') break; /* Break on end of segment */
|
|
1839:../../../Source/third_party/fatfs/src/ff.c **** if (c == '.' || i >= ni) {
|
|
1840:../../../Source/third_party/fatfs/src/ff.c **** if (ni != 8 || c != '.') return FR_INVALID_NAME;
|
|
1841:../../../Source/third_party/fatfs/src/ff.c **** i = 8; ni = 11;
|
|
1842:../../../Source/third_party/fatfs/src/ff.c **** b <<= 2; continue;
|
|
1843:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1844:../../../Source/third_party/fatfs/src/ff.c **** if (c >= 0x80) { /* Extended char? */
|
|
1845:../../../Source/third_party/fatfs/src/ff.c **** b |= 3; /* Eliminate NT flag */
|
|
1846:../../../Source/third_party/fatfs/src/ff.c **** #ifdef _EXCVT
|
|
1847:../../../Source/third_party/fatfs/src/ff.c **** c = ExCvt[c - 0x80]; /* To upper extended chars (SBCS cfg) */
|
|
1848:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
1849:../../../Source/third_party/fatfs/src/ff.c **** #if !_DF1S
|
|
1850:../../../Source/third_party/fatfs/src/ff.c **** return FR_INVALID_NAME; /* Reject extended chars (ASCII cfg) */
|
|
1851:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1852:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1853:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1854:../../../Source/third_party/fatfs/src/ff.c **** if (IsDBCS1(c)) { /* Check if it is a DBC 1st byte (always false on SBCS cfg) */
|
|
1855:../../../Source/third_party/fatfs/src/ff.c **** d = (BYTE)p[si++]; /* Get 2nd byte */
|
|
1856:../../../Source/third_party/fatfs/src/ff.c **** if (!IsDBCS2(d) || i >= ni - 1) /* Reject invalid DBC */
|
|
1857:../../../Source/third_party/fatfs/src/ff.c **** return FR_INVALID_NAME;
|
|
1858:../../../Source/third_party/fatfs/src/ff.c **** sfn[i++] = c;
|
|
1859:../../../Source/third_party/fatfs/src/ff.c **** sfn[i++] = d;
|
|
1860:../../../Source/third_party/fatfs/src/ff.c **** } else { /* Single byte code */
|
|
1861:../../../Source/third_party/fatfs/src/ff.c **** if (chk_chr("\"*+,:;<=>\?[]|\x7F", c)) /* Reject illegal chrs for SFN */
|
|
1862:../../../Source/third_party/fatfs/src/ff.c **** return FR_INVALID_NAME;
|
|
1863:../../../Source/third_party/fatfs/src/ff.c **** if (IsUpper(c)) { /* ASCII large capital? */
|
|
1864:../../../Source/third_party/fatfs/src/ff.c **** b |= 2;
|
|
1865:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
1866:../../../Source/third_party/fatfs/src/ff.c **** if (IsLower(c)) { /* ASCII small capital? */
|
|
1867:../../../Source/third_party/fatfs/src/ff.c **** b |= 1; c -= 0x20;
|
|
1868:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1869:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1870:../../../Source/third_party/fatfs/src/ff.c **** sfn[i++] = c;
|
|
1871:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1872:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1873:../../../Source/third_party/fatfs/src/ff.c **** *path = &p[si]; /* Return pointer to the next segment */
|
|
1874:../../../Source/third_party/fatfs/src/ff.c **** c = (c <= ' ') ? NS_LAST : 0; /* Set last segment flag if end of path */
|
|
1875:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1876:../../../Source/third_party/fatfs/src/ff.c **** if (!i) return FR_INVALID_NAME; /* Reject nul string */
|
|
1877:../../../Source/third_party/fatfs/src/ff.c **** if (sfn[0] == DDE) sfn[0] = NDDE; /* When first char collides with DDE, replace it with 0x05 */
|
|
1878:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1879:../../../Source/third_party/fatfs/src/ff.c **** if (ni == 8) b <<= 2;
|
|
1880:../../../Source/third_party/fatfs/src/ff.c **** if ((b & 0x03) == 0x01) c |= NS_EXT; /* NT flag (Name extension has only small capital) */
|
|
1881:../../../Source/third_party/fatfs/src/ff.c **** if ((b & 0x0C) == 0x04) c |= NS_BODY; /* NT flag (Name body has only small capital) */
|
|
1882:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1883:../../../Source/third_party/fatfs/src/ff.c **** sfn[NS] = c; /* Store NT flag, File name is created */
|
|
1884:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1885:../../../Source/third_party/fatfs/src/ff.c **** return FR_OK;
|
|
1886:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1887:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1888:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1889:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1890:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1891:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1892:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1893:../../../Source/third_party/fatfs/src/ff.c **** /* Get file information from directory entry */
|
|
1894:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1895:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_MINIMIZE <= 1 || _FS_RPATH >= 2
|
|
1896:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
1897:../../../Source/third_party/fatfs/src/ff.c **** void get_fileinfo ( /* No return code */
|
|
1898:../../../Source/third_party/fatfs/src/ff.c **** DIR *dj, /* Pointer to the directory object */
|
|
1899:../../../Source/third_party/fatfs/src/ff.c **** FILINFO *fno /* Pointer to the file information to be filled */
|
|
1900:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
1901:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
1902:../../../Source/third_party/fatfs/src/ff.c **** UINT i;
|
|
1903:../../../Source/third_party/fatfs/src/ff.c **** BYTE nt, *dir;
|
|
1904:../../../Source/third_party/fatfs/src/ff.c **** TCHAR *p, c;
|
|
1905:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1906:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1907:../../../Source/third_party/fatfs/src/ff.c **** p = fno->fname;
|
|
1908:../../../Source/third_party/fatfs/src/ff.c **** if (dj->sect) {
|
|
1909:../../../Source/third_party/fatfs/src/ff.c **** dir = dj->dir;
|
|
1910:../../../Source/third_party/fatfs/src/ff.c **** nt = dir[DIR_NTres]; /* NT flag */
|
|
1911:../../../Source/third_party/fatfs/src/ff.c **** for (i = 0; i < 8; i++) { /* Copy name body */
|
|
1912:../../../Source/third_party/fatfs/src/ff.c **** c = dir[i];
|
|
1913:../../../Source/third_party/fatfs/src/ff.c **** if (c == ' ') break;
|
|
1914:../../../Source/third_party/fatfs/src/ff.c **** if (c == NDDE) c = (TCHAR)DDE;
|
|
1915:../../../Source/third_party/fatfs/src/ff.c **** if (_USE_LFN && (nt & NS_BODY) && IsUpper(c)) c += 0x20;
|
|
1916:../../../Source/third_party/fatfs/src/ff.c **** #if _LFN_UNICODE
|
|
1917:../../../Source/third_party/fatfs/src/ff.c **** if (IsDBCS1(c) && i < 7 && IsDBCS2(dir[i+1]))
|
|
1918:../../../Source/third_party/fatfs/src/ff.c **** c = (c << 8) | dir[++i];
|
|
1919:../../../Source/third_party/fatfs/src/ff.c **** c = ff_convert(c, 1);
|
|
1920:../../../Source/third_party/fatfs/src/ff.c **** if (!c) c = '?';
|
|
1921:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1922:../../../Source/third_party/fatfs/src/ff.c **** *p++ = c;
|
|
1923:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1924:../../../Source/third_party/fatfs/src/ff.c **** if (dir[8] != ' ') { /* Copy name extension */
|
|
1925:../../../Source/third_party/fatfs/src/ff.c **** *p++ = '.';
|
|
1926:../../../Source/third_party/fatfs/src/ff.c **** for (i = 8; i < 11; i++) {
|
|
1927:../../../Source/third_party/fatfs/src/ff.c **** c = dir[i];
|
|
1928:../../../Source/third_party/fatfs/src/ff.c **** if (c == ' ') break;
|
|
1929:../../../Source/third_party/fatfs/src/ff.c **** if (_USE_LFN && (nt & NS_EXT) && IsUpper(c)) c += 0x20;
|
|
1930:../../../Source/third_party/fatfs/src/ff.c **** #if _LFN_UNICODE
|
|
1931:../../../Source/third_party/fatfs/src/ff.c **** if (IsDBCS1(c) && i < 10 && IsDBCS2(dir[i+1]))
|
|
1932:../../../Source/third_party/fatfs/src/ff.c **** c = (c << 8) | dir[++i];
|
|
1933:../../../Source/third_party/fatfs/src/ff.c **** c = ff_convert(c, 1);
|
|
1934:../../../Source/third_party/fatfs/src/ff.c **** if (!c) c = '?';
|
|
1935:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1936:../../../Source/third_party/fatfs/src/ff.c **** *p++ = c;
|
|
1937:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1938:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1939:../../../Source/third_party/fatfs/src/ff.c **** fno->fattrib = dir[DIR_Attr]; /* Attribute */
|
|
1940:../../../Source/third_party/fatfs/src/ff.c **** fno->fsize = LD_DWORD(dir+DIR_FileSize); /* Size */
|
|
1941:../../../Source/third_party/fatfs/src/ff.c **** fno->fdate = LD_WORD(dir+DIR_WrtDate); /* Date */
|
|
1942:../../../Source/third_party/fatfs/src/ff.c **** fno->ftime = LD_WORD(dir+DIR_WrtTime); /* Time */
|
|
1943:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1944:../../../Source/third_party/fatfs/src/ff.c **** *p = 0; /* Terminate SFN str by a \0 */
|
|
1945:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1946:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN
|
|
1947:../../../Source/third_party/fatfs/src/ff.c **** if (fno->lfname && fno->lfsize) {
|
|
1948:../../../Source/third_party/fatfs/src/ff.c **** TCHAR *tp = fno->lfname;
|
|
1949:../../../Source/third_party/fatfs/src/ff.c **** WCHAR w, *lfn;
|
|
1950:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1951:../../../Source/third_party/fatfs/src/ff.c **** i = 0;
|
|
1952:../../../Source/third_party/fatfs/src/ff.c **** if (dj->sect && dj->lfn_idx != 0xFFFF) {/* Get LFN if available */
|
|
1953:../../../Source/third_party/fatfs/src/ff.c **** lfn = dj->lfn;
|
|
1954:../../../Source/third_party/fatfs/src/ff.c **** while ((w = *lfn++) != 0) { /* Get an LFN char */
|
|
1955:../../../Source/third_party/fatfs/src/ff.c **** #if !_LFN_UNICODE
|
|
1956:../../../Source/third_party/fatfs/src/ff.c **** w = ff_convert(w, 0); /* Unicode -> OEM conversion */
|
|
1957:../../../Source/third_party/fatfs/src/ff.c **** if (!w) { i = 0; break; } /* Could not convert, no LFN */
|
|
1958:../../../Source/third_party/fatfs/src/ff.c **** if (_DF1S && w >= 0x100) /* Put 1st byte if it is a DBC (always false on SBCS cfg) */
|
|
1959:../../../Source/third_party/fatfs/src/ff.c **** tp[i++] = (TCHAR)(w >> 8);
|
|
1960:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1961:../../../Source/third_party/fatfs/src/ff.c **** if (i >= fno->lfsize - 1) { i = 0; break; } /* Buffer overflow, no LFN */
|
|
1962:../../../Source/third_party/fatfs/src/ff.c **** tp[i++] = (TCHAR)w;
|
|
1963:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1964:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1965:../../../Source/third_party/fatfs/src/ff.c **** tp[i] = 0; /* Terminate the LFN str by a \0 */
|
|
1966:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1967:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1968:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1969:../../../Source/third_party/fatfs/src/ff.c **** #endif /* _FS_MINIMIZE <= 1 || _FS_RPATH >= 2*/
|
|
1970:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1971:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1972:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1973:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1974:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1975:../../../Source/third_party/fatfs/src/ff.c **** /* Follow a file path */
|
|
1976:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
1977:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1978:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
1979:../../../Source/third_party/fatfs/src/ff.c **** FRESULT follow_path ( /* FR_OK(0): successful, !=0: error code */
|
|
1980:../../../Source/third_party/fatfs/src/ff.c **** DIR *dj, /* Directory object to return last directory and found object */
|
|
1981:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR *path /* Full-path string to find a file or directory */
|
|
1982:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
1983:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
1984:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
1985:../../../Source/third_party/fatfs/src/ff.c **** BYTE *dir, ns;
|
|
1986:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1987:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1988:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_RPATH
|
|
1989:../../../Source/third_party/fatfs/src/ff.c **** if (*path == '/' || *path == '\\') { /* There is a heading separator */
|
|
1990:../../../Source/third_party/fatfs/src/ff.c **** path++; dj->sclust = 0; /* Strip it and start from the root dir */
|
|
1991:../../../Source/third_party/fatfs/src/ff.c **** } else { /* No heading separator */
|
|
1992:../../../Source/third_party/fatfs/src/ff.c **** dj->sclust = dj->fs->cdir; /* Start from the current dir */
|
|
1993:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1994:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
1995:../../../Source/third_party/fatfs/src/ff.c **** if (*path == '/' || *path == '\\') /* Strip heading separator if exist */
|
|
1996:../../../Source/third_party/fatfs/src/ff.c **** path++;
|
|
1997:../../../Source/third_party/fatfs/src/ff.c **** dj->sclust = 0; /* Start from the root dir */
|
|
1998:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1999:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2000:../../../Source/third_party/fatfs/src/ff.c **** if ((UINT)*path < ' ') { /* Nul path means the start directory itself */
|
|
2001:../../../Source/third_party/fatfs/src/ff.c **** res = dir_sdi(dj, 0);
|
|
2002:../../../Source/third_party/fatfs/src/ff.c **** dj->dir = 0;
|
|
2003:../../../Source/third_party/fatfs/src/ff.c **** } else { /* Follow path */
|
|
2004:../../../Source/third_party/fatfs/src/ff.c **** for (;;) {
|
|
2005:../../../Source/third_party/fatfs/src/ff.c **** res = create_name(dj, &path); /* Get a segment */
|
|
2006:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
2007:../../../Source/third_party/fatfs/src/ff.c **** res = dir_find(dj); /* Find it */
|
|
2008:../../../Source/third_party/fatfs/src/ff.c **** ns = *(dj->fn+NS);
|
|
2009:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) { /* Failed to find the object */
|
|
2010:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_NO_FILE) break; /* Abort if any hard error occurred */
|
|
2011:../../../Source/third_party/fatfs/src/ff.c **** /* Object not found */
|
|
2012:../../../Source/third_party/fatfs/src/ff.c **** if (_FS_RPATH && (ns & NS_DOT)) { /* If dot entry is not exit */
|
|
2013:../../../Source/third_party/fatfs/src/ff.c **** dj->sclust = 0; dj->dir = 0; /* It is the root dir */
|
|
2014:../../../Source/third_party/fatfs/src/ff.c **** res = FR_OK;
|
|
2015:../../../Source/third_party/fatfs/src/ff.c **** if (!(ns & NS_LAST)) continue;
|
|
2016:../../../Source/third_party/fatfs/src/ff.c **** } else { /* Could not find the object */
|
|
2017:../../../Source/third_party/fatfs/src/ff.c **** if (!(ns & NS_LAST)) res = FR_NO_PATH;
|
|
2018:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2019:../../../Source/third_party/fatfs/src/ff.c **** break;
|
|
2020:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2021:../../../Source/third_party/fatfs/src/ff.c **** if (ns & NS_LAST) break; /* Last segment match. Function completed. */
|
|
2022:../../../Source/third_party/fatfs/src/ff.c **** dir = dj->dir; /* There is next segment. Follow the sub directory */
|
|
2023:../../../Source/third_party/fatfs/src/ff.c **** if (!(dir[DIR_Attr] & AM_DIR)) { /* Cannot follow because it is a file */
|
|
2024:../../../Source/third_party/fatfs/src/ff.c **** res = FR_NO_PATH; break;
|
|
2025:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2026:../../../Source/third_party/fatfs/src/ff.c **** dj->sclust = ld_clust(dj->fs, dir);
|
|
2027:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2028:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2029:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2030:../../../Source/third_party/fatfs/src/ff.c **** return res;
|
|
2031:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2032:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2033:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2034:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2035:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2036:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2037:../../../Source/third_party/fatfs/src/ff.c **** /* Load a sector and check if it is an FAT Volume Boot Record */
|
|
2038:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2039:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2040:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
2041:../../../Source/third_party/fatfs/src/ff.c **** BYTE check_fs ( /* 0:FAT-VBR, 1:Any BR but not FAT, 2:Not a BR, 3:Disk error */
|
|
2042:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs, /* File system object */
|
|
2043:../../../Source/third_party/fatfs/src/ff.c **** DWORD sect /* Sector# (lba) to check if it is an FAT boot record or not */
|
|
2044:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
2045:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
132 .loc 1 2045 0
|
|
133 .cfi_startproc
|
|
134 @ args = 0, pretend = 0, frame = 0
|
|
135 @ frame_needed = 0, uses_anonymous_args = 0
|
|
136 .LVL16:
|
|
137 0000 10B5 push {r4, lr}
|
|
138 .cfi_def_cfa_offset 8
|
|
139 .cfi_offset 4, -8
|
|
140 .cfi_offset 14, -4
|
|
141 0002 0446 mov r4, r0
|
|
142 0004 0A46 mov r2, r1
|
|
2046:../../../Source/third_party/fatfs/src/ff.c **** if (disk_read(fs->drv, fs->win, sect, 1) != RES_OK) /* Load boot record */
|
|
143 .loc 1 2046 0
|
|
144 0006 4078 ldrb r0, [r0, #1] @ zero_extendqisi2
|
|
145 .LVL17:
|
|
146 0008 04F13401 add r1, r4, #52
|
|
147 .LVL18:
|
|
148 000c 0123 movs r3, #1
|
|
149 000e FFF7FEFF bl disk_read
|
|
150 .LVL19:
|
|
151 0012 80BB cbnz r0, .L12
|
|
2047:../../../Source/third_party/fatfs/src/ff.c **** return 3;
|
|
2048:../../../Source/third_party/fatfs/src/ff.c **** if (LD_WORD(&fs->win[BS_55AA]) != 0xAA55) /* Check record signature (always placed at offset 510
|
|
152 .loc 1 2048 0
|
|
153 0014 94F83322 ldrb r2, [r4, #563] @ zero_extendqisi2
|
|
154 0018 94F83232 ldrb r3, [r4, #562] @ zero_extendqisi2
|
|
155 001c 43EA0223 orr r3, r3, r2, lsl #8
|
|
156 0020 1BB2 sxth r3, r3
|
|
157 0022 184A ldr r2, .L16
|
|
158 0024 9342 cmp r3, r2
|
|
159 0026 28D1 bne .L13
|
|
2049:../../../Source/third_party/fatfs/src/ff.c **** return 2;
|
|
2050:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2051:../../../Source/third_party/fatfs/src/ff.c **** if ((LD_DWORD(&fs->win[BS_FilSysType]) & 0xFFFFFF) == 0x544146) /* Check "FAT" string */
|
|
160 .loc 1 2051 0
|
|
161 0028 94F86D10 ldrb r1, [r4, #109] @ zero_extendqisi2
|
|
162 002c 94F86C20 ldrb r2, [r4, #108] @ zero_extendqisi2
|
|
163 0030 1304 lsls r3, r2, #16
|
|
164 0032 43EA0162 orr r2, r3, r1, lsl #24
|
|
165 0036 94F86A30 ldrb r3, [r4, #106] @ zero_extendqisi2
|
|
166 003a 1343 orrs r3, r3, r2
|
|
167 003c 94F86B20 ldrb r2, [r4, #107] @ zero_extendqisi2
|
|
168 0040 43EA0223 orr r3, r3, r2, lsl #8
|
|
169 0044 23F07F43 bic r3, r3, #-16777216
|
|
170 0048 0F4A ldr r2, .L16+4
|
|
171 004a 9342 cmp r3, r2
|
|
172 004c 17D0 beq .L14
|
|
2052:../../../Source/third_party/fatfs/src/ff.c **** return 0;
|
|
2053:../../../Source/third_party/fatfs/src/ff.c **** if ((LD_DWORD(&fs->win[BS_FilSysType32]) & 0xFFFFFF) == 0x544146)
|
|
173 .loc 1 2053 0
|
|
174 004e 94F88900 ldrb r0, [r4, #137] @ zero_extendqisi2
|
|
175 0052 94F88830 ldrb r3, [r4, #136] @ zero_extendqisi2
|
|
176 0056 1B04 lsls r3, r3, #16
|
|
177 0058 43EA0060 orr r0, r3, r0, lsl #24
|
|
178 005c 94F88630 ldrb r3, [r4, #134] @ zero_extendqisi2
|
|
179 0060 0343 orrs r3, r3, r0
|
|
180 0062 94F88700 ldrb r0, [r4, #135] @ zero_extendqisi2
|
|
181 0066 43EA0020 orr r0, r3, r0, lsl #8
|
|
182 006a 20F07F43 bic r3, r0, #-16777216
|
|
2047:../../../Source/third_party/fatfs/src/ff.c **** if (LD_WORD(&fs->win[BS_55AA]) != 0xAA55) /* Check record signature (always placed at offset 510
|
|
183 .loc 1 2047 0
|
|
184 006e 981A subs r0, r3, r2
|
|
185 0070 18BF it ne
|
|
186 0072 0120 movne r0, #1
|
|
187 0074 10BD pop {r4, pc}
|
|
188 .LVL20:
|
|
189 .L12:
|
|
190 0076 0320 movs r0, #3
|
|
191 0078 10BD pop {r4, pc}
|
|
192 .LVL21:
|
|
193 .L13:
|
|
2049:../../../Source/third_party/fatfs/src/ff.c **** return 2;
|
|
194 .loc 1 2049 0
|
|
195 007a 0220 movs r0, #2
|
|
196 007c 10BD pop {r4, pc}
|
|
197 .LVL22:
|
|
198 .L14:
|
|
2052:../../../Source/third_party/fatfs/src/ff.c **** return 0;
|
|
199 .loc 1 2052 0
|
|
200 007e 0020 movs r0, #0
|
|
2054:../../../Source/third_party/fatfs/src/ff.c **** return 0;
|
|
2055:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2056:../../../Source/third_party/fatfs/src/ff.c **** return 1;
|
|
2057:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
201 .loc 1 2057 0
|
|
202 0080 10BD pop {r4, pc}
|
|
203 .LVL23:
|
|
204 .L17:
|
|
205 0082 00BF .align 2
|
|
206 .L16:
|
|
207 0084 55AAFFFF .word -21931
|
|
208 0088 46415400 .word 5521734
|
|
209 .cfi_endproc
|
|
210 .LFE29:
|
|
212 .section .text.sync_window,"ax",%progbits
|
|
213 .align 2
|
|
214 .thumb
|
|
215 .thumb_func
|
|
217 sync_window:
|
|
218 .LFB4:
|
|
735:../../../Source/third_party/fatfs/src/ff.c **** DWORD wsect;
|
|
219 .loc 1 735 0
|
|
220 .cfi_startproc
|
|
221 @ args = 0, pretend = 0, frame = 0
|
|
222 @ frame_needed = 0, uses_anonymous_args = 0
|
|
223 .LVL24:
|
|
740:../../../Source/third_party/fatfs/src/ff.c **** wsect = fs->winsect; /* Current sector number */
|
|
224 .loc 1 740 0
|
|
225 0000 0379 ldrb r3, [r0, #4] @ zero_extendqisi2
|
|
226 0002 43B3 cbz r3, .L21
|
|
735:../../../Source/third_party/fatfs/src/ff.c **** DWORD wsect;
|
|
227 .loc 1 735 0
|
|
228 0004 2DE9F041 push {r4, r5, r6, r7, r8, lr}
|
|
229 .cfi_def_cfa_offset 24
|
|
230 .cfi_offset 4, -24
|
|
231 .cfi_offset 5, -20
|
|
232 .cfi_offset 6, -16
|
|
233 .cfi_offset 7, -12
|
|
234 .cfi_offset 8, -8
|
|
235 .cfi_offset 14, -4
|
|
236 0008 0446 mov r4, r0
|
|
741:../../../Source/third_party/fatfs/src/ff.c **** if (disk_write(fs->drv, fs->win, wsect, 1) != RES_OK)
|
|
237 .loc 1 741 0
|
|
238 000a 056B ldr r5, [r0, #48]
|
|
239 .LVL25:
|
|
742:../../../Source/third_party/fatfs/src/ff.c **** return FR_DISK_ERR;
|
|
240 .loc 1 742 0
|
|
241 000c 00F13407 add r7, r0, #52
|
|
242 0010 4078 ldrb r0, [r0, #1] @ zero_extendqisi2
|
|
243 .LVL26:
|
|
244 0012 3946 mov r1, r7
|
|
245 0014 2A46 mov r2, r5
|
|
246 0016 0123 movs r3, #1
|
|
247 0018 FFF7FEFF bl disk_write
|
|
248 .LVL27:
|
|
249 001c E8B9 cbnz r0, .L22
|
|
744:../../../Source/third_party/fatfs/src/ff.c **** if (wsect >= fs->fatbase && wsect < (fs->fatbase + fs->fsize)) { /* In FAT area? */
|
|
250 .loc 1 744 0
|
|
251 001e 0023 movs r3, #0
|
|
252 0020 2371 strb r3, [r4, #4]
|
|
745:../../../Source/third_party/fatfs/src/ff.c **** for (nf = fs->n_fats; nf >= 2; nf--) { /* Reflect the change to all FAT copies */
|
|
253 .loc 1 745 0
|
|
254 0022 636A ldr r3, [r4, #36]
|
|
255 0024 9D42 cmp r5, r3
|
|
256 0026 1BD3 bcc .L23
|
|
745:../../../Source/third_party/fatfs/src/ff.c **** for (nf = fs->n_fats; nf >= 2; nf--) { /* Reflect the change to all FAT copies */
|
|
257 .loc 1 745 0 is_stmt 0 discriminator 1
|
|
258 0028 E269 ldr r2, [r4, #28]
|
|
259 002a 1344 add r3, r3, r2
|
|
260 002c 9D42 cmp r5, r3
|
|
261 002e 1AD2 bcs .L24
|
|
746:../../../Source/third_party/fatfs/src/ff.c **** wsect += fs->fsize;
|
|
262 .loc 1 746 0 is_stmt 1
|
|
263 0030 E678 ldrb r6, [r4, #3] @ zero_extendqisi2
|
|
264 .LVL28:
|
|
265 0032 012E cmp r6, #1
|
|
266 0034 1AD9 bls .L25
|
|
748:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
267 .loc 1 748 0 discriminator 3
|
|
268 0036 4FF00108 mov r8, #1
|
|
269 .L26:
|
|
747:../../../Source/third_party/fatfs/src/ff.c **** disk_write(fs->drv, fs->win, wsect, 1);
|
|
270 .loc 1 747 0 discriminator 3
|
|
271 003a E369 ldr r3, [r4, #28]
|
|
272 003c 1D44 add r5, r5, r3
|
|
273 .LVL29:
|
|
748:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
274 .loc 1 748 0 discriminator 3
|
|
275 003e 6078 ldrb r0, [r4, #1] @ zero_extendqisi2
|
|
276 0040 3946 mov r1, r7
|
|
277 0042 2A46 mov r2, r5
|
|
278 0044 4346 mov r3, r8
|
|
279 0046 FFF7FEFF bl disk_write
|
|
280 .LVL30:
|
|
746:../../../Source/third_party/fatfs/src/ff.c **** wsect += fs->fsize;
|
|
281 .loc 1 746 0 discriminator 3
|
|
282 004a 013E subs r6, r6, #1
|
|
283 .LVL31:
|
|
284 004c 012E cmp r6, #1
|
|
285 004e F4D1 bne .L26
|
|
752:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
286 .loc 1 752 0
|
|
287 0050 0020 movs r0, #0
|
|
288 0052 BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
|
289 .LVL32:
|
|
290 .L21:
|
|
291 .cfi_def_cfa_offset 0
|
|
292 .cfi_restore 4
|
|
293 .cfi_restore 5
|
|
294 .cfi_restore 6
|
|
295 .cfi_restore 7
|
|
296 .cfi_restore 8
|
|
297 .cfi_restore 14
|
|
298 0056 0020 movs r0, #0
|
|
299 .LVL33:
|
|
753:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
300 .loc 1 753 0
|
|
301 0058 7047 bx lr
|
|
302 .LVL34:
|
|
303 .L22:
|
|
304 .cfi_def_cfa_offset 24
|
|
305 .cfi_offset 4, -24
|
|
306 .cfi_offset 5, -20
|
|
307 .cfi_offset 6, -16
|
|
308 .cfi_offset 7, -12
|
|
309 .cfi_offset 8, -8
|
|
310 .cfi_offset 14, -4
|
|
743:../../../Source/third_party/fatfs/src/ff.c **** fs->wflag = 0;
|
|
311 .loc 1 743 0
|
|
312 005a 0120 movs r0, #1
|
|
313 005c BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
|
314 .LVL35:
|
|
315 .L23:
|
|
752:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
316 .loc 1 752 0
|
|
317 0060 0020 movs r0, #0
|
|
318 0062 BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
|
319 .LVL36:
|
|
320 .L24:
|
|
321 0066 0020 movs r0, #0
|
|
322 0068 BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
|
323 .LVL37:
|
|
324 .L25:
|
|
325 006c 0020 movs r0, #0
|
|
753:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
326 .loc 1 753 0
|
|
327 006e BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
|
328 .cfi_endproc
|
|
329 .LFE4:
|
|
331 0072 00BF .section .text.move_window,"ax",%progbits
|
|
332 .align 2
|
|
333 .thumb
|
|
334 .thumb_func
|
|
336 move_window:
|
|
337 .LFB5:
|
|
762:../../../Source/third_party/fatfs/src/ff.c **** if (sector != fs->winsect) { /* Changed current window */
|
|
338 .loc 1 762 0
|
|
339 .cfi_startproc
|
|
340 @ args = 0, pretend = 0, frame = 0
|
|
341 @ frame_needed = 0, uses_anonymous_args = 0
|
|
342 .LVL38:
|
|
343 0000 70B5 push {r4, r5, r6, lr}
|
|
344 .cfi_def_cfa_offset 16
|
|
345 .cfi_offset 4, -16
|
|
346 .cfi_offset 5, -12
|
|
347 .cfi_offset 6, -8
|
|
348 .cfi_offset 14, -4
|
|
763:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
349 .loc 1 763 0
|
|
350 0002 036B ldr r3, [r0, #48]
|
|
351 0004 8B42 cmp r3, r1
|
|
352 0006 0FD0 beq .L31
|
|
353 0008 0D46 mov r5, r1
|
|
354 000a 0446 mov r4, r0
|
|
765:../../../Source/third_party/fatfs/src/ff.c **** return FR_DISK_ERR;
|
|
355 .loc 1 765 0
|
|
356 000c FFF7FEFF bl sync_window
|
|
357 .LVL39:
|
|
358 0010 0646 mov r6, r0
|
|
359 0012 58B9 cbnz r0, .L32
|
|
768:../../../Source/third_party/fatfs/src/ff.c **** return FR_DISK_ERR;
|
|
360 .loc 1 768 0
|
|
361 0014 6078 ldrb r0, [r4, #1] @ zero_extendqisi2
|
|
362 0016 04F13401 add r1, r4, #52
|
|
363 001a 2A46 mov r2, r5
|
|
364 001c 0123 movs r3, #1
|
|
365 001e FFF7FEFF bl disk_read
|
|
366 .LVL40:
|
|
367 0022 28B9 cbnz r0, .L33
|
|
770:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
368 .loc 1 770 0
|
|
369 0024 2563 str r5, [r4, #48]
|
|
370 0026 04E0 b .L30
|
|
371 .LVL41:
|
|
372 .L31:
|
|
773:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
373 .loc 1 773 0
|
|
374 0028 0026 movs r6, #0
|
|
375 002a 02E0 b .L30
|
|
376 .LVL42:
|
|
377 .L32:
|
|
766:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
378 .loc 1 766 0
|
|
379 002c 0126 movs r6, #1
|
|
380 002e 00E0 b .L30
|
|
381 .L33:
|
|
769:../../../Source/third_party/fatfs/src/ff.c **** fs->winsect = sector;
|
|
382 .loc 1 769 0
|
|
383 0030 0126 movs r6, #1
|
|
384 .LVL43:
|
|
385 .L30:
|
|
774:../../../Source/third_party/fatfs/src/ff.c ****
|
|
386 .loc 1 774 0
|
|
387 0032 3046 mov r0, r6
|
|
388 0034 70BD pop {r4, r5, r6, pc}
|
|
389 .cfi_endproc
|
|
390 .LFE5:
|
|
392 0036 00BF .section .text.validate,"ax",%progbits
|
|
393 .align 2
|
|
394 .thumb
|
|
395 .thumb_func
|
|
397 validate:
|
|
398 .LFB31:
|
|
2058:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2059:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2060:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2061:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2062:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2063:../../../Source/third_party/fatfs/src/ff.c **** /* Check if the file system object is valid or not */
|
|
2064:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2065:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2066:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
2067:../../../Source/third_party/fatfs/src/ff.c **** FRESULT chk_mounted ( /* FR_OK(0): successful, !=0: any error occurred */
|
|
2068:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR **path, /* Pointer to pointer to the path name (drive number) */
|
|
2069:../../../Source/third_party/fatfs/src/ff.c **** FATFS **rfs, /* Pointer to pointer to the found file system object */
|
|
2070:../../../Source/third_party/fatfs/src/ff.c **** BYTE wmode /* !=0: Check write protection for write access */
|
|
2071:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
2072:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
2073:../../../Source/third_party/fatfs/src/ff.c **** BYTE fmt, b, pi, *tbl;
|
|
2074:../../../Source/third_party/fatfs/src/ff.c **** UINT vol;
|
|
2075:../../../Source/third_party/fatfs/src/ff.c **** DSTATUS stat;
|
|
2076:../../../Source/third_party/fatfs/src/ff.c **** DWORD bsect, fasize, tsect, sysect, nclst, szbfat;
|
|
2077:../../../Source/third_party/fatfs/src/ff.c **** WORD nrsv;
|
|
2078:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR *p = *path;
|
|
2079:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs;
|
|
2080:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2081:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2082:../../../Source/third_party/fatfs/src/ff.c **** /* Get logical drive number from the path name */
|
|
2083:../../../Source/third_party/fatfs/src/ff.c **** vol = p[0] - '0'; /* Is there a drive number? */
|
|
2084:../../../Source/third_party/fatfs/src/ff.c **** if (vol <= 9 && p[1] == ':') { /* Found a drive number, get and strip it */
|
|
2085:../../../Source/third_party/fatfs/src/ff.c **** p += 2; *path = p; /* Return pointer to the path name */
|
|
2086:../../../Source/third_party/fatfs/src/ff.c **** } else { /* No drive number, use default drive */
|
|
2087:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_RPATH
|
|
2088:../../../Source/third_party/fatfs/src/ff.c **** vol = CurrVol; /* Use current drive */
|
|
2089:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
2090:../../../Source/third_party/fatfs/src/ff.c **** vol = 0; /* Use drive 0 */
|
|
2091:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2092:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2093:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2094:../../../Source/third_party/fatfs/src/ff.c **** /* Check if the file system object is valid or not */
|
|
2095:../../../Source/third_party/fatfs/src/ff.c **** *rfs = 0;
|
|
2096:../../../Source/third_party/fatfs/src/ff.c **** if (vol >= _VOLUMES) /* Is the drive number valid? */
|
|
2097:../../../Source/third_party/fatfs/src/ff.c **** return FR_INVALID_DRIVE;
|
|
2098:../../../Source/third_party/fatfs/src/ff.c **** fs = FatFs[vol]; /* Get corresponding file system object */
|
|
2099:../../../Source/third_party/fatfs/src/ff.c **** if (!fs) return FR_NOT_ENABLED; /* Is the file system object available? */
|
|
2100:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2101:../../../Source/third_party/fatfs/src/ff.c **** ENTER_FF(fs); /* Lock volume */
|
|
2102:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2103:../../../Source/third_party/fatfs/src/ff.c **** *rfs = fs; /* Return pointer to the corresponding file system object */
|
|
2104:../../../Source/third_party/fatfs/src/ff.c **** if (fs->fs_type) { /* If the volume has been mounted */
|
|
2105:../../../Source/third_party/fatfs/src/ff.c **** stat = disk_status(fs->drv);
|
|
2106:../../../Source/third_party/fatfs/src/ff.c **** if (!(stat & STA_NOINIT)) { /* and the physical drive is kept initialized (has not been changed)
|
|
2107:../../../Source/third_party/fatfs/src/ff.c **** if (!_FS_READONLY && wmode && (stat & STA_PROTECT)) /* Check write protection if needed */
|
|
2108:../../../Source/third_party/fatfs/src/ff.c **** return FR_WRITE_PROTECTED;
|
|
2109:../../../Source/third_party/fatfs/src/ff.c **** return FR_OK; /* The file system object is valid */
|
|
2110:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2111:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2112:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2113:../../../Source/third_party/fatfs/src/ff.c **** /* The file system object is not valid. */
|
|
2114:../../../Source/third_party/fatfs/src/ff.c **** /* Following code attempts to mount the volume. (analyze BPB and initialize the fs object) */
|
|
2115:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2116:../../../Source/third_party/fatfs/src/ff.c **** fs->fs_type = 0; /* Clear the file system object */
|
|
2117:../../../Source/third_party/fatfs/src/ff.c **** fs->drv = LD2PD(vol); /* Bind the logical drive and a physical drive */
|
|
2118:../../../Source/third_party/fatfs/src/ff.c **** stat = disk_initialize(fs->drv); /* Initialize the physical drive */
|
|
2119:../../../Source/third_party/fatfs/src/ff.c **** if (stat & STA_NOINIT) /* Check if the initialization succeeded */
|
|
2120:../../../Source/third_party/fatfs/src/ff.c **** return FR_NOT_READY; /* Failed to initialize due to no medium or hard error */
|
|
2121:../../../Source/third_party/fatfs/src/ff.c **** if (!_FS_READONLY && wmode && (stat & STA_PROTECT)) /* Check disk write protection if needed */
|
|
2122:../../../Source/third_party/fatfs/src/ff.c **** return FR_WRITE_PROTECTED;
|
|
2123:../../../Source/third_party/fatfs/src/ff.c **** #if _MAX_SS != 512 /* Get disk sector size (variable sector size cfg only) */
|
|
2124:../../../Source/third_party/fatfs/src/ff.c **** if (disk_ioctl(fs->drv, GET_SECTOR_SIZE, &fs->ssize) != RES_OK)
|
|
2125:../../../Source/third_party/fatfs/src/ff.c **** return FR_DISK_ERR;
|
|
2126:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2127:../../../Source/third_party/fatfs/src/ff.c **** /* Search FAT partition on the drive. Supports only generic partitions, FDISK and SFD. */
|
|
2128:../../../Source/third_party/fatfs/src/ff.c **** fmt = check_fs(fs, bsect = 0); /* Load sector 0 and check if it is an FAT-VBR (in SFD) */
|
|
2129:../../../Source/third_party/fatfs/src/ff.c **** if (LD2PT(vol) && !fmt) fmt = 1; /* Force non-SFD if the volume is forced partition */
|
|
2130:../../../Source/third_party/fatfs/src/ff.c **** if (fmt == 1) { /* Not an FAT-VBR, the physical drive can be partitioned */
|
|
2131:../../../Source/third_party/fatfs/src/ff.c **** /* Check the partition listed in the partition table */
|
|
2132:../../../Source/third_party/fatfs/src/ff.c **** pi = LD2PT(vol);
|
|
2133:../../../Source/third_party/fatfs/src/ff.c **** if (pi) pi--;
|
|
2134:../../../Source/third_party/fatfs/src/ff.c **** tbl = &fs->win[MBR_Table + pi * SZ_PTE];/* Partition table */
|
|
2135:../../../Source/third_party/fatfs/src/ff.c **** if (tbl[4]) { /* Is the partition existing? */
|
|
2136:../../../Source/third_party/fatfs/src/ff.c **** bsect = LD_DWORD(&tbl[8]); /* Partition offset in LBA */
|
|
2137:../../../Source/third_party/fatfs/src/ff.c **** fmt = check_fs(fs, bsect); /* Check the partition */
|
|
2138:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2139:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2140:../../../Source/third_party/fatfs/src/ff.c **** if (fmt == 3) return FR_DISK_ERR;
|
|
2141:../../../Source/third_party/fatfs/src/ff.c **** if (fmt) return FR_NO_FILESYSTEM; /* No FAT volume is found */
|
|
2142:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2143:../../../Source/third_party/fatfs/src/ff.c **** /* An FAT volume is found. Following code initializes the file system object */
|
|
2144:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2145:../../../Source/third_party/fatfs/src/ff.c **** if (LD_WORD(fs->win+BPB_BytsPerSec) != SS(fs)) /* (BPB_BytsPerSec must be equal to the physical s
|
|
2146:../../../Source/third_party/fatfs/src/ff.c **** return FR_NO_FILESYSTEM;
|
|
2147:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2148:../../../Source/third_party/fatfs/src/ff.c **** fasize = LD_WORD(fs->win+BPB_FATSz16); /* Number of sectors per FAT */
|
|
2149:../../../Source/third_party/fatfs/src/ff.c **** if (!fasize) fasize = LD_DWORD(fs->win+BPB_FATSz32);
|
|
2150:../../../Source/third_party/fatfs/src/ff.c **** fs->fsize = fasize;
|
|
2151:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2152:../../../Source/third_party/fatfs/src/ff.c **** fs->n_fats = b = fs->win[BPB_NumFATs]; /* Number of FAT copies */
|
|
2153:../../../Source/third_party/fatfs/src/ff.c **** if (b != 1 && b != 2) return FR_NO_FILESYSTEM; /* (Must be 1 or 2) */
|
|
2154:../../../Source/third_party/fatfs/src/ff.c **** fasize *= b; /* Number of sectors for FAT area */
|
|
2155:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2156:../../../Source/third_party/fatfs/src/ff.c **** fs->csize = b = fs->win[BPB_SecPerClus]; /* Number of sectors per cluster */
|
|
2157:../../../Source/third_party/fatfs/src/ff.c **** if (!b || (b & (b - 1))) return FR_NO_FILESYSTEM; /* (Must be power of 2) */
|
|
2158:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2159:../../../Source/third_party/fatfs/src/ff.c **** fs->n_rootdir = LD_WORD(fs->win+BPB_RootEntCnt); /* Number of root directory entries */
|
|
2160:../../../Source/third_party/fatfs/src/ff.c **** if (fs->n_rootdir % (SS(fs) / SZ_DIR)) return FR_NO_FILESYSTEM; /* (BPB_RootEntCnt must be sector
|
|
2161:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2162:../../../Source/third_party/fatfs/src/ff.c **** tsect = LD_WORD(fs->win+BPB_TotSec16); /* Number of sectors on the volume */
|
|
2163:../../../Source/third_party/fatfs/src/ff.c **** if (!tsect) tsect = LD_DWORD(fs->win+BPB_TotSec32);
|
|
2164:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2165:../../../Source/third_party/fatfs/src/ff.c **** nrsv = LD_WORD(fs->win+BPB_RsvdSecCnt); /* Number of reserved sectors */
|
|
2166:../../../Source/third_party/fatfs/src/ff.c **** if (!nrsv) return FR_NO_FILESYSTEM; /* (BPB_RsvdSecCnt must not be 0) */
|
|
2167:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2168:../../../Source/third_party/fatfs/src/ff.c **** /* Determine the FAT sub type */
|
|
2169:../../../Source/third_party/fatfs/src/ff.c **** sysect = nrsv + fasize + fs->n_rootdir / (SS(fs) / SZ_DIR); /* RSV+FAT+DIR */
|
|
2170:../../../Source/third_party/fatfs/src/ff.c **** if (tsect < sysect) return FR_NO_FILESYSTEM; /* (Invalid volume size) */
|
|
2171:../../../Source/third_party/fatfs/src/ff.c **** nclst = (tsect - sysect) / fs->csize; /* Number of clusters */
|
|
2172:../../../Source/third_party/fatfs/src/ff.c **** if (!nclst) return FR_NO_FILESYSTEM; /* (Invalid volume size) */
|
|
2173:../../../Source/third_party/fatfs/src/ff.c **** fmt = FS_FAT12;
|
|
2174:../../../Source/third_party/fatfs/src/ff.c **** if (nclst >= MIN_FAT16) fmt = FS_FAT16;
|
|
2175:../../../Source/third_party/fatfs/src/ff.c **** if (nclst >= MIN_FAT32) fmt = FS_FAT32;
|
|
2176:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2177:../../../Source/third_party/fatfs/src/ff.c **** /* Boundaries and Limits */
|
|
2178:../../../Source/third_party/fatfs/src/ff.c **** fs->n_fatent = nclst + 2; /* Number of FAT entries */
|
|
2179:../../../Source/third_party/fatfs/src/ff.c **** fs->volbase = bsect; /* Volume start sector */
|
|
2180:../../../Source/third_party/fatfs/src/ff.c **** fs->fatbase = bsect + nrsv; /* FAT start sector */
|
|
2181:../../../Source/third_party/fatfs/src/ff.c **** fs->database = bsect + sysect; /* Data start sector */
|
|
2182:../../../Source/third_party/fatfs/src/ff.c **** if (fmt == FS_FAT32) {
|
|
2183:../../../Source/third_party/fatfs/src/ff.c **** if (fs->n_rootdir) return FR_NO_FILESYSTEM; /* (BPB_RootEntCnt must be 0) */
|
|
2184:../../../Source/third_party/fatfs/src/ff.c **** fs->dirbase = LD_DWORD(fs->win+BPB_RootClus); /* Root directory start cluster */
|
|
2185:../../../Source/third_party/fatfs/src/ff.c **** szbfat = fs->n_fatent * 4; /* (Required FAT size) */
|
|
2186:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
2187:../../../Source/third_party/fatfs/src/ff.c **** if (!fs->n_rootdir) return FR_NO_FILESYSTEM; /* (BPB_RootEntCnt must not be 0) */
|
|
2188:../../../Source/third_party/fatfs/src/ff.c **** fs->dirbase = fs->fatbase + fasize; /* Root directory start sector */
|
|
2189:../../../Source/third_party/fatfs/src/ff.c **** szbfat = (fmt == FS_FAT16) ? /* (Required FAT size) */
|
|
2190:../../../Source/third_party/fatfs/src/ff.c **** fs->n_fatent * 2 : fs->n_fatent * 3 / 2 + (fs->n_fatent & 1);
|
|
2191:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2192:../../../Source/third_party/fatfs/src/ff.c **** if (fs->fsize < (szbfat + (SS(fs) - 1)) / SS(fs)) /* (BPB_FATSz must not be less than required) */
|
|
2193:../../../Source/third_party/fatfs/src/ff.c **** return FR_NO_FILESYSTEM;
|
|
2194:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2195:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
2196:../../../Source/third_party/fatfs/src/ff.c **** /* Initialize cluster allocation information */
|
|
2197:../../../Source/third_party/fatfs/src/ff.c **** fs->free_clust = 0xFFFFFFFF;
|
|
2198:../../../Source/third_party/fatfs/src/ff.c **** fs->last_clust = 0;
|
|
2199:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2200:../../../Source/third_party/fatfs/src/ff.c **** /* Get fsinfo if available */
|
|
2201:../../../Source/third_party/fatfs/src/ff.c **** if (fmt == FS_FAT32) {
|
|
2202:../../../Source/third_party/fatfs/src/ff.c **** fs->fsi_flag = 0;
|
|
2203:../../../Source/third_party/fatfs/src/ff.c **** fs->fsi_sector = bsect + LD_WORD(fs->win+BPB_FSInfo);
|
|
2204:../../../Source/third_party/fatfs/src/ff.c **** if (disk_read(fs->drv, fs->win, fs->fsi_sector, 1) == RES_OK &&
|
|
2205:../../../Source/third_party/fatfs/src/ff.c **** LD_WORD(fs->win+BS_55AA) == 0xAA55 &&
|
|
2206:../../../Source/third_party/fatfs/src/ff.c **** LD_DWORD(fs->win+FSI_LeadSig) == 0x41615252 &&
|
|
2207:../../../Source/third_party/fatfs/src/ff.c **** LD_DWORD(fs->win+FSI_StrucSig) == 0x61417272) {
|
|
2208:../../../Source/third_party/fatfs/src/ff.c **** fs->last_clust = LD_DWORD(fs->win+FSI_Nxt_Free);
|
|
2209:../../../Source/third_party/fatfs/src/ff.c **** fs->free_clust = LD_DWORD(fs->win+FSI_Free_Count);
|
|
2210:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2211:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2212:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2213:../../../Source/third_party/fatfs/src/ff.c **** fs->fs_type = fmt; /* FAT sub-type */
|
|
2214:../../../Source/third_party/fatfs/src/ff.c **** fs->id = ++Fsid; /* File system mount ID */
|
|
2215:../../../Source/third_party/fatfs/src/ff.c **** fs->winsect = 0; /* Invalidate sector cache */
|
|
2216:../../../Source/third_party/fatfs/src/ff.c **** fs->wflag = 0;
|
|
2217:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_RPATH
|
|
2218:../../../Source/third_party/fatfs/src/ff.c **** fs->cdir = 0; /* Current directory (root dir) */
|
|
2219:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2220:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_LOCK /* Clear file lock semaphores */
|
|
2221:../../../Source/third_party/fatfs/src/ff.c **** clear_lock(fs);
|
|
2222:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2223:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2224:../../../Source/third_party/fatfs/src/ff.c **** return FR_OK;
|
|
2225:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2226:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2227:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2228:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2229:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2230:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2231:../../../Source/third_party/fatfs/src/ff.c **** /* Check if the file/dir object is valid or not */
|
|
2232:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2233:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2234:../../../Source/third_party/fatfs/src/ff.c **** static
|
|
2235:../../../Source/third_party/fatfs/src/ff.c **** FRESULT validate ( /* FR_OK(0): The object is valid, !=0: Invalid */
|
|
2236:../../../Source/third_party/fatfs/src/ff.c **** void* obj /* Pointer to the object FIL/DIR to check validity */
|
|
2237:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
2238:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
399 .loc 1 2238 0
|
|
400 .cfi_startproc
|
|
401 @ args = 0, pretend = 0, frame = 0
|
|
402 @ frame_needed = 0, uses_anonymous_args = 0
|
|
403 .LVL44:
|
|
2239:../../../Source/third_party/fatfs/src/ff.c **** FIL *fil = (FIL*)obj; /* Assuming offset of fs and id in the FIL/DIR is identical */
|
|
2240:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2241:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2242:../../../Source/third_party/fatfs/src/ff.c **** if (!fil || !fil->fs || !fil->fs->fs_type || fil->fs->id != fil->id)
|
|
404 .loc 1 2242 0
|
|
405 0000 90B1 cbz r0, .L37
|
|
2238:../../../Source/third_party/fatfs/src/ff.c **** FIL *fil = (FIL*)obj; /* Assuming offset of fs and id in the FIL/DIR is identical */
|
|
406 .loc 1 2238 0 discriminator 1
|
|
407 0002 08B5 push {r3, lr}
|
|
408 .cfi_def_cfa_offset 8
|
|
409 .cfi_offset 3, -8
|
|
410 .cfi_offset 14, -4
|
|
411 .loc 1 2242 0 discriminator 1
|
|
412 0004 0368 ldr r3, [r0]
|
|
413 0006 8BB1 cbz r3, .L38
|
|
414 .loc 1 2242 0 is_stmt 0 discriminator 2
|
|
415 0008 1978 ldrb r1, [r3] @ zero_extendqisi2
|
|
416 000a 89B1 cbz r1, .L39
|
|
417 .loc 1 2242 0 discriminator 3
|
|
418 000c D988 ldrh r1, [r3, #6]
|
|
419 000e 8288 ldrh r2, [r0, #4]
|
|
420 0010 9142 cmp r1, r2
|
|
421 0012 0FD1 bne .L40
|
|
2243:../../../Source/third_party/fatfs/src/ff.c **** return FR_INVALID_OBJECT;
|
|
2244:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2245:../../../Source/third_party/fatfs/src/ff.c **** ENTER_FF(fil->fs); /* Lock file system */
|
|
2246:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2247:../../../Source/third_party/fatfs/src/ff.c **** if (disk_status(fil->fs->drv) & STA_NOINIT)
|
|
422 .loc 1 2247 0 is_stmt 1
|
|
423 0014 5878 ldrb r0, [r3, #1] @ zero_extendqisi2
|
|
424 .LVL45:
|
|
425 0016 FFF7FEFF bl disk_status
|
|
426 .LVL46:
|
|
427 001a 00F00100 and r0, r0, #1
|
|
2248:../../../Source/third_party/fatfs/src/ff.c **** return FR_NOT_READY;
|
|
2249:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2250:../../../Source/third_party/fatfs/src/ff.c **** return FR_OK;
|
|
428 .loc 1 2250 0
|
|
429 001e 0028 cmp r0, #0
|
|
430 0020 14BF ite ne
|
|
431 0022 0320 movne r0, #3
|
|
432 0024 0020 moveq r0, #0
|
|
433 0026 08BD pop {r3, pc}
|
|
434 .LVL47:
|
|
435 .L37:
|
|
436 .cfi_def_cfa_offset 0
|
|
437 .cfi_restore 3
|
|
438 .cfi_restore 14
|
|
2243:../../../Source/third_party/fatfs/src/ff.c **** return FR_INVALID_OBJECT;
|
|
439 .loc 1 2243 0
|
|
440 0028 0920 movs r0, #9
|
|
441 .LVL48:
|
|
2251:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
442 .loc 1 2251 0
|
|
443 002a 7047 bx lr
|
|
444 .LVL49:
|
|
445 .L38:
|
|
446 .cfi_def_cfa_offset 8
|
|
447 .cfi_offset 3, -8
|
|
448 .cfi_offset 14, -4
|
|
2243:../../../Source/third_party/fatfs/src/ff.c **** return FR_INVALID_OBJECT;
|
|
449 .loc 1 2243 0
|
|
450 002c 0920 movs r0, #9
|
|
451 .LVL50:
|
|
452 002e 08BD pop {r3, pc}
|
|
453 .LVL51:
|
|
454 .L39:
|
|
455 0030 0920 movs r0, #9
|
|
456 .LVL52:
|
|
457 0032 08BD pop {r3, pc}
|
|
458 .LVL53:
|
|
459 .L40:
|
|
460 0034 0920 movs r0, #9
|
|
461 .LVL54:
|
|
462 .loc 1 2251 0
|
|
463 0036 08BD pop {r3, pc}
|
|
464 .cfi_endproc
|
|
465 .LFE31:
|
|
467 .section .text.chk_mounted,"ax",%progbits
|
|
468 .align 2
|
|
469 .thumb
|
|
470 .thumb_func
|
|
472 chk_mounted:
|
|
473 .LFB30:
|
|
2072:../../../Source/third_party/fatfs/src/ff.c **** BYTE fmt, b, pi, *tbl;
|
|
474 .loc 1 2072 0
|
|
475 .cfi_startproc
|
|
476 @ args = 0, pretend = 0, frame = 0
|
|
477 @ frame_needed = 0, uses_anonymous_args = 0
|
|
478 .LVL55:
|
|
479 0000 F8B5 push {r3, r4, r5, r6, r7, lr}
|
|
480 .cfi_def_cfa_offset 24
|
|
481 .cfi_offset 3, -24
|
|
482 .cfi_offset 4, -20
|
|
483 .cfi_offset 5, -16
|
|
484 .cfi_offset 6, -12
|
|
485 .cfi_offset 7, -8
|
|
486 .cfi_offset 14, -4
|
|
2078:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs;
|
|
487 .loc 1 2078 0
|
|
488 0002 0468 ldr r4, [r0]
|
|
489 .LVL56:
|
|
2083:../../../Source/third_party/fatfs/src/ff.c **** if (vol <= 9 && p[1] == ':') { /* Found a drive number, get and strip it */
|
|
490 .loc 1 2083 0
|
|
491 0004 2378 ldrb r3, [r4] @ zero_extendqisi2
|
|
492 0006 303B subs r3, r3, #48
|
|
493 .LVL57:
|
|
2084:../../../Source/third_party/fatfs/src/ff.c **** p += 2; *path = p; /* Return pointer to the path name */
|
|
494 .loc 1 2084 0
|
|
495 0008 092B cmp r3, #9
|
|
496 000a 00F28D81 bhi .L44
|
|
2084:../../../Source/third_party/fatfs/src/ff.c **** p += 2; *path = p; /* Return pointer to the path name */
|
|
497 .loc 1 2084 0 is_stmt 0 discriminator 1
|
|
498 000e 6578 ldrb r5, [r4, #1] @ zero_extendqisi2
|
|
499 0010 3A2D cmp r5, #58
|
|
500 0012 40F08981 bne .L44
|
|
501 .LVL58:
|
|
2085:../../../Source/third_party/fatfs/src/ff.c **** } else { /* No drive number, use default drive */
|
|
502 .loc 1 2085 0 is_stmt 1
|
|
503 0016 0234 adds r4, r4, #2
|
|
504 .LVL59:
|
|
505 0018 0460 str r4, [r0]
|
|
2095:../../../Source/third_party/fatfs/src/ff.c **** if (vol >= _VOLUMES) /* Is the drive number valid? */
|
|
506 .loc 1 2095 0
|
|
507 001a 0020 movs r0, #0
|
|
508 .LVL60:
|
|
509 001c 0860 str r0, [r1]
|
|
2096:../../../Source/third_party/fatfs/src/ff.c **** return FR_INVALID_DRIVE;
|
|
510 .loc 1 2096 0
|
|
511 001e 002B cmp r3, #0
|
|
512 0020 40F05A81 bne .L62
|
|
513 .LVL61:
|
|
514 .L58:
|
|
2098:../../../Source/third_party/fatfs/src/ff.c **** if (!fs) return FR_NOT_ENABLED; /* Is the file system object available? */
|
|
515 .loc 1 2098 0
|
|
516 0024 C94B ldr r3, .L92
|
|
517 0026 1C68 ldr r4, [r3]
|
|
518 .LVL62:
|
|
2099:../../../Source/third_party/fatfs/src/ff.c ****
|
|
519 .loc 1 2099 0
|
|
520 0028 002C cmp r4, #0
|
|
521 002a 00F05781 beq .L63
|
|
522 002e 1546 mov r5, r2
|
|
2103:../../../Source/third_party/fatfs/src/ff.c **** if (fs->fs_type) { /* If the volume has been mounted */
|
|
523 .loc 1 2103 0
|
|
524 0030 0C60 str r4, [r1]
|
|
2104:../../../Source/third_party/fatfs/src/ff.c **** stat = disk_status(fs->drv);
|
|
525 .loc 1 2104 0
|
|
526 0032 2378 ldrb r3, [r4] @ zero_extendqisi2
|
|
527 0034 83B1 cbz r3, .L46
|
|
2105:../../../Source/third_party/fatfs/src/ff.c **** if (!(stat & STA_NOINIT)) { /* and the physical drive is kept initialized (has not been changed)
|
|
528 .loc 1 2105 0
|
|
529 0036 6078 ldrb r0, [r4, #1] @ zero_extendqisi2
|
|
530 0038 FFF7FEFF bl disk_status
|
|
531 .LVL63:
|
|
2106:../../../Source/third_party/fatfs/src/ff.c **** if (!_FS_READONLY && wmode && (stat & STA_PROTECT)) /* Check write protection if needed */
|
|
532 .loc 1 2106 0
|
|
533 003c 10F0010F tst r0, #1
|
|
534 0040 0AD1 bne .L46
|
|
2107:../../../Source/third_party/fatfs/src/ff.c **** return FR_WRITE_PROTECTED;
|
|
535 .loc 1 2107 0
|
|
536 0042 002D cmp r5, #0
|
|
537 0044 00F04C81 beq .L64
|
|
2107:../../../Source/third_party/fatfs/src/ff.c **** return FR_WRITE_PROTECTED;
|
|
538 .loc 1 2107 0 is_stmt 0 discriminator 1
|
|
539 0048 00F00400 and r0, r0, #4
|
|
540 .LVL64:
|
|
541 004c C0B2 uxtb r0, r0
|
|
2108:../../../Source/third_party/fatfs/src/ff.c **** return FR_OK; /* The file system object is valid */
|
|
542 .loc 1 2108 0 is_stmt 1 discriminator 1
|
|
543 004e 0028 cmp r0, #0
|
|
544 0050 0CBF ite eq
|
|
545 0052 0020 moveq r0, #0
|
|
546 0054 0A20 movne r0, #10
|
|
547 0056 F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
548 .LVL65:
|
|
549 .L46:
|
|
2116:../../../Source/third_party/fatfs/src/ff.c **** fs->drv = LD2PD(vol); /* Bind the logical drive and a physical drive */
|
|
550 .loc 1 2116 0
|
|
551 0058 0020 movs r0, #0
|
|
552 005a 2070 strb r0, [r4]
|
|
2117:../../../Source/third_party/fatfs/src/ff.c **** stat = disk_initialize(fs->drv); /* Initialize the physical drive */
|
|
553 .loc 1 2117 0
|
|
554 005c 6070 strb r0, [r4, #1]
|
|
2118:../../../Source/third_party/fatfs/src/ff.c **** if (stat & STA_NOINIT) /* Check if the initialization succeeded */
|
|
555 .loc 1 2118 0
|
|
556 005e FFF7FEFF bl disk_initialize
|
|
557 .LVL66:
|
|
2119:../../../Source/third_party/fatfs/src/ff.c **** return FR_NOT_READY; /* Failed to initialize due to no medium or hard error */
|
|
558 .loc 1 2119 0
|
|
559 0062 10F0010F tst r0, #1
|
|
560 0066 40F03D81 bne .L66
|
|
2121:../../../Source/third_party/fatfs/src/ff.c **** return FR_WRITE_PROTECTED;
|
|
561 .loc 1 2121 0
|
|
562 006a 1DB1 cbz r5, .L47
|
|
2121:../../../Source/third_party/fatfs/src/ff.c **** return FR_WRITE_PROTECTED;
|
|
563 .loc 1 2121 0 is_stmt 0 discriminator 1
|
|
564 006c 10F0040F tst r0, #4
|
|
565 0070 40F03A81 bne .L67
|
|
566 .L47:
|
|
567 .LVL67:
|
|
2128:../../../Source/third_party/fatfs/src/ff.c **** if (LD2PT(vol) && !fmt) fmt = 1; /* Force non-SFD if the volume is forced partition */
|
|
568 .loc 1 2128 0 is_stmt 1
|
|
569 0074 2046 mov r0, r4
|
|
570 .LVL68:
|
|
571 0076 0021 movs r1, #0
|
|
572 0078 FFF7FEFF bl check_fs
|
|
573 .LVL69:
|
|
2130:../../../Source/third_party/fatfs/src/ff.c **** /* Check the partition listed in the partition table */
|
|
574 .loc 1 2130 0
|
|
575 007c 0128 cmp r0, #1
|
|
576 007e 17D1 bne .L68
|
|
577 .LVL70:
|
|
2135:../../../Source/third_party/fatfs/src/ff.c **** bsect = LD_DWORD(&tbl[8]); /* Partition offset in LBA */
|
|
578 .loc 1 2135 0
|
|
579 0080 94F8F631 ldrb r3, [r4, #502] @ zero_extendqisi2
|
|
580 0084 002B cmp r3, #0
|
|
581 0086 00F03181 beq .L69
|
|
2136:../../../Source/third_party/fatfs/src/ff.c **** fmt = check_fs(fs, bsect); /* Check the partition */
|
|
582 .loc 1 2136 0
|
|
583 008a 94F8FD21 ldrb r2, [r4, #509] @ zero_extendqisi2
|
|
584 008e 94F8FC31 ldrb r3, [r4, #508] @ zero_extendqisi2
|
|
585 0092 1B04 lsls r3, r3, #16
|
|
586 0094 43EA0263 orr r3, r3, r2, lsl #24
|
|
587 0098 94F8FA51 ldrb r5, [r4, #506] @ zero_extendqisi2
|
|
588 009c 2B43 orrs r3, r3, r5
|
|
589 009e 94F8FB51 ldrb r5, [r4, #507] @ zero_extendqisi2
|
|
590 00a2 43EA0525 orr r5, r3, r5, lsl #8
|
|
591 .LVL71:
|
|
2137:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
592 .loc 1 2137 0
|
|
593 00a6 2046 mov r0, r4
|
|
594 .LVL72:
|
|
595 00a8 2946 mov r1, r5
|
|
596 00aa FFF7FEFF bl check_fs
|
|
597 .LVL73:
|
|
598 00ae 00E0 b .L48
|
|
599 .LVL74:
|
|
600 .L68:
|
|
2128:../../../Source/third_party/fatfs/src/ff.c **** if (LD2PT(vol) && !fmt) fmt = 1; /* Force non-SFD if the volume is forced partition */
|
|
601 .loc 1 2128 0
|
|
602 00b0 0025 movs r5, #0
|
|
603 .LVL75:
|
|
604 .L48:
|
|
2140:../../../Source/third_party/fatfs/src/ff.c **** if (fmt) return FR_NO_FILESYSTEM; /* No FAT volume is found */
|
|
605 .loc 1 2140 0
|
|
606 00b2 0328 cmp r0, #3
|
|
607 00b4 00F01C81 beq .L70
|
|
2141:../../../Source/third_party/fatfs/src/ff.c ****
|
|
608 .loc 1 2141 0
|
|
609 00b8 0028 cmp r0, #0
|
|
610 00ba 40F01B81 bne .L71
|
|
2145:../../../Source/third_party/fatfs/src/ff.c **** return FR_NO_FILESYSTEM;
|
|
611 .loc 1 2145 0
|
|
612 00be 94F84020 ldrb r2, [r4, #64] @ zero_extendqisi2
|
|
613 00c2 94F83F30 ldrb r3, [r4, #63] @ zero_extendqisi2
|
|
614 00c6 43EA0223 orr r3, r3, r2, lsl #8
|
|
615 00ca 1BB2 sxth r3, r3
|
|
616 00cc B3F5007F cmp r3, #512
|
|
617 00d0 40F01281 bne .L72
|
|
2148:../../../Source/third_party/fatfs/src/ff.c **** if (!fasize) fasize = LD_DWORD(fs->win+BPB_FATSz32);
|
|
618 .loc 1 2148 0
|
|
619 00d4 94F84B00 ldrb r0, [r4, #75] @ zero_extendqisi2
|
|
620 .LVL76:
|
|
621 00d8 94F84A30 ldrb r3, [r4, #74] @ zero_extendqisi2
|
|
622 .LVL77:
|
|
2149:../../../Source/third_party/fatfs/src/ff.c **** fs->fsize = fasize;
|
|
623 .loc 1 2149 0
|
|
624 00dc 53EA0020 orrs r0, r3, r0, lsl #8
|
|
625 .LVL78:
|
|
626 00e0 0DD1 bne .L49
|
|
2149:../../../Source/third_party/fatfs/src/ff.c **** fs->fsize = fasize;
|
|
627 .loc 1 2149 0 is_stmt 0 discriminator 1
|
|
628 00e2 94F85B20 ldrb r2, [r4, #91] @ zero_extendqisi2
|
|
629 00e6 94F85A30 ldrb r3, [r4, #90] @ zero_extendqisi2
|
|
630 00ea 1B04 lsls r3, r3, #16
|
|
631 00ec 43EA0263 orr r3, r3, r2, lsl #24
|
|
632 00f0 94F85800 ldrb r0, [r4, #88] @ zero_extendqisi2
|
|
633 .LVL79:
|
|
634 00f4 0343 orrs r3, r3, r0
|
|
635 00f6 94F85900 ldrb r0, [r4, #89] @ zero_extendqisi2
|
|
636 00fa 43EA0020 orr r0, r3, r0, lsl #8
|
|
637 .LVL80:
|
|
638 .L49:
|
|
2150:../../../Source/third_party/fatfs/src/ff.c ****
|
|
639 .loc 1 2150 0 is_stmt 1
|
|
640 00fe E061 str r0, [r4, #28]
|
|
2152:../../../Source/third_party/fatfs/src/ff.c **** if (b != 1 && b != 2) return FR_NO_FILESYSTEM; /* (Must be 1 or 2) */
|
|
641 .loc 1 2152 0
|
|
642 0100 94F84470 ldrb r7, [r4, #68] @ zero_extendqisi2
|
|
643 .LVL81:
|
|
644 0104 E770 strb r7, [r4, #3]
|
|
2153:../../../Source/third_party/fatfs/src/ff.c **** fasize *= b; /* Number of sectors for FAT area */
|
|
645 .loc 1 2153 0
|
|
646 0106 7B1E subs r3, r7, #1
|
|
647 0108 DBB2 uxtb r3, r3
|
|
648 010a 012B cmp r3, #1
|
|
649 010c 00F2F680 bhi .L73
|
|
650 .LVL82:
|
|
2156:../../../Source/third_party/fatfs/src/ff.c **** if (!b || (b & (b - 1))) return FR_NO_FILESYSTEM; /* (Must be power of 2) */
|
|
651 .loc 1 2156 0
|
|
652 0110 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2
|
|
653 .LVL83:
|
|
654 0114 A370 strb r3, [r4, #2]
|
|
2157:../../../Source/third_party/fatfs/src/ff.c ****
|
|
655 .loc 1 2157 0
|
|
656 0116 002B cmp r3, #0
|
|
657 0118 00F0F280 beq .L74
|
|
2157:../../../Source/third_party/fatfs/src/ff.c ****
|
|
658 .loc 1 2157 0 is_stmt 0 discriminator 2
|
|
659 011c 5A1E subs r2, r3, #1
|
|
660 011e 1A42 tst r2, r3
|
|
661 0120 40F0F080 bne .L75
|
|
2159:../../../Source/third_party/fatfs/src/ff.c **** if (fs->n_rootdir % (SS(fs) / SZ_DIR)) return FR_NO_FILESYSTEM; /* (BPB_RootEntCnt must be sector
|
|
662 .loc 1 2159 0 is_stmt 1
|
|
663 0124 94F84660 ldrb r6, [r4, #70] @ zero_extendqisi2
|
|
664 0128 94F84520 ldrb r2, [r4, #69] @ zero_extendqisi2
|
|
665 012c 42EA0626 orr r6, r2, r6, lsl #8
|
|
666 0130 2681 strh r6, [r4, #8] @ movhi
|
|
2160:../../../Source/third_party/fatfs/src/ff.c ****
|
|
667 .loc 1 2160 0
|
|
668 0132 16F00F0F tst r6, #15
|
|
669 0136 40F0E780 bne .L76
|
|
2162:../../../Source/third_party/fatfs/src/ff.c **** if (!tsect) tsect = LD_DWORD(fs->win+BPB_TotSec32);
|
|
670 .loc 1 2162 0
|
|
671 013a 94F84810 ldrb r1, [r4, #72] @ zero_extendqisi2
|
|
672 013e 94F84720 ldrb r2, [r4, #71] @ zero_extendqisi2
|
|
673 .LVL84:
|
|
2163:../../../Source/third_party/fatfs/src/ff.c ****
|
|
674 .loc 1 2163 0
|
|
675 0142 52EA0122 orrs r2, r2, r1, lsl #8
|
|
676 .LVL85:
|
|
677 0146 0DD1 bne .L50
|
|
2163:../../../Source/third_party/fatfs/src/ff.c ****
|
|
678 .loc 1 2163 0 is_stmt 0 discriminator 1
|
|
679 0148 94F85710 ldrb r1, [r4, #87] @ zero_extendqisi2
|
|
680 014c 94F85620 ldrb r2, [r4, #86] @ zero_extendqisi2
|
|
681 .LVL86:
|
|
682 0150 1204 lsls r2, r2, #16
|
|
683 0152 42EA0161 orr r1, r2, r1, lsl #24
|
|
684 0156 94F85420 ldrb r2, [r4, #84] @ zero_extendqisi2
|
|
685 015a 0A43 orrs r2, r2, r1
|
|
686 015c 94F85510 ldrb r1, [r4, #85] @ zero_extendqisi2
|
|
687 0160 42EA0122 orr r2, r2, r1, lsl #8
|
|
688 .LVL87:
|
|
689 .L50:
|
|
2165:../../../Source/third_party/fatfs/src/ff.c **** if (!nrsv) return FR_NO_FILESYSTEM; /* (BPB_RsvdSecCnt must not be 0) */
|
|
690 .loc 1 2165 0 is_stmt 1
|
|
691 0164 94F843E0 ldrb lr, [r4, #67] @ zero_extendqisi2
|
|
692 0168 94F84210 ldrb r1, [r4, #66] @ zero_extendqisi2
|
|
693 .LVL88:
|
|
2166:../../../Source/third_party/fatfs/src/ff.c ****
|
|
694 .loc 1 2166 0
|
|
695 016c 51EA0E21 orrs r1, r1, lr, lsl #8
|
|
696 .LVL89:
|
|
697 0170 00F0CC80 beq .L77
|
|
2154:../../../Source/third_party/fatfs/src/ff.c ****
|
|
698 .loc 1 2154 0
|
|
699 0174 07FB00F7 mul r7, r7, r0
|
|
700 .LVL90:
|
|
701 0178 01EB161C add ip, r1, r6, lsr #4
|
|
2169:../../../Source/third_party/fatfs/src/ff.c **** if (tsect < sysect) return FR_NO_FILESYSTEM; /* (Invalid volume size) */
|
|
702 .loc 1 2169 0
|
|
703 017c BC44 add ip, ip, r7
|
|
704 .LVL91:
|
|
2170:../../../Source/third_party/fatfs/src/ff.c **** nclst = (tsect - sysect) / fs->csize; /* Number of clusters */
|
|
705 .loc 1 2170 0
|
|
706 017e 6245 cmp r2, ip
|
|
707 0180 C0F0C680 bcc .L78
|
|
2171:../../../Source/third_party/fatfs/src/ff.c **** if (!nclst) return FR_NO_FILESYSTEM; /* (Invalid volume size) */
|
|
708 .loc 1 2171 0
|
|
709 0184 CCEB0202 rsb r2, ip, r2
|
|
710 .LVL92:
|
|
711 0188 B2FBF3F3 udiv r3, r2, r3
|
|
712 .LVL93:
|
|
2172:../../../Source/third_party/fatfs/src/ff.c **** fmt = FS_FAT12;
|
|
713 .loc 1 2172 0
|
|
714 018c 002B cmp r3, #0
|
|
715 018e 00F0C180 beq .L79
|
|
716 .LVL94:
|
|
2174:../../../Source/third_party/fatfs/src/ff.c **** if (nclst >= MIN_FAT32) fmt = FS_FAT32;
|
|
717 .loc 1 2174 0
|
|
718 0192 40F6F57E movw lr, #4085
|
|
719 .LVL95:
|
|
720 0196 7345 cmp r3, lr
|
|
721 0198 94BF ite ls
|
|
722 019a 4FF0010E movls lr, #1
|
|
723 019e 4FF0020E movhi lr, #2
|
|
724 .LVL96:
|
|
2175:../../../Source/third_party/fatfs/src/ff.c ****
|
|
725 .loc 1 2175 0
|
|
726 01a2 4FF6F572 movw r2, #65525
|
|
727 01a6 9342 cmp r3, r2
|
|
728 01a8 00F2C180 bhi .L52
|
|
2178:../../../Source/third_party/fatfs/src/ff.c **** fs->volbase = bsect; /* Volume start sector */
|
|
729 .loc 1 2178 0
|
|
730 01ac 0233 adds r3, r3, #2
|
|
731 .LVL97:
|
|
732 01ae A361 str r3, [r4, #24]
|
|
2179:../../../Source/third_party/fatfs/src/ff.c **** fs->fatbase = bsect + nrsv; /* FAT start sector */
|
|
733 .loc 1 2179 0
|
|
734 01b0 2562 str r5, [r4, #32]
|
|
2180:../../../Source/third_party/fatfs/src/ff.c **** fs->database = bsect + sysect; /* Data start sector */
|
|
735 .loc 1 2180 0
|
|
736 01b2 2944 add r1, r1, r5
|
|
737 01b4 6162 str r1, [r4, #36]
|
|
2181:../../../Source/third_party/fatfs/src/ff.c **** if (fmt == FS_FAT32) {
|
|
738 .loc 1 2181 0
|
|
739 01b6 0CEB0502 add r2, ip, r5
|
|
740 01ba E262 str r2, [r4, #44]
|
|
2182:../../../Source/third_party/fatfs/src/ff.c **** if (fs->n_rootdir) return FR_NO_FILESYSTEM; /* (BPB_RootEntCnt must be 0) */
|
|
741 .loc 1 2182 0
|
|
742 01bc BEF1030F cmp lr, #3
|
|
743 01c0 19D1 bne .L53
|
|
744 .LVL98:
|
|
745 .L59:
|
|
2183:../../../Source/third_party/fatfs/src/ff.c **** fs->dirbase = LD_DWORD(fs->win+BPB_RootClus); /* Root directory start cluster */
|
|
746 .loc 1 2183 0
|
|
747 01c2 002E cmp r6, #0
|
|
748 01c4 40F0A880 bne .L81
|
|
2184:../../../Source/third_party/fatfs/src/ff.c **** szbfat = fs->n_fatent * 4; /* (Required FAT size) */
|
|
749 .loc 1 2184 0
|
|
750 01c8 94F86310 ldrb r1, [r4, #99] @ zero_extendqisi2
|
|
751 01cc 94F86220 ldrb r2, [r4, #98] @ zero_extendqisi2
|
|
752 01d0 1204 lsls r2, r2, #16
|
|
753 01d2 42EA0161 orr r1, r2, r1, lsl #24
|
|
754 01d6 94F86020 ldrb r2, [r4, #96] @ zero_extendqisi2
|
|
755 01da 0A43 orrs r2, r2, r1
|
|
756 01dc 94F86110 ldrb r1, [r4, #97] @ zero_extendqisi2
|
|
757 01e0 42EA0122 orr r2, r2, r1, lsl #8
|
|
758 01e4 A262 str r2, [r4, #40]
|
|
759 .LVL99:
|
|
2185:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
760 .loc 1 2185 0
|
|
761 01e6 9B00 lsls r3, r3, #2
|
|
762 .LVL100:
|
|
2192:../../../Source/third_party/fatfs/src/ff.c **** return FR_NO_FILESYSTEM;
|
|
763 .loc 1 2192 0
|
|
764 01e8 03F2FF13 addw r3, r3, #511
|
|
765 .LVL101:
|
|
766 01ec B0EB532F cmp r0, r3, lsr #9
|
|
767 01f0 C0F09480 bcc .L82
|
|
768 01f4 BAE0 b .L89
|
|
769 .LVL102:
|
|
770 .L53:
|
|
2187:../../../Source/third_party/fatfs/src/ff.c **** fs->dirbase = fs->fatbase + fasize; /* Root directory start sector */
|
|
771 .loc 1 2187 0
|
|
772 01f6 002E cmp r6, #0
|
|
773 01f8 00F09280 beq .L83
|
|
2188:../../../Source/third_party/fatfs/src/ff.c **** szbfat = (fmt == FS_FAT16) ? /* (Required FAT size) */
|
|
774 .loc 1 2188 0
|
|
775 01fc 3944 add r1, r1, r7
|
|
776 01fe A162 str r1, [r4, #40]
|
|
2190:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
777 .loc 1 2190 0
|
|
778 0200 BEF1020F cmp lr, #2
|
|
779 0204 0FBF iteee eq
|
|
780 0206 5B00 lsleq r3, r3, #1
|
|
781 .LVL103:
|
|
782 0208 03EB4302 addne r2, r3, r3, lsl #1
|
|
783 020c 03F00103 andne r3, r3, #1
|
|
784 0210 03EB5203 addne r3, r3, r2, lsr #1
|
|
785 0214 A4E0 b .L56
|
|
786 .LVL104:
|
|
787 .L61:
|
|
2205:../../../Source/third_party/fatfs/src/ff.c **** LD_DWORD(fs->win+FSI_LeadSig) == 0x41615252 &&
|
|
788 .loc 1 2205 0 discriminator 1
|
|
789 0216 94F83322 ldrb r2, [r4, #563] @ zero_extendqisi2
|
|
790 021a 94F83232 ldrb r3, [r4, #562] @ zero_extendqisi2
|
|
791 021e 43EA0223 orr r3, r3, r2, lsl #8
|
|
2204:../../../Source/third_party/fatfs/src/ff.c **** LD_WORD(fs->win+BS_55AA) == 0xAA55 &&
|
|
792 .loc 1 2204 0 discriminator 1
|
|
793 0222 1BB2 sxth r3, r3
|
|
794 0224 4A4A ldr r2, .L92+4
|
|
795 0226 9342 cmp r3, r2
|
|
796 0228 42D1 bne .L84
|
|
2206:../../../Source/third_party/fatfs/src/ff.c **** LD_DWORD(fs->win+FSI_StrucSig) == 0x61417272) {
|
|
797 .loc 1 2206 0
|
|
798 022a 94F83720 ldrb r2, [r4, #55] @ zero_extendqisi2
|
|
799 022e 94F83630 ldrb r3, [r4, #54] @ zero_extendqisi2
|
|
800 0232 1B04 lsls r3, r3, #16
|
|
801 0234 43EA0262 orr r2, r3, r2, lsl #24
|
|
802 0238 94F83430 ldrb r3, [r4, #52] @ zero_extendqisi2
|
|
803 023c 1343 orrs r3, r3, r2
|
|
804 023e 94F83520 ldrb r2, [r4, #53] @ zero_extendqisi2
|
|
805 0242 43EA0223 orr r3, r3, r2, lsl #8
|
|
2205:../../../Source/third_party/fatfs/src/ff.c **** LD_DWORD(fs->win+FSI_LeadSig) == 0x41615252 &&
|
|
806 .loc 1 2205 0
|
|
807 0246 434A ldr r2, .L92+8
|
|
808 0248 9342 cmp r3, r2
|
|
809 024a 34D1 bne .L85
|
|
2207:../../../Source/third_party/fatfs/src/ff.c **** fs->last_clust = LD_DWORD(fs->win+FSI_Nxt_Free);
|
|
810 .loc 1 2207 0
|
|
811 024c 94F81B22 ldrb r2, [r4, #539] @ zero_extendqisi2
|
|
812 0250 94F81A32 ldrb r3, [r4, #538] @ zero_extendqisi2
|
|
813 0254 1B04 lsls r3, r3, #16
|
|
814 0256 43EA0262 orr r2, r3, r2, lsl #24
|
|
815 025a 94F81832 ldrb r3, [r4, #536] @ zero_extendqisi2
|
|
816 025e 1343 orrs r3, r3, r2
|
|
817 0260 94F81922 ldrb r2, [r4, #537] @ zero_extendqisi2
|
|
818 0264 43EA0223 orr r3, r3, r2, lsl #8
|
|
2206:../../../Source/third_party/fatfs/src/ff.c **** LD_DWORD(fs->win+FSI_StrucSig) == 0x61417272) {
|
|
819 .loc 1 2206 0
|
|
820 0268 3B4A ldr r2, .L92+12
|
|
821 026a 9342 cmp r3, r2
|
|
822 026c 26D1 bne .L86
|
|
2208:../../../Source/third_party/fatfs/src/ff.c **** fs->free_clust = LD_DWORD(fs->win+FSI_Free_Count);
|
|
823 .loc 1 2208 0
|
|
824 026e 94F82322 ldrb r2, [r4, #547] @ zero_extendqisi2
|
|
825 0272 94F82232 ldrb r3, [r4, #546] @ zero_extendqisi2
|
|
826 0276 1B04 lsls r3, r3, #16
|
|
827 0278 43EA0262 orr r2, r3, r2, lsl #24
|
|
828 027c 94F82032 ldrb r3, [r4, #544] @ zero_extendqisi2
|
|
829 0280 1343 orrs r3, r3, r2
|
|
830 0282 94F82122 ldrb r2, [r4, #545] @ zero_extendqisi2
|
|
831 0286 43EA0223 orr r3, r3, r2, lsl #8
|
|
832 028a E360 str r3, [r4, #12]
|
|
2209:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
833 .loc 1 2209 0
|
|
834 028c 94F81F22 ldrb r2, [r4, #543] @ zero_extendqisi2
|
|
835 0290 94F81E32 ldrb r3, [r4, #542] @ zero_extendqisi2
|
|
836 0294 1B04 lsls r3, r3, #16
|
|
837 0296 43EA0262 orr r2, r3, r2, lsl #24
|
|
838 029a 94F81C32 ldrb r3, [r4, #540] @ zero_extendqisi2
|
|
839 029e 1343 orrs r3, r3, r2
|
|
840 02a0 94F81D22 ldrb r2, [r4, #541] @ zero_extendqisi2
|
|
841 02a4 43EA0223 orr r3, r3, r2, lsl #8
|
|
842 02a8 2361 str r3, [r4, #16]
|
|
843 02aa 4FF0030E mov lr, #3
|
|
844 02ae 07E0 b .L57
|
|
845 .L84:
|
|
846 02b0 4FF0030E mov lr, #3
|
|
847 02b4 04E0 b .L57
|
|
848 .L85:
|
|
849 02b6 4FF0030E mov lr, #3
|
|
850 02ba 01E0 b .L57
|
|
851 .L86:
|
|
852 02bc 4FF0030E mov lr, #3
|
|
853 .LVL105:
|
|
854 .L57:
|
|
2213:../../../Source/third_party/fatfs/src/ff.c **** fs->id = ++Fsid; /* File system mount ID */
|
|
855 .loc 1 2213 0
|
|
856 02c0 84F800E0 strb lr, [r4]
|
|
2214:../../../Source/third_party/fatfs/src/ff.c **** fs->winsect = 0; /* Invalidate sector cache */
|
|
857 .loc 1 2214 0
|
|
858 02c4 254A ldr r2, .L92+16
|
|
859 02c6 1388 ldrh r3, [r2]
|
|
860 02c8 0133 adds r3, r3, #1
|
|
861 02ca 9BB2 uxth r3, r3
|
|
862 02cc 1380 strh r3, [r2] @ movhi
|
|
863 02ce E380 strh r3, [r4, #6] @ movhi
|
|
2215:../../../Source/third_party/fatfs/src/ff.c **** fs->wflag = 0;
|
|
864 .loc 1 2215 0
|
|
865 02d0 0020 movs r0, #0
|
|
866 02d2 2063 str r0, [r4, #48]
|
|
2216:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_RPATH
|
|
867 .loc 1 2216 0
|
|
868 02d4 2071 strb r0, [r4, #4]
|
|
2224:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
869 .loc 1 2224 0
|
|
870 02d6 F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
871 .LVL106:
|
|
872 .L62:
|
|
2097:../../../Source/third_party/fatfs/src/ff.c **** fs = FatFs[vol]; /* Get corresponding file system object */
|
|
873 .loc 1 2097 0
|
|
874 02d8 0B20 movs r0, #11
|
|
875 02da F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
876 .LVL107:
|
|
877 .L63:
|
|
2099:../../../Source/third_party/fatfs/src/ff.c ****
|
|
878 .loc 1 2099 0
|
|
879 02dc 0C20 movs r0, #12
|
|
880 02de F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
881 .LVL108:
|
|
882 .L64:
|
|
2109:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
883 .loc 1 2109 0
|
|
884 02e0 0020 movs r0, #0
|
|
885 .LVL109:
|
|
886 02e2 F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
887 .LVL110:
|
|
888 .L66:
|
|
2120:../../../Source/third_party/fatfs/src/ff.c **** if (!_FS_READONLY && wmode && (stat & STA_PROTECT)) /* Check disk write protection if needed */
|
|
889 .loc 1 2120 0
|
|
890 02e4 0320 movs r0, #3
|
|
891 .LVL111:
|
|
892 02e6 F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
893 .LVL112:
|
|
894 .L67:
|
|
2122:../../../Source/third_party/fatfs/src/ff.c **** #if _MAX_SS != 512 /* Get disk sector size (variable sector size cfg only) */
|
|
895 .loc 1 2122 0
|
|
896 02e8 0A20 movs r0, #10
|
|
897 .LVL113:
|
|
898 02ea F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
899 .LVL114:
|
|
900 .L69:
|
|
2141:../../../Source/third_party/fatfs/src/ff.c ****
|
|
901 .loc 1 2141 0
|
|
902 02ec 0D20 movs r0, #13
|
|
903 .LVL115:
|
|
904 02ee F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
905 .LVL116:
|
|
906 .L70:
|
|
2140:../../../Source/third_party/fatfs/src/ff.c **** if (fmt) return FR_NO_FILESYSTEM; /* No FAT volume is found */
|
|
907 .loc 1 2140 0
|
|
908 02f0 0120 movs r0, #1
|
|
909 .LVL117:
|
|
910 02f2 F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
911 .LVL118:
|
|
912 .L71:
|
|
2141:../../../Source/third_party/fatfs/src/ff.c ****
|
|
913 .loc 1 2141 0
|
|
914 02f4 0D20 movs r0, #13
|
|
915 .LVL119:
|
|
916 02f6 F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
917 .LVL120:
|
|
918 .L72:
|
|
2146:../../../Source/third_party/fatfs/src/ff.c ****
|
|
919 .loc 1 2146 0
|
|
920 02f8 0D20 movs r0, #13
|
|
921 .LVL121:
|
|
922 02fa F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
923 .LVL122:
|
|
924 .L73:
|
|
2153:../../../Source/third_party/fatfs/src/ff.c **** fasize *= b; /* Number of sectors for FAT area */
|
|
925 .loc 1 2153 0
|
|
926 02fc 0D20 movs r0, #13
|
|
927 .LVL123:
|
|
928 02fe F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
929 .LVL124:
|
|
930 .L74:
|
|
2157:../../../Source/third_party/fatfs/src/ff.c ****
|
|
931 .loc 1 2157 0
|
|
932 0300 0D20 movs r0, #13
|
|
933 .LVL125:
|
|
934 0302 F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
935 .LVL126:
|
|
936 .L75:
|
|
937 0304 0D20 movs r0, #13
|
|
938 .LVL127:
|
|
939 0306 F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
940 .LVL128:
|
|
941 .L76:
|
|
2160:../../../Source/third_party/fatfs/src/ff.c ****
|
|
942 .loc 1 2160 0
|
|
943 0308 0D20 movs r0, #13
|
|
944 .LVL129:
|
|
945 030a F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
946 .LVL130:
|
|
947 .L77:
|
|
2166:../../../Source/third_party/fatfs/src/ff.c ****
|
|
948 .loc 1 2166 0
|
|
949 030c 0D20 movs r0, #13
|
|
950 .LVL131:
|
|
951 030e F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
952 .LVL132:
|
|
953 .L78:
|
|
2170:../../../Source/third_party/fatfs/src/ff.c **** nclst = (tsect - sysect) / fs->csize; /* Number of clusters */
|
|
954 .loc 1 2170 0
|
|
955 0310 0D20 movs r0, #13
|
|
956 .LVL133:
|
|
957 0312 F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
958 .LVL134:
|
|
959 .L79:
|
|
2172:../../../Source/third_party/fatfs/src/ff.c **** fmt = FS_FAT12;
|
|
960 .loc 1 2172 0
|
|
961 0314 0D20 movs r0, #13
|
|
962 .LVL135:
|
|
963 0316 F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
964 .LVL136:
|
|
965 .L81:
|
|
2183:../../../Source/third_party/fatfs/src/ff.c **** fs->dirbase = LD_DWORD(fs->win+BPB_RootClus); /* Root directory start cluster */
|
|
966 .loc 1 2183 0
|
|
967 0318 0D20 movs r0, #13
|
|
968 .LVL137:
|
|
969 031a F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
970 .LVL138:
|
|
971 .L82:
|
|
2193:../../../Source/third_party/fatfs/src/ff.c ****
|
|
972 .loc 1 2193 0
|
|
973 031c 0D20 movs r0, #13
|
|
974 .LVL139:
|
|
975 031e F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
976 .LVL140:
|
|
977 .L83:
|
|
2187:../../../Source/third_party/fatfs/src/ff.c **** fs->dirbase = fs->fatbase + fasize; /* Root directory start sector */
|
|
978 .loc 1 2187 0
|
|
979 0320 0D20 movs r0, #13
|
|
980 .LVL141:
|
|
981 0322 F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
982 .LVL142:
|
|
983 .L87:
|
|
2193:../../../Source/third_party/fatfs/src/ff.c ****
|
|
984 .loc 1 2193 0
|
|
985 0324 0D20 movs r0, #13
|
|
986 .LVL143:
|
|
987 0326 F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
988 .LVL144:
|
|
989 .L44:
|
|
2095:../../../Source/third_party/fatfs/src/ff.c **** if (vol >= _VOLUMES) /* Is the drive number valid? */
|
|
990 .loc 1 2095 0
|
|
991 0328 0023 movs r3, #0
|
|
992 032a 0B60 str r3, [r1]
|
|
993 032c 7AE6 b .L58
|
|
994 .LVL145:
|
|
995 .L52:
|
|
2178:../../../Source/third_party/fatfs/src/ff.c **** fs->volbase = bsect; /* Volume start sector */
|
|
996 .loc 1 2178 0
|
|
997 032e 0233 adds r3, r3, #2
|
|
998 .LVL146:
|
|
999 0330 A361 str r3, [r4, #24]
|
|
2179:../../../Source/third_party/fatfs/src/ff.c **** fs->fatbase = bsect + nrsv; /* FAT start sector */
|
|
1000 .loc 1 2179 0
|
|
1001 0332 2562 str r5, [r4, #32]
|
|
2180:../../../Source/third_party/fatfs/src/ff.c **** fs->database = bsect + sysect; /* Data start sector */
|
|
1002 .loc 1 2180 0
|
|
1003 0334 2944 add r1, r1, r5
|
|
1004 0336 6162 str r1, [r4, #36]
|
|
2181:../../../Source/third_party/fatfs/src/ff.c **** if (fmt == FS_FAT32) {
|
|
1005 .loc 1 2181 0
|
|
1006 0338 0CEB0502 add r2, ip, r5
|
|
1007 033c E262 str r2, [r4, #44]
|
|
1008 033e 40E7 b .L59
|
|
1009 .LVL147:
|
|
1010 .L90:
|
|
2197:../../../Source/third_party/fatfs/src/ff.c **** fs->last_clust = 0;
|
|
1011 .loc 1 2197 0
|
|
1012 0340 4FF0FF33 mov r3, #-1
|
|
1013 0344 2361 str r3, [r4, #16]
|
|
2198:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1014 .loc 1 2198 0
|
|
1015 0346 0023 movs r3, #0
|
|
1016 0348 E360 str r3, [r4, #12]
|
|
1017 034a B9E7 b .L57
|
|
1018 .L93:
|
|
1019 .align 2
|
|
1020 .L92:
|
|
1021 034c 00000000 .word .LANCHOR0
|
|
1022 0350 55AAFFFF .word -21931
|
|
1023 0354 52526141 .word 1096897106
|
|
1024 0358 72724161 .word 1631679090
|
|
1025 035c 00000000 .word .LANCHOR1
|
|
1026 .LVL148:
|
|
1027 .L56:
|
|
2192:../../../Source/third_party/fatfs/src/ff.c **** return FR_NO_FILESYSTEM;
|
|
1028 .loc 1 2192 0
|
|
1029 0360 03F2FF13 addw r3, r3, #511
|
|
1030 .LVL149:
|
|
1031 0364 B0EB532F cmp r0, r3, lsr #9
|
|
1032 .LVL150:
|
|
1033 0368 DCD3 bcc .L87
|
|
1034 036a E9E7 b .L90
|
|
1035 .LVL151:
|
|
1036 .L89:
|
|
2197:../../../Source/third_party/fatfs/src/ff.c **** fs->last_clust = 0;
|
|
1037 .loc 1 2197 0
|
|
1038 036c 4FF0FF33 mov r3, #-1
|
|
1039 .LVL152:
|
|
1040 0370 2361 str r3, [r4, #16]
|
|
2198:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1041 .loc 1 2198 0
|
|
1042 0372 0023 movs r3, #0
|
|
1043 0374 E360 str r3, [r4, #12]
|
|
2202:../../../Source/third_party/fatfs/src/ff.c **** fs->fsi_sector = bsect + LD_WORD(fs->win+BPB_FSInfo);
|
|
1044 .loc 1 2202 0
|
|
1045 0376 6371 strb r3, [r4, #5]
|
|
2203:../../../Source/third_party/fatfs/src/ff.c **** if (disk_read(fs->drv, fs->win, fs->fsi_sector, 1) == RES_OK &&
|
|
1046 .loc 1 2203 0
|
|
1047 0378 94F86520 ldrb r2, [r4, #101] @ zero_extendqisi2
|
|
1048 037c 94F86430 ldrb r3, [r4, #100] @ zero_extendqisi2
|
|
1049 0380 43EA0222 orr r2, r3, r2, lsl #8
|
|
1050 0384 2A44 add r2, r2, r5
|
|
1051 0386 6261 str r2, [r4, #20]
|
|
2204:../../../Source/third_party/fatfs/src/ff.c **** LD_WORD(fs->win+BS_55AA) == 0xAA55 &&
|
|
1052 .loc 1 2204 0
|
|
1053 0388 6078 ldrb r0, [r4, #1] @ zero_extendqisi2
|
|
1054 .LVL153:
|
|
1055 038a 04F13401 add r1, r4, #52
|
|
1056 038e 0123 movs r3, #1
|
|
1057 0390 FFF7FEFF bl disk_read
|
|
1058 .LVL154:
|
|
1059 0394 0028 cmp r0, #0
|
|
1060 0396 3FF43EAF beq .L61
|
|
1061 039a 4FF0030E mov lr, #3
|
|
1062 039e 8FE7 b .L57
|
|
1063 .cfi_endproc
|
|
1064 .LFE30:
|
|
1066 .section .text.get_fileinfo,"ax",%progbits
|
|
1067 .align 2
|
|
1068 .thumb
|
|
1069 .thumb_func
|
|
1071 get_fileinfo:
|
|
1072 .LFB27:
|
|
1901:../../../Source/third_party/fatfs/src/ff.c **** UINT i;
|
|
1073 .loc 1 1901 0
|
|
1074 .cfi_startproc
|
|
1075 @ args = 0, pretend = 0, frame = 0
|
|
1076 @ frame_needed = 0, uses_anonymous_args = 0
|
|
1077 .LVL155:
|
|
1078 0000 2DE9F843 push {r3, r4, r5, r6, r7, r8, r9, lr}
|
|
1079 .cfi_def_cfa_offset 32
|
|
1080 .cfi_offset 3, -32
|
|
1081 .cfi_offset 4, -28
|
|
1082 .cfi_offset 5, -24
|
|
1083 .cfi_offset 6, -20
|
|
1084 .cfi_offset 7, -16
|
|
1085 .cfi_offset 8, -12
|
|
1086 .cfi_offset 9, -8
|
|
1087 .cfi_offset 14, -4
|
|
1907:../../../Source/third_party/fatfs/src/ff.c **** if (dj->sect) {
|
|
1088 .loc 1 1907 0
|
|
1089 0004 01F10902 add r2, r1, #9
|
|
1090 .LVL156:
|
|
1908:../../../Source/third_party/fatfs/src/ff.c **** dir = dj->dir;
|
|
1091 .loc 1 1908 0
|
|
1092 0008 0369 ldr r3, [r0, #16]
|
|
1093 000a 002B cmp r3, #0
|
|
1094 000c 67D0 beq .L95
|
|
1909:../../../Source/third_party/fatfs/src/ff.c **** nt = dir[DIR_NTres]; /* NT flag */
|
|
1095 .loc 1 1909 0
|
|
1096 000e 4469 ldr r4, [r0, #20]
|
|
1097 .LVL157:
|
|
1910:../../../Source/third_party/fatfs/src/ff.c **** for (i = 0; i < 8; i++) { /* Copy name body */
|
|
1098 .loc 1 1910 0
|
|
1099 0010 94F80CC0 ldrb ip, [r4, #12] @ zero_extendqisi2
|
|
1100 .LVL158:
|
|
1912:../../../Source/third_party/fatfs/src/ff.c **** if (c == ' ') break;
|
|
1101 .loc 1 1912 0
|
|
1102 0014 2378 ldrb r3, [r4] @ zero_extendqisi2
|
|
1103 .LVL159:
|
|
1913:../../../Source/third_party/fatfs/src/ff.c **** if (c == NDDE) c = (TCHAR)DDE;
|
|
1104 .loc 1 1913 0
|
|
1105 0016 202B cmp r3, #32
|
|
1106 0018 20D0 beq .L107
|
|
1107 001a 2646 mov r6, r4
|
|
1108 001c 01F11107 add r7, r1, #17
|
|
1914:../../../Source/third_party/fatfs/src/ff.c **** if (_USE_LFN && (nt & NS_BODY) && IsUpper(c)) c += 0x20;
|
|
1109 .loc 1 1914 0
|
|
1110 0020 4FF0E508 mov r8, #229
|
|
1915:../../../Source/third_party/fatfs/src/ff.c **** #if _LFN_UNICODE
|
|
1111 .loc 1 1915 0
|
|
1112 0024 0CF0080E and lr, ip, #8
|
|
1113 0028 5FFA8EFE uxtb lr, lr
|
|
1114 002c 03E0 b .L97
|
|
1115 .L99:
|
|
1912:../../../Source/third_party/fatfs/src/ff.c **** if (c == ' ') break;
|
|
1116 .loc 1 1912 0
|
|
1117 002e 16F8013F ldrb r3, [r6, #1]! @ zero_extendqisi2
|
|
1118 .LVL160:
|
|
1913:../../../Source/third_party/fatfs/src/ff.c **** if (c == NDDE) c = (TCHAR)DDE;
|
|
1119 .loc 1 1913 0
|
|
1120 0032 202B cmp r3, #32
|
|
1121 0034 14D0 beq .L108
|
|
1122 .LVL161:
|
|
1123 .L97:
|
|
1914:../../../Source/third_party/fatfs/src/ff.c **** if (_USE_LFN && (nt & NS_BODY) && IsUpper(c)) c += 0x20;
|
|
1124 .loc 1 1914 0
|
|
1125 0036 052B cmp r3, #5
|
|
1126 0038 0AD0 beq .L109
|
|
1915:../../../Source/third_party/fatfs/src/ff.c **** #if _LFN_UNICODE
|
|
1127 .loc 1 1915 0
|
|
1128 003a BEF1000F cmp lr, #0
|
|
1129 003e 08D0 beq .L98
|
|
1915:../../../Source/third_party/fatfs/src/ff.c **** #if _LFN_UNICODE
|
|
1130 .loc 1 1915 0 is_stmt 0 discriminator 1
|
|
1131 0040 A3F14105 sub r5, r3, #65
|
|
1132 0044 EDB2 uxtb r5, r5
|
|
1133 0046 192D cmp r5, #25
|
|
1134 0048 03D8 bhi .L98
|
|
1915:../../../Source/third_party/fatfs/src/ff.c **** #if _LFN_UNICODE
|
|
1135 .loc 1 1915 0 discriminator 2
|
|
1136 004a 2033 adds r3, r3, #32
|
|
1137 .LVL162:
|
|
1138 004c DBB2 uxtb r3, r3
|
|
1139 .LVL163:
|
|
1140 004e 00E0 b .L98
|
|
1141 .L109:
|
|
1914:../../../Source/third_party/fatfs/src/ff.c **** if (_USE_LFN && (nt & NS_BODY) && IsUpper(c)) c += 0x20;
|
|
1142 .loc 1 1914 0 is_stmt 1
|
|
1143 0050 4346 mov r3, r8
|
|
1144 .LVL164:
|
|
1145 .L98:
|
|
1922:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1146 .loc 1 1922 0 discriminator 2
|
|
1147 0052 02F8013B strb r3, [r2], #1
|
|
1148 .LVL165:
|
|
1911:../../../Source/third_party/fatfs/src/ff.c **** c = dir[i];
|
|
1149 .loc 1 1911 0 discriminator 2
|
|
1150 0056 BA42 cmp r2, r7
|
|
1151 0058 E9D1 bne .L99
|
|
1152 005a 02E0 b .L96
|
|
1153 .L107:
|
|
1907:../../../Source/third_party/fatfs/src/ff.c **** if (dj->sect) {
|
|
1154 .loc 1 1907 0
|
|
1155 005c 1746 mov r7, r2
|
|
1156 005e 00E0 b .L96
|
|
1157 .L108:
|
|
1922:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1158 .loc 1 1922 0
|
|
1159 0060 1746 mov r7, r2
|
|
1160 .LVL166:
|
|
1161 .L96:
|
|
1924:../../../Source/third_party/fatfs/src/ff.c **** *p++ = '.';
|
|
1162 .loc 1 1924 0
|
|
1163 0062 237A ldrb r3, [r4, #8] @ zero_extendqisi2
|
|
1164 .LVL167:
|
|
1165 0064 202B cmp r3, #32
|
|
1166 0066 1ED0 beq .L110
|
|
1925:../../../Source/third_party/fatfs/src/ff.c **** for (i = 8; i < 11; i++) {
|
|
1167 .loc 1 1925 0
|
|
1168 0068 7E1C adds r6, r7, #1
|
|
1169 .LVL168:
|
|
1170 006a 2E23 movs r3, #46
|
|
1171 006c 3B70 strb r3, [r7]
|
|
1172 .LVL169:
|
|
1927:../../../Source/third_party/fatfs/src/ff.c **** if (c == ' ') break;
|
|
1173 .loc 1 1927 0
|
|
1174 006e 237A ldrb r3, [r4, #8] @ zero_extendqisi2
|
|
1175 .LVL170:
|
|
1928:../../../Source/third_party/fatfs/src/ff.c **** if (_USE_LFN && (nt & NS_EXT) && IsUpper(c)) c += 0x20;
|
|
1176 .loc 1 1928 0
|
|
1177 0070 202B cmp r3, #32
|
|
1178 0072 1AD0 beq .L111
|
|
1179 0074 04F1080E add lr, r4, #8
|
|
1180 0078 3A1D adds r2, r7, #4
|
|
1929:../../../Source/third_party/fatfs/src/ff.c **** #if _LFN_UNICODE
|
|
1181 .loc 1 1929 0
|
|
1182 007a 0CF0100C and ip, ip, #16
|
|
1183 .LVL171:
|
|
1184 007e 5FFA8CF5 uxtb r5, ip
|
|
1185 0082 03E0 b .L101
|
|
1186 .LVL172:
|
|
1187 .L103:
|
|
1927:../../../Source/third_party/fatfs/src/ff.c **** if (c == ' ') break;
|
|
1188 .loc 1 1927 0
|
|
1189 0084 1EF8013F ldrb r3, [lr, #1]! @ zero_extendqisi2
|
|
1190 .LVL173:
|
|
1928:../../../Source/third_party/fatfs/src/ff.c **** if (_USE_LFN && (nt & NS_EXT) && IsUpper(c)) c += 0x20;
|
|
1191 .loc 1 1928 0
|
|
1192 0088 202B cmp r3, #32
|
|
1193 008a 10D0 beq .L112
|
|
1194 .LVL174:
|
|
1195 .L101:
|
|
1929:../../../Source/third_party/fatfs/src/ff.c **** #if _LFN_UNICODE
|
|
1196 .loc 1 1929 0
|
|
1197 008c 35B1 cbz r5, .L102
|
|
1929:../../../Source/third_party/fatfs/src/ff.c **** #if _LFN_UNICODE
|
|
1198 .loc 1 1929 0 is_stmt 0 discriminator 1
|
|
1199 008e A3F14107 sub r7, r3, #65
|
|
1200 0092 FFB2 uxtb r7, r7
|
|
1201 0094 192F cmp r7, #25
|
|
1202 0096 9CBF itt ls
|
|
1203 0098 2033 addls r3, r3, #32
|
|
1204 .LVL175:
|
|
1205 009a DBB2 uxtbls r3, r3
|
|
1206 .LVL176:
|
|
1207 .L102:
|
|
1936:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1208 .loc 1 1936 0 is_stmt 1 discriminator 2
|
|
1209 009c 06F8013B strb r3, [r6], #1
|
|
1210 .LVL177:
|
|
1926:../../../Source/third_party/fatfs/src/ff.c **** c = dir[i];
|
|
1211 .loc 1 1926 0 discriminator 2
|
|
1212 00a0 9642 cmp r6, r2
|
|
1213 00a2 EFD1 bne .L103
|
|
1214 00a4 04E0 b .L100
|
|
1215 .LVL178:
|
|
1216 .L110:
|
|
1217 00a6 3A46 mov r2, r7
|
|
1218 .LVL179:
|
|
1219 00a8 02E0 b .L100
|
|
1220 .LVL180:
|
|
1221 .L111:
|
|
1925:../../../Source/third_party/fatfs/src/ff.c **** for (i = 8; i < 11; i++) {
|
|
1222 .loc 1 1925 0
|
|
1223 00aa 3246 mov r2, r6
|
|
1224 00ac 00E0 b .L100
|
|
1225 .LVL181:
|
|
1226 .L112:
|
|
1936:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1227 .loc 1 1936 0
|
|
1228 00ae 3246 mov r2, r6
|
|
1229 .LVL182:
|
|
1230 .L100:
|
|
1939:../../../Source/third_party/fatfs/src/ff.c **** fno->fsize = LD_DWORD(dir+DIR_FileSize); /* Size */
|
|
1231 .loc 1 1939 0
|
|
1232 00b0 E37A ldrb r3, [r4, #11] @ zero_extendqisi2
|
|
1233 00b2 0B72 strb r3, [r1, #8]
|
|
1940:../../../Source/third_party/fatfs/src/ff.c **** fno->fdate = LD_WORD(dir+DIR_WrtDate); /* Date */
|
|
1234 .loc 1 1940 0
|
|
1235 00b4 E67F ldrb r6, [r4, #31] @ zero_extendqisi2
|
|
1236 00b6 A57F ldrb r5, [r4, #30] @ zero_extendqisi2
|
|
1237 00b8 2B04 lsls r3, r5, #16
|
|
1238 00ba 43EA0665 orr r5, r3, r6, lsl #24
|
|
1239 00be 237F ldrb r3, [r4, #28] @ zero_extendqisi2
|
|
1240 00c0 2B43 orrs r3, r3, r5
|
|
1241 00c2 657F ldrb r5, [r4, #29] @ zero_extendqisi2
|
|
1242 00c4 43EA0523 orr r3, r3, r5, lsl #8
|
|
1243 00c8 0B60 str r3, [r1]
|
|
1941:../../../Source/third_party/fatfs/src/ff.c **** fno->ftime = LD_WORD(dir+DIR_WrtTime); /* Time */
|
|
1244 .loc 1 1941 0
|
|
1245 00ca 657E ldrb r5, [r4, #25] @ zero_extendqisi2
|
|
1246 00cc 237E ldrb r3, [r4, #24] @ zero_extendqisi2
|
|
1247 00ce 43EA0523 orr r3, r3, r5, lsl #8
|
|
1248 00d2 8B80 strh r3, [r1, #4] @ movhi
|
|
1942:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1249 .loc 1 1942 0
|
|
1250 00d4 E57D ldrb r5, [r4, #23] @ zero_extendqisi2
|
|
1251 00d6 A37D ldrb r3, [r4, #22] @ zero_extendqisi2
|
|
1252 00d8 43EA0523 orr r3, r3, r5, lsl #8
|
|
1253 00dc CB80 strh r3, [r1, #6] @ movhi
|
|
1254 .LVL183:
|
|
1255 .L95:
|
|
1944:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1256 .loc 1 1944 0
|
|
1257 00de 0023 movs r3, #0
|
|
1258 00e0 1370 strb r3, [r2]
|
|
1947:../../../Source/third_party/fatfs/src/ff.c **** TCHAR *tp = fno->lfname;
|
|
1259 .loc 1 1947 0
|
|
1260 00e2 8F69 ldr r7, [r1, #24]
|
|
1261 00e4 67B3 cbz r7, .L94
|
|
1947:../../../Source/third_party/fatfs/src/ff.c **** TCHAR *tp = fno->lfname;
|
|
1262 .loc 1 1947 0 is_stmt 0 discriminator 1
|
|
1263 00e6 CB69 ldr r3, [r1, #28]
|
|
1264 00e8 53B3 cbz r3, .L94
|
|
1265 .LVL184:
|
|
1266 .LBB2:
|
|
1952:../../../Source/third_party/fatfs/src/ff.c **** lfn = dj->lfn;
|
|
1267 .loc 1 1952 0 is_stmt 1
|
|
1268 00ea 0369 ldr r3, [r0, #16]
|
|
1269 00ec EBB1 cbz r3, .L113
|
|
1952:../../../Source/third_party/fatfs/src/ff.c **** lfn = dj->lfn;
|
|
1270 .loc 1 1952 0 is_stmt 0 discriminator 1
|
|
1271 00ee 028C ldrh r2, [r0, #32]
|
|
1272 .LVL185:
|
|
1273 00f0 4FF6FF73 movw r3, #65535
|
|
1274 00f4 9A42 cmp r2, r3
|
|
1275 00f6 1AD0 beq .L114
|
|
1953:../../../Source/third_party/fatfs/src/ff.c **** while ((w = *lfn++) != 0) { /* Get an LFN char */
|
|
1276 .loc 1 1953 0 is_stmt 1
|
|
1277 00f8 D0F81C80 ldr r8, [r0, #28]
|
|
1278 .LVL186:
|
|
1954:../../../Source/third_party/fatfs/src/ff.c **** #if !_LFN_UNICODE
|
|
1279 .loc 1 1954 0
|
|
1280 00fc B8F80000 ldrh r0, [r8]
|
|
1281 .LVL187:
|
|
1282 0100 B8B1 cbz r0, .L115
|
|
1283 0102 0D46 mov r5, r1
|
|
1284 0104 7E1E subs r6, r7, #1
|
|
1285 0106 0024 movs r4, #0
|
|
1956:../../../Source/third_party/fatfs/src/ff.c **** if (!w) { i = 0; break; } /* Could not convert, no LFN */
|
|
1286 .loc 1 1956 0
|
|
1287 0108 A146 mov r9, r4
|
|
1288 .LVL188:
|
|
1289 .L106:
|
|
1290 010a 4946 mov r1, r9
|
|
1291 010c FFF7FEFF bl ff_convert
|
|
1292 .LVL189:
|
|
1957:../../../Source/third_party/fatfs/src/ff.c **** if (_DF1S && w >= 0x100) /* Put 1st byte if it is a DBC (always false on SBCS cfg) */
|
|
1293 .loc 1 1957 0
|
|
1294 0110 88B1 cbz r0, .L116
|
|
1961:../../../Source/third_party/fatfs/src/ff.c **** tp[i++] = (TCHAR)w;
|
|
1295 .loc 1 1961 0
|
|
1296 0112 EB69 ldr r3, [r5, #28]
|
|
1297 0114 013B subs r3, r3, #1
|
|
1298 0116 A342 cmp r3, r4
|
|
1299 0118 0FD9 bls .L117
|
|
1962:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1300 .loc 1 1962 0
|
|
1301 011a 0134 adds r4, r4, #1
|
|
1302 .LVL190:
|
|
1303 011c 06F8010F strb r0, [r6, #1]!
|
|
1304 .LVL191:
|
|
1954:../../../Source/third_party/fatfs/src/ff.c **** #if !_LFN_UNICODE
|
|
1305 .loc 1 1954 0
|
|
1306 0120 38F81400 ldrh r0, [r8, r4, lsl #1]
|
|
1307 .LVL192:
|
|
1308 0124 0028 cmp r0, #0
|
|
1309 0126 F0D1 bne .L106
|
|
1310 0128 08E0 b .L105
|
|
1311 .LVL193:
|
|
1312 .L113:
|
|
1951:../../../Source/third_party/fatfs/src/ff.c **** if (dj->sect && dj->lfn_idx != 0xFFFF) {/* Get LFN if available */
|
|
1313 .loc 1 1951 0
|
|
1314 012a 0024 movs r4, #0
|
|
1315 012c 06E0 b .L105
|
|
1316 .LVL194:
|
|
1317 .L114:
|
|
1318 012e 0024 movs r4, #0
|
|
1319 0130 04E0 b .L105
|
|
1320 .LVL195:
|
|
1321 .L115:
|
|
1322 0132 0024 movs r4, #0
|
|
1323 0134 02E0 b .L105
|
|
1324 .LVL196:
|
|
1325 .L116:
|
|
1957:../../../Source/third_party/fatfs/src/ff.c **** if (_DF1S && w >= 0x100) /* Put 1st byte if it is a DBC (always false on SBCS cfg) */
|
|
1326 .loc 1 1957 0
|
|
1327 0136 0024 movs r4, #0
|
|
1328 .LVL197:
|
|
1329 0138 00E0 b .L105
|
|
1330 .LVL198:
|
|
1331 .L117:
|
|
1961:../../../Source/third_party/fatfs/src/ff.c **** tp[i++] = (TCHAR)w;
|
|
1332 .loc 1 1961 0
|
|
1333 013a 0024 movs r4, #0
|
|
1334 .LVL199:
|
|
1335 .L105:
|
|
1965:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1336 .loc 1 1965 0
|
|
1337 013c 0023 movs r3, #0
|
|
1338 013e 3B55 strb r3, [r7, r4]
|
|
1339 .LVL200:
|
|
1340 .L94:
|
|
1341 0140 BDE8F883 pop {r3, r4, r5, r6, r7, r8, r9, pc}
|
|
1342 .LBE2:
|
|
1343 .cfi_endproc
|
|
1344 .LFE27:
|
|
1346 .section .text.sync_fs,"ax",%progbits
|
|
1347 .align 2
|
|
1348 .thumb
|
|
1349 .thumb_func
|
|
1351 sync_fs:
|
|
1352 .LFB6:
|
|
787:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
1353 .loc 1 787 0
|
|
1354 .cfi_startproc
|
|
1355 @ args = 0, pretend = 0, frame = 0
|
|
1356 @ frame_needed = 0, uses_anonymous_args = 0
|
|
1357 .LVL201:
|
|
1358 0000 10B5 push {r4, lr}
|
|
1359 .cfi_def_cfa_offset 8
|
|
1360 .cfi_offset 4, -8
|
|
1361 .cfi_offset 14, -4
|
|
1362 0002 0446 mov r4, r0
|
|
791:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
1363 .loc 1 791 0
|
|
1364 0004 FFF7FEFF bl sync_window
|
|
1365 .LVL202:
|
|
792:../../../Source/third_party/fatfs/src/ff.c **** /* Update FSInfo sector if needed */
|
|
1366 .loc 1 792 0
|
|
1367 0008 0346 mov r3, r0
|
|
1368 000a 0028 cmp r0, #0
|
|
1369 000c 54D1 bne .L121
|
|
794:../../../Source/third_party/fatfs/src/ff.c **** fs->winsect = 0;
|
|
1370 .loc 1 794 0
|
|
1371 000e 2378 ldrb r3, [r4] @ zero_extendqisi2
|
|
1372 0010 032B cmp r3, #3
|
|
1373 0012 49D1 bne .L122
|
|
794:../../../Source/third_party/fatfs/src/ff.c **** fs->winsect = 0;
|
|
1374 .loc 1 794 0 is_stmt 0 discriminator 1
|
|
1375 0014 6379 ldrb r3, [r4, #5] @ zero_extendqisi2
|
|
1376 0016 002B cmp r3, #0
|
|
1377 0018 46D0 beq .L122
|
|
795:../../../Source/third_party/fatfs/src/ff.c **** /* Create FSInfo structure */
|
|
1378 .loc 1 795 0 is_stmt 1
|
|
1379 001a 0023 movs r3, #0
|
|
1380 001c 2363 str r3, [r4, #48]
|
|
797:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(fs->win+BS_55AA, 0xAA55);
|
|
1381 .loc 1 797 0
|
|
1382 001e 04F13401 add r1, r4, #52
|
|
1383 .LVL203:
|
|
1384 0022 04F50D70 add r0, r4, #564
|
|
1385 .LVL204:
|
|
1386 .LBB5:
|
|
1387 .LBB6:
|
|
557:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1388 .loc 1 557 0
|
|
1389 0026 0B46 mov r3, r1
|
|
560:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1390 .loc 1 560 0
|
|
1391 0028 0022 movs r2, #0
|
|
1392 .LVL205:
|
|
1393 .L123:
|
|
1394 002a 03F8012B strb r2, [r3], #1
|
|
1395 .LVL206:
|
|
559:../../../Source/third_party/fatfs/src/ff.c **** *d++ = (BYTE)val;
|
|
1396 .loc 1 559 0
|
|
1397 002e 8342 cmp r3, r0
|
|
1398 0030 FBD1 bne .L123
|
|
1399 .LBE6:
|
|
1400 .LBE5:
|
|
798:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(fs->win+FSI_LeadSig, 0x41615252);
|
|
1401 .loc 1 798 0
|
|
1402 0032 5523 movs r3, #85
|
|
1403 .LVL207:
|
|
1404 0034 84F83232 strb r3, [r4, #562]
|
|
1405 0038 AA23 movs r3, #170
|
|
1406 003a 84F83332 strb r3, [r4, #563]
|
|
799:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(fs->win+FSI_StrucSig, 0x61417272);
|
|
1407 .loc 1 799 0
|
|
1408 003e 5223 movs r3, #82
|
|
1409 0040 84F83430 strb r3, [r4, #52]
|
|
1410 0044 84F83530 strb r3, [r4, #53]
|
|
1411 0048 6123 movs r3, #97
|
|
1412 004a 84F83630 strb r3, [r4, #54]
|
|
1413 004e 4122 movs r2, #65
|
|
1414 0050 84F83720 strb r2, [r4, #55]
|
|
800:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(fs->win+FSI_Free_Count, fs->free_clust);
|
|
1415 .loc 1 800 0
|
|
1416 0054 7220 movs r0, #114
|
|
1417 0056 84F81802 strb r0, [r4, #536]
|
|
1418 005a 84F81902 strb r0, [r4, #537]
|
|
1419 005e 84F81A22 strb r2, [r4, #538]
|
|
1420 0062 84F81B32 strb r3, [r4, #539]
|
|
801:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(fs->win+FSI_Nxt_Free, fs->last_clust);
|
|
1421 .loc 1 801 0
|
|
1422 0066 2369 ldr r3, [r4, #16]
|
|
1423 0068 84F81C32 strb r3, [r4, #540]
|
|
1424 006c C3F30722 ubfx r2, r3, #8, #8
|
|
1425 0070 84F81D22 strb r2, [r4, #541]
|
|
1426 0074 1A0C lsrs r2, r3, #16
|
|
1427 0076 84F81E22 strb r2, [r4, #542]
|
|
1428 007a 1B0E lsrs r3, r3, #24
|
|
1429 007c 84F81F32 strb r3, [r4, #543]
|
|
802:../../../Source/third_party/fatfs/src/ff.c **** /* Write it into the FSInfo sector */
|
|
1430 .loc 1 802 0
|
|
1431 0080 E368 ldr r3, [r4, #12]
|
|
1432 0082 84F82032 strb r3, [r4, #544]
|
|
1433 0086 C3F30722 ubfx r2, r3, #8, #8
|
|
1434 008a 84F82122 strb r2, [r4, #545]
|
|
1435 008e 1A0C lsrs r2, r3, #16
|
|
1436 0090 84F82222 strb r2, [r4, #546]
|
|
1437 0094 1B0E lsrs r3, r3, #24
|
|
1438 0096 84F82332 strb r3, [r4, #547]
|
|
804:../../../Source/third_party/fatfs/src/ff.c **** fs->fsi_flag = 0;
|
|
1439 .loc 1 804 0
|
|
1440 009a 6078 ldrb r0, [r4, #1] @ zero_extendqisi2
|
|
1441 009c 6269 ldr r2, [r4, #20]
|
|
1442 009e 0123 movs r3, #1
|
|
1443 00a0 FFF7FEFF bl disk_write
|
|
1444 .LVL208:
|
|
805:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1445 .loc 1 805 0
|
|
1446 00a4 0023 movs r3, #0
|
|
1447 00a6 6371 strb r3, [r4, #5]
|
|
1448 .LVL209:
|
|
1449 .L122:
|
|
808:../../../Source/third_party/fatfs/src/ff.c **** res = FR_DISK_ERR;
|
|
1450 .loc 1 808 0
|
|
1451 00a8 6078 ldrb r0, [r4, #1] @ zero_extendqisi2
|
|
1452 00aa 0021 movs r1, #0
|
|
1453 00ac 0A46 mov r2, r1
|
|
1454 00ae FFF7FEFF bl disk_ioctl
|
|
1455 .LVL210:
|
|
791:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
1456 .loc 1 791 0
|
|
1457 00b2 031C adds r3, r0, #0
|
|
1458 00b4 18BF it ne
|
|
1459 00b6 0123 movne r3, #1
|
|
1460 .L121:
|
|
1461 .LVL211:
|
|
813:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
1462 .loc 1 813 0
|
|
1463 00b8 1846 mov r0, r3
|
|
1464 00ba 10BD pop {r4, pc}
|
|
1465 .cfi_endproc
|
|
1466 .LFE6:
|
|
1468 .section .text.clust2sect,"ax",%progbits
|
|
1469 .align 2
|
|
1470 .global clust2sect
|
|
1471 .thumb
|
|
1472 .thumb_func
|
|
1474 clust2sect:
|
|
1475 .LFB7:
|
|
828:../../../Source/third_party/fatfs/src/ff.c **** clst -= 2;
|
|
1476 .loc 1 828 0
|
|
1477 .cfi_startproc
|
|
1478 @ args = 0, pretend = 0, frame = 0
|
|
1479 @ frame_needed = 0, uses_anonymous_args = 0
|
|
1480 @ link register save eliminated.
|
|
1481 .LVL212:
|
|
829:../../../Source/third_party/fatfs/src/ff.c **** if (clst >= (fs->n_fatent - 2)) return 0; /* Invalid cluster# */
|
|
1482 .loc 1 829 0
|
|
1483 0000 0239 subs r1, r1, #2
|
|
1484 .LVL213:
|
|
830:../../../Source/third_party/fatfs/src/ff.c **** return clst * fs->csize + fs->database;
|
|
1485 .loc 1 830 0
|
|
1486 0002 8369 ldr r3, [r0, #24]
|
|
1487 0004 023B subs r3, r3, #2
|
|
1488 0006 9942 cmp r1, r3
|
|
831:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1489 .loc 1 831 0
|
|
1490 0008 3DBF ittte cc
|
|
1491 000a 8278 ldrbcc r2, [r0, #2] @ zero_extendqisi2
|
|
1492 000c C36A ldrcc r3, [r0, #44]
|
|
1493 000e 02FB0130 mlacc r0, r2, r1, r3
|
|
1494 .LVL214:
|
|
830:../../../Source/third_party/fatfs/src/ff.c **** return clst * fs->csize + fs->database;
|
|
1495 .loc 1 830 0
|
|
1496 0012 0020 movcs r0, #0
|
|
832:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1497 .loc 1 832 0
|
|
1498 0014 7047 bx lr
|
|
1499 .cfi_endproc
|
|
1500 .LFE7:
|
|
1502 0016 00BF .section .text.get_fat,"ax",%progbits
|
|
1503 .align 2
|
|
1504 .global get_fat
|
|
1505 .thumb
|
|
1506 .thumb_func
|
|
1508 get_fat:
|
|
1509 .LFB8:
|
|
846:../../../Source/third_party/fatfs/src/ff.c **** UINT wc, bc;
|
|
1510 .loc 1 846 0
|
|
1511 .cfi_startproc
|
|
1512 @ args = 0, pretend = 0, frame = 0
|
|
1513 @ frame_needed = 0, uses_anonymous_args = 0
|
|
1514 .LVL215:
|
|
851:../../../Source/third_party/fatfs/src/ff.c **** return 1;
|
|
1515 .loc 1 851 0
|
|
1516 0000 0129 cmp r1, #1
|
|
1517 0002 5FD9 bls .L135
|
|
846:../../../Source/third_party/fatfs/src/ff.c **** UINT wc, bc;
|
|
1518 .loc 1 846 0 discriminator 1
|
|
1519 0004 F8B5 push {r3, r4, r5, r6, r7, lr}
|
|
1520 .cfi_def_cfa_offset 24
|
|
1521 .cfi_offset 3, -24
|
|
1522 .cfi_offset 4, -20
|
|
1523 .cfi_offset 5, -16
|
|
1524 .cfi_offset 6, -12
|
|
1525 .cfi_offset 7, -8
|
|
1526 .cfi_offset 14, -4
|
|
851:../../../Source/third_party/fatfs/src/ff.c **** return 1;
|
|
1527 .loc 1 851 0 discriminator 1
|
|
1528 0006 8369 ldr r3, [r0, #24]
|
|
1529 0008 9942 cmp r1, r3
|
|
1530 000a 5DD2 bcs .L136
|
|
1531 000c 0C46 mov r4, r1
|
|
1532 000e 0646 mov r6, r0
|
|
854:../../../Source/third_party/fatfs/src/ff.c **** case FS_FAT12 :
|
|
1533 .loc 1 854 0
|
|
1534 0010 0378 ldrb r3, [r0] @ zero_extendqisi2
|
|
1535 0012 022B cmp r3, #2
|
|
1536 0014 28D0 beq .L131
|
|
1537 0016 032B cmp r3, #3
|
|
1538 0018 38D0 beq .L132
|
|
1539 001a 012B cmp r3, #1
|
|
1540 001c 56D1 bne .L142
|
|
1541 .LVL216:
|
|
856:../../../Source/third_party/fatfs/src/ff.c **** if (move_window(fs, fs->fatbase + (bc / SS(fs)))) break;
|
|
1542 .loc 1 856 0
|
|
1543 001e 01EB5107 add r7, r1, r1, lsr #1
|
|
1544 .LVL217:
|
|
857:../../../Source/third_party/fatfs/src/ff.c **** wc = fs->win[bc % SS(fs)]; bc++;
|
|
1545 .loc 1 857 0
|
|
1546 0022 416A ldr r1, [r0, #36]
|
|
1547 .LVL218:
|
|
1548 0024 01EB5721 add r1, r1, r7, lsr #9
|
|
1549 0028 FFF7FEFF bl move_window
|
|
1550 .LVL219:
|
|
1551 002c 0028 cmp r0, #0
|
|
1552 002e 50D1 bne .L138
|
|
858:../../../Source/third_party/fatfs/src/ff.c **** if (move_window(fs, fs->fatbase + (bc / SS(fs)))) break;
|
|
1553 .loc 1 858 0
|
|
1554 0030 C7F30803 ubfx r3, r7, #0, #9
|
|
1555 0034 3344 add r3, r3, r6
|
|
1556 0036 93F83450 ldrb r5, [r3, #52] @ zero_extendqisi2
|
|
1557 .LVL220:
|
|
1558 003a 0137 adds r7, r7, #1
|
|
1559 .LVL221:
|
|
859:../../../Source/third_party/fatfs/src/ff.c **** wc |= fs->win[bc % SS(fs)] << 8;
|
|
1560 .loc 1 859 0
|
|
1561 003c 716A ldr r1, [r6, #36]
|
|
1562 003e 3046 mov r0, r6
|
|
1563 0040 01EB5721 add r1, r1, r7, lsr #9
|
|
1564 0044 FFF7FEFF bl move_window
|
|
1565 .LVL222:
|
|
1566 0048 0028 cmp r0, #0
|
|
1567 004a 45D1 bne .L139
|
|
860:../../../Source/third_party/fatfs/src/ff.c **** return (clst & 1) ? (wc >> 4) : (wc & 0xFFF);
|
|
1568 .loc 1 860 0
|
|
1569 004c C7F30807 ubfx r7, r7, #0, #9
|
|
1570 .LVL223:
|
|
1571 0050 F119 adds r1, r6, r7
|
|
1572 0052 91F83400 ldrb r0, [r1, #52] @ zero_extendqisi2
|
|
1573 0056 45EA0020 orr r0, r5, r0, lsl #8
|
|
1574 .LVL224:
|
|
861:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1575 .loc 1 861 0
|
|
1576 005a 14F0010F tst r4, #1
|
|
1577 005e 14BF ite ne
|
|
1578 0060 0009 lsrne r0, r0, #4
|
|
1579 .LVL225:
|
|
1580 0062 C0F30B00 ubfxeq r0, r0, #0, #12
|
|
1581 0066 F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
1582 .LVL226:
|
|
1583 .L131:
|
|
864:../../../Source/third_party/fatfs/src/ff.c **** p = &fs->win[clst * 2 % SS(fs)];
|
|
1584 .loc 1 864 0
|
|
1585 0068 416A ldr r1, [r0, #36]
|
|
1586 .LVL227:
|
|
1587 006a 01EB1421 add r1, r1, r4, lsr #8
|
|
1588 006e FFF7FEFF bl move_window
|
|
1589 .LVL228:
|
|
1590 0072 A0BB cbnz r0, .L140
|
|
865:../../../Source/third_party/fatfs/src/ff.c **** return LD_WORD(p);
|
|
1591 .loc 1 865 0
|
|
1592 0074 6100 lsls r1, r4, #1
|
|
1593 0076 01F4FF71 and r1, r1, #510
|
|
1594 .LVL229:
|
|
866:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1595 .loc 1 866 0
|
|
1596 007a 7318 adds r3, r6, r1
|
|
1597 007c 93F83430 ldrb r3, [r3, #52] @ zero_extendqisi2
|
|
1598 0080 3144 add r1, r1, r6
|
|
1599 .LVL230:
|
|
1600 0082 91F83500 ldrb r0, [r1, #53] @ zero_extendqisi2
|
|
1601 0086 43EA0020 orr r0, r3, r0, lsl #8
|
|
1602 008a F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
1603 .LVL231:
|
|
1604 .L132:
|
|
869:../../../Source/third_party/fatfs/src/ff.c **** p = &fs->win[clst * 4 % SS(fs)];
|
|
1605 .loc 1 869 0
|
|
1606 008c 416A ldr r1, [r0, #36]
|
|
1607 .LVL232:
|
|
1608 008e 01EBD411 add r1, r1, r4, lsr #7
|
|
1609 0092 FFF7FEFF bl move_window
|
|
1610 .LVL233:
|
|
1611 0096 28BB cbnz r0, .L141
|
|
870:../../../Source/third_party/fatfs/src/ff.c **** return LD_DWORD(p) & 0x0FFFFFFF;
|
|
1612 .loc 1 870 0
|
|
1613 0098 A100 lsls r1, r4, #2
|
|
1614 009a 01F4FE71 and r1, r1, #508
|
|
1615 009e 7218 adds r2, r6, r1
|
|
1616 .LVL234:
|
|
871:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1617 .loc 1 871 0
|
|
1618 00a0 92F83600 ldrb r0, [r2, #54] @ zero_extendqisi2
|
|
1619 00a4 92F83730 ldrb r3, [r2, #55] @ zero_extendqisi2
|
|
1620 00a8 1B06 lsls r3, r3, #24
|
|
1621 00aa 43EA0043 orr r3, r3, r0, lsl #16
|
|
1622 00ae 92F83500 ldrb r0, [r2, #53] @ zero_extendqisi2
|
|
1623 00b2 43EA0020 orr r0, r3, r0, lsl #8
|
|
1624 00b6 3144 add r1, r1, r6
|
|
1625 00b8 91F83430 ldrb r3, [r1, #52] @ zero_extendqisi2
|
|
1626 00bc 1843 orrs r0, r0, r3
|
|
1627 00be 20F07040 bic r0, r0, #-268435456
|
|
1628 00c2 F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
1629 .LVL235:
|
|
1630 .L135:
|
|
1631 .cfi_def_cfa_offset 0
|
|
1632 .cfi_restore 3
|
|
1633 .cfi_restore 4
|
|
1634 .cfi_restore 5
|
|
1635 .cfi_restore 6
|
|
1636 .cfi_restore 7
|
|
1637 .cfi_restore 14
|
|
852:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1638 .loc 1 852 0
|
|
1639 00c4 0120 movs r0, #1
|
|
1640 .LVL236:
|
|
875:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1641 .loc 1 875 0
|
|
1642 00c6 7047 bx lr
|
|
1643 .LVL237:
|
|
1644 .L136:
|
|
1645 .cfi_def_cfa_offset 24
|
|
1646 .cfi_offset 3, -24
|
|
1647 .cfi_offset 4, -20
|
|
1648 .cfi_offset 5, -16
|
|
1649 .cfi_offset 6, -12
|
|
1650 .cfi_offset 7, -8
|
|
1651 .cfi_offset 14, -4
|
|
852:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1652 .loc 1 852 0
|
|
1653 00c8 0120 movs r0, #1
|
|
1654 .LVL238:
|
|
1655 00ca F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
1656 .LVL239:
|
|
1657 .L142:
|
|
874:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1658 .loc 1 874 0
|
|
1659 00cc 4FF0FF30 mov r0, #-1
|
|
1660 .LVL240:
|
|
1661 00d0 F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
1662 .LVL241:
|
|
1663 .L138:
|
|
1664 00d2 4FF0FF30 mov r0, #-1
|
|
1665 00d6 F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
1666 .LVL242:
|
|
1667 .L139:
|
|
1668 00d8 4FF0FF30 mov r0, #-1
|
|
1669 00dc F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
1670 .LVL243:
|
|
1671 .L140:
|
|
1672 00de 4FF0FF30 mov r0, #-1
|
|
1673 00e2 F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
1674 .LVL244:
|
|
1675 .L141:
|
|
1676 00e4 4FF0FF30 mov r0, #-1
|
|
875:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1677 .loc 1 875 0
|
|
1678 00e8 F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
1679 .cfi_endproc
|
|
1680 .LFE8:
|
|
1682 00ea 00BF .section .text.dir_sdi,"ax",%progbits
|
|
1683 .align 2
|
|
1684 .thumb
|
|
1685 .thumb_func
|
|
1687 dir_sdi:
|
|
1688 .LFB12:
|
|
1092:../../../Source/third_party/fatfs/src/ff.c **** DWORD clst;
|
|
1689 .loc 1 1092 0
|
|
1690 .cfi_startproc
|
|
1691 @ args = 0, pretend = 0, frame = 0
|
|
1692 @ frame_needed = 0, uses_anonymous_args = 0
|
|
1693 .LVL245:
|
|
1694 0000 70B5 push {r4, r5, r6, lr}
|
|
1695 .cfi_def_cfa_offset 16
|
|
1696 .cfi_offset 4, -16
|
|
1697 .cfi_offset 5, -12
|
|
1698 .cfi_offset 6, -8
|
|
1699 .cfi_offset 14, -4
|
|
1700 0002 0546 mov r5, r0
|
|
1701 0004 0C46 mov r4, r1
|
|
1097:../../../Source/third_party/fatfs/src/ff.c **** clst = dj->sclust;
|
|
1702 .loc 1 1097 0
|
|
1703 0006 E980 strh r1, [r5, #6] @ movhi
|
|
1098:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 1 || clst >= dj->fs->n_fatent) /* Check start cluster range */
|
|
1704 .loc 1 1098 0
|
|
1705 0008 8168 ldr r1, [r0, #8]
|
|
1706 .LVL246:
|
|
1099:../../../Source/third_party/fatfs/src/ff.c **** return FR_INT_ERR;
|
|
1707 .loc 1 1099 0
|
|
1708 000a 0129 cmp r1, #1
|
|
1709 000c 38D0 beq .L151
|
|
1099:../../../Source/third_party/fatfs/src/ff.c **** return FR_INT_ERR;
|
|
1710 .loc 1 1099 0 is_stmt 0 discriminator 1
|
|
1711 000e 0368 ldr r3, [r0]
|
|
1712 0010 9A69 ldr r2, [r3, #24]
|
|
1713 0012 9142 cmp r1, r2
|
|
1714 0014 36D2 bcs .L152
|
|
1101:../../../Source/third_party/fatfs/src/ff.c **** clst = dj->fs->dirbase;
|
|
1715 .loc 1 1101 0 is_stmt 1
|
|
1716 0016 71B9 cbnz r1, .L146
|
|
1101:../../../Source/third_party/fatfs/src/ff.c **** clst = dj->fs->dirbase;
|
|
1717 .loc 1 1101 0 is_stmt 0 discriminator 1
|
|
1718 0018 1A78 ldrb r2, [r3] @ zero_extendqisi2
|
|
1719 001a 032A cmp r2, #3
|
|
1720 001c 01D1 bne .L147
|
|
1102:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1721 .loc 1 1102 0 is_stmt 1
|
|
1722 001e 996A ldr r1, [r3, #40]
|
|
1723 .LVL247:
|
|
1104:../../../Source/third_party/fatfs/src/ff.c **** dj->clust = clst;
|
|
1724 .loc 1 1104 0
|
|
1725 0020 49B9 cbnz r1, .L146
|
|
1726 .L147:
|
|
1727 .LVL248:
|
|
1105:../../../Source/third_party/fatfs/src/ff.c **** if (idx >= dj->fs->n_rootdir) /* Index is out of range */
|
|
1728 .loc 1 1105 0
|
|
1729 0022 0022 movs r2, #0
|
|
1730 0024 EA60 str r2, [r5, #12]
|
|
1106:../../../Source/third_party/fatfs/src/ff.c **** return FR_INT_ERR;
|
|
1731 .loc 1 1106 0
|
|
1732 0026 1A89 ldrh r2, [r3, #8]
|
|
1733 0028 A242 cmp r2, r4
|
|
1734 002a 2DD9 bls .L153
|
|
1108:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1735 .loc 1 1108 0
|
|
1736 002c 9B6A ldr r3, [r3, #40]
|
|
1737 002e 03EB1413 add r3, r3, r4, lsr #4
|
|
1738 0032 2B61 str r3, [r5, #16]
|
|
1739 0034 1BE0 b .L148
|
|
1740 .LVL249:
|
|
1741 .L146:
|
|
1111:../../../Source/third_party/fatfs/src/ff.c **** while (idx >= ic) { /* Follow cluster chain */
|
|
1742 .loc 1 1111 0
|
|
1743 0036 9E78 ldrb r6, [r3, #2] @ zero_extendqisi2
|
|
1744 0038 3601 lsls r6, r6, #4
|
|
1745 .LVL250:
|
|
1112:../../../Source/third_party/fatfs/src/ff.c **** clst = get_fat(dj->fs, clst); /* Get next cluster */
|
|
1746 .loc 1 1112 0
|
|
1747 003a B442 cmp r4, r6
|
|
1748 003c 10D3 bcc .L149
|
|
1749 .LVL251:
|
|
1750 .L157:
|
|
1113:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */
|
|
1751 .loc 1 1113 0
|
|
1752 003e 2868 ldr r0, [r5]
|
|
1753 0040 FFF7FEFF bl get_fat
|
|
1754 .LVL252:
|
|
1755 0044 0146 mov r1, r0
|
|
1756 .LVL253:
|
|
1114:../../../Source/third_party/fatfs/src/ff.c **** if (clst < 2 || clst >= dj->fs->n_fatent) /* Reached to end of table or int error */
|
|
1757 .loc 1 1114 0
|
|
1758 0046 B0F1FF3F cmp r0, #-1
|
|
1759 004a 1FD0 beq .L154
|
|
1115:../../../Source/third_party/fatfs/src/ff.c **** return FR_INT_ERR;
|
|
1760 .loc 1 1115 0
|
|
1761 004c 0128 cmp r0, #1
|
|
1762 004e 1FD9 bls .L155
|
|
1115:../../../Source/third_party/fatfs/src/ff.c **** return FR_INT_ERR;
|
|
1763 .loc 1 1115 0 is_stmt 0 discriminator 1
|
|
1764 0050 2B68 ldr r3, [r5]
|
|
1765 0052 9B69 ldr r3, [r3, #24]
|
|
1766 0054 9842 cmp r0, r3
|
|
1767 0056 1DD2 bcs .L156
|
|
1117:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1768 .loc 1 1117 0 is_stmt 1
|
|
1769 0058 A41B subs r4, r4, r6
|
|
1770 .LVL254:
|
|
1771 005a A4B2 uxth r4, r4
|
|
1772 .LVL255:
|
|
1112:../../../Source/third_party/fatfs/src/ff.c **** clst = get_fat(dj->fs, clst); /* Get next cluster */
|
|
1773 .loc 1 1112 0
|
|
1774 005c A642 cmp r6, r4
|
|
1775 005e EED9 bls .L157
|
|
1776 .LVL256:
|
|
1777 .L149:
|
|
1119:../../../Source/third_party/fatfs/src/ff.c **** dj->sect = clust2sect(dj->fs, clst) + idx / (SS(dj->fs) / SZ_DIR); /* Sector# */
|
|
1778 .loc 1 1119 0
|
|
1779 0060 E960 str r1, [r5, #12]
|
|
1120:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1780 .loc 1 1120 0
|
|
1781 0062 2868 ldr r0, [r5]
|
|
1782 0064 FFF7FEFF bl clust2sect
|
|
1783 .LVL257:
|
|
1784 0068 00EB1410 add r0, r0, r4, lsr #4
|
|
1785 006c 2861 str r0, [r5, #16]
|
|
1786 .LVL258:
|
|
1787 .L148:
|
|
1123:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1788 .loc 1 1123 0
|
|
1789 006e 04F00F04 and r4, r4, #15
|
|
1790 .LVL259:
|
|
1791 0072 2B68 ldr r3, [r5]
|
|
1792 0074 03EB4414 add r4, r3, r4, lsl #5
|
|
1793 0078 3434 adds r4, r4, #52
|
|
1794 007a 6C61 str r4, [r5, #20]
|
|
1125:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
1795 .loc 1 1125 0
|
|
1796 007c 0020 movs r0, #0
|
|
1797 007e 70BD pop {r4, r5, r6, pc}
|
|
1798 .LVL260:
|
|
1799 .L151:
|
|
1100:../../../Source/third_party/fatfs/src/ff.c **** if (!clst && dj->fs->fs_type == FS_FAT32) /* Replace cluster# 0 with root cluster# if in FAT32 */
|
|
1800 .loc 1 1100 0
|
|
1801 0080 0220 movs r0, #2
|
|
1802 .LVL261:
|
|
1803 0082 70BD pop {r4, r5, r6, pc}
|
|
1804 .LVL262:
|
|
1805 .L152:
|
|
1806 0084 0220 movs r0, #2
|
|
1807 .LVL263:
|
|
1808 0086 70BD pop {r4, r5, r6, pc}
|
|
1809 .LVL264:
|
|
1810 .L153:
|
|
1107:../../../Source/third_party/fatfs/src/ff.c **** dj->sect = dj->fs->dirbase + idx / (SS(dj->fs) / SZ_DIR); /* Sector# */
|
|
1811 .loc 1 1107 0
|
|
1812 0088 0220 movs r0, #2
|
|
1813 .LVL265:
|
|
1814 008a 70BD pop {r4, r5, r6, pc}
|
|
1815 .LVL266:
|
|
1816 .L154:
|
|
1114:../../../Source/third_party/fatfs/src/ff.c **** if (clst < 2 || clst >= dj->fs->n_fatent) /* Reached to end of table or int error */
|
|
1817 .loc 1 1114 0
|
|
1818 008c 0120 movs r0, #1
|
|
1819 .LVL267:
|
|
1820 008e 70BD pop {r4, r5, r6, pc}
|
|
1821 .LVL268:
|
|
1822 .L155:
|
|
1116:../../../Source/third_party/fatfs/src/ff.c **** idx -= ic;
|
|
1823 .loc 1 1116 0
|
|
1824 0090 0220 movs r0, #2
|
|
1825 .LVL269:
|
|
1826 0092 70BD pop {r4, r5, r6, pc}
|
|
1827 .LVL270:
|
|
1828 .L156:
|
|
1829 0094 0220 movs r0, #2
|
|
1830 .LVL271:
|
|
1126:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1831 .loc 1 1126 0
|
|
1832 0096 70BD pop {r4, r5, r6, pc}
|
|
1833 .cfi_endproc
|
|
1834 .LFE12:
|
|
1836 .section .text.put_fat,"ax",%progbits
|
|
1837 .align 2
|
|
1838 .global put_fat
|
|
1839 .thumb
|
|
1840 .thumb_func
|
|
1842 put_fat:
|
|
1843 .LFB9:
|
|
890:../../../Source/third_party/fatfs/src/ff.c **** UINT bc;
|
|
1844 .loc 1 890 0
|
|
1845 .cfi_startproc
|
|
1846 @ args = 0, pretend = 0, frame = 0
|
|
1847 @ frame_needed = 0, uses_anonymous_args = 0
|
|
1848 .LVL272:
|
|
1849 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr}
|
|
1850 .cfi_def_cfa_offset 24
|
|
1851 .cfi_offset 4, -24
|
|
1852 .cfi_offset 5, -20
|
|
1853 .cfi_offset 6, -16
|
|
1854 .cfi_offset 7, -12
|
|
1855 .cfi_offset 8, -8
|
|
1856 .cfi_offset 14, -4
|
|
1857 0004 0C46 mov r4, r1
|
|
896:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INT_ERR;
|
|
1858 .loc 1 896 0
|
|
1859 0006 0129 cmp r1, #1
|
|
1860 0008 7ED9 bls .L170
|
|
1861 000a 0546 mov r5, r0
|
|
1862 000c 1746 mov r7, r2
|
|
896:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INT_ERR;
|
|
1863 .loc 1 896 0 is_stmt 0 discriminator 1
|
|
1864 000e 8369 ldr r3, [r0, #24]
|
|
1865 0010 9942 cmp r1, r3
|
|
1866 0012 7BD2 bcs .L171
|
|
900:../../../Source/third_party/fatfs/src/ff.c **** case FS_FAT12 :
|
|
1867 .loc 1 900 0 is_stmt 1
|
|
1868 0014 0378 ldrb r3, [r0] @ zero_extendqisi2
|
|
1869 0016 022B cmp r3, #2
|
|
1870 0018 3DD0 beq .L163
|
|
1871 001a 032B cmp r3, #3
|
|
1872 001c 4DD0 beq .L164
|
|
1873 001e 012B cmp r3, #1
|
|
1874 0020 6AD1 bne .L175
|
|
1875 .LVL273:
|
|
902:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(fs, fs->fatbase + (bc / SS(fs)));
|
|
1876 .loc 1 902 0
|
|
1877 0022 01EB5108 add r8, r1, r1, lsr #1
|
|
1878 .LVL274:
|
|
903:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
1879 .loc 1 903 0
|
|
1880 0026 416A ldr r1, [r0, #36]
|
|
1881 .LVL275:
|
|
1882 0028 01EB5821 add r1, r1, r8, lsr #9
|
|
1883 002c FFF7FEFF bl move_window
|
|
1884 .LVL276:
|
|
904:../../../Source/third_party/fatfs/src/ff.c **** p = &fs->win[bc % SS(fs)];
|
|
1885 .loc 1 904 0
|
|
1886 0030 0646 mov r6, r0
|
|
1887 0032 0028 cmp r0, #0
|
|
1888 0034 65D1 bne .L162
|
|
905:../../../Source/third_party/fatfs/src/ff.c **** *p = (clst & 1) ? ((*p & 0x0F) | ((BYTE)val << 4)) : (BYTE)val;
|
|
1889 .loc 1 905 0
|
|
1890 0036 C8F30803 ubfx r3, r8, #0, #9
|
|
1891 .LVL277:
|
|
906:../../../Source/third_party/fatfs/src/ff.c **** bc++;
|
|
1892 .loc 1 906 0
|
|
1893 003a 14F0010F tst r4, #1
|
|
1894 003e 16D0 beq .L166
|
|
906:../../../Source/third_party/fatfs/src/ff.c **** bc++;
|
|
1895 .loc 1 906 0 is_stmt 0 discriminator 1
|
|
1896 0040 2B44 add r3, r3, r5
|
|
1897 .LVL278:
|
|
1898 0042 93F83420 ldrb r2, [r3, #52] @ zero_extendqisi2
|
|
1899 0046 02F00F02 and r2, r2, #15
|
|
1900 004a F9B2 uxtb r1, r7
|
|
1901 004c 42EA0112 orr r2, r2, r1, lsl #4
|
|
1902 0050 83F83420 strb r2, [r3, #52]
|
|
907:../../../Source/third_party/fatfs/src/ff.c **** fs->wflag = 1;
|
|
1903 .loc 1 907 0 is_stmt 1 discriminator 1
|
|
1904 0054 08F10108 add r8, r8, #1
|
|
1905 .LVL279:
|
|
908:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(fs, fs->fatbase + (bc / SS(fs)));
|
|
1906 .loc 1 908 0 discriminator 1
|
|
1907 0058 0123 movs r3, #1
|
|
1908 005a 2B71 strb r3, [r5, #4]
|
|
909:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
1909 .loc 1 909 0 discriminator 1
|
|
1910 005c 696A ldr r1, [r5, #36]
|
|
1911 005e 2846 mov r0, r5
|
|
1912 .LVL280:
|
|
1913 0060 01EB5821 add r1, r1, r8, lsr #9
|
|
1914 0064 FFF7FEFF bl move_window
|
|
1915 .LVL281:
|
|
910:../../../Source/third_party/fatfs/src/ff.c **** p = &fs->win[bc % SS(fs)];
|
|
1916 .loc 1 910 0 discriminator 1
|
|
1917 0068 0028 cmp r0, #0
|
|
1918 006a 47D1 bne .L173
|
|
1919 006c 50E0 b .L176
|
|
1920 .LVL282:
|
|
1921 .L166:
|
|
906:../../../Source/third_party/fatfs/src/ff.c **** bc++;
|
|
1922 .loc 1 906 0 discriminator 2
|
|
1923 006e 2B44 add r3, r3, r5
|
|
1924 .LVL283:
|
|
1925 0070 83F83470 strb r7, [r3, #52]
|
|
907:../../../Source/third_party/fatfs/src/ff.c **** fs->wflag = 1;
|
|
1926 .loc 1 907 0 discriminator 2
|
|
1927 0074 08F10108 add r8, r8, #1
|
|
1928 .LVL284:
|
|
908:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(fs, fs->fatbase + (bc / SS(fs)));
|
|
1929 .loc 1 908 0 discriminator 2
|
|
1930 0078 0123 movs r3, #1
|
|
1931 007a 2B71 strb r3, [r5, #4]
|
|
909:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
1932 .loc 1 909 0 discriminator 2
|
|
1933 007c 696A ldr r1, [r5, #36]
|
|
1934 007e 2846 mov r0, r5
|
|
1935 .LVL285:
|
|
1936 0080 01EB5821 add r1, r1, r8, lsr #9
|
|
1937 0084 FFF7FEFF bl move_window
|
|
1938 .LVL286:
|
|
910:../../../Source/third_party/fatfs/src/ff.c **** p = &fs->win[bc % SS(fs)];
|
|
1939 .loc 1 910 0 discriminator 2
|
|
1940 0088 D0BB cbnz r0, .L174
|
|
1941 008a 46E0 b .L177
|
|
1942 .LVL287:
|
|
1943 .L169:
|
|
912:../../../Source/third_party/fatfs/src/ff.c **** break;
|
|
1944 .loc 1 912 0 discriminator 4
|
|
1945 008c 05EB0803 add r3, r5, r8
|
|
1946 0090 83F83470 strb r7, [r3, #52]
|
|
913:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1947 .loc 1 913 0 discriminator 4
|
|
1948 0094 35E0 b .L162
|
|
1949 .LVL288:
|
|
1950 .L163:
|
|
916:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
1951 .loc 1 916 0
|
|
1952 0096 416A ldr r1, [r0, #36]
|
|
1953 .LVL289:
|
|
1954 0098 01EB1421 add r1, r1, r4, lsr #8
|
|
1955 009c FFF7FEFF bl move_window
|
|
1956 .LVL290:
|
|
917:../../../Source/third_party/fatfs/src/ff.c **** p = &fs->win[clst * 2 % SS(fs)];
|
|
1957 .loc 1 917 0
|
|
1958 00a0 0646 mov r6, r0
|
|
1959 00a2 70BB cbnz r0, .L162
|
|
918:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(p, (WORD)val);
|
|
1960 .loc 1 918 0
|
|
1961 00a4 6400 lsls r4, r4, #1
|
|
1962 .LVL291:
|
|
1963 00a6 04F4FF74 and r4, r4, #510
|
|
1964 .LVL292:
|
|
919:../../../Source/third_party/fatfs/src/ff.c **** break;
|
|
1965 .loc 1 919 0
|
|
1966 00aa 2B19 adds r3, r5, r4
|
|
1967 00ac 83F83470 strb r7, [r3, #52]
|
|
1968 00b0 C7F30727 ubfx r7, r7, #8, #8
|
|
1969 .LVL293:
|
|
1970 00b4 83F83570 strb r7, [r3, #53]
|
|
920:../../../Source/third_party/fatfs/src/ff.c ****
|
|
1971 .loc 1 920 0
|
|
1972 00b8 23E0 b .L162
|
|
1973 .LVL294:
|
|
1974 .L164:
|
|
923:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
1975 .loc 1 923 0
|
|
1976 00ba 416A ldr r1, [r0, #36]
|
|
1977 .LVL295:
|
|
1978 00bc 01EBD411 add r1, r1, r4, lsr #7
|
|
1979 00c0 FFF7FEFF bl move_window
|
|
1980 .LVL296:
|
|
924:../../../Source/third_party/fatfs/src/ff.c **** p = &fs->win[clst * 4 % SS(fs)];
|
|
1981 .loc 1 924 0
|
|
1982 00c4 0646 mov r6, r0
|
|
1983 00c6 E0B9 cbnz r0, .L162
|
|
925:../../../Source/third_party/fatfs/src/ff.c **** val |= LD_DWORD(p) & 0xF0000000;
|
|
1984 .loc 1 925 0
|
|
1985 00c8 A400 lsls r4, r4, #2
|
|
1986 .LVL297:
|
|
1987 00ca 04F4FE74 and r4, r4, #508
|
|
1988 00ce 2A19 adds r2, r5, r4
|
|
1989 .LVL298:
|
|
926:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(p, val);
|
|
1990 .loc 1 926 0
|
|
1991 00d0 92F83730 ldrb r3, [r2, #55] @ zero_extendqisi2
|
|
1992 00d4 1B06 lsls r3, r3, #24
|
|
1993 00d6 2C44 add r4, r4, r5
|
|
1994 00d8 03F07043 and r3, r3, #-268435456
|
|
1995 00dc 1F43 orrs r7, r7, r3
|
|
1996 .LVL299:
|
|
927:../../../Source/third_party/fatfs/src/ff.c **** break;
|
|
1997 .loc 1 927 0
|
|
1998 00de 84F83470 strb r7, [r4, #52]
|
|
1999 00e2 C7F30723 ubfx r3, r7, #8, #8
|
|
2000 00e6 82F83530 strb r3, [r2, #53]
|
|
2001 00ea 3B0C lsrs r3, r7, #16
|
|
2002 00ec 82F83630 strb r3, [r2, #54]
|
|
2003 00f0 3F0E lsrs r7, r7, #24
|
|
2004 .LVL300:
|
|
2005 00f2 82F83770 strb r7, [r2, #55]
|
|
2006 .LVL301:
|
|
928:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2007 .loc 1 928 0
|
|
2008 00f6 04E0 b .L162
|
|
2009 .LVL302:
|
|
2010 .L175:
|
|
931:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2011 .loc 1 931 0
|
|
2012 00f8 0226 movs r6, #2
|
|
2013 00fa 02E0 b .L162
|
|
2014 .LVL303:
|
|
2015 .L173:
|
|
909:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
2016 .loc 1 909 0
|
|
2017 00fc 0646 mov r6, r0
|
|
2018 00fe 00E0 b .L162
|
|
2019 .L174:
|
|
2020 0100 0646 mov r6, r0
|
|
2021 .LVL304:
|
|
2022 .L162:
|
|
933:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2023 .loc 1 933 0
|
|
2024 0102 0123 movs r3, #1
|
|
2025 0104 2B71 strb r3, [r5, #4]
|
|
2026 0106 14E0 b .L178
|
|
2027 .LVL305:
|
|
2028 .L170:
|
|
897:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2029 .loc 1 897 0
|
|
2030 0108 0226 movs r6, #2
|
|
2031 010a 12E0 b .L178
|
|
2032 .L171:
|
|
2033 010c 0226 movs r6, #2
|
|
2034 .LVL306:
|
|
2035 010e 10E0 b .L178
|
|
2036 .LVL307:
|
|
2037 .L176:
|
|
911:../../../Source/third_party/fatfs/src/ff.c **** *p = (clst & 1) ? (BYTE)(val >> 4) : ((*p & 0xF0) | ((BYTE)(val >> 8) & 0x0F));
|
|
2038 .loc 1 911 0
|
|
2039 0110 C8F30808 ubfx r8, r8, #0, #9
|
|
2040 .LVL308:
|
|
912:../../../Source/third_party/fatfs/src/ff.c **** break;
|
|
2041 .loc 1 912 0
|
|
2042 0114 C7F30717 ubfx r7, r7, #4, #8
|
|
2043 .LVL309:
|
|
2044 0118 B8E7 b .L169
|
|
2045 .LVL310:
|
|
2046 .L177:
|
|
911:../../../Source/third_party/fatfs/src/ff.c **** *p = (clst & 1) ? (BYTE)(val >> 4) : ((*p & 0xF0) | ((BYTE)(val >> 8) & 0x0F));
|
|
2047 .loc 1 911 0
|
|
2048 011a C8F30808 ubfx r8, r8, #0, #9
|
|
2049 .LVL311:
|
|
912:../../../Source/third_party/fatfs/src/ff.c **** break;
|
|
2050 .loc 1 912 0
|
|
2051 011e 05EB0803 add r3, r5, r8
|
|
2052 0122 93F83430 ldrb r3, [r3, #52] @ zero_extendqisi2
|
|
2053 0126 23F00F03 bic r3, r3, #15
|
|
2054 012a C7F30327 ubfx r7, r7, #8, #4
|
|
2055 .LVL312:
|
|
2056 012e 1F43 orrs r7, r7, r3
|
|
2057 0130 ACE7 b .L169
|
|
2058 .LVL313:
|
|
2059 .L178:
|
|
937:../../../Source/third_party/fatfs/src/ff.c **** #endif /* !_FS_READONLY */
|
|
2060 .loc 1 937 0
|
|
2061 0132 3046 mov r0, r6
|
|
2062 0134 BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
|
2063 .cfi_endproc
|
|
2064 .LFE9:
|
|
2066 .section .text.create_chain,"ax",%progbits
|
|
2067 .align 2
|
|
2068 .thumb
|
|
2069 .thumb_func
|
|
2071 create_chain:
|
|
2072 .LFB11:
|
|
1005:../../../Source/third_party/fatfs/src/ff.c **** DWORD cs, ncl, scl;
|
|
2073 .loc 1 1005 0
|
|
2074 .cfi_startproc
|
|
2075 @ args = 0, pretend = 0, frame = 0
|
|
2076 @ frame_needed = 0, uses_anonymous_args = 0
|
|
2077 .LVL314:
|
|
2078 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr}
|
|
2079 .cfi_def_cfa_offset 24
|
|
2080 .cfi_offset 4, -24
|
|
2081 .cfi_offset 5, -20
|
|
2082 .cfi_offset 6, -16
|
|
2083 .cfi_offset 7, -12
|
|
2084 .cfi_offset 8, -8
|
|
2085 .cfi_offset 14, -4
|
|
2086 0004 0546 mov r5, r0
|
|
1010:../../../Source/third_party/fatfs/src/ff.c **** scl = fs->last_clust; /* Get suggested start point */
|
|
2087 .loc 1 1010 0
|
|
2088 0006 8846 mov r8, r1
|
|
2089 0008 31B9 cbnz r1, .L181
|
|
1011:../../../Source/third_party/fatfs/src/ff.c **** if (!scl || scl >= fs->n_fatent) scl = 1;
|
|
2090 .loc 1 1011 0
|
|
2091 000a C668 ldr r6, [r0, #12]
|
|
2092 .LVL315:
|
|
1012:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2093 .loc 1 1012 0
|
|
2094 000c 6EB1 cbz r6, .L189
|
|
1012:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2095 .loc 1 1012 0 is_stmt 0 discriminator 2
|
|
2096 000e 8369 ldr r3, [r0, #24]
|
|
2097 0010 9E42 cmp r6, r3
|
|
2098 0012 28BF it cs
|
|
2099 0014 0126 movcs r6, #1
|
|
2100 .LVL316:
|
|
2101 0016 09E0 b .L182
|
|
2102 .LVL317:
|
|
2103 .L181:
|
|
1015:../../../Source/third_party/fatfs/src/ff.c **** if (cs < 2) return 1; /* It is an invalid cluster */
|
|
2104 .loc 1 1015 0 is_stmt 1
|
|
2105 0018 FFF7FEFF bl get_fat
|
|
2106 .LVL318:
|
|
1016:../../../Source/third_party/fatfs/src/ff.c **** if (cs < fs->n_fatent) return cs; /* It is already followed by next cluster */
|
|
2107 .loc 1 1016 0
|
|
2108 001c 0128 cmp r0, #1
|
|
2109 001e 41D9 bls .L190
|
|
1017:../../../Source/third_party/fatfs/src/ff.c **** scl = clst;
|
|
2110 .loc 1 1017 0
|
|
2111 0020 AB69 ldr r3, [r5, #24]
|
|
2112 0022 9842 cmp r0, r3
|
|
2113 0024 4FD3 bcc .L183
|
|
1018:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2114 .loc 1 1018 0
|
|
2115 0026 4646 mov r6, r8
|
|
2116 0028 00E0 b .L182
|
|
2117 .LVL319:
|
|
2118 .L189:
|
|
1012:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2119 .loc 1 1012 0
|
|
2120 002a 0126 movs r6, #1
|
|
2121 .LVL320:
|
|
2122 .L182:
|
|
1021:../../../Source/third_party/fatfs/src/ff.c **** for (;;) {
|
|
2123 .loc 1 1021 0
|
|
2124 002c 3446 mov r4, r6
|
|
1025:../../../Source/third_party/fatfs/src/ff.c **** if (ncl > scl) return 0; /* No free cluster */
|
|
2125 .loc 1 1025 0
|
|
2126 002e 0227 movs r7, #2
|
|
2127 .LVL321:
|
|
2128 .L186:
|
|
1023:../../../Source/third_party/fatfs/src/ff.c **** if (ncl >= fs->n_fatent) { /* Wrap around */
|
|
2129 .loc 1 1023 0
|
|
2130 0030 0134 adds r4, r4, #1
|
|
2131 .LVL322:
|
|
1024:../../../Source/third_party/fatfs/src/ff.c **** ncl = 2;
|
|
2132 .loc 1 1024 0
|
|
2133 0032 AB69 ldr r3, [r5, #24]
|
|
2134 0034 9C42 cmp r4, r3
|
|
2135 0036 02D3 bcc .L184
|
|
2136 .LVL323:
|
|
1026:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2137 .loc 1 1026 0
|
|
2138 0038 012E cmp r6, #1
|
|
2139 003a 36D9 bls .L192
|
|
1025:../../../Source/third_party/fatfs/src/ff.c **** if (ncl > scl) return 0; /* No free cluster */
|
|
2140 .loc 1 1025 0
|
|
2141 003c 3C46 mov r4, r7
|
|
2142 .LVL324:
|
|
2143 .L184:
|
|
1028:../../../Source/third_party/fatfs/src/ff.c **** if (cs == 0) break; /* Found a free cluster */
|
|
2144 .loc 1 1028 0
|
|
2145 003e 2846 mov r0, r5
|
|
2146 0040 2146 mov r1, r4
|
|
2147 0042 FFF7FEFF bl get_fat
|
|
2148 .LVL325:
|
|
1029:../../../Source/third_party/fatfs/src/ff.c **** if (cs == 0xFFFFFFFF || cs == 1)/* An error occurred */
|
|
2149 .loc 1 1029 0
|
|
2150 0046 38B1 cbz r0, .L185
|
|
1030:../../../Source/third_party/fatfs/src/ff.c **** return cs;
|
|
2151 .loc 1 1030 0
|
|
2152 0048 B0F1FF3F cmp r0, #-1
|
|
2153 004c 30D0 beq .L193
|
|
1030:../../../Source/third_party/fatfs/src/ff.c **** return cs;
|
|
2154 .loc 1 1030 0 is_stmt 0 discriminator 1
|
|
2155 004e 0128 cmp r0, #1
|
|
2156 0050 32D0 beq .L194
|
|
1032:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2157 .loc 1 1032 0 is_stmt 1
|
|
2158 0052 B442 cmp r4, r6
|
|
2159 0054 ECD1 bne .L186
|
|
2160 0056 32E0 b .L195
|
|
2161 .L185:
|
|
2162 0058 2646 mov r6, r4
|
|
2163 .LVL326:
|
|
1035:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK && clst != 0) {
|
|
2164 .loc 1 1035 0
|
|
2165 005a 2846 mov r0, r5
|
|
2166 .LVL327:
|
|
2167 005c 2146 mov r1, r4
|
|
2168 005e 6FF07042 mvn r2, #-268435456
|
|
2169 0062 FFF7FEFF bl put_fat
|
|
2170 .LVL328:
|
|
1036:../../../Source/third_party/fatfs/src/ff.c **** res = put_fat(fs, clst, ncl); /* Link it to the previous one if needed */
|
|
2171 .loc 1 1036 0
|
|
2172 0066 0346 mov r3, r0
|
|
2173 0068 A8B9 cbnz r0, .L187
|
|
1036:../../../Source/third_party/fatfs/src/ff.c **** res = put_fat(fs, clst, ncl); /* Link it to the previous one if needed */
|
|
2174 .loc 1 1036 0 is_stmt 0 discriminator 1
|
|
2175 006a B8F1000F cmp r8, #0
|
|
2176 006e 06D0 beq .L188
|
|
1037:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2177 .loc 1 1037 0 is_stmt 1
|
|
2178 0070 2846 mov r0, r5
|
|
2179 .LVL329:
|
|
2180 0072 4146 mov r1, r8
|
|
2181 0074 2246 mov r2, r4
|
|
2182 0076 FFF7FEFF bl put_fat
|
|
2183 .LVL330:
|
|
1039:../../../Source/third_party/fatfs/src/ff.c **** fs->last_clust = ncl; /* Update FSINFO */
|
|
2184 .loc 1 1039 0
|
|
2185 007a 0346 mov r3, r0
|
|
2186 007c 58B9 cbnz r0, .L187
|
|
2187 .L188:
|
|
2188 .LVL331:
|
|
1040:../../../Source/third_party/fatfs/src/ff.c **** if (fs->free_clust != 0xFFFFFFFF) {
|
|
2189 .loc 1 1040 0
|
|
2190 007e EE60 str r6, [r5, #12]
|
|
1041:../../../Source/third_party/fatfs/src/ff.c **** fs->free_clust--;
|
|
2191 .loc 1 1041 0
|
|
2192 0080 2B69 ldr r3, [r5, #16]
|
|
2193 0082 B3F1FF3F cmp r3, #-1
|
|
2194 0086 1DD0 beq .L196
|
|
1042:../../../Source/third_party/fatfs/src/ff.c **** fs->fsi_flag = 1;
|
|
2195 .loc 1 1042 0
|
|
2196 0088 013B subs r3, r3, #1
|
|
2197 008a 2B61 str r3, [r5, #16]
|
|
1043:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2198 .loc 1 1043 0
|
|
2199 008c 0123 movs r3, #1
|
|
2200 008e 6B71 strb r3, [r5, #5]
|
|
2201 0090 2046 mov r0, r4
|
|
2202 0092 BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
|
2203 .LVL332:
|
|
2204 .L187:
|
|
1046:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2205 .loc 1 1046 0
|
|
2206 0096 012B cmp r3, #1
|
|
2207 0098 0CBF ite eq
|
|
2208 009a 4FF0FF30 moveq r0, #-1
|
|
2209 009e 0120 movne r0, #1
|
|
2210 00a0 BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
|
2211 .LVL333:
|
|
2212 .L190:
|
|
1016:../../../Source/third_party/fatfs/src/ff.c **** if (cs < fs->n_fatent) return cs; /* It is already followed by next cluster */
|
|
2213 .loc 1 1016 0
|
|
2214 00a4 0120 movs r0, #1
|
|
2215 .LVL334:
|
|
2216 00a6 BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
|
2217 .LVL335:
|
|
2218 .L192:
|
|
1026:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2219 .loc 1 1026 0
|
|
2220 00aa 0020 movs r0, #0
|
|
2221 00ac BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
|
2222 .LVL336:
|
|
2223 .L193:
|
|
1028:../../../Source/third_party/fatfs/src/ff.c **** if (cs == 0) break; /* Found a free cluster */
|
|
2224 .loc 1 1028 0
|
|
2225 00b0 4FF0FF30 mov r0, #-1
|
|
2226 .LVL337:
|
|
2227 00b4 BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
|
2228 .LVL338:
|
|
2229 .L194:
|
|
2230 00b8 0120 movs r0, #1
|
|
2231 .LVL339:
|
|
2232 00ba BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
|
2233 .LVL340:
|
|
2234 .L195:
|
|
1032:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2235 .loc 1 1032 0
|
|
2236 00be 0020 movs r0, #0
|
|
2237 .LVL341:
|
|
2238 00c0 BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
|
2239 .LVL342:
|
|
2240 .L196:
|
|
2241 00c4 2046 mov r0, r4
|
|
2242 .LVL343:
|
|
2243 .L183:
|
|
1050:../../../Source/third_party/fatfs/src/ff.c **** #endif /* !_FS_READONLY */
|
|
2244 .loc 1 1050 0
|
|
2245 00c6 BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
|
2246 .cfi_endproc
|
|
2247 .LFE11:
|
|
2249 00ca 00BF .section .text.dir_next,"ax",%progbits
|
|
2250 .align 2
|
|
2251 .thumb
|
|
2252 .thumb_func
|
|
2254 dir_next:
|
|
2255 .LFB13:
|
|
1140:../../../Source/third_party/fatfs/src/ff.c **** DWORD clst;
|
|
2256 .loc 1 1140 0
|
|
2257 .cfi_startproc
|
|
2258 @ args = 0, pretend = 0, frame = 0
|
|
2259 @ frame_needed = 0, uses_anonymous_args = 0
|
|
2260 .LVL344:
|
|
2261 0000 2DE9F843 push {r3, r4, r5, r6, r7, r8, r9, lr}
|
|
2262 .cfi_def_cfa_offset 32
|
|
2263 .cfi_offset 3, -32
|
|
2264 .cfi_offset 4, -28
|
|
2265 .cfi_offset 5, -24
|
|
2266 .cfi_offset 6, -20
|
|
2267 .cfi_offset 7, -16
|
|
2268 .cfi_offset 8, -12
|
|
2269 .cfi_offset 9, -8
|
|
2270 .cfi_offset 14, -4
|
|
1146:../../../Source/third_party/fatfs/src/ff.c **** if (!i || !dj->sect) /* Report EOT when index has reached 65535 */
|
|
2271 .loc 1 1146 0
|
|
2272 0004 C488 ldrh r4, [r0, #6]
|
|
2273 0006 0134 adds r4, r4, #1
|
|
2274 0008 A4B2 uxth r4, r4
|
|
2275 .LVL345:
|
|
1147:../../../Source/third_party/fatfs/src/ff.c **** return FR_NO_FILE;
|
|
2276 .loc 1 1147 0
|
|
2277 000a 002C cmp r4, #0
|
|
2278 000c 6CD0 beq .L207
|
|
1147:../../../Source/third_party/fatfs/src/ff.c **** return FR_NO_FILE;
|
|
2279 .loc 1 1147 0 is_stmt 0 discriminator 1
|
|
2280 000e 0369 ldr r3, [r0, #16]
|
|
2281 0010 002B cmp r3, #0
|
|
2282 0012 6CD0 beq .L208
|
|
2283 0014 0E46 mov r6, r1
|
|
2284 0016 0546 mov r5, r0
|
|
1150:../../../Source/third_party/fatfs/src/ff.c **** dj->sect++; /* Next sector */
|
|
2285 .loc 1 1150 0 is_stmt 1
|
|
2286 0018 14F00F07 ands r7, r4, #15
|
|
2287 001c 5BD1 bne .L201
|
|
1151:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2288 .loc 1 1151 0
|
|
2289 001e 0133 adds r3, r3, #1
|
|
2290 0020 0361 str r3, [r0, #16]
|
|
1153:../../../Source/third_party/fatfs/src/ff.c **** if (i >= dj->fs->n_rootdir) /* Report EOT when end of table */
|
|
2291 .loc 1 1153 0
|
|
2292 0022 C168 ldr r1, [r0, #12]
|
|
2293 .LVL346:
|
|
2294 0024 21B9 cbnz r1, .L202
|
|
1154:../../../Source/third_party/fatfs/src/ff.c **** return FR_NO_FILE;
|
|
2295 .loc 1 1154 0
|
|
2296 0026 0368 ldr r3, [r0]
|
|
2297 0028 1B89 ldrh r3, [r3, #8]
|
|
2298 002a A342 cmp r3, r4
|
|
2299 002c 62D9 bls .L209
|
|
2300 002e 52E0 b .L201
|
|
2301 .L202:
|
|
1158:../../../Source/third_party/fatfs/src/ff.c **** clst = get_fat(dj->fs, dj->clust); /* Get next cluster */
|
|
2302 .loc 1 1158 0
|
|
2303 0030 0068 ldr r0, [r0]
|
|
2304 .LVL347:
|
|
2305 0032 8378 ldrb r3, [r0, #2] @ zero_extendqisi2
|
|
2306 0034 013B subs r3, r3, #1
|
|
2307 0036 13EA1413 ands r3, r3, r4, lsr #4
|
|
2308 003a 4CD1 bne .L201
|
|
1159:../../../Source/third_party/fatfs/src/ff.c **** if (clst <= 1) return FR_INT_ERR;
|
|
2309 .loc 1 1159 0
|
|
2310 003c FFF7FEFF bl get_fat
|
|
2311 .LVL348:
|
|
2312 0040 8046 mov r8, r0
|
|
2313 .LVL349:
|
|
1160:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR;
|
|
2314 .loc 1 1160 0
|
|
2315 0042 0128 cmp r0, #1
|
|
2316 0044 59D9 bls .L210
|
|
1161:../../../Source/third_party/fatfs/src/ff.c **** if (clst >= dj->fs->n_fatent) { /* When it reached end of dynamic table */
|
|
2317 .loc 1 1161 0
|
|
2318 0046 B0F1FF3F cmp r0, #-1
|
|
2319 004a 59D0 beq .L211
|
|
1162:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
2320 .loc 1 1162 0
|
|
2321 004c 2868 ldr r0, [r5]
|
|
2322 .LVL350:
|
|
2323 004e 8369 ldr r3, [r0, #24]
|
|
2324 0050 9845 cmp r8, r3
|
|
2325 0052 39D3 bcc .L203
|
|
2326 .LBB10:
|
|
1165:../../../Source/third_party/fatfs/src/ff.c **** clst = create_chain(dj->fs, dj->clust); /* Stretch cluster chain */
|
|
2327 .loc 1 1165 0
|
|
2328 0054 002E cmp r6, #0
|
|
2329 0056 56D0 beq .L212
|
|
1166:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0) return FR_DENIED; /* No free cluster */
|
|
2330 .loc 1 1166 0
|
|
2331 0058 E968 ldr r1, [r5, #12]
|
|
2332 005a FFF7FEFF bl create_chain
|
|
2333 .LVL351:
|
|
1167:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 1) return FR_INT_ERR;
|
|
2334 .loc 1 1167 0
|
|
2335 005e 8046 mov r8, r0
|
|
2336 0060 0028 cmp r0, #0
|
|
2337 0062 53D0 beq .L213
|
|
1168:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR;
|
|
2338 .loc 1 1168 0
|
|
2339 0064 0128 cmp r0, #1
|
|
2340 0066 54D0 beq .L214
|
|
1169:../../../Source/third_party/fatfs/src/ff.c **** /* Clean-up stretched table */
|
|
2341 .loc 1 1169 0
|
|
2342 0068 B0F1FF3F cmp r0, #-1
|
|
2343 006c 54D0 beq .L215
|
|
1171:../../../Source/third_party/fatfs/src/ff.c **** mem_set(dj->fs->win, 0, SS(dj->fs)); /* Clear window buffer */
|
|
2344 .loc 1 1171 0
|
|
2345 006e 2868 ldr r0, [r5]
|
|
2346 .LVL352:
|
|
2347 0070 FFF7FEFF bl sync_window
|
|
2348 .LVL353:
|
|
2349 0074 0028 cmp r0, #0
|
|
2350 0076 52D1 bne .L216
|
|
1172:../../../Source/third_party/fatfs/src/ff.c **** dj->fs->winsect = clust2sect(dj->fs, clst); /* Cluster start sector */
|
|
2351 .loc 1 1172 0
|
|
2352 0078 2B68 ldr r3, [r5]
|
|
2353 007a 03F13402 add r2, r3, #52
|
|
2354 .LVL354:
|
|
2355 007e 03F50D73 add r3, r3, #564
|
|
2356 .LBB11:
|
|
2357 .LBB12:
|
|
560:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2358 .loc 1 560 0
|
|
2359 0082 0021 movs r1, #0
|
|
2360 .LVL355:
|
|
2361 .L204:
|
|
2362 0084 02F8011B strb r1, [r2], #1
|
|
2363 .LVL356:
|
|
559:../../../Source/third_party/fatfs/src/ff.c **** *d++ = (BYTE)val;
|
|
2364 .loc 1 559 0
|
|
2365 0088 9A42 cmp r2, r3
|
|
2366 008a FBD1 bne .L204
|
|
2367 .LBE12:
|
|
2368 .LBE11:
|
|
1173:../../../Source/third_party/fatfs/src/ff.c **** for (c = 0; c < dj->fs->csize; c++) { /* Fill the new cluster with 0 */
|
|
2369 .loc 1 1173 0
|
|
2370 008c 2E68 ldr r6, [r5]
|
|
2371 .LVL357:
|
|
2372 008e 3046 mov r0, r6
|
|
2373 0090 4146 mov r1, r8
|
|
2374 0092 FFF7FEFF bl clust2sect
|
|
2375 .LVL358:
|
|
2376 0096 3063 str r0, [r6, #48]
|
|
2377 .LVL359:
|
|
1174:../../../Source/third_party/fatfs/src/ff.c **** dj->fs->wflag = 1;
|
|
2378 .loc 1 1174 0
|
|
2379 0098 0026 movs r6, #0
|
|
1175:../../../Source/third_party/fatfs/src/ff.c **** if (sync_window(dj->fs)) return FR_DISK_ERR;
|
|
2380 .loc 1 1175 0
|
|
2381 009a 4FF00109 mov r9, #1
|
|
1174:../../../Source/third_party/fatfs/src/ff.c **** dj->fs->wflag = 1;
|
|
2382 .loc 1 1174 0
|
|
2383 009e 0BE0 b .L205
|
|
2384 .LVL360:
|
|
2385 .L206:
|
|
1175:../../../Source/third_party/fatfs/src/ff.c **** if (sync_window(dj->fs)) return FR_DISK_ERR;
|
|
2386 .loc 1 1175 0
|
|
2387 00a0 83F80490 strb r9, [r3, #4]
|
|
1176:../../../Source/third_party/fatfs/src/ff.c **** dj->fs->winsect++;
|
|
2388 .loc 1 1176 0
|
|
2389 00a4 2868 ldr r0, [r5]
|
|
2390 00a6 FFF7FEFF bl sync_window
|
|
2391 .LVL361:
|
|
2392 00aa 0136 adds r6, r6, #1
|
|
2393 .LVL362:
|
|
2394 00ac 0028 cmp r0, #0
|
|
2395 00ae 39D1 bne .L217
|
|
1177:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2396 .loc 1 1177 0 discriminator 2
|
|
2397 00b0 2A68 ldr r2, [r5]
|
|
2398 00b2 136B ldr r3, [r2, #48]
|
|
2399 00b4 0133 adds r3, r3, #1
|
|
2400 00b6 1363 str r3, [r2, #48]
|
|
2401 .LVL363:
|
|
2402 .L205:
|
|
2403 00b8 F1B2 uxtb r1, r6
|
|
2404 .LVL364:
|
|
1174:../../../Source/third_party/fatfs/src/ff.c **** dj->fs->wflag = 1;
|
|
2405 .loc 1 1174 0 discriminator 1
|
|
2406 00ba 2B68 ldr r3, [r5]
|
|
2407 00bc 9A78 ldrb r2, [r3, #2] @ zero_extendqisi2
|
|
2408 00be 8A42 cmp r2, r1
|
|
2409 00c0 EED8 bhi .L206
|
|
1179:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
2410 .loc 1 1179 0
|
|
2411 00c2 1A6B ldr r2, [r3, #48]
|
|
2412 00c4 521A subs r2, r2, r1
|
|
2413 00c6 1A63 str r2, [r3, #48]
|
|
2414 .LVL365:
|
|
2415 .L203:
|
|
2416 .LBE10:
|
|
1184:../../../Source/third_party/fatfs/src/ff.c **** dj->sect = clust2sect(dj->fs, clst);
|
|
2417 .loc 1 1184 0
|
|
2418 00c8 C5F80C80 str r8, [r5, #12]
|
|
1185:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2419 .loc 1 1185 0
|
|
2420 00cc 2868 ldr r0, [r5]
|
|
2421 00ce 4146 mov r1, r8
|
|
2422 00d0 FFF7FEFF bl clust2sect
|
|
2423 .LVL366:
|
|
2424 00d4 2861 str r0, [r5, #16]
|
|
2425 .LVL367:
|
|
2426 .L201:
|
|
1190:../../../Source/third_party/fatfs/src/ff.c **** dj->dir = dj->fs->win + (i % (SS(dj->fs) / SZ_DIR)) * SZ_DIR;
|
|
2427 .loc 1 1190 0
|
|
2428 00d6 EC80 strh r4, [r5, #6] @ movhi
|
|
1191:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2429 .loc 1 1191 0
|
|
2430 00d8 2B68 ldr r3, [r5]
|
|
2431 00da 03EB4713 add r3, r3, r7, lsl #5
|
|
2432 00de 3433 adds r3, r3, #52
|
|
2433 00e0 6B61 str r3, [r5, #20]
|
|
1193:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2434 .loc 1 1193 0
|
|
2435 00e2 0020 movs r0, #0
|
|
2436 00e4 BDE8F883 pop {r3, r4, r5, r6, r7, r8, r9, pc}
|
|
2437 .LVL368:
|
|
2438 .L207:
|
|
1148:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2439 .loc 1 1148 0
|
|
2440 00e8 0420 movs r0, #4
|
|
2441 .LVL369:
|
|
2442 00ea BDE8F883 pop {r3, r4, r5, r6, r7, r8, r9, pc}
|
|
2443 .LVL370:
|
|
2444 .L208:
|
|
2445 00ee 0420 movs r0, #4
|
|
2446 .LVL371:
|
|
2447 00f0 BDE8F883 pop {r3, r4, r5, r6, r7, r8, r9, pc}
|
|
2448 .LVL372:
|
|
2449 .L209:
|
|
1155:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2450 .loc 1 1155 0
|
|
2451 00f4 0420 movs r0, #4
|
|
2452 .LVL373:
|
|
2453 00f6 BDE8F883 pop {r3, r4, r5, r6, r7, r8, r9, pc}
|
|
2454 .LVL374:
|
|
2455 .L210:
|
|
1160:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR;
|
|
2456 .loc 1 1160 0
|
|
2457 00fa 0220 movs r0, #2
|
|
2458 .LVL375:
|
|
2459 00fc BDE8F883 pop {r3, r4, r5, r6, r7, r8, r9, pc}
|
|
2460 .LVL376:
|
|
2461 .L211:
|
|
1161:../../../Source/third_party/fatfs/src/ff.c **** if (clst >= dj->fs->n_fatent) { /* When it reached end of dynamic table */
|
|
2462 .loc 1 1161 0
|
|
2463 0100 0120 movs r0, #1
|
|
2464 .LVL377:
|
|
2465 0102 BDE8F883 pop {r3, r4, r5, r6, r7, r8, r9, pc}
|
|
2466 .LVL378:
|
|
2467 .L212:
|
|
2468 .LBB13:
|
|
1165:../../../Source/third_party/fatfs/src/ff.c **** clst = create_chain(dj->fs, dj->clust); /* Stretch cluster chain */
|
|
2469 .loc 1 1165 0
|
|
2470 0106 0420 movs r0, #4
|
|
2471 0108 BDE8F883 pop {r3, r4, r5, r6, r7, r8, r9, pc}
|
|
2472 .LVL379:
|
|
2473 .L213:
|
|
1167:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 1) return FR_INT_ERR;
|
|
2474 .loc 1 1167 0
|
|
2475 010c 0720 movs r0, #7
|
|
2476 .LVL380:
|
|
2477 010e BDE8F883 pop {r3, r4, r5, r6, r7, r8, r9, pc}
|
|
2478 .LVL381:
|
|
2479 .L214:
|
|
1168:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR;
|
|
2480 .loc 1 1168 0
|
|
2481 0112 0220 movs r0, #2
|
|
2482 .LVL382:
|
|
2483 0114 BDE8F883 pop {r3, r4, r5, r6, r7, r8, r9, pc}
|
|
2484 .LVL383:
|
|
2485 .L215:
|
|
1169:../../../Source/third_party/fatfs/src/ff.c **** /* Clean-up stretched table */
|
|
2486 .loc 1 1169 0
|
|
2487 0118 0120 movs r0, #1
|
|
2488 .LVL384:
|
|
2489 011a BDE8F883 pop {r3, r4, r5, r6, r7, r8, r9, pc}
|
|
2490 .LVL385:
|
|
2491 .L216:
|
|
1171:../../../Source/third_party/fatfs/src/ff.c **** mem_set(dj->fs->win, 0, SS(dj->fs)); /* Clear window buffer */
|
|
2492 .loc 1 1171 0
|
|
2493 011e 0120 movs r0, #1
|
|
2494 0120 BDE8F883 pop {r3, r4, r5, r6, r7, r8, r9, pc}
|
|
2495 .LVL386:
|
|
2496 .L217:
|
|
1176:../../../Source/third_party/fatfs/src/ff.c **** dj->fs->winsect++;
|
|
2497 .loc 1 1176 0
|
|
2498 0124 0120 movs r0, #1
|
|
2499 .LBE13:
|
|
1194:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2500 .loc 1 1194 0
|
|
2501 0126 BDE8F883 pop {r3, r4, r5, r6, r7, r8, r9, pc}
|
|
2502 .cfi_endproc
|
|
2503 .LFE13:
|
|
2505 012a 00BF .section .text.dir_find,"ax",%progbits
|
|
2506 .align 2
|
|
2507 .thumb
|
|
2508 .thumb_func
|
|
2510 dir_find:
|
|
2511 .LFB22:
|
|
1448:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
2512 .loc 1 1448 0
|
|
2513 .cfi_startproc
|
|
2514 @ args = 0, pretend = 0, frame = 16
|
|
2515 @ frame_needed = 0, uses_anonymous_args = 0
|
|
2516 .LVL387:
|
|
2517 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
2518 .cfi_def_cfa_offset 36
|
|
2519 .cfi_offset 4, -36
|
|
2520 .cfi_offset 5, -32
|
|
2521 .cfi_offset 6, -28
|
|
2522 .cfi_offset 7, -24
|
|
2523 .cfi_offset 8, -20
|
|
2524 .cfi_offset 9, -16
|
|
2525 .cfi_offset 10, -12
|
|
2526 .cfi_offset 11, -8
|
|
2527 .cfi_offset 14, -4
|
|
2528 0004 85B0 sub sp, sp, #20
|
|
2529 .cfi_def_cfa_offset 56
|
|
2530 0006 0546 mov r5, r0
|
|
1455:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) return res;
|
|
2531 .loc 1 1455 0
|
|
2532 0008 0021 movs r1, #0
|
|
2533 000a FFF7FEFF bl dir_sdi
|
|
2534 .LVL388:
|
|
1456:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2535 .loc 1 1456 0
|
|
2536 000e 0028 cmp r0, #0
|
|
2537 0010 40F09680 bne .L237
|
|
2538 0014 4FF0FF09 mov r9, #255
|
|
2539 0018 4F46 mov r7, r9
|
|
1470:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
2540 .loc 1 1470 0
|
|
2541 001a C846 mov r8, r9
|
|
2542 001c 524B ldr r3, .L252
|
|
2543 001e 03F10D0B add fp, r3, #13
|
|
2544 .L236:
|
|
2545 .LVL389:
|
|
1462:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
2546 .loc 1 1462 0
|
|
2547 0022 2868 ldr r0, [r5]
|
|
2548 .LVL390:
|
|
2549 0024 2969 ldr r1, [r5, #16]
|
|
2550 0026 FFF7FEFF bl move_window
|
|
2551 .LVL391:
|
|
1463:../../../Source/third_party/fatfs/src/ff.c **** dir = dj->dir; /* Ptr to the directory entry of current index */
|
|
2552 .loc 1 1463 0
|
|
2553 002a 0028 cmp r0, #0
|
|
2554 002c 40F08980 bne .L238
|
|
1464:../../../Source/third_party/fatfs/src/ff.c **** c = dir[DIR_Name];
|
|
2555 .loc 1 1464 0
|
|
2556 0030 6C69 ldr r4, [r5, #20]
|
|
2557 .LVL392:
|
|
1465:../../../Source/third_party/fatfs/src/ff.c **** if (c == 0) { res = FR_NO_FILE; break; } /* Reached to end of table */
|
|
2558 .loc 1 1465 0
|
|
2559 0032 2678 ldrb r6, [r4] @ zero_extendqisi2
|
|
2560 .LVL393:
|
|
1466:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN /* LFN configuration */
|
|
2561 .loc 1 1466 0
|
|
2562 0034 002E cmp r6, #0
|
|
2563 0036 00F08580 beq .L239
|
|
1468:../../../Source/third_party/fatfs/src/ff.c **** if (c == DDE || ((a & AM_VOL) && a != AM_LFN)) { /* An entry without valid data */
|
|
2564 .loc 1 1468 0
|
|
2565 003a E37A ldrb r3, [r4, #11] @ zero_extendqisi2
|
|
2566 003c 03F03F02 and r2, r3, #63
|
|
2567 .LVL394:
|
|
1469:../../../Source/third_party/fatfs/src/ff.c **** ord = 0xFF;
|
|
2568 .loc 1 1469 0
|
|
2569 0040 E52E cmp r6, #229
|
|
2570 0042 6ED0 beq .L240
|
|
1469:../../../Source/third_party/fatfs/src/ff.c **** ord = 0xFF;
|
|
2571 .loc 1 1469 0 is_stmt 0 discriminator 1
|
|
2572 0044 13F0080F tst r3, #8
|
|
2573 0048 02D0 beq .L223
|
|
1469:../../../Source/third_party/fatfs/src/ff.c **** ord = 0xFF;
|
|
2574 .loc 1 1469 0 discriminator 2
|
|
2575 004a 0F2A cmp r2, #15
|
|
2576 004c 6BD1 bne .L241
|
|
2577 004e 01E0 b .L224
|
|
2578 .L223:
|
|
1472:../../../Source/third_party/fatfs/src/ff.c **** if (dj->lfn) {
|
|
2579 .loc 1 1472 0 is_stmt 1
|
|
2580 0050 0F2A cmp r2, #15
|
|
2581 0052 4BD1 bne .L225
|
|
2582 .L224:
|
|
1473:../../../Source/third_party/fatfs/src/ff.c **** if (c & LLE) { /* Is it start of LFN sequence? */
|
|
2583 .loc 1 1473 0
|
|
2584 0054 D5F81CA0 ldr r10, [r5, #28]
|
|
2585 0058 BAF1000F cmp r10, #0
|
|
2586 005c 68D0 beq .L222
|
|
1474:../../../Source/third_party/fatfs/src/ff.c **** sum = dir[LDIR_Chksum];
|
|
2587 .loc 1 1474 0
|
|
2588 005e 16F0400F tst r6, #64
|
|
2589 0062 06D0 beq .L226
|
|
1475:../../../Source/third_party/fatfs/src/ff.c **** c &= ~LLE; ord = c; /* LFN start order */
|
|
2590 .loc 1 1475 0
|
|
2591 0064 94F80D90 ldrb r9, [r4, #13] @ zero_extendqisi2
|
|
2592 .LVL395:
|
|
1476:../../../Source/third_party/fatfs/src/ff.c **** dj->lfn_idx = dj->index;
|
|
2593 .loc 1 1476 0
|
|
2594 0068 06F0BF06 and r6, r6, #191
|
|
2595 .LVL396:
|
|
1477:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2596 .loc 1 1477 0
|
|
2597 006c EB88 ldrh r3, [r5, #6]
|
|
2598 006e 2B84 strh r3, [r5, #32] @ movhi
|
|
2599 0070 03E0 b .L227
|
|
2600 .LVL397:
|
|
2601 .L226:
|
|
1480:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2602 .loc 1 1480 0
|
|
2603 0072 B742 cmp r7, r6
|
|
2604 0074 18BF it ne
|
|
2605 0076 4746 movne r7, r8
|
|
2606 .LVL398:
|
|
2607 0078 5AD1 bne .L222
|
|
2608 .L227:
|
|
2609 .LVL399:
|
|
1480:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2610 .loc 1 1480 0 is_stmt 0 discriminator 1
|
|
2611 007a 637B ldrb r3, [r4, #13] @ zero_extendqisi2
|
|
2612 007c 0193 str r3, [sp, #4]
|
|
2613 007e 4B45 cmp r3, r9
|
|
2614 0080 53D1 bne .L243
|
|
2615 .LVL400:
|
|
2616 .LBB18:
|
|
2617 .LBB19:
|
|
1286:../../../Source/third_party/fatfs/src/ff.c **** s = 0; wc = 1;
|
|
2618 .loc 1 1286 0 is_stmt 1
|
|
2619 0082 2378 ldrb r3, [r4] @ zero_extendqisi2
|
|
2620 0084 23F04003 bic r3, r3, #64
|
|
2621 0088 013B subs r3, r3, #1
|
|
2622 008a 03EB4309 add r9, r3, r3, lsl #1
|
|
2623 .LVL401:
|
|
2624 008e 03EB8909 add r9, r3, r9, lsl #2
|
|
2625 .LVL402:
|
|
2626 0092 354F ldr r7, .L252
|
|
1287:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
2627 .loc 1 1287 0
|
|
2628 0094 0120 movs r0, #1
|
|
2629 .LVL403:
|
|
2630 .L231:
|
|
1289:../../../Source/third_party/fatfs/src/ff.c **** if (wc) { /* Last char has not been processed */
|
|
2631 .loc 1 1289 0
|
|
2632 0096 17F8012B ldrb r2, [r7], #1 @ zero_extendqisi2
|
|
2633 .LVL404:
|
|
2634 009a A318 adds r3, r4, r2
|
|
2635 009c 5978 ldrb r1, [r3, #1] @ zero_extendqisi2
|
|
2636 009e A35C ldrb r3, [r4, r2] @ zero_extendqisi2
|
|
2637 00a0 43EA0123 orr r3, r3, r1, lsl #8
|
|
2638 .LVL405:
|
|
1290:../../../Source/third_party/fatfs/src/ff.c **** wc = ff_wtoupper(uc); /* Convert it to upper case */
|
|
2639 .loc 1 1290 0
|
|
2640 00a4 98B1 cbz r0, .L228
|
|
1291:../../../Source/third_party/fatfs/src/ff.c **** if (i >= _MAX_LFN || wc != ff_wtoupper(lfnbuf[i++])) /* Compare it */
|
|
2641 .loc 1 1291 0
|
|
2642 00a6 1846 mov r0, r3
|
|
2643 .LVL406:
|
|
2644 00a8 FFF7FEFF bl ff_wtoupper
|
|
2645 .LVL407:
|
|
2646 00ac 0290 str r0, [sp, #8]
|
|
2647 .LVL408:
|
|
1292:../../../Source/third_party/fatfs/src/ff.c **** return 0; /* Not matched */
|
|
2648 .loc 1 1292 0
|
|
2649 00ae B9F1FE0F cmp r9, #254
|
|
2650 00b2 52D8 bhi .L229
|
|
2651 00b4 09F10103 add r3, r9, #1
|
|
2652 00b8 0393 str r3, [sp, #12]
|
|
2653 .LVL409:
|
|
2654 00ba 3AF81900 ldrh r0, [r10, r9, lsl #1]
|
|
2655 00be FFF7FEFF bl ff_wtoupper
|
|
2656 .LVL410:
|
|
2657 00c2 029A ldr r2, [sp, #8]
|
|
2658 00c4 8242 cmp r2, r0
|
|
2659 00c6 48D1 bne .L229
|
|
2660 00c8 DDF80C90 ldr r9, [sp, #12]
|
|
2661 00cc 03E0 b .L230
|
|
2662 .LVL411:
|
|
2663 .L228:
|
|
1295:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2664 .loc 1 1295 0
|
|
2665 00ce 4FF6FF72 movw r2, #65535
|
|
2666 00d2 9342 cmp r3, r2
|
|
2667 00d4 41D1 bne .L229
|
|
2668 .LVL412:
|
|
2669 .L230:
|
|
1297:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2670 .loc 1 1297 0
|
|
2671 00d6 5F45 cmp r7, fp
|
|
2672 00d8 DDD1 bne .L231
|
|
1299:../../../Source/third_party/fatfs/src/ff.c **** return 0;
|
|
2673 .loc 1 1299 0
|
|
2674 00da 2378 ldrb r3, [r4] @ zero_extendqisi2
|
|
2675 00dc 13F0400F tst r3, #64
|
|
2676 00e0 36D0 beq .L232
|
|
2677 00e2 A8B3 cbz r0, .L232
|
|
2678 00e4 3AF81930 ldrh r3, [r10, r9, lsl #1]
|
|
2679 00e8 93B3 cbz r3, .L232
|
|
2680 00ea 36E0 b .L229
|
|
2681 .LVL413:
|
|
2682 .L225:
|
|
2683 .LBE19:
|
|
2684 .LBE18:
|
|
1483:../../../Source/third_party/fatfs/src/ff.c **** ord = 0xFF; dj->lfn_idx = 0xFFFF; /* Reset LFN sequence */
|
|
2685 .loc 1 1483 0
|
|
2686 00ec 27B9 cbnz r7, .L233
|
|
1483:../../../Source/third_party/fatfs/src/ff.c **** ord = 0xFF; dj->lfn_idx = 0xFFFF; /* Reset LFN sequence */
|
|
2687 .loc 1 1483 0 is_stmt 0 discriminator 1
|
|
2688 00ee 2046 mov r0, r4
|
|
2689 .LVL414:
|
|
2690 00f0 FFF7FEFF bl sum_sfn
|
|
2691 .LVL415:
|
|
2692 00f4 4845 cmp r0, r9
|
|
2693 00f6 27D0 beq .L244
|
|
2694 .L233:
|
|
2695 .LVL416:
|
|
1484:../../../Source/third_party/fatfs/src/ff.c **** if (!(dj->fn[NS] & NS_LOSS) && !mem_cmp(dir, dj->fn, 11)) break; /* SFN matched? */
|
|
2696 .loc 1 1484 0 is_stmt 1
|
|
2697 00f8 4FF6FF73 movw r3, #65535
|
|
2698 00fc 2B84 strh r3, [r5, #32] @ movhi
|
|
1485:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2699 .loc 1 1485 0
|
|
2700 00fe AB69 ldr r3, [r5, #24]
|
|
2701 0100 DA7A ldrb r2, [r3, #11] @ zero_extendqisi2
|
|
2702 0102 12F0010F tst r2, #1
|
|
2703 0106 12D1 bne .L245
|
|
2704 0108 04F10B00 add r0, r4, #11
|
|
2705 010c 01E0 b .L234
|
|
2706 .LVL417:
|
|
2707 .L235:
|
|
2708 .LBB20:
|
|
2709 .LBB21:
|
|
569:../../../Source/third_party/fatfs/src/ff.c **** return r;
|
|
2710 .loc 1 569 0
|
|
2711 010e 8442 cmp r4, r0
|
|
2712 0110 1CD0 beq .L246
|
|
2713 .LVL418:
|
|
2714 .L234:
|
|
2715 0112 14F8011B ldrb r1, [r4], #1 @ zero_extendqisi2
|
|
2716 .LVL419:
|
|
2717 0116 13F8012B ldrb r2, [r3], #1 @ zero_extendqisi2
|
|
2718 .LVL420:
|
|
2719 011a 9142 cmp r1, r2
|
|
2720 011c F7D0 beq .L235
|
|
2721 .LBE21:
|
|
2722 .LBE20:
|
|
1484:../../../Source/third_party/fatfs/src/ff.c **** if (!(dj->fn[NS] & NS_LOSS) && !mem_cmp(dir, dj->fn, 11)) break; /* SFN matched? */
|
|
2723 .loc 1 1484 0
|
|
2724 011e 4746 mov r7, r8
|
|
2725 0120 06E0 b .L222
|
|
2726 .LVL421:
|
|
2727 .L240:
|
|
1470:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
2728 .loc 1 1470 0
|
|
2729 0122 4746 mov r7, r8
|
|
2730 .LVL422:
|
|
2731 0124 04E0 b .L222
|
|
2732 .LVL423:
|
|
2733 .L241:
|
|
2734 0126 4746 mov r7, r8
|
|
2735 .LVL424:
|
|
2736 0128 02E0 b .L222
|
|
2737 .LVL425:
|
|
2738 .L243:
|
|
1480:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2739 .loc 1 1480 0
|
|
2740 012a 4746 mov r7, r8
|
|
2741 012c 00E0 b .L222
|
|
2742 .LVL426:
|
|
2743 .L245:
|
|
1484:../../../Source/third_party/fatfs/src/ff.c **** if (!(dj->fn[NS] & NS_LOSS) && !mem_cmp(dir, dj->fn, 11)) break; /* SFN matched? */
|
|
2744 .loc 1 1484 0
|
|
2745 012e 4746 mov r7, r8
|
|
2746 .LVL427:
|
|
2747 .L222:
|
|
1492:../../../Source/third_party/fatfs/src/ff.c **** } while (res == FR_OK);
|
|
2748 .loc 1 1492 0
|
|
2749 0130 2846 mov r0, r5
|
|
2750 0132 0021 movs r1, #0
|
|
2751 0134 FFF7FEFF bl dir_next
|
|
2752 .LVL428:
|
|
1493:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2753 .loc 1 1493 0
|
|
2754 0138 0028 cmp r0, #0
|
|
2755 013a 3FF472AF beq .L236
|
|
2756 013e 10E0 b .L250
|
|
2757 .LVL429:
|
|
2758 .L237:
|
|
2759 0140 0FE0 b .L250
|
|
2760 .LVL430:
|
|
2761 .L238:
|
|
2762 0142 0EE0 b .L250
|
|
2763 .LVL431:
|
|
2764 .L239:
|
|
1466:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN /* LFN configuration */
|
|
2765 .loc 1 1466 0
|
|
2766 0144 0420 movs r0, #4
|
|
2767 .LVL432:
|
|
2768 0146 0CE0 b .L250
|
|
2769 .L244:
|
|
1462:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
2770 .loc 1 1462 0
|
|
2771 0148 0020 movs r0, #0
|
|
2772 014a 0AE0 b .L250
|
|
2773 .LVL433:
|
|
2774 .L246:
|
|
2775 014c 0020 movs r0, #0
|
|
2776 .LVL434:
|
|
2777 014e 08E0 b .L250
|
|
2778 .LVL435:
|
|
2779 .L232:
|
|
1480:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2780 .loc 1 1480 0
|
|
2781 0150 013E subs r6, r6, #1
|
|
2782 .LVL436:
|
|
2783 0152 F7B2 uxtb r7, r6
|
|
2784 .LVL437:
|
|
2785 0154 DDF80490 ldr r9, [sp, #4]
|
|
2786 .LVL438:
|
|
2787 0158 EAE7 b .L222
|
|
2788 .LVL439:
|
|
2789 .L229:
|
|
1484:../../../Source/third_party/fatfs/src/ff.c **** if (!(dj->fn[NS] & NS_LOSS) && !mem_cmp(dir, dj->fn, 11)) break; /* SFN matched? */
|
|
2790 .loc 1 1484 0
|
|
2791 015a DDF80490 ldr r9, [sp, #4]
|
|
1480:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2792 .loc 1 1480 0
|
|
2793 015e 4746 mov r7, r8
|
|
2794 0160 E6E7 b .L222
|
|
2795 .LVL440:
|
|
2796 .L250:
|
|
1496:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2797 .loc 1 1496 0
|
|
2798 0162 05B0 add sp, sp, #20
|
|
2799 .cfi_def_cfa_offset 36
|
|
2800 @ sp needed
|
|
2801 0164 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
2802 .LVL441:
|
|
2803 .L253:
|
|
2804 .align 2
|
|
2805 .L252:
|
|
2806 0168 00000000 .word .LANCHOR2
|
|
2807 .cfi_endproc
|
|
2808 .LFE22:
|
|
2810 .section .text.follow_path,"ax",%progbits
|
|
2811 .align 2
|
|
2812 .thumb
|
|
2813 .thumb_func
|
|
2815 follow_path:
|
|
2816 .LFB28:
|
|
1983:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
2817 .loc 1 1983 0
|
|
2818 .cfi_startproc
|
|
2819 @ args = 0, pretend = 0, frame = 8
|
|
2820 @ frame_needed = 0, uses_anonymous_args = 0
|
|
2821 .LVL442:
|
|
2822 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
2823 .cfi_def_cfa_offset 36
|
|
2824 .cfi_offset 4, -36
|
|
2825 .cfi_offset 5, -32
|
|
2826 .cfi_offset 6, -28
|
|
2827 .cfi_offset 7, -24
|
|
2828 .cfi_offset 8, -20
|
|
2829 .cfi_offset 9, -16
|
|
2830 .cfi_offset 10, -12
|
|
2831 .cfi_offset 11, -8
|
|
2832 .cfi_offset 14, -4
|
|
2833 0004 83B0 sub sp, sp, #12
|
|
2834 .cfi_def_cfa_offset 48
|
|
2835 0006 0546 mov r5, r0
|
|
2836 0008 8946 mov r9, r1
|
|
1995:../../../Source/third_party/fatfs/src/ff.c **** path++;
|
|
2837 .loc 1 1995 0
|
|
2838 000a 0B78 ldrb r3, [r1] @ zero_extendqisi2
|
|
2839 000c 2F2B cmp r3, #47
|
|
2840 000e 01D0 beq .L255
|
|
1995:../../../Source/third_party/fatfs/src/ff.c **** path++;
|
|
2841 .loc 1 1995 0 is_stmt 0 discriminator 1
|
|
2842 0010 5C2B cmp r3, #92
|
|
2843 0012 01D1 bne .L256
|
|
2844 .L255:
|
|
1996:../../../Source/third_party/fatfs/src/ff.c **** dj->sclust = 0; /* Start from the root dir */
|
|
2845 .loc 1 1996 0 is_stmt 1
|
|
2846 0014 09F10109 add r9, r9, #1
|
|
2847 .LVL443:
|
|
2848 .L256:
|
|
1997:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2849 .loc 1 1997 0
|
|
2850 0018 0023 movs r3, #0
|
|
2851 001a AB60 str r3, [r5, #8]
|
|
2000:../../../Source/third_party/fatfs/src/ff.c **** res = dir_sdi(dj, 0);
|
|
2852 .loc 1 2000 0
|
|
2853 001c 99F80030 ldrb r3, [r9] @ zero_extendqisi2
|
|
2854 0020 1F2B cmp r3, #31
|
|
2855 0022 07D8 bhi .L322
|
|
2001:../../../Source/third_party/fatfs/src/ff.c **** dj->dir = 0;
|
|
2856 .loc 1 2001 0
|
|
2857 0024 2846 mov r0, r5
|
|
2858 .LVL444:
|
|
2859 0026 0021 movs r1, #0
|
|
2860 0028 FFF7FEFF bl dir_sdi
|
|
2861 .LVL445:
|
|
2862 002c 0346 mov r3, r0
|
|
2863 .LVL446:
|
|
2002:../../../Source/third_party/fatfs/src/ff.c **** } else { /* Follow path */
|
|
2864 .loc 1 2002 0
|
|
2865 002e 0022 movs r2, #0
|
|
2866 0030 6A61 str r2, [r5, #20]
|
|
2867 0032 5CE1 b .L316
|
|
2868 .LVL447:
|
|
2869 .L322:
|
|
2870 0034 CA46 mov r10, r9
|
|
2871 .LVL448:
|
|
2872 .LBB30:
|
|
2873 .LBB31:
|
|
1699:../../../Source/third_party/fatfs/src/ff.c **** lfn = dj->lfn;
|
|
2874 .loc 1 1699 0
|
|
2875 0036 19F8013B ldrb r3, [r9], #1 @ zero_extendqisi2
|
|
2876 .LVL449:
|
|
2877 003a 2F2B cmp r3, #47
|
|
2878 003c FAD0 beq .L322
|
|
2879 003e 5C2B cmp r3, #92
|
|
2880 0040 F8D0 beq .L322
|
|
1700:../../../Source/third_party/fatfs/src/ff.c **** si = di = 0;
|
|
2881 .loc 1 1700 0
|
|
2882 0042 EE69 ldr r6, [r5, #28]
|
|
2883 .LVL450:
|
|
1703:../../../Source/third_party/fatfs/src/ff.c **** if (w < ' ' || w == '/' || w == '\\') break; /* Break on end of segment */
|
|
2884 .loc 1 1703 0
|
|
2885 0044 9AF80000 ldrb r0, [r10] @ zero_extendqisi2
|
|
2886 .LVL451:
|
|
1704:../../../Source/third_party/fatfs/src/ff.c **** if (di >= _MAX_LFN) /* Reject too long name */
|
|
2887 .loc 1 1704 0
|
|
2888 0048 1F28 cmp r0, #31
|
|
2889 004a 40F22681 bls .L309
|
|
2890 004e 2F28 cmp r0, #47
|
|
2891 0050 00F02981 beq .L310
|
|
2892 0054 5C28 cmp r0, #92
|
|
2893 0056 00F02A81 beq .L311
|
|
2894 005a A6F10208 sub r8, r6, #2
|
|
2895 005e 5746 mov r7, r10
|
|
2896 0060 0124 movs r4, #1
|
|
1715:../../../Source/third_party/fatfs/src/ff.c **** if (!w) return FR_INVALID_NAME; /* Reject invalid code */
|
|
2897 .loc 1 1715 0
|
|
2898 0062 A346 mov fp, r4
|
|
2899 0064 0AE0 b .L262
|
|
2900 .LVL452:
|
|
2901 .L323:
|
|
1704:../../../Source/third_party/fatfs/src/ff.c **** if (di >= _MAX_LFN) /* Reject too long name */
|
|
2902 .loc 1 1704 0
|
|
2903 0066 2F28 cmp r0, #47
|
|
2904 0068 00F02481 beq .L261
|
|
2905 006c 5C28 cmp r0, #92
|
|
2906 006e 00F02181 beq .L261
|
|
1705:../../../Source/third_party/fatfs/src/ff.c **** return FR_INVALID_NAME;
|
|
2907 .loc 1 1705 0
|
|
2908 0072 B9F5807F cmp r9, #256
|
|
2909 0076 00F03081 beq .L263
|
|
1703:../../../Source/third_party/fatfs/src/ff.c **** if (w < ' ' || w == '/' || w == '\\') break; /* Break on end of segment */
|
|
2910 .loc 1 1703 0
|
|
2911 007a 4C46 mov r4, r9
|
|
2912 .LVL453:
|
|
2913 .L262:
|
|
1715:../../../Source/third_party/fatfs/src/ff.c **** if (!w) return FR_INVALID_NAME; /* Reject invalid code */
|
|
2914 .loc 1 1715 0
|
|
2915 007c 5946 mov r1, fp
|
|
2916 007e FFF7FEFF bl ff_convert
|
|
2917 .LVL454:
|
|
1716:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2918 .loc 1 1716 0
|
|
2919 0082 0146 mov r1, r0
|
|
2920 0084 0028 cmp r0, #0
|
|
2921 0086 00F02881 beq .L263
|
|
1718:../../../Source/third_party/fatfs/src/ff.c **** return FR_INVALID_NAME;
|
|
2922 .loc 1 1718 0
|
|
2923 008a 7F28 cmp r0, #127
|
|
2924 008c 09D8 bhi .L264
|
|
2925 .LVL455:
|
|
2926 .LBB32:
|
|
2927 .LBB33:
|
|
576:../../../Source/third_party/fatfs/src/ff.c **** return *str;
|
|
2928 .loc 1 576 0
|
|
2929 008e 2229 cmp r1, #34
|
|
2930 0090 00F0E880 beq .L265
|
|
2931 0094 984A ldr r2, .L334
|
|
2932 .LVL456:
|
|
2933 .L266:
|
|
2934 0096 12F8013F ldrb r3, [r2, #1]! @ zero_extendqisi2
|
|
2935 .LVL457:
|
|
2936 009a 13B1 cbz r3, .L264
|
|
2937 009c 9842 cmp r0, r3
|
|
2938 009e FAD1 bne .L266
|
|
2939 00a0 E0E0 b .L265
|
|
2940 .LVL458:
|
|
2941 .L264:
|
|
2942 .LBE33:
|
|
2943 .LBE32:
|
|
1720:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2944 .loc 1 1720 0
|
|
2945 00a2 28F8021F strh r1, [r8, #2]! @ movhi
|
|
1703:../../../Source/third_party/fatfs/src/ff.c **** if (w < ' ' || w == '/' || w == '\\') break; /* Break on end of segment */
|
|
2946 .loc 1 1703 0
|
|
2947 00a6 04F10109 add r9, r4, #1
|
|
2948 .LVL459:
|
|
2949 00aa 17F8010F ldrb r0, [r7, #1]! @ zero_extendqisi2
|
|
2950 .LVL460:
|
|
1704:../../../Source/third_party/fatfs/src/ff.c **** if (di >= _MAX_LFN) /* Reject too long name */
|
|
2951 .loc 1 1704 0
|
|
2952 00ae 1F28 cmp r0, #31
|
|
2953 00b0 D9D8 bhi .L323
|
|
2954 00b2 F5E0 b .L260
|
|
2955 .LVL461:
|
|
2956 .L304:
|
|
1734:../../../Source/third_party/fatfs/src/ff.c **** w = lfn[di-1];
|
|
2957 .loc 1 1734 0
|
|
2958 00b4 002C cmp r4, #0
|
|
2959 00b6 00F0D580 beq .L265
|
|
2960 00ba 06EB4402 add r2, r6, r4, lsl #1
|
|
2961 .LVL462:
|
|
2962 .L270:
|
|
1735:../../../Source/third_party/fatfs/src/ff.c **** if (w != ' ' && w != '.') break;
|
|
2963 .loc 1 1735 0
|
|
2964 00be 32F8023D ldrh r3, [r2, #-2]!
|
|
2965 .LVL463:
|
|
1736:../../../Source/third_party/fatfs/src/ff.c **** di--;
|
|
2966 .loc 1 1736 0
|
|
2967 00c2 202B cmp r3, #32
|
|
2968 00c4 01D0 beq .L268
|
|
2969 00c6 2E2B cmp r3, #46
|
|
2970 00c8 02D1 bne .L269
|
|
2971 .L268:
|
|
2972 .LVL464:
|
|
1734:../../../Source/third_party/fatfs/src/ff.c **** w = lfn[di-1];
|
|
2973 .loc 1 1734 0
|
|
2974 00ca 013C subs r4, r4, #1
|
|
2975 .LVL465:
|
|
2976 00cc F7D1 bne .L270
|
|
2977 00ce C9E0 b .L265
|
|
2978 .L269:
|
|
1739:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2979 .loc 1 1739 0
|
|
2980 00d0 002C cmp r4, #0
|
|
2981 00d2 00F00281 beq .L263
|
|
1741:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2982 .loc 1 1741 0
|
|
2983 00d6 6000 lsls r0, r4, #1
|
|
2984 00d8 0023 movs r3, #0
|
|
2985 .LVL466:
|
|
2986 00da 26F81430 strh r3, [r6, r4, lsl #1] @ movhi
|
|
2987 .LVL467:
|
|
1744:../../../Source/third_party/fatfs/src/ff.c **** for (si = 0; lfn[si] == ' ' || lfn[si] == '.'; si++) ; /* Strip leading spaces and dots */
|
|
2988 .loc 1 1744 0
|
|
2989 00de AB69 ldr r3, [r5, #24]
|
|
2990 .LVL468:
|
|
2991 00e0 03F10B01 add r1, r3, #11
|
|
2992 .LBB34:
|
|
2993 .LBB35:
|
|
560:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2994 .loc 1 560 0
|
|
2995 00e4 2022 movs r2, #32
|
|
2996 .LVL469:
|
|
2997 .L271:
|
|
2998 00e6 03F8012B strb r2, [r3], #1
|
|
2999 .LVL470:
|
|
559:../../../Source/third_party/fatfs/src/ff.c **** *d++ = (BYTE)val;
|
|
3000 .loc 1 559 0
|
|
3001 00ea 8B42 cmp r3, r1
|
|
3002 00ec FBD1 bne .L271
|
|
3003 00ee B11E subs r1, r6, #2
|
|
3004 .LVL471:
|
|
3005 00f0 0023 movs r3, #0
|
|
3006 .LVL472:
|
|
3007 00f2 00E0 b .L272
|
|
3008 .LVL473:
|
|
3009 .L273:
|
|
3010 .LBE35:
|
|
3011 .LBE34:
|
|
1745:../../../Source/third_party/fatfs/src/ff.c **** if (si) cf |= NS_LOSS | NS_LFN;
|
|
3012 .loc 1 1745 0
|
|
3013 00f4 0133 adds r3, r3, #1
|
|
3014 .LVL474:
|
|
3015 .L272:
|
|
3016 00f6 31F8022F ldrh r2, [r1, #2]!
|
|
3017 00fa 202A cmp r2, #32
|
|
3018 00fc FAD0 beq .L273
|
|
3019 00fe 2E2A cmp r2, #46
|
|
3020 0100 F8D0 beq .L273
|
|
1746:../../../Source/third_party/fatfs/src/ff.c **** while (di && lfn[di - 1] != '.') di--; /* Find extension (di<=si: no extension) */
|
|
3021 .loc 1 1746 0
|
|
3022 0102 002B cmp r3, #0
|
|
3023 0104 00F0D980 beq .L274
|
|
3024 0108 47F00307 orr r7, r7, #3
|
|
3025 .LVL475:
|
|
3026 010c D5E0 b .L274
|
|
3027 .LVL476:
|
|
3028 .L277:
|
|
1747:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3029 .loc 1 1747 0
|
|
3030 010e 013C subs r4, r4, #1
|
|
3031 .LVL477:
|
|
3032 0110 07D1 bne .L275
|
|
3033 .LVL478:
|
|
3034 .L278:
|
|
1751:../../../Source/third_party/fatfs/src/ff.c **** if (!w) break; /* Break on end of the LFN */
|
|
3035 .loc 1 1751 0
|
|
3036 0112 4FF0080B mov fp, #8
|
|
3037 0116 4FF0000A mov r10, #0
|
|
3038 .LVL479:
|
|
3039 011a CDF800A0 str r10, [sp]
|
|
1764:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3040 .loc 1 1764 0
|
|
3041 011e 0194 str r4, [sp, #4]
|
|
3042 0120 04E0 b .L276
|
|
3043 .LVL480:
|
|
3044 .L275:
|
|
1747:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3045 .loc 1 1747 0
|
|
3046 0122 32F8021D ldrh r1, [r2, #-2]!
|
|
3047 0126 2E29 cmp r1, #46
|
|
3048 0128 F1D1 bne .L277
|
|
3049 012a F2E7 b .L278
|
|
3050 .LVL481:
|
|
3051 .L276:
|
|
1751:../../../Source/third_party/fatfs/src/ff.c **** if (!w) break; /* Break on end of the LFN */
|
|
3052 .loc 1 1751 0
|
|
3053 012c 03F10108 add r8, r3, #1
|
|
3054 .LVL482:
|
|
3055 0130 36F81300 ldrh r0, [r6, r3, lsl #1]
|
|
3056 .LVL483:
|
|
1752:../../../Source/third_party/fatfs/src/ff.c **** if (w == ' ' || (w == '.' && si != di)) { /* Remove spaces and dots */
|
|
3057 .loc 1 1752 0
|
|
3058 0134 0028 cmp r0, #0
|
|
3059 0136 60D0 beq .L279
|
|
1753:../../../Source/third_party/fatfs/src/ff.c **** cf |= NS_LOSS | NS_LFN; continue;
|
|
3060 .loc 1 1753 0
|
|
3061 0138 2028 cmp r0, #32
|
|
3062 013a 04D0 beq .L280
|
|
3063 013c 2E28 cmp r0, #46
|
|
3064 013e 06D1 bne .L281
|
|
3065 0140 4445 cmp r4, r8
|
|
3066 0142 00F0CC80 beq .L282
|
|
3067 .L280:
|
|
1754:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3068 .loc 1 1754 0
|
|
3069 0146 47F00307 orr r7, r7, #3
|
|
3070 .LVL484:
|
|
1751:../../../Source/third_party/fatfs/src/ff.c **** if (!w) break; /* Break on end of the LFN */
|
|
3071 .loc 1 1751 0
|
|
3072 014a 4346 mov r3, r8
|
|
3073 014c EEE7 b .L276
|
|
3074 .L281:
|
|
1757:../../../Source/third_party/fatfs/src/ff.c **** if (ni == 11) { /* Long extension */
|
|
3075 .loc 1 1757 0
|
|
3076 014e DA45 cmp r10, fp
|
|
3077 0150 02D2 bcs .L284
|
|
3078 0152 4445 cmp r4, r8
|
|
3079 0154 1AD1 bne .L324
|
|
3080 0156 C2E0 b .L282
|
|
3081 .L284:
|
|
1758:../../../Source/third_party/fatfs/src/ff.c **** cf |= NS_LOSS | NS_LFN; break;
|
|
3082 .loc 1 1758 0
|
|
3083 0158 BBF10B0F cmp fp, #11
|
|
3084 015c 06D1 bne .L286
|
|
3085 .L308:
|
|
1759:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3086 .loc 1 1759 0
|
|
3087 015e 47F00307 orr r7, r7, #3
|
|
3088 .LVL485:
|
|
1798:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3089 .loc 1 1798 0
|
|
3090 0162 AB69 ldr r3, [r5, #24]
|
|
3091 0164 1A78 ldrb r2, [r3] @ zero_extendqisi2
|
|
3092 0166 E52A cmp r2, #229
|
|
3093 0168 59D1 bne .L288
|
|
3094 016a 4BE0 b .L312
|
|
3095 .L286:
|
|
1761:../../../Source/third_party/fatfs/src/ff.c **** if (si > di) break; /* No extension */
|
|
3096 .loc 1 1761 0
|
|
3097 016c 4445 cmp r4, r8
|
|
3098 016e 03D0 beq .L289
|
|
3099 0170 47F00307 orr r7, r7, #3
|
|
3100 .LVL486:
|
|
1762:../../../Source/third_party/fatfs/src/ff.c **** si = di; i = 8; ni = 11; /* Enter extension section */
|
|
3101 .loc 1 1762 0
|
|
3102 0174 A045 cmp r8, r4
|
|
3103 0176 40D8 bhi .L279
|
|
3104 .L289:
|
|
3105 .LVL487:
|
|
1764:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3106 .loc 1 1764 0
|
|
3107 0178 009B ldr r3, [sp]
|
|
3108 017a 9B00 lsls r3, r3, #2
|
|
3109 017c DBB2 uxtb r3, r3
|
|
3110 017e 0093 str r3, [sp]
|
|
3111 .LVL488:
|
|
3112 0180 019B ldr r3, [sp, #4]
|
|
1763:../../../Source/third_party/fatfs/src/ff.c **** b <<= 2; continue;
|
|
3113 .loc 1 1763 0
|
|
3114 0182 4FF00B0B mov fp, #11
|
|
3115 0186 4FF0080A mov r10, #8
|
|
3116 018a CFE7 b .L276
|
|
3117 .LVL489:
|
|
3118 .L324:
|
|
1767:../../../Source/third_party/fatfs/src/ff.c **** #ifdef _EXCVT
|
|
3119 .loc 1 1767 0
|
|
3120 018c 7F28 cmp r0, #127
|
|
3121 018e 40F29B80 bls .L290
|
|
1769:../../../Source/third_party/fatfs/src/ff.c **** if (w) w = ExCvt[w - 0x80]; /* Convert extended char to upper (SBCS) */
|
|
3122 .loc 1 1769 0
|
|
3123 0192 0021 movs r1, #0
|
|
3124 0194 FFF7FEFF bl ff_convert
|
|
3125 .LVL490:
|
|
1770:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
3126 .loc 1 1770 0
|
|
3127 0198 0346 mov r3, r0
|
|
3128 019a 0028 cmp r0, #0
|
|
3129 019c 00F0A480 beq .L291
|
|
3130 01a0 564A ldr r2, .L334+4
|
|
3131 01a2 1344 add r3, r3, r2
|
|
3132 01a4 13F8801C ldrb r1, [r3, #-128] @ zero_extendqisi2
|
|
3133 01a8 88B2 uxth r0, r1
|
|
3134 .LVL491:
|
|
1774:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3135 .loc 1 1774 0
|
|
3136 01aa 47F00207 orr r7, r7, #2
|
|
3137 .LVL492:
|
|
1783:../../../Source/third_party/fatfs/src/ff.c **** w = '_'; cf |= NS_LOSS | NS_LFN;/* Lossy conversion */
|
|
3138 .loc 1 1783 0
|
|
3139 01ae 48B1 cbz r0, .L292
|
|
3140 .L305:
|
|
3141 .LVL493:
|
|
3142 .LBB36:
|
|
3143 .LBB37:
|
|
576:../../../Source/third_party/fatfs/src/ff.c **** return *str;
|
|
3144 .loc 1 576 0
|
|
3145 01b0 2B29 cmp r1, #43
|
|
3146 01b2 07D0 beq .L292
|
|
3147 01b4 524A ldr r2, .L334+8
|
|
3148 .LVL494:
|
|
3149 .L295:
|
|
3150 01b6 12F8013F ldrb r3, [r2, #1]! @ zero_extendqisi2
|
|
3151 .LVL495:
|
|
3152 01ba 002B cmp r3, #0
|
|
3153 01bc 00F08680 beq .L294
|
|
3154 01c0 9942 cmp r1, r3
|
|
3155 01c2 F8D1 bne .L295
|
|
3156 .LVL496:
|
|
3157 .L292:
|
|
3158 .LBE37:
|
|
3159 .LBE36:
|
|
1784:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3160 .loc 1 1784 0
|
|
3161 01c4 47F00307 orr r7, r7, #3
|
|
3162 .LVL497:
|
|
3163 01c8 5F20 movs r0, #95
|
|
3164 01ca 0FE0 b .L296
|
|
3165 .LVL498:
|
|
3166 .L306:
|
|
1787:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3167 .loc 1 1787 0
|
|
3168 01cc 009B ldr r3, [sp]
|
|
3169 01ce 43F00203 orr r3, r3, #2
|
|
3170 01d2 0093 str r3, [sp]
|
|
3171 .LVL499:
|
|
3172 01d4 0AE0 b .L296
|
|
3173 .L328:
|
|
1789:../../../Source/third_party/fatfs/src/ff.c **** b |= 1; w -= 0x20;
|
|
3174 .loc 1 1789 0
|
|
3175 01d6 A0F16103 sub r3, r0, #97
|
|
3176 01da 9BB2 uxth r3, r3
|
|
3177 01dc 192B cmp r3, #25
|
|
3178 01de 05D8 bhi .L296
|
|
1790:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3179 .loc 1 1790 0
|
|
3180 01e0 009B ldr r3, [sp]
|
|
3181 01e2 43F00103 orr r3, r3, #1
|
|
3182 01e6 0093 str r3, [sp]
|
|
3183 .LVL500:
|
|
3184 01e8 2038 subs r0, r0, #32
|
|
3185 .LVL501:
|
|
3186 01ea 80B2 uxth r0, r0
|
|
3187 .LVL502:
|
|
3188 .L296:
|
|
1795:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3189 .loc 1 1795 0
|
|
3190 01ec AB69 ldr r3, [r5, #24]
|
|
3191 01ee 03F80A00 strb r0, [r3, r10]
|
|
1751:../../../Source/third_party/fatfs/src/ff.c **** if (!w) break; /* Break on end of the LFN */
|
|
3192 .loc 1 1751 0
|
|
3193 01f2 4346 mov r3, r8
|
|
1795:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3194 .loc 1 1795 0
|
|
3195 01f4 0AF1010A add r10, r10, #1
|
|
3196 .LVL503:
|
|
3197 01f8 98E7 b .L276
|
|
3198 .L279:
|
|
1798:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3199 .loc 1 1798 0
|
|
3200 01fa AB69 ldr r3, [r5, #24]
|
|
3201 01fc 1A78 ldrb r2, [r3] @ zero_extendqisi2
|
|
3202 01fe E52A cmp r2, #229
|
|
3203 0200 06D1 bne .L313
|
|
3204 0202 01E0 b .L287
|
|
3205 .L312:
|
|
3206 0204 4FF00B0B mov fp, #11
|
|
3207 .LVL504:
|
|
3208 .L287:
|
|
3209 0208 0522 movs r2, #5
|
|
3210 020a 1A70 strb r2, [r3]
|
|
3211 020c 009B ldr r3, [sp]
|
|
3212 020e 00E0 b .L297
|
|
3213 .LVL505:
|
|
3214 .L313:
|
|
3215 0210 009B ldr r3, [sp]
|
|
3216 .LVL506:
|
|
3217 .L297:
|
|
1800:../../../Source/third_party/fatfs/src/ff.c **** if ((b & 0x0C) == 0x0C || (b & 0x03) == 0x03) /* Create LFN entry when there are composite capital
|
|
3218 .loc 1 1800 0
|
|
3219 0212 BBF1080F cmp fp, #8
|
|
3220 0216 02D1 bne .L288
|
|
3221 0218 9B00 lsls r3, r3, #2
|
|
3222 021a DBB2 uxtb r3, r3
|
|
3223 021c 0093 str r3, [sp]
|
|
3224 .LVL507:
|
|
3225 .L288:
|
|
1801:../../../Source/third_party/fatfs/src/ff.c **** cf |= NS_LFN;
|
|
3226 .loc 1 1801 0
|
|
3227 021e 009A ldr r2, [sp]
|
|
3228 0220 02F00C03 and r3, r2, #12
|
|
3229 0224 0C2B cmp r3, #12
|
|
3230 0226 03D0 beq .L298
|
|
3231 0228 02F00302 and r2, r2, #3
|
|
3232 022c 032A cmp r2, #3
|
|
3233 022e 01D1 bne .L299
|
|
3234 .L298:
|
|
1802:../../../Source/third_party/fatfs/src/ff.c **** if (!(cf & NS_LFN)) { /* When LFN is in 8.3 format without extended char, NT flags are create
|
|
3235 .loc 1 1802 0
|
|
3236 0230 47F00207 orr r7, r7, #2
|
|
3237 .LVL508:
|
|
3238 .L299:
|
|
1803:../../../Source/third_party/fatfs/src/ff.c **** if ((b & 0x03) == 0x01) cf |= NS_EXT; /* NT flag (Extension has only small capital) */
|
|
3239 .loc 1 1803 0
|
|
3240 0234 17F0020F tst r7, #2
|
|
3241 0238 0AD1 bne .L300
|
|
1804:../../../Source/third_party/fatfs/src/ff.c **** if ((b & 0x0C) == 0x04) cf |= NS_BODY; /* NT flag (Filename has only small capital) */
|
|
3242 .loc 1 1804 0
|
|
3243 023a 009A ldr r2, [sp]
|
|
3244 023c 02F00302 and r2, r2, #3
|
|
3245 0240 012A cmp r2, #1
|
|
3246 0242 08BF it eq
|
|
3247 0244 47F01007 orreq r7, r7, #16
|
|
3248 .LVL509:
|
|
1805:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3249 .loc 1 1805 0
|
|
3250 0248 042B cmp r3, #4
|
|
3251 024a 08BF it eq
|
|
3252 024c 47F00807 orreq r7, r7, #8
|
|
3253 .LVL510:
|
|
3254 .L300:
|
|
1808:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3255 .loc 1 1808 0
|
|
3256 0250 AB69 ldr r3, [r5, #24]
|
|
3257 0252 DF72 strb r7, [r3, #11]
|
|
3258 .LBE31:
|
|
3259 .LBE30:
|
|
2007:../../../Source/third_party/fatfs/src/ff.c **** ns = *(dj->fn+NS);
|
|
3260 .loc 1 2007 0
|
|
3261 0254 2846 mov r0, r5
|
|
3262 .LVL511:
|
|
3263 0256 FFF7FEFF bl dir_find
|
|
3264 .LVL512:
|
|
2008:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) { /* Failed to find the object */
|
|
3265 .loc 1 2008 0
|
|
3266 025a AB69 ldr r3, [r5, #24]
|
|
3267 025c DA7A ldrb r2, [r3, #11] @ zero_extendqisi2
|
|
3268 .LVL513:
|
|
2009:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_NO_FILE) break; /* Abort if any hard error occurred */
|
|
3269 .loc 1 2009 0
|
|
3270 025e 0346 mov r3, r0
|
|
3271 0260 60B1 cbz r0, .L326
|
|
3272 0262 01E0 b .L302
|
|
3273 .LVL514:
|
|
3274 .L265:
|
|
3275 0264 0623 movs r3, #6
|
|
3276 0266 42E0 b .L316
|
|
3277 .LVL515:
|
|
3278 .L302:
|
|
2010:../../../Source/third_party/fatfs/src/ff.c **** /* Object not found */
|
|
3279 .loc 1 2010 0
|
|
3280 0268 0428 cmp r0, #4
|
|
3281 026a 40D1 bne .L316
|
|
2017:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3282 .loc 1 2017 0
|
|
3283 026c 02F00403 and r3, r2, #4
|
|
3284 0270 DBB2 uxtb r3, r3
|
|
3285 0272 002B cmp r3, #0
|
|
3286 0274 14BF ite ne
|
|
3287 0276 0346 movne r3, r0
|
|
3288 0278 0523 moveq r3, #5
|
|
3289 027a 38E0 b .L316
|
|
3290 .L326:
|
|
2021:../../../Source/third_party/fatfs/src/ff.c **** dir = dj->dir; /* There is next segment. Follow the sub directory */
|
|
3291 .loc 1 2021 0
|
|
3292 027c 12F0040F tst r2, #4
|
|
3293 0280 35D1 bne .L316
|
|
2022:../../../Source/third_party/fatfs/src/ff.c **** if (!(dir[DIR_Attr] & AM_DIR)) { /* Cannot follow because it is a file */
|
|
3294 .loc 1 2022 0
|
|
3295 0282 6969 ldr r1, [r5, #20]
|
|
3296 .LVL516:
|
|
2023:../../../Source/third_party/fatfs/src/ff.c **** res = FR_NO_PATH; break;
|
|
3297 .loc 1 2023 0
|
|
3298 0284 CB7A ldrb r3, [r1, #11] @ zero_extendqisi2
|
|
3299 0286 13F0100F tst r3, #16
|
|
3300 028a 04D0 beq .L315
|
|
2026:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3301 .loc 1 2026 0
|
|
3302 028c 2868 ldr r0, [r5]
|
|
3303 .LVL517:
|
|
3304 028e FFF7FEFF bl ld_clust
|
|
3305 .LVL518:
|
|
3306 0292 A860 str r0, [r5, #8]
|
|
2027:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3307 .loc 1 2027 0
|
|
3308 0294 CEE6 b .L322
|
|
3309 .LVL519:
|
|
3310 .L315:
|
|
2024:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3311 .loc 1 2024 0
|
|
3312 0296 0523 movs r3, #5
|
|
3313 0298 29E0 b .L316
|
|
3314 .LVL520:
|
|
3315 .L309:
|
|
3316 .LBB40:
|
|
3317 .LBB38:
|
|
1701:../../../Source/third_party/fatfs/src/ff.c **** for (;;) {
|
|
3318 .loc 1 1701 0
|
|
3319 029a 0024 movs r4, #0
|
|
1703:../../../Source/third_party/fatfs/src/ff.c **** if (w < ' ' || w == '/' || w == '\\') break; /* Break on end of segment */
|
|
3320 .loc 1 1703 0
|
|
3321 029c 4FF00109 mov r9, #1
|
|
3322 .LVL521:
|
|
3323 .L260:
|
|
1722:../../../Source/third_party/fatfs/src/ff.c **** cf = (w < ' ') ? NS_LAST : 0; /* Set last segment flag if end of path */
|
|
3324 .loc 1 1722 0
|
|
3325 02a0 D144 add r9, r9, r10
|
|
3326 .LVL522:
|
|
1723:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_RPATH
|
|
3327 .loc 1 1723 0
|
|
3328 02a2 0427 movs r7, #4
|
|
3329 02a4 06E7 b .L304
|
|
3330 .LVL523:
|
|
3331 .L310:
|
|
1701:../../../Source/third_party/fatfs/src/ff.c **** for (;;) {
|
|
3332 .loc 1 1701 0
|
|
3333 02a6 0024 movs r4, #0
|
|
1703:../../../Source/third_party/fatfs/src/ff.c **** if (w < ' ' || w == '/' || w == '\\') break; /* Break on end of segment */
|
|
3334 .loc 1 1703 0
|
|
3335 02a8 4FF00109 mov r9, #1
|
|
3336 02ac 02E0 b .L261
|
|
3337 .L311:
|
|
1701:../../../Source/third_party/fatfs/src/ff.c **** for (;;) {
|
|
3338 .loc 1 1701 0
|
|
3339 02ae 0024 movs r4, #0
|
|
1703:../../../Source/third_party/fatfs/src/ff.c **** if (w < ' ' || w == '/' || w == '\\') break; /* Break on end of segment */
|
|
3340 .loc 1 1703 0
|
|
3341 02b0 4FF00109 mov r9, #1
|
|
3342 .LVL524:
|
|
3343 .L261:
|
|
1722:../../../Source/third_party/fatfs/src/ff.c **** cf = (w < ' ') ? NS_LAST : 0; /* Set last segment flag if end of path */
|
|
3344 .loc 1 1722 0
|
|
3345 02b4 D144 add r9, r9, r10
|
|
3346 .LVL525:
|
|
1723:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_RPATH
|
|
3347 .loc 1 1723 0
|
|
3348 02b6 0027 movs r7, #0
|
|
3349 02b8 FCE6 b .L304
|
|
3350 .LVL526:
|
|
3351 .L274:
|
|
1747:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3352 .loc 1 1747 0
|
|
3353 02ba 811E subs r1, r0, #2
|
|
3354 02bc 7218 adds r2, r6, r1
|
|
3355 02be 715A ldrh r1, [r6, r1]
|
|
3356 02c0 2E29 cmp r1, #46
|
|
3357 02c2 3FF426AF beq .L278
|
|
3358 02c6 22E7 b .L277
|
|
3359 .LVL527:
|
|
3360 .L290:
|
|
1783:../../../Source/third_party/fatfs/src/ff.c **** w = '_'; cf |= NS_LOSS | NS_LFN;/* Lossy conversion */
|
|
3361 .loc 1 1783 0
|
|
3362 02c8 0146 mov r1, r0
|
|
3363 .LVL528:
|
|
3364 02ca 71E7 b .L305
|
|
3365 .LVL529:
|
|
3366 .L294:
|
|
1786:../../../Source/third_party/fatfs/src/ff.c **** b |= 2;
|
|
3367 .loc 1 1786 0
|
|
3368 02cc A0F14103 sub r3, r0, #65
|
|
3369 02d0 9BB2 uxth r3, r3
|
|
3370 02d2 192B cmp r3, #25
|
|
3371 02d4 7FF67AAF bls .L306
|
|
3372 02d8 7DE7 b .L328
|
|
3373 .LVL530:
|
|
3374 .L263:
|
|
3375 .LBE38:
|
|
3376 .LBE40:
|
|
2017:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3377 .loc 1 2017 0
|
|
3378 02da 0623 movs r3, #6
|
|
3379 .LVL531:
|
|
3380 02dc 07E0 b .L316
|
|
3381 .LVL532:
|
|
3382 .L282:
|
|
3383 .LBB41:
|
|
3384 .LBB39:
|
|
1758:../../../Source/third_party/fatfs/src/ff.c **** cf |= NS_LOSS | NS_LFN; break;
|
|
3385 .loc 1 1758 0
|
|
3386 02de BBF10B0F cmp fp, #11
|
|
3387 02e2 7FF449AF bne .L289
|
|
3388 02e6 3AE7 b .L308
|
|
3389 .L291:
|
|
3390 .LVL533:
|
|
1774:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3391 .loc 1 1774 0
|
|
3392 02e8 47F00207 orr r7, r7, #2
|
|
3393 .LVL534:
|
|
3394 02ec 6AE7 b .L292
|
|
3395 .LVL535:
|
|
3396 .L316:
|
|
3397 .LBE39:
|
|
3398 .LBE41:
|
|
2031:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3399 .loc 1 2031 0
|
|
3400 02ee 1846 mov r0, r3
|
|
3401 02f0 03B0 add sp, sp, #12
|
|
3402 .cfi_def_cfa_offset 36
|
|
3403 @ sp needed
|
|
3404 02f2 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
3405 .LVL536:
|
|
3406 .L335:
|
|
3407 02f6 00BF .align 2
|
|
3408 .L334:
|
|
3409 02f8 00000000 .word .LC0
|
|
3410 02fc 00000000 .word .LANCHOR3
|
|
3411 0300 0C000000 .word .LC1
|
|
3412 .cfi_endproc
|
|
3413 .LFE28:
|
|
3415 .section .text.dir_read,"ax",%progbits
|
|
3416 .align 2
|
|
3417 .thumb
|
|
3418 .thumb_func
|
|
3420 dir_read:
|
|
3421 .LFB23:
|
|
1510:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
3422 .loc 1 1510 0
|
|
3423 .cfi_startproc
|
|
3424 @ args = 0, pretend = 0, frame = 0
|
|
3425 @ frame_needed = 0, uses_anonymous_args = 0
|
|
3426 .LVL537:
|
|
3427 0000 2DE9F84F push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
3428 .cfi_def_cfa_offset 40
|
|
3429 .cfi_offset 3, -40
|
|
3430 .cfi_offset 4, -36
|
|
3431 .cfi_offset 5, -32
|
|
3432 .cfi_offset 6, -28
|
|
3433 .cfi_offset 7, -24
|
|
3434 .cfi_offset 8, -20
|
|
3435 .cfi_offset 9, -16
|
|
3436 .cfi_offset 10, -12
|
|
3437 .cfi_offset 11, -8
|
|
3438 .cfi_offset 14, -4
|
|
3439 0004 0446 mov r4, r0
|
|
3440 0006 8846 mov r8, r1
|
|
3441 .LVL538:
|
|
1514:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
3442 .loc 1 1514 0
|
|
3443 0008 4FF0FF09 mov r9, #255
|
|
3444 000c 4D46 mov r5, r9
|
|
1517:../../../Source/third_party/fatfs/src/ff.c **** while (dj->sect) {
|
|
3445 .loc 1 1517 0
|
|
3446 000e 0423 movs r3, #4
|
|
1527:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3447 .loc 1 1527 0
|
|
3448 0010 4F46 mov r7, r9
|
|
3449 0012 DFF814B1 ldr fp, .L366
|
|
3450 0016 0BF10D0A add r10, fp, #13
|
|
1518:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(dj->fs, dj->sect);
|
|
3451 .loc 1 1518 0
|
|
3452 001a 6FE0 b .L337
|
|
3453 .LVL539:
|
|
3454 .L350:
|
|
1519:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
3455 .loc 1 1519 0
|
|
3456 001c 2068 ldr r0, [r4]
|
|
3457 001e FFF7FEFF bl move_window
|
|
3458 .LVL540:
|
|
1520:../../../Source/third_party/fatfs/src/ff.c **** dir = dj->dir; /* Ptr to the directory entry of current index */
|
|
3459 .loc 1 1520 0
|
|
3460 0022 0646 mov r6, r0
|
|
3461 0024 0028 cmp r0, #0
|
|
3462 0026 6ED1 bne .L352
|
|
1521:../../../Source/third_party/fatfs/src/ff.c **** c = dir[DIR_Name];
|
|
3463 .loc 1 1521 0
|
|
3464 0028 6069 ldr r0, [r4, #20]
|
|
3465 .LVL541:
|
|
1522:../../../Source/third_party/fatfs/src/ff.c **** if (c == 0) { res = FR_NO_FILE; break; } /* Reached to end of table */
|
|
3466 .loc 1 1522 0
|
|
3467 002a 0378 ldrb r3, [r0] @ zero_extendqisi2
|
|
3468 .LVL542:
|
|
1523:../../../Source/third_party/fatfs/src/ff.c **** a = dir[DIR_Attr] & AM_MASK;
|
|
3469 .loc 1 1523 0
|
|
3470 002c 002B cmp r3, #0
|
|
3471 002e 74D0 beq .L353
|
|
1524:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN /* LFN configuration */
|
|
3472 .loc 1 1524 0
|
|
3473 0030 C27A ldrb r2, [r0, #11] @ zero_extendqisi2
|
|
3474 .LVL543:
|
|
1526:../../../Source/third_party/fatfs/src/ff.c **** ord = 0xFF;
|
|
3475 .loc 1 1526 0
|
|
3476 0032 E52B cmp r3, #229
|
|
3477 0034 55D0 beq .L354
|
|
1526:../../../Source/third_party/fatfs/src/ff.c **** ord = 0xFF;
|
|
3478 .loc 1 1526 0 is_stmt 0 discriminator 1
|
|
3479 0036 2E2B cmp r3, #46
|
|
3480 0038 55D0 beq .L355
|
|
1524:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN /* LFN configuration */
|
|
3481 .loc 1 1524 0 is_stmt 1 discriminator 2
|
|
3482 003a 02F03F02 and r2, r2, #63
|
|
3483 .LVL544:
|
|
1526:../../../Source/third_party/fatfs/src/ff.c **** ord = 0xFF;
|
|
3484 .loc 1 1526 0 discriminator 2
|
|
3485 003e 082A cmp r2, #8
|
|
3486 0040 14BF ite ne
|
|
3487 0042 0021 movne r1, #0
|
|
3488 0044 0121 moveq r1, #1
|
|
3489 0046 4145 cmp r1, r8
|
|
3490 0048 4FD1 bne .L356
|
|
1529:../../../Source/third_party/fatfs/src/ff.c **** if (c & LLE) { /* Is it start of LFN sequence? */
|
|
3491 .loc 1 1529 0
|
|
3492 004a 0F2A cmp r2, #15
|
|
3493 004c 40D1 bne .L340
|
|
1530:../../../Source/third_party/fatfs/src/ff.c **** sum = dir[LDIR_Chksum];
|
|
3494 .loc 1 1530 0
|
|
3495 004e 13F0400F tst r3, #64
|
|
3496 0052 06D0 beq .L341
|
|
1531:../../../Source/third_party/fatfs/src/ff.c **** c &= ~LLE; ord = c;
|
|
3497 .loc 1 1531 0
|
|
3498 0054 90F80D90 ldrb r9, [r0, #13] @ zero_extendqisi2
|
|
3499 .LVL545:
|
|
1532:../../../Source/third_party/fatfs/src/ff.c **** dj->lfn_idx = dj->index;
|
|
3500 .loc 1 1532 0
|
|
3501 0058 03F0BF03 and r3, r3, #191
|
|
3502 .LVL546:
|
|
1533:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3503 .loc 1 1533 0
|
|
3504 005c E288 ldrh r2, [r4, #6]
|
|
3505 005e 2284 strh r2, [r4, #32] @ movhi
|
|
3506 .LVL547:
|
|
3507 0060 03E0 b .L342
|
|
3508 .LVL548:
|
|
3509 .L341:
|
|
1536:../../../Source/third_party/fatfs/src/ff.c **** } else { /* An SFN entry is found */
|
|
3510 .loc 1 1536 0
|
|
3511 0062 9D42 cmp r5, r3
|
|
3512 0064 18BF it ne
|
|
3513 0066 3D46 movne r5, r7
|
|
3514 .LVL549:
|
|
3515 0068 42D1 bne .L339
|
|
3516 .LVL550:
|
|
3517 .L342:
|
|
1536:../../../Source/third_party/fatfs/src/ff.c **** } else { /* An SFN entry is found */
|
|
3518 .loc 1 1536 0 is_stmt 0 discriminator 1
|
|
3519 006a 90F80DE0 ldrb lr, [r0, #13] @ zero_extendqisi2
|
|
3520 006e CE45 cmp lr, r9
|
|
3521 0070 3DD1 bne .L358
|
|
1536:../../../Source/third_party/fatfs/src/ff.c **** } else { /* An SFN entry is found */
|
|
3522 .loc 1 1536 0 discriminator 3
|
|
3523 0072 D4F81C90 ldr r9, [r4, #28]
|
|
3524 .LVL551:
|
|
3525 .LBB44:
|
|
3526 .LBB45:
|
|
1317:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3527 .loc 1 1317 0 is_stmt 1 discriminator 3
|
|
3528 0076 0278 ldrb r2, [r0] @ zero_extendqisi2
|
|
3529 0078 02F03F02 and r2, r2, #63
|
|
3530 007c 013A subs r2, r2, #1
|
|
3531 007e 02EB4206 add r6, r2, r2, lsl #1
|
|
3532 0082 02EB8606 add r6, r2, r6, lsl #2
|
|
3533 .LVL552:
|
|
3534 0086 5D46 mov r5, fp
|
|
1319:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
3535 .loc 1 1319 0 discriminator 3
|
|
3536 0088 4FF0010C mov ip, #1
|
|
1326:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3537 .loc 1 1326 0 discriminator 3
|
|
3538 008c 6146 mov r1, ip
|
|
3539 .LVL553:
|
|
3540 .L346:
|
|
1321:../../../Source/third_party/fatfs/src/ff.c **** if (wc) { /* Last char has not been processed */
|
|
3541 .loc 1 1321 0
|
|
3542 008e 15F8012B ldrb r2, [r5], #1 @ zero_extendqisi2
|
|
3543 .LVL554:
|
|
3544 0092 00EB020C add ip, r0, r2
|
|
3545 0096 9CF801C0 ldrb ip, [ip, #1] @ zero_extendqisi2
|
|
3546 009a 825C ldrb r2, [r0, r2] @ zero_extendqisi2
|
|
3547 009c 42EA0C22 orr r2, r2, ip, lsl #8
|
|
3548 .LVL555:
|
|
1322:../../../Source/third_party/fatfs/src/ff.c **** if (i >= _MAX_LFN) return 0; /* Buffer overflow? */
|
|
3549 .loc 1 1322 0
|
|
3550 00a0 31B1 cbz r1, .L343
|
|
1323:../../../Source/third_party/fatfs/src/ff.c **** lfnbuf[i++] = wc = uc; /* Store it */
|
|
3551 .loc 1 1323 0
|
|
3552 00a2 FE2E cmp r6, #254
|
|
3553 00a4 36D8 bhi .L344
|
|
3554 .LVL556:
|
|
1324:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3555 .loc 1 1324 0
|
|
3556 00a6 29F81620 strh r2, [r9, r6, lsl #1] @ movhi
|
|
3557 00aa 1146 mov r1, r2
|
|
3558 00ac 0136 adds r6, r6, #1
|
|
3559 .LVL557:
|
|
3560 00ae 03E0 b .L345
|
|
3561 .LVL558:
|
|
3562 .L343:
|
|
1326:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3563 .loc 1 1326 0
|
|
3564 00b0 4FF6FF7C movw ip, #65535
|
|
3565 00b4 6245 cmp r2, ip
|
|
3566 00b6 2DD1 bne .L344
|
|
3567 .LVL559:
|
|
3568 .L345:
|
|
1328:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3569 .loc 1 1328 0
|
|
3570 00b8 5545 cmp r5, r10
|
|
3571 00ba E8D1 bne .L346
|
|
1330:../../../Source/third_party/fatfs/src/ff.c **** if (i >= _MAX_LFN) return 0; /* Buffer overflow? */
|
|
3572 .loc 1 1330 0
|
|
3573 00bc 0278 ldrb r2, [r0] @ zero_extendqisi2
|
|
3574 .LVL560:
|
|
3575 00be 12F0400F tst r2, #64
|
|
3576 00c2 23D0 beq .L347
|
|
1331:../../../Source/third_party/fatfs/src/ff.c **** lfnbuf[i] = 0;
|
|
3577 .loc 1 1331 0
|
|
3578 00c4 FE2E cmp r6, #254
|
|
3579 00c6 25D8 bhi .L344
|
|
1332:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3580 .loc 1 1332 0
|
|
3581 00c8 0022 movs r2, #0
|
|
3582 00ca 29F81620 strh r2, [r9, r6, lsl #1] @ movhi
|
|
3583 00ce 1DE0 b .L347
|
|
3584 .LVL561:
|
|
3585 .L340:
|
|
3586 .LBE45:
|
|
3587 .LBE44:
|
|
1538:../../../Source/third_party/fatfs/src/ff.c **** dj->lfn_idx = 0xFFFF; /* It has no LFN. */
|
|
3588 .loc 1 1538 0
|
|
3589 00d0 1DB9 cbnz r5, .L348
|
|
1538:../../../Source/third_party/fatfs/src/ff.c **** dj->lfn_idx = 0xFFFF; /* It has no LFN. */
|
|
3590 .loc 1 1538 0 is_stmt 0 discriminator 1
|
|
3591 00d2 FFF7FEFF bl sum_sfn
|
|
3592 .LVL562:
|
|
3593 00d6 4845 cmp r0, r9
|
|
3594 00d8 23D0 beq .L360
|
|
3595 .L348:
|
|
1539:../../../Source/third_party/fatfs/src/ff.c **** break;
|
|
3596 .loc 1 1539 0 is_stmt 1
|
|
3597 00da 4FF6FF73 movw r3, #65535
|
|
3598 00de 2384 strh r3, [r4, #32] @ movhi
|
|
3599 00e0 1FE0 b .L360
|
|
3600 .LVL563:
|
|
3601 .L354:
|
|
1527:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3602 .loc 1 1527 0
|
|
3603 00e2 3D46 mov r5, r7
|
|
3604 .LVL564:
|
|
3605 00e4 04E0 b .L339
|
|
3606 .LVL565:
|
|
3607 .L355:
|
|
3608 00e6 3D46 mov r5, r7
|
|
3609 .LVL566:
|
|
3610 00e8 02E0 b .L339
|
|
3611 .LVL567:
|
|
3612 .L356:
|
|
3613 00ea 3D46 mov r5, r7
|
|
3614 .LVL568:
|
|
3615 00ec 00E0 b .L339
|
|
3616 .LVL569:
|
|
3617 .L358:
|
|
1536:../../../Source/third_party/fatfs/src/ff.c **** } else { /* An SFN entry is found */
|
|
3618 .loc 1 1536 0
|
|
3619 00ee 3D46 mov r5, r7
|
|
3620 .LVL570:
|
|
3621 .L339:
|
|
1547:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
3622 .loc 1 1547 0
|
|
3623 00f0 2046 mov r0, r4
|
|
3624 .LVL571:
|
|
3625 00f2 0021 movs r1, #0
|
|
3626 00f4 FFF7FEFF bl dir_next
|
|
3627 .LVL572:
|
|
1548:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3628 .loc 1 1548 0
|
|
3629 00f8 0346 mov r3, r0
|
|
3630 00fa 80B9 cbnz r0, .L359
|
|
3631 .LVL573:
|
|
3632 .L337:
|
|
1518:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(dj->fs, dj->sect);
|
|
3633 .loc 1 1518 0
|
|
3634 00fc 2169 ldr r1, [r4, #16]
|
|
3635 00fe 0029 cmp r1, #0
|
|
3636 0100 8CD1 bne .L350
|
|
3637 0102 1E46 mov r6, r3
|
|
1551:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3638 .loc 1 1551 0
|
|
3639 0104 6BB1 cbz r3, .L360
|
|
3640 .L352:
|
|
3641 .LVL574:
|
|
1551:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3642 .loc 1 1551 0 is_stmt 0 discriminator 1
|
|
3643 0106 0023 movs r3, #0
|
|
3644 0108 2361 str r3, [r4, #16]
|
|
3645 010a 0AE0 b .L360
|
|
3646 .LVL575:
|
|
3647 .L347:
|
|
1536:../../../Source/third_party/fatfs/src/ff.c **** } else { /* An SFN entry is found */
|
|
3648 .loc 1 1536 0 is_stmt 1
|
|
3649 010c 013B subs r3, r3, #1
|
|
3650 .LVL576:
|
|
3651 010e DDB2 uxtb r5, r3
|
|
3652 .LVL577:
|
|
3653 0110 F146 mov r9, lr
|
|
3654 .LVL578:
|
|
3655 0112 EDE7 b .L339
|
|
3656 .LVL579:
|
|
3657 .L344:
|
|
3658 0114 F146 mov r9, lr
|
|
3659 .LVL580:
|
|
3660 0116 3D46 mov r5, r7
|
|
3661 0118 EAE7 b .L339
|
|
3662 .LVL581:
|
|
3663 .L353:
|
|
1523:../../../Source/third_party/fatfs/src/ff.c **** a = dir[DIR_Attr] & AM_MASK;
|
|
3664 .loc 1 1523 0
|
|
3665 011a 0426 movs r6, #4
|
|
3666 011c F3E7 b .L352
|
|
3667 .LVL582:
|
|
3668 .L359:
|
|
1547:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
3669 .loc 1 1547 0
|
|
3670 011e 0646 mov r6, r0
|
|
3671 0120 F1E7 b .L352
|
|
3672 .LVL583:
|
|
3673 .L360:
|
|
1554:../../../Source/third_party/fatfs/src/ff.c **** #endif /* _FS_MINIMIZE <= 1 || _USE_LABEL || _FS_RPATH >= 2 */
|
|
3674 .loc 1 1554 0
|
|
3675 0122 3046 mov r0, r6
|
|
3676 0124 BDE8F88F pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
3677 .LVL584:
|
|
3678 .L367:
|
|
3679 .align 2
|
|
3680 .L366:
|
|
3681 0128 00000000 .word .LANCHOR2
|
|
3682 .cfi_endproc
|
|
3683 .LFE23:
|
|
3685 .section .text.dir_remove,"ax",%progbits
|
|
3686 .align 2
|
|
3687 .thumb
|
|
3688 .thumb_func
|
|
3690 dir_remove:
|
|
3691 .LFB25:
|
|
1645:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
3692 .loc 1 1645 0
|
|
3693 .cfi_startproc
|
|
3694 @ args = 0, pretend = 0, frame = 0
|
|
3695 @ frame_needed = 0, uses_anonymous_args = 0
|
|
3696 .LVL585:
|
|
3697 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr}
|
|
3698 .cfi_def_cfa_offset 24
|
|
3699 .cfi_offset 4, -24
|
|
3700 .cfi_offset 5, -20
|
|
3701 .cfi_offset 6, -16
|
|
3702 .cfi_offset 7, -12
|
|
3703 .cfi_offset 8, -8
|
|
3704 .cfi_offset 14, -4
|
|
3705 0004 0446 mov r4, r0
|
|
1650:../../../Source/third_party/fatfs/src/ff.c **** res = dir_sdi(dj, (WORD)((dj->lfn_idx == 0xFFFF) ? i : dj->lfn_idx)); /* Goto the SFN or top of th
|
|
3706 .loc 1 1650 0
|
|
3707 0006 C588 ldrh r5, [r0, #6]
|
|
3708 .LVL586:
|
|
1651:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
3709 .loc 1 1651 0
|
|
3710 0008 018C ldrh r1, [r0, #32]
|
|
3711 000a 4FF6FF73 movw r3, #65535
|
|
3712 000e 9942 cmp r1, r3
|
|
3713 0010 08BF it eq
|
|
3714 0012 2946 moveq r1, r5
|
|
3715 0014 FFF7FEFF bl dir_sdi
|
|
3716 .LVL587:
|
|
1652:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
3717 .loc 1 1652 0
|
|
3718 0018 0346 mov r3, r0
|
|
3719 001a D0B9 cbnz r0, .L370
|
|
1656:../../../Source/third_party/fatfs/src/ff.c **** dj->fs->wflag = 1;
|
|
3720 .loc 1 1656 0
|
|
3721 001c E527 movs r7, #229
|
|
1657:../../../Source/third_party/fatfs/src/ff.c **** if (dj->index >= i) break; /* When reached SFN, all entries of the object has been deleted. */
|
|
3722 .loc 1 1657 0
|
|
3723 001e 0126 movs r6, #1
|
|
1659:../../../Source/third_party/fatfs/src/ff.c **** } while (res == FR_OK);
|
|
3724 .loc 1 1659 0
|
|
3725 0020 4FF00008 mov r8, #0
|
|
3726 .L373:
|
|
1654:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
3727 .loc 1 1654 0
|
|
3728 0024 2068 ldr r0, [r4]
|
|
3729 .LVL588:
|
|
3730 0026 2169 ldr r1, [r4, #16]
|
|
3731 0028 FFF7FEFF bl move_window
|
|
3732 .LVL589:
|
|
1655:../../../Source/third_party/fatfs/src/ff.c **** *dj->dir = DDE; /* Mark the entry "deleted" */
|
|
3733 .loc 1 1655 0
|
|
3734 002c 0346 mov r3, r0
|
|
3735 002e 68B9 cbnz r0, .L371
|
|
1656:../../../Source/third_party/fatfs/src/ff.c **** dj->fs->wflag = 1;
|
|
3736 .loc 1 1656 0
|
|
3737 0030 6269 ldr r2, [r4, #20]
|
|
3738 0032 1770 strb r7, [r2]
|
|
1657:../../../Source/third_party/fatfs/src/ff.c **** if (dj->index >= i) break; /* When reached SFN, all entries of the object has been deleted. */
|
|
3739 .loc 1 1657 0
|
|
3740 0034 2268 ldr r2, [r4]
|
|
3741 0036 1671 strb r6, [r2, #4]
|
|
1658:../../../Source/third_party/fatfs/src/ff.c **** res = dir_next(dj, 0); /* Next entry */
|
|
3742 .loc 1 1658 0
|
|
3743 0038 E288 ldrh r2, [r4, #6]
|
|
3744 003a AA42 cmp r2, r5
|
|
3745 003c 09D2 bcs .L370
|
|
1659:../../../Source/third_party/fatfs/src/ff.c **** } while (res == FR_OK);
|
|
3746 .loc 1 1659 0
|
|
3747 003e 2046 mov r0, r4
|
|
3748 .LVL590:
|
|
3749 0040 4146 mov r1, r8
|
|
3750 0042 FFF7FEFF bl dir_next
|
|
3751 .LVL591:
|
|
1660:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_NO_FILE) res = FR_INT_ERR;
|
|
3752 .loc 1 1660 0
|
|
3753 0046 0346 mov r3, r0
|
|
3754 0048 0028 cmp r0, #0
|
|
3755 004a EBD0 beq .L373
|
|
3756 .L371:
|
|
3757 .LVL592:
|
|
1661:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3758 .loc 1 1661 0
|
|
3759 004c 042B cmp r3, #4
|
|
3760 004e 08BF it eq
|
|
3761 0050 0223 moveq r3, #2
|
|
3762 .LVL593:
|
|
3763 .L370:
|
|
1676:../../../Source/third_party/fatfs/src/ff.c **** #endif /* !_FS_READONLY */
|
|
3764 .loc 1 1676 0
|
|
3765 0052 1846 mov r0, r3
|
|
3766 0054 BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
|
3767 .cfi_endproc
|
|
3768 .LFE25:
|
|
3770 .section .text.remove_chain,"ax",%progbits
|
|
3771 .align 2
|
|
3772 .thumb
|
|
3773 .thumb_func
|
|
3775 remove_chain:
|
|
3776 .LFB10:
|
|
952:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
3777 .loc 1 952 0
|
|
3778 .cfi_startproc
|
|
3779 @ args = 0, pretend = 0, frame = 0
|
|
3780 @ frame_needed = 0, uses_anonymous_args = 0
|
|
3781 .LVL594:
|
|
3782 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr}
|
|
3783 .cfi_def_cfa_offset 24
|
|
3784 .cfi_offset 4, -24
|
|
3785 .cfi_offset 5, -20
|
|
3786 .cfi_offset 6, -16
|
|
3787 .cfi_offset 7, -12
|
|
3788 .cfi_offset 8, -8
|
|
3789 .cfi_offset 14, -4
|
|
3790 0004 0D46 mov r5, r1
|
|
959:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INT_ERR;
|
|
3791 .loc 1 959 0
|
|
3792 0006 0129 cmp r1, #1
|
|
3793 0008 27D9 bls .L381
|
|
3794 000a 0446 mov r4, r0
|
|
959:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INT_ERR;
|
|
3795 .loc 1 959 0 is_stmt 0 discriminator 1
|
|
3796 000c 8369 ldr r3, [r0, #24]
|
|
3797 000e 9942 cmp r1, r3
|
|
3798 0010 25D2 bcs .L382
|
|
969:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
3799 .loc 1 969 0 is_stmt 1
|
|
3800 0012 0027 movs r7, #0
|
|
973:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3801 .loc 1 973 0
|
|
3802 0014 4FF00108 mov r8, #1
|
|
3803 0018 1AE0 b .L378
|
|
3804 .LVL595:
|
|
3805 .L380:
|
|
965:../../../Source/third_party/fatfs/src/ff.c **** if (nxt == 0) break; /* Empty cluster? */
|
|
3806 .loc 1 965 0
|
|
3807 001a 2046 mov r0, r4
|
|
3808 001c 2946 mov r1, r5
|
|
3809 001e FFF7FEFF bl get_fat
|
|
3810 .LVL596:
|
|
966:../../../Source/third_party/fatfs/src/ff.c **** if (nxt == 1) { res = FR_INT_ERR; break; } /* Internal error? */
|
|
3811 .loc 1 966 0
|
|
3812 0022 0646 mov r6, r0
|
|
3813 0024 E8B1 cbz r0, .L383
|
|
967:../../../Source/third_party/fatfs/src/ff.c **** if (nxt == 0xFFFFFFFF) { res = FR_DISK_ERR; break; } /* Disk error? */
|
|
3814 .loc 1 967 0
|
|
3815 0026 0128 cmp r0, #1
|
|
3816 0028 1DD0 beq .L384
|
|
968:../../../Source/third_party/fatfs/src/ff.c **** res = put_fat(fs, clst, 0); /* Mark the cluster "empty" */
|
|
3817 .loc 1 968 0
|
|
3818 002a B0F1FF3F cmp r0, #-1
|
|
3819 002e 1CD0 beq .L385
|
|
969:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
3820 .loc 1 969 0
|
|
3821 0030 2046 mov r0, r4
|
|
3822 .LVL597:
|
|
3823 0032 2946 mov r1, r5
|
|
3824 0034 3A46 mov r2, r7
|
|
3825 0036 FFF7FEFF bl put_fat
|
|
3826 .LVL598:
|
|
970:../../../Source/third_party/fatfs/src/ff.c **** if (fs->free_clust != 0xFFFFFFFF) { /* Update FSInfo */
|
|
3827 .loc 1 970 0
|
|
3828 003a 0346 mov r3, r0
|
|
3829 003c B0B9 cbnz r0, .L377
|
|
971:../../../Source/third_party/fatfs/src/ff.c **** fs->free_clust++;
|
|
3830 .loc 1 971 0
|
|
3831 003e 2369 ldr r3, [r4, #16]
|
|
3832 0040 B3F1FF3F cmp r3, #-1
|
|
3833 0044 03D0 beq .L379
|
|
972:../../../Source/third_party/fatfs/src/ff.c **** fs->fsi_flag = 1;
|
|
3834 .loc 1 972 0
|
|
3835 0046 0133 adds r3, r3, #1
|
|
3836 0048 2361 str r3, [r4, #16]
|
|
973:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3837 .loc 1 973 0
|
|
3838 004a 84F80580 strb r8, [r4, #5]
|
|
3839 .L379:
|
|
952:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
3840 .loc 1 952 0
|
|
3841 004e 3546 mov r5, r6
|
|
3842 .LVL599:
|
|
3843 .L378:
|
|
964:../../../Source/third_party/fatfs/src/ff.c **** nxt = get_fat(fs, clst); /* Get cluster status */
|
|
3844 .loc 1 964 0
|
|
3845 0050 A369 ldr r3, [r4, #24]
|
|
3846 0052 9D42 cmp r5, r3
|
|
3847 0054 E1D3 bcc .L380
|
|
3848 0056 0023 movs r3, #0
|
|
3849 0058 08E0 b .L377
|
|
3850 .LVL600:
|
|
3851 .L381:
|
|
960:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3852 .loc 1 960 0
|
|
3853 005a 0223 movs r3, #2
|
|
3854 005c 06E0 b .L377
|
|
3855 .L382:
|
|
3856 005e 0223 movs r3, #2
|
|
3857 0060 04E0 b .L377
|
|
3858 .LVL601:
|
|
3859 .L383:
|
|
3860 0062 0023 movs r3, #0
|
|
3861 0064 02E0 b .L377
|
|
3862 .L384:
|
|
967:../../../Source/third_party/fatfs/src/ff.c **** if (nxt == 0xFFFFFFFF) { res = FR_DISK_ERR; break; } /* Disk error? */
|
|
3863 .loc 1 967 0
|
|
3864 0066 0223 movs r3, #2
|
|
3865 0068 00E0 b .L377
|
|
3866 .L385:
|
|
968:../../../Source/third_party/fatfs/src/ff.c **** res = put_fat(fs, clst, 0); /* Mark the cluster "empty" */
|
|
3867 .loc 1 968 0
|
|
3868 006a 0123 movs r3, #1
|
|
3869 .LVL602:
|
|
3870 .L377:
|
|
990:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
3871 .loc 1 990 0
|
|
3872 006c 1846 mov r0, r3
|
|
3873 006e BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
|
3874 .cfi_endproc
|
|
3875 .LFE10:
|
|
3877 0072 00BF .section .text.gen_numname,"ax",%progbits
|
|
3878 .align 2
|
|
3879 .global gen_numname
|
|
3880 .thumb
|
|
3881 .thumb_func
|
|
3883 gen_numname:
|
|
3884 .LFB20:
|
|
1383:../../../Source/third_party/fatfs/src/ff.c **** BYTE ns[8], c;
|
|
3885 .loc 1 1383 0
|
|
3886 .cfi_startproc
|
|
3887 @ args = 0, pretend = 0, frame = 8
|
|
3888 @ frame_needed = 0, uses_anonymous_args = 0
|
|
3889 .LVL603:
|
|
3890 0000 70B5 push {r4, r5, r6, lr}
|
|
3891 .cfi_def_cfa_offset 16
|
|
3892 .cfi_offset 4, -16
|
|
3893 .cfi_offset 5, -12
|
|
3894 .cfi_offset 6, -8
|
|
3895 .cfi_offset 14, -4
|
|
3896 0002 82B0 sub sp, sp, #8
|
|
3897 .cfi_def_cfa_offset 24
|
|
3898 0004 0546 mov r5, r0
|
|
3899 0006 1646 mov r6, r2
|
|
3900 0008 1C46 mov r4, r3
|
|
1388:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3901 .loc 1 1388 0
|
|
3902 000a 0B22 movs r2, #11
|
|
3903 .LVL604:
|
|
3904 000c FFF7FEFF bl mem_cpy
|
|
3905 .LVL605:
|
|
1390:../../../Source/third_party/fatfs/src/ff.c **** do seq = (seq >> 1) + (seq << 15) + (WORD)*lfn++; while (*lfn);
|
|
3906 .loc 1 1390 0
|
|
3907 0010 052C cmp r4, #5
|
|
3908 0012 09D9 bls .L388
|
|
3909 .LVL606:
|
|
3910 .L400:
|
|
1391:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3911 .loc 1 1391 0 discriminator 1
|
|
3912 0014 E303 lsls r3, r4, #15
|
|
3913 0016 43EA5404 orr r4, r3, r4, lsr #1
|
|
3914 .LVL607:
|
|
3915 001a 36F8023B ldrh r3, [r6], #2
|
|
3916 .LVL608:
|
|
3917 001e 1C44 add r4, r4, r3
|
|
3918 0020 A4B2 uxth r4, r4
|
|
3919 .LVL609:
|
|
3920 0022 3388 ldrh r3, [r6]
|
|
3921 0024 002B cmp r3, #0
|
|
3922 0026 F5D1 bne .L400
|
|
3923 .LVL610:
|
|
3924 .L388:
|
|
3925 0028 02A8 add r0, sp, #8
|
|
1383:../../../Source/third_party/fatfs/src/ff.c **** BYTE ns[8], c;
|
|
3926 .loc 1 1383 0
|
|
3927 002a 0722 movs r2, #7
|
|
3928 .L391:
|
|
3929 .LVL611:
|
|
1397:../../../Source/third_party/fatfs/src/ff.c **** if (c > '9') c += 7;
|
|
3930 .loc 1 1397 0
|
|
3931 002c 04F00F01 and r1, r4, #15
|
|
3932 0030 01F13003 add r3, r1, #48
|
|
3933 .LVL612:
|
|
1398:../../../Source/third_party/fatfs/src/ff.c **** ns[i--] = c;
|
|
3934 .loc 1 1398 0
|
|
3935 0034 392B cmp r3, #57
|
|
3936 0036 88BF it hi
|
|
3937 0038 01F13703 addhi r3, r1, #55
|
|
3938 .LVL613:
|
|
1399:../../../Source/third_party/fatfs/src/ff.c **** seq /= 16;
|
|
3939 .loc 1 1399 0
|
|
3940 003c 013A subs r2, r2, #1
|
|
3941 .LVL614:
|
|
3942 003e 00F8013D strb r3, [r0, #-1]!
|
|
3943 .LVL615:
|
|
1401:../../../Source/third_party/fatfs/src/ff.c **** ns[i] = '~';
|
|
3944 .loc 1 1401 0
|
|
3945 0042 2409 lsrs r4, r4, #4
|
|
3946 .LVL616:
|
|
3947 0044 F2D1 bne .L391
|
|
1399:../../../Source/third_party/fatfs/src/ff.c **** seq /= 16;
|
|
3948 .loc 1 1399 0
|
|
3949 0046 1446 mov r4, r2
|
|
1402:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3950 .loc 1 1402 0
|
|
3951 0048 7E21 movs r1, #126
|
|
3952 004a 02AB add r3, sp, #8
|
|
3953 .LVL617:
|
|
3954 004c 1344 add r3, r3, r2
|
|
3955 004e 03F8081C strb r1, [r3, #-8]
|
|
3956 .LVL618:
|
|
1405:../../../Source/third_party/fatfs/src/ff.c **** if (IsDBCS1(dst[j])) {
|
|
3957 .loc 1 1405 0
|
|
3958 0052 62B1 cbz r2, .L396
|
|
3959 0054 2B78 ldrb r3, [r5] @ zero_extendqisi2
|
|
3960 0056 202B cmp r3, #32
|
|
3961 0058 0BD0 beq .L397
|
|
3962 005a 2946 mov r1, r5
|
|
3963 005c 0023 movs r3, #0
|
|
3964 .LVL619:
|
|
3965 .L393:
|
|
1405:../../../Source/third_party/fatfs/src/ff.c **** if (IsDBCS1(dst[j])) {
|
|
3966 .loc 1 1405 0 is_stmt 0 discriminator 2
|
|
3967 005e 0133 adds r3, r3, #1
|
|
3968 .LVL620:
|
|
3969 0060 A342 cmp r3, r4
|
|
3970 0062 08D0 beq .L398
|
|
1405:../../../Source/third_party/fatfs/src/ff.c **** if (IsDBCS1(dst[j])) {
|
|
3971 .loc 1 1405 0 discriminator 3
|
|
3972 0064 11F8010F ldrb r0, [r1, #1]! @ zero_extendqisi2
|
|
3973 0068 2028 cmp r0, #32
|
|
3974 006a F8D1 bne .L393
|
|
3975 006c 04E0 b .L392
|
|
3976 .LVL621:
|
|
3977 .L396:
|
|
1405:../../../Source/third_party/fatfs/src/ff.c **** if (IsDBCS1(dst[j])) {
|
|
3978 .loc 1 1405 0
|
|
3979 006e 1346 mov r3, r2
|
|
3980 0070 02E0 b .L392
|
|
3981 .L397:
|
|
3982 0072 0023 movs r3, #0
|
|
3983 0074 00E0 b .L392
|
|
3984 .LVL622:
|
|
3985 .L398:
|
|
3986 0076 1346 mov r3, r2
|
|
3987 .LVL623:
|
|
3988 .L392:
|
|
3989 0078 E818 adds r0, r5, r3
|
|
1412:../../../Source/third_party/fatfs/src/ff.c **** } while (j < 8);
|
|
3990 .loc 1 1412 0 is_stmt 1
|
|
3991 007a 2024 movs r4, #32
|
|
3992 .L395:
|
|
3993 .LVL624:
|
|
3994 007c 0133 adds r3, r3, #1
|
|
3995 .LVL625:
|
|
3996 007e 072A cmp r2, #7
|
|
3997 0080 05D8 bhi .L399
|
|
3998 .LVL626:
|
|
1412:../../../Source/third_party/fatfs/src/ff.c **** } while (j < 8);
|
|
3999 .loc 1 1412 0 is_stmt 0 discriminator 1
|
|
4000 0082 02A9 add r1, sp, #8
|
|
4001 0084 1144 add r1, r1, r2
|
|
4002 0086 11F8081C ldrb r1, [r1, #-8] @ zero_extendqisi2
|
|
4003 008a 0132 adds r2, r2, #1
|
|
4004 .LVL627:
|
|
4005 008c 00E0 b .L394
|
|
4006 .L399:
|
|
1412:../../../Source/third_party/fatfs/src/ff.c **** } while (j < 8);
|
|
4007 .loc 1 1412 0
|
|
4008 008e 2146 mov r1, r4
|
|
4009 .L394:
|
|
1412:../../../Source/third_party/fatfs/src/ff.c **** } while (j < 8);
|
|
4010 .loc 1 1412 0 discriminator 4
|
|
4011 0090 00F8011B strb r1, [r0], #1
|
|
1413:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4012 .loc 1 1413 0 is_stmt 1 discriminator 4
|
|
4013 0094 072B cmp r3, #7
|
|
4014 0096 F1D9 bls .L395
|
|
1414:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
4015 .loc 1 1414 0
|
|
4016 0098 02B0 add sp, sp, #8
|
|
4017 .cfi_def_cfa_offset 16
|
|
4018 @ sp needed
|
|
4019 009a 70BD pop {r4, r5, r6, pc}
|
|
4020 .cfi_endproc
|
|
4021 .LFE20:
|
|
4023 .section .text.dir_register,"ax",%progbits
|
|
4024 .align 2
|
|
4025 .thumb
|
|
4026 .thumb_func
|
|
4028 dir_register:
|
|
4029 .LFB24:
|
|
1567:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
4030 .loc 1 1567 0
|
|
4031 .cfi_startproc
|
|
4032 @ args = 0, pretend = 0, frame = 24
|
|
4033 @ frame_needed = 0, uses_anonymous_args = 0
|
|
4034 .LVL628:
|
|
4035 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
4036 .cfi_def_cfa_offset 36
|
|
4037 .cfi_offset 4, -36
|
|
4038 .cfi_offset 5, -32
|
|
4039 .cfi_offset 6, -28
|
|
4040 .cfi_offset 7, -24
|
|
4041 .cfi_offset 8, -20
|
|
4042 .cfi_offset 9, -16
|
|
4043 .cfi_offset 10, -12
|
|
4044 .cfi_offset 11, -8
|
|
4045 .cfi_offset 14, -4
|
|
4046 0004 87B0 sub sp, sp, #28
|
|
4047 .cfi_def_cfa_offset 64
|
|
4048 0006 0446 mov r4, r0
|
|
1575:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(sn, fn, 12);
|
|
4049 .loc 1 1575 0
|
|
4050 0008 8769 ldr r7, [r0, #24]
|
|
4051 .LVL629:
|
|
4052 000a C669 ldr r6, [r0, #28]
|
|
4053 .LVL630:
|
|
1576:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4054 .loc 1 1576 0
|
|
4055 000c 03A8 add r0, sp, #12
|
|
4056 .LVL631:
|
|
4057 000e 3946 mov r1, r7
|
|
4058 0010 0C22 movs r2, #12
|
|
4059 0012 FFF7FEFF bl mem_cpy
|
|
4060 .LVL632:
|
|
1581:../../../Source/third_party/fatfs/src/ff.c **** fn[NS] = 0; dj->lfn = 0; /* Find only SFN */
|
|
4061 .loc 1 1581 0
|
|
4062 0016 9DF81730 ldrb r3, [sp, #23] @ zero_extendqisi2
|
|
4063 001a 13F0010F tst r3, #1
|
|
4064 001e 1DD0 beq .L408
|
|
1582:../../../Source/third_party/fatfs/src/ff.c **** for (n = 1; n < 100; n++) {
|
|
4065 .loc 1 1582 0
|
|
4066 0020 0023 movs r3, #0
|
|
4067 0022 FB72 strb r3, [r7, #11]
|
|
4068 0024 E361 str r3, [r4, #28]
|
|
4069 .LVL633:
|
|
1583:../../../Source/third_party/fatfs/src/ff.c **** gen_numname(fn, sn, lfn, n); /* Generate a numbered name */
|
|
4070 .loc 1 1583 0
|
|
4071 0026 0125 movs r5, #1
|
|
4072 .LVL634:
|
|
4073 .L410:
|
|
1584:../../../Source/third_party/fatfs/src/ff.c **** res = dir_find(dj); /* Check if the name collides with existing SFN */
|
|
4074 .loc 1 1584 0
|
|
4075 0028 3846 mov r0, r7
|
|
4076 002a 03A9 add r1, sp, #12
|
|
4077 002c 3246 mov r2, r6
|
|
4078 002e 2B46 mov r3, r5
|
|
4079 0030 FFF7FEFF bl gen_numname
|
|
4080 .LVL635:
|
|
1585:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
4081 .loc 1 1585 0
|
|
4082 0034 2046 mov r0, r4
|
|
4083 0036 FFF7FEFF bl dir_find
|
|
4084 .LVL636:
|
|
1586:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4085 .loc 1 1586 0
|
|
4086 003a 28B9 cbnz r0, .L409
|
|
1583:../../../Source/third_party/fatfs/src/ff.c **** gen_numname(fn, sn, lfn, n); /* Generate a numbered name */
|
|
4087 .loc 1 1583 0 discriminator 2
|
|
4088 003c 0135 adds r5, r5, #1
|
|
4089 .LVL637:
|
|
4090 003e ADB2 uxth r5, r5
|
|
4091 .LVL638:
|
|
4092 0040 642D cmp r5, #100
|
|
4093 0042 F1D1 bne .L410
|
|
1588:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_NO_FILE) return res; /* Abort if the result is other than 'not collided' */
|
|
4094 .loc 1 1588 0
|
|
4095 0044 0720 movs r0, #7
|
|
4096 0046 D9E0 b .L443
|
|
4097 .LVL639:
|
|
4098 .L409:
|
|
4099 0048 642D cmp r5, #100
|
|
4100 004a 00F0BE80 beq .L431
|
|
1589:../../../Source/third_party/fatfs/src/ff.c **** fn[NS] = sn[NS]; dj->lfn = lfn;
|
|
4101 .loc 1 1589 0
|
|
4102 004e 0428 cmp r0, #4
|
|
4103 0050 40F0BD80 bne .L432
|
|
1590:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4104 .loc 1 1590 0
|
|
4105 0054 9DF81730 ldrb r3, [sp, #23] @ zero_extendqisi2
|
|
4106 0058 FB72 strb r3, [r7, #11]
|
|
4107 005a E661 str r6, [r4, #28]
|
|
4108 .LVL640:
|
|
4109 .L408:
|
|
1593:../../../Source/third_party/fatfs/src/ff.c **** for (n = 0; lfn[n]; n++) ;
|
|
4110 .loc 1 1593 0
|
|
4111 005c 9DF81730 ldrb r3, [sp, #23] @ zero_extendqisi2
|
|
4112 0060 13F0020F tst r3, #2
|
|
4113 0064 13D0 beq .L433
|
|
4114 .LVL641:
|
|
1594:../../../Source/third_party/fatfs/src/ff.c **** ne = (n + 25) / 13;
|
|
4115 .loc 1 1594 0 discriminator 1
|
|
4116 0066 3388 ldrh r3, [r6]
|
|
4117 0068 3BB1 cbz r3, .L434
|
|
1594:../../../Source/third_party/fatfs/src/ff.c **** ne = (n + 25) / 13;
|
|
4118 .loc 1 1594 0 is_stmt 0
|
|
4119 006a 0023 movs r3, #0
|
|
4120 .LVL642:
|
|
4121 .L414:
|
|
1594:../../../Source/third_party/fatfs/src/ff.c **** ne = (n + 25) / 13;
|
|
4122 .loc 1 1594 0 discriminator 3
|
|
4123 006c 0133 adds r3, r3, #1
|
|
4124 .LVL643:
|
|
4125 006e 9BB2 uxth r3, r3
|
|
4126 .LVL644:
|
|
4127 0070 36F81320 ldrh r2, [r6, r3, lsl #1]
|
|
4128 0074 002A cmp r2, #0
|
|
4129 0076 F9D1 bne .L414
|
|
4130 0078 00E0 b .L413
|
|
4131 .LVL645:
|
|
4132 .L434:
|
|
1594:../../../Source/third_party/fatfs/src/ff.c **** ne = (n + 25) / 13;
|
|
4133 .loc 1 1594 0
|
|
4134 007a 0023 movs r3, #0
|
|
4135 .LVL646:
|
|
4136 .L413:
|
|
1595:../../../Source/third_party/fatfs/src/ff.c **** } else { /* Otherwise allocate an entry for an SFN */
|
|
4137 .loc 1 1595 0 is_stmt 1
|
|
4138 007c 1933 adds r3, r3, #25
|
|
4139 007e 614D ldr r5, .L448
|
|
4140 0080 85FB0325 smull r2, r5, r5, r3
|
|
4141 0084 DB17 asrs r3, r3, #31
|
|
4142 0086 C3EBA505 rsb r5, r3, r5, asr #2
|
|
4143 008a ADB2 uxth r5, r5
|
|
4144 .LVL647:
|
|
4145 008c 00E0 b .L412
|
|
4146 .LVL648:
|
|
4147 .L433:
|
|
1597:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4148 .loc 1 1597 0
|
|
4149 008e 0125 movs r5, #1
|
|
4150 .L412:
|
|
4151 .LVL649:
|
|
4152 .LBB52:
|
|
4153 .LBB53:
|
|
1214:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
4154 .loc 1 1214 0
|
|
4155 0090 2046 mov r0, r4
|
|
4156 0092 0021 movs r1, #0
|
|
4157 0094 FFF7FEFF bl dir_sdi
|
|
4158 .LVL650:
|
|
1215:../../../Source/third_party/fatfs/src/ff.c **** n = 0;
|
|
4159 .loc 1 1215 0
|
|
4160 0098 0346 mov r3, r0
|
|
4161 009a 0028 cmp r0, #0
|
|
4162 009c 40F0AD80 bne .L415
|
|
4163 00a0 0026 movs r6, #0
|
|
4164 .LVL651:
|
|
1223:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4165 .loc 1 1223 0
|
|
4166 00a2 B046 mov r8, r6
|
|
1225:../../../Source/third_party/fatfs/src/ff.c **** } while (res == FR_OK);
|
|
4167 .loc 1 1225 0
|
|
4168 00a4 0127 movs r7, #1
|
|
4169 .LVL652:
|
|
4170 .L419:
|
|
1218:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
4171 .loc 1 1218 0
|
|
4172 00a6 2068 ldr r0, [r4]
|
|
4173 .LVL653:
|
|
4174 00a8 2169 ldr r1, [r4, #16]
|
|
4175 00aa FFF7FEFF bl move_window
|
|
4176 .LVL654:
|
|
1219:../../../Source/third_party/fatfs/src/ff.c **** if (dj->dir[0] == DDE || dj->dir[0] == 0) { /* Is it a blank entry? */
|
|
4177 .loc 1 1219 0
|
|
4178 00ae 0346 mov r3, r0
|
|
4179 00b0 0028 cmp r0, #0
|
|
4180 00b2 40F0A280 bne .L415
|
|
1220:../../../Source/third_party/fatfs/src/ff.c **** if (++n == nent) break; /* A block of contiguous entry is found */
|
|
4181 .loc 1 1220 0
|
|
4182 00b6 6369 ldr r3, [r4, #20]
|
|
4183 00b8 1B78 ldrb r3, [r3] @ zero_extendqisi2
|
|
4184 00ba E52B cmp r3, #229
|
|
4185 00bc 00D0 beq .L416
|
|
4186 00be 1BB9 cbnz r3, .L435
|
|
4187 .L416:
|
|
1221:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
4188 .loc 1 1221 0
|
|
4189 00c0 0136 adds r6, r6, #1
|
|
4190 .LVL655:
|
|
4191 00c2 B542 cmp r5, r6
|
|
4192 00c4 01D1 bne .L417
|
|
4193 00c6 83E0 b .L418
|
|
4194 .L435:
|
|
1223:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4195 .loc 1 1223 0
|
|
4196 00c8 4646 mov r6, r8
|
|
4197 .LVL656:
|
|
4198 .L417:
|
|
1225:../../../Source/third_party/fatfs/src/ff.c **** } while (res == FR_OK);
|
|
4199 .loc 1 1225 0
|
|
4200 00ca 2046 mov r0, r4
|
|
4201 .LVL657:
|
|
4202 00cc 3946 mov r1, r7
|
|
4203 00ce FFF7FEFF bl dir_next
|
|
4204 .LVL658:
|
|
1226:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4205 .loc 1 1226 0
|
|
4206 00d2 0346 mov r3, r0
|
|
4207 00d4 0028 cmp r0, #0
|
|
4208 00d6 E6D0 beq .L419
|
|
4209 00d8 8FE0 b .L415
|
|
4210 .LVL659:
|
|
4211 .L429:
|
|
4212 .LBE53:
|
|
4213 .LBE52:
|
|
1602:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
4214 .loc 1 1602 0
|
|
4215 00da E188 ldrh r1, [r4, #6]
|
|
4216 00dc 491B subs r1, r1, r5
|
|
4217 00de 2046 mov r0, r4
|
|
4218 00e0 89B2 uxth r1, r1
|
|
4219 00e2 FFF7FEFF bl dir_sdi
|
|
4220 .LVL660:
|
|
1603:../../../Source/third_party/fatfs/src/ff.c **** sum = sum_sfn(dj->fn); /* Sum value of the SFN tied to the LFN */
|
|
4221 .loc 1 1603 0
|
|
4222 00e6 0346 mov r3, r0
|
|
4223 00e8 0028 cmp r0, #0
|
|
4224 00ea 40F08480 bne .L420
|
|
1604:../../../Source/third_party/fatfs/src/ff.c **** do { /* Store LFN entries in bottom first */
|
|
4225 .loc 1 1604 0
|
|
4226 00ee A069 ldr r0, [r4, #24]
|
|
4227 .LVL661:
|
|
4228 00f0 FFF7FEFF bl sum_sfn
|
|
4229 .LVL662:
|
|
4230 00f4 0190 str r0, [sp, #4]
|
|
4231 .LVL663:
|
|
4232 .LBB54:
|
|
4233 .LBB55:
|
|
1353:../../../Source/third_party/fatfs/src/ff.c **** dir[LDIR_Type] = 0;
|
|
4234 .loc 1 1353 0
|
|
4235 00f6 0F27 movs r7, #15
|
|
4236 00f8 434B ldr r3, .L448+4
|
|
4237 00fa 03F10D06 add r6, r3, #13
|
|
4238 .LVL664:
|
|
4239 .L426:
|
|
4240 .LBE55:
|
|
4241 .LBE54:
|
|
1606:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
4242 .loc 1 1606 0
|
|
4243 00fe 2068 ldr r0, [r4]
|
|
4244 0100 2169 ldr r1, [r4, #16]
|
|
4245 0102 FFF7FEFF bl move_window
|
|
4246 .LVL665:
|
|
1607:../../../Source/third_party/fatfs/src/ff.c **** fit_lfn(dj->lfn, dj->dir, (BYTE)ne, sum);
|
|
4247 .loc 1 1607 0
|
|
4248 0106 0346 mov r3, r0
|
|
4249 0108 0028 cmp r0, #0
|
|
4250 010a 74D1 bne .L420
|
|
1608:../../../Source/third_party/fatfs/src/ff.c **** dj->fs->wflag = 1;
|
|
4251 .loc 1 1608 0
|
|
4252 010c D4F81C90 ldr r9, [r4, #28]
|
|
4253 0110 6069 ldr r0, [r4, #20]
|
|
4254 .LVL666:
|
|
4255 0112 5FFA85FB uxtb fp, r5
|
|
4256 .LVL667:
|
|
4257 .LBB58:
|
|
4258 .LBB56:
|
|
1352:../../../Source/third_party/fatfs/src/ff.c **** dir[LDIR_Attr] = AM_LFN; /* Set attribute. LFN entry */
|
|
4259 .loc 1 1352 0
|
|
4260 0116 9DF80430 ldrb r3, [sp, #4] @ zero_extendqisi2
|
|
4261 011a 4373 strb r3, [r0, #13]
|
|
1353:../../../Source/third_party/fatfs/src/ff.c **** dir[LDIR_Type] = 0;
|
|
4262 .loc 1 1353 0
|
|
4263 011c C772 strb r7, [r0, #11]
|
|
1354:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(dir+LDIR_FstClusLO, 0);
|
|
4264 .loc 1 1354 0
|
|
4265 011e 0023 movs r3, #0
|
|
4266 0120 0373 strb r3, [r0, #12]
|
|
1355:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4267 .loc 1 1355 0
|
|
4268 0122 8376 strb r3, [r0, #26]
|
|
4269 0124 C376 strb r3, [r0, #27]
|
|
1357:../../../Source/third_party/fatfs/src/ff.c **** s = wc = 0;
|
|
4270 .loc 1 1357 0
|
|
4271 0126 0BF1FF32 add r2, fp, #-1
|
|
4272 012a 02EB4201 add r1, r2, r2, lsl #1
|
|
4273 012e 02EB8101 add r1, r2, r1, lsl #2
|
|
4274 .LVL668:
|
|
4275 0132 354A ldr r2, .L448+4
|
|
1360:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(dir+LfnOfs[s], wc); /* Put it */
|
|
4276 .loc 1 1360 0
|
|
4277 0134 4FF6FF7E movw lr, #65535
|
|
1361:../../../Source/third_party/fatfs/src/ff.c **** if (!wc) wc = 0xFFFF; /* Padding chars following last char */
|
|
4278 .loc 1 1361 0
|
|
4279 0138 4FF0FF0A mov r10, #255
|
|
4280 .LVL669:
|
|
4281 .L423:
|
|
1360:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(dir+LfnOfs[s], wc); /* Put it */
|
|
4282 .loc 1 1360 0
|
|
4283 013c 7345 cmp r3, lr
|
|
4284 013e 4BD0 beq .L421
|
|
4285 0140 01F1010C add ip, r1, #1
|
|
4286 .LVL670:
|
|
4287 0144 39F81130 ldrh r3, [r9, r1, lsl #1]
|
|
4288 .LVL671:
|
|
1361:../../../Source/third_party/fatfs/src/ff.c **** if (!wc) wc = 0xFFFF; /* Padding chars following last char */
|
|
4289 .loc 1 1361 0
|
|
4290 0148 1178 ldrb r1, [r2] @ zero_extendqisi2
|
|
4291 014a 4354 strb r3, [r0, r1]
|
|
4292 014c 0144 add r1, r1, r0
|
|
4293 014e 4FEA1328 lsr r8, r3, #8
|
|
4294 0152 81F80180 strb r8, [r1, #1]
|
|
1362:../../../Source/third_party/fatfs/src/ff.c **** } while (++s < 13);
|
|
4295 .loc 1 1362 0
|
|
4296 0156 13B9 cbnz r3, .L436
|
|
1360:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(dir+LfnOfs[s], wc); /* Put it */
|
|
4297 .loc 1 1360 0
|
|
4298 0158 6146 mov r1, ip
|
|
4299 .LVL672:
|
|
1362:../../../Source/third_party/fatfs/src/ff.c **** } while (++s < 13);
|
|
4300 .loc 1 1362 0
|
|
4301 015a 7346 mov r3, lr
|
|
4302 015c 00E0 b .L422
|
|
4303 .LVL673:
|
|
4304 .L436:
|
|
1360:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(dir+LfnOfs[s], wc); /* Put it */
|
|
4305 .loc 1 1360 0
|
|
4306 015e 6146 mov r1, ip
|
|
4307 .LVL674:
|
|
4308 .L422:
|
|
4309 0160 0132 adds r2, r2, #1
|
|
4310 .LVL675:
|
|
1363:../../../Source/third_party/fatfs/src/ff.c **** if (wc == 0xFFFF || !lfnbuf[i]) ord |= LLE; /* Bottom LFN part is the start of LFN sequence */
|
|
4311 .loc 1 1363 0
|
|
4312 0162 B242 cmp r2, r6
|
|
4313 0164 EAD1 bne .L423
|
|
1364:../../../Source/third_party/fatfs/src/ff.c **** dir[LDIR_Ord] = ord; /* Set the LFN order */
|
|
4314 .loc 1 1364 0
|
|
4315 0166 4FF6FF72 movw r2, #65535
|
|
4316 .LVL676:
|
|
4317 016a 9342 cmp r3, r2
|
|
4318 016c 02D0 beq .L424
|
|
4319 016e 39F81130 ldrh r3, [r9, r1, lsl #1]
|
|
4320 0172 0BB9 cbnz r3, .L425
|
|
4321 .L424:
|
|
4322 0174 4BF0400B orr fp, fp, #64
|
|
4323 .LVL677:
|
|
4324 .L425:
|
|
1365:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4325 .loc 1 1365 0
|
|
4326 0178 80F800B0 strb fp, [r0]
|
|
4327 .LBE56:
|
|
4328 .LBE58:
|
|
1609:../../../Source/third_party/fatfs/src/ff.c **** res = dir_next(dj, 0); /* Next entry */
|
|
4329 .loc 1 1609 0
|
|
4330 017c 2368 ldr r3, [r4]
|
|
4331 017e 0122 movs r2, #1
|
|
4332 0180 1A71 strb r2, [r3, #4]
|
|
1610:../../../Source/third_party/fatfs/src/ff.c **** } while (res == FR_OK && --ne);
|
|
4333 .loc 1 1610 0
|
|
4334 0182 2046 mov r0, r4
|
|
4335 .LVL678:
|
|
4336 0184 0021 movs r1, #0
|
|
4337 .LVL679:
|
|
4338 0186 FFF7FEFF bl dir_next
|
|
4339 .LVL680:
|
|
1611:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4340 .loc 1 1611 0
|
|
4341 018a 0346 mov r3, r0
|
|
4342 018c 0028 cmp r0, #0
|
|
4343 018e 32D1 bne .L420
|
|
1611:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4344 .loc 1 1611 0 is_stmt 0 discriminator 1
|
|
4345 0190 013D subs r5, r5, #1
|
|
4346 .LVL681:
|
|
4347 0192 ADB2 uxth r5, r5
|
|
4348 .LVL682:
|
|
4349 0194 002D cmp r5, #0
|
|
4350 0196 B2D1 bne .L426
|
|
4351 0198 26E0 b .L427
|
|
4352 .LVL683:
|
|
4353 .L430:
|
|
1621:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(dj->dir, dj->fn, 11); /* Put SFN */
|
|
4354 .loc 1 1621 0 is_stmt 1
|
|
4355 019a 6369 ldr r3, [r4, #20]
|
|
4356 .LVL684:
|
|
4357 019c 03F12001 add r1, r3, #32
|
|
4358 .LBB59:
|
|
4359 .LBB60:
|
|
560:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4360 .loc 1 560 0
|
|
4361 01a0 0022 movs r2, #0
|
|
4362 .LVL685:
|
|
4363 .L428:
|
|
4364 01a2 03F8012B strb r2, [r3], #1
|
|
4365 .LVL686:
|
|
559:../../../Source/third_party/fatfs/src/ff.c **** *d++ = (BYTE)val;
|
|
4366 .loc 1 559 0
|
|
4367 01a6 8B42 cmp r3, r1
|
|
4368 01a8 FBD1 bne .L428
|
|
4369 .LBE60:
|
|
4370 .LBE59:
|
|
1622:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN
|
|
4371 .loc 1 1622 0
|
|
4372 01aa 6069 ldr r0, [r4, #20]
|
|
4373 .LVL687:
|
|
4374 01ac A169 ldr r1, [r4, #24]
|
|
4375 .LVL688:
|
|
4376 01ae 0B22 movs r2, #11
|
|
4377 01b0 FFF7FEFF bl mem_cpy
|
|
4378 .LVL689:
|
|
1624:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
4379 .loc 1 1624 0
|
|
4380 01b4 6269 ldr r2, [r4, #20]
|
|
4381 01b6 A369 ldr r3, [r4, #24]
|
|
4382 01b8 DB7A ldrb r3, [r3, #11] @ zero_extendqisi2
|
|
4383 01ba 03F01803 and r3, r3, #24
|
|
4384 01be 1373 strb r3, [r2, #12]
|
|
1626:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4385 .loc 1 1626 0
|
|
4386 01c0 2368 ldr r3, [r4]
|
|
4387 01c2 0122 movs r2, #1
|
|
4388 01c4 1A71 strb r2, [r3, #4]
|
|
1619:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
4389 .loc 1 1619 0
|
|
4390 01c6 0020 movs r0, #0
|
|
4391 01c8 18E0 b .L443
|
|
4392 .LVL690:
|
|
4393 .L431:
|
|
1588:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_NO_FILE) return res; /* Abort if the result is other than 'not collided' */
|
|
4394 .loc 1 1588 0
|
|
4395 01ca 0720 movs r0, #7
|
|
4396 .LVL691:
|
|
4397 01cc 16E0 b .L443
|
|
4398 .LVL692:
|
|
4399 .L432:
|
|
4400 01ce 15E0 b .L443
|
|
4401 .LVL693:
|
|
4402 .L418:
|
|
1601:../../../Source/third_party/fatfs/src/ff.c **** res = dir_sdi(dj, (WORD)(dj->index - ne));
|
|
4403 .loc 1 1601 0
|
|
4404 01d0 013D subs r5, r5, #1
|
|
4405 .LVL694:
|
|
4406 01d2 ADB2 uxth r5, r5
|
|
4407 .LVL695:
|
|
4408 01d4 45B1 cbz r5, .L427
|
|
4409 01d6 80E7 b .L429
|
|
4410 .LVL696:
|
|
4411 .L421:
|
|
4412 .LBB61:
|
|
4413 .LBB57:
|
|
1361:../../../Source/third_party/fatfs/src/ff.c **** if (!wc) wc = 0xFFFF; /* Padding chars following last char */
|
|
4414 .loc 1 1361 0
|
|
4415 01d8 92F800C0 ldrb ip, [r2] @ zero_extendqisi2
|
|
4416 01dc 00F80CA0 strb r10, [r0, ip]
|
|
4417 01e0 8444 add ip, ip, r0
|
|
4418 01e2 8CF801A0 strb r10, [ip, #1]
|
|
4419 01e6 BBE7 b .L422
|
|
4420 .LVL697:
|
|
4421 .L427:
|
|
4422 .LBE57:
|
|
4423 .LBE61:
|
|
1619:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
4424 .loc 1 1619 0
|
|
4425 01e8 2068 ldr r0, [r4]
|
|
4426 01ea 2169 ldr r1, [r4, #16]
|
|
4427 01ec FFF7FEFF bl move_window
|
|
4428 .LVL698:
|
|
1620:../../../Source/third_party/fatfs/src/ff.c **** mem_set(dj->dir, 0, SZ_DIR); /* Clean the entry */
|
|
4429 .loc 1 1620 0
|
|
4430 01f0 0028 cmp r0, #0
|
|
4431 01f2 D2D0 beq .L430
|
|
4432 01f4 02E0 b .L443
|
|
4433 .L420:
|
|
4434 .LVL699:
|
|
1619:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
4435 .loc 1 1619 0
|
|
4436 01f6 1846 mov r0, r3
|
|
4437 01f8 00E0 b .L443
|
|
4438 .LVL700:
|
|
4439 .L415:
|
|
1585:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
4440 .loc 1 1585 0
|
|
4441 01fa 1846 mov r0, r3
|
|
4442 .LVL701:
|
|
4443 .L443:
|
|
1631:../../../Source/third_party/fatfs/src/ff.c **** #endif /* !_FS_READONLY */
|
|
4444 .loc 1 1631 0
|
|
4445 01fc 07B0 add sp, sp, #28
|
|
4446 .cfi_def_cfa_offset 36
|
|
4447 @ sp needed
|
|
4448 01fe BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
4449 .LVL702:
|
|
4450 .L449:
|
|
4451 0202 00BF .align 2
|
|
4452 .L448:
|
|
4453 0204 4FECC44E .word 1321528399
|
|
4454 0208 00000000 .word .LANCHOR2
|
|
4455 .cfi_endproc
|
|
4456 .LFE24:
|
|
4458 .section .text.f_mount,"ax",%progbits
|
|
4459 .align 2
|
|
4460 .global f_mount
|
|
4461 .thumb
|
|
4462 .thumb_func
|
|
4464 f_mount:
|
|
4465 .LFB32:
|
|
2252:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2253:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2254:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2255:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2256:../../../Source/third_party/fatfs/src/ff.c **** /*--------------------------------------------------------------------------
|
|
2257:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2258:../../../Source/third_party/fatfs/src/ff.c **** Public Functions
|
|
2259:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2260:../../../Source/third_party/fatfs/src/ff.c **** --------------------------------------------------------------------------*/
|
|
2261:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2262:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2263:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2264:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2265:../../../Source/third_party/fatfs/src/ff.c **** /* Mount/Unmount a Logical Drive */
|
|
2266:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2267:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2268:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_mount (
|
|
2269:../../../Source/third_party/fatfs/src/ff.c **** BYTE vol, /* Logical drive number to be mounted/unmounted */
|
|
2270:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs /* Pointer to new file system object (NULL for unmount)*/
|
|
2271:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
2272:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
4466 .loc 1 2272 0
|
|
4467 .cfi_startproc
|
|
4468 @ args = 0, pretend = 0, frame = 0
|
|
4469 @ frame_needed = 0, uses_anonymous_args = 0
|
|
4470 @ link register save eliminated.
|
|
4471 .LVL703:
|
|
2273:../../../Source/third_party/fatfs/src/ff.c **** FATFS *rfs;
|
|
2274:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2275:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2276:../../../Source/third_party/fatfs/src/ff.c **** if (vol >= _VOLUMES) /* Check if the drive number is valid */
|
|
4472 .loc 1 2276 0
|
|
4473 0000 58B9 cbnz r0, .L454
|
|
2277:../../../Source/third_party/fatfs/src/ff.c **** return FR_INVALID_DRIVE;
|
|
2278:../../../Source/third_party/fatfs/src/ff.c **** rfs = FatFs[vol]; /* Get current fs object */
|
|
4474 .loc 1 2278 0
|
|
4475 0002 074B ldr r3, .L455
|
|
4476 0004 1B68 ldr r3, [r3]
|
|
4477 .LVL704:
|
|
2279:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2280:../../../Source/third_party/fatfs/src/ff.c **** if (rfs) {
|
|
4478 .loc 1 2280 0
|
|
4479 0006 0BB1 cbz r3, .L452
|
|
2281:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_LOCK
|
|
2282:../../../Source/third_party/fatfs/src/ff.c **** clear_lock(rfs);
|
|
2283:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2284:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_REENTRANT /* Discard sync object of the current volume */
|
|
2285:../../../Source/third_party/fatfs/src/ff.c **** if (!ff_del_syncobj(rfs->sobj)) return FR_INT_ERR;
|
|
2286:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2287:../../../Source/third_party/fatfs/src/ff.c **** rfs->fs_type = 0; /* Clear old fs object */
|
|
4480 .loc 1 2287 0
|
|
4481 0008 0022 movs r2, #0
|
|
4482 000a 1A70 strb r2, [r3]
|
|
4483 .L452:
|
|
2288:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2289:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2290:../../../Source/third_party/fatfs/src/ff.c **** if (fs) {
|
|
4484 .loc 1 2290 0
|
|
4485 000c 09B1 cbz r1, .L453
|
|
2291:../../../Source/third_party/fatfs/src/ff.c **** fs->fs_type = 0; /* Clear new fs object */
|
|
4486 .loc 1 2291 0
|
|
4487 000e 0023 movs r3, #0
|
|
4488 .LVL705:
|
|
4489 0010 0B70 strb r3, [r1]
|
|
4490 .L453:
|
|
2292:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_REENTRANT /* Create sync object for the new volume */
|
|
2293:../../../Source/third_party/fatfs/src/ff.c **** if (!ff_cre_syncobj(vol, &fs->sobj)) return FR_INT_ERR;
|
|
2294:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2295:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2296:../../../Source/third_party/fatfs/src/ff.c **** FatFs[vol] = fs; /* Register new fs object */
|
|
4491 .loc 1 2296 0
|
|
4492 0012 034B ldr r3, .L455
|
|
4493 0014 1960 str r1, [r3]
|
|
2297:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2298:../../../Source/third_party/fatfs/src/ff.c **** return FR_OK;
|
|
4494 .loc 1 2298 0
|
|
4495 0016 0020 movs r0, #0
|
|
4496 .LVL706:
|
|
4497 0018 7047 bx lr
|
|
4498 .LVL707:
|
|
4499 .L454:
|
|
2277:../../../Source/third_party/fatfs/src/ff.c **** rfs = FatFs[vol]; /* Get current fs object */
|
|
4500 .loc 1 2277 0
|
|
4501 001a 0B20 movs r0, #11
|
|
4502 .LVL708:
|
|
2299:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4503 .loc 1 2299 0
|
|
4504 001c 7047 bx lr
|
|
4505 .L456:
|
|
4506 001e 00BF .align 2
|
|
4507 .L455:
|
|
4508 0020 00000000 .word .LANCHOR0
|
|
4509 .cfi_endproc
|
|
4510 .LFE32:
|
|
4512 .section .text.f_open,"ax",%progbits
|
|
4513 .align 2
|
|
4514 .global f_open
|
|
4515 .thumb
|
|
4516 .thumb_func
|
|
4518 f_open:
|
|
4519 .LFB33:
|
|
2300:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2301:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2302:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2303:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2304:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2305:../../../Source/third_party/fatfs/src/ff.c **** /* Open or Create a File */
|
|
2306:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2307:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2308:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_open (
|
|
2309:../../../Source/third_party/fatfs/src/ff.c **** FIL *fp, /* Pointer to the blank file object */
|
|
2310:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR *path, /* Pointer to the file name */
|
|
2311:../../../Source/third_party/fatfs/src/ff.c **** BYTE mode /* Access mode and file open mode flags */
|
|
2312:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
2313:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
4520 .loc 1 2313 0
|
|
4521 .cfi_startproc
|
|
4522 @ args = 0, pretend = 0, frame = 56
|
|
4523 @ frame_needed = 0, uses_anonymous_args = 0
|
|
4524 .LVL709:
|
|
4525 0000 2DE9F043 push {r4, r5, r6, r7, r8, r9, lr}
|
|
4526 .cfi_def_cfa_offset 28
|
|
4527 .cfi_offset 4, -28
|
|
4528 .cfi_offset 5, -24
|
|
4529 .cfi_offset 6, -20
|
|
4530 .cfi_offset 7, -16
|
|
4531 .cfi_offset 8, -12
|
|
4532 .cfi_offset 9, -8
|
|
4533 .cfi_offset 14, -4
|
|
4534 0004 8FB0 sub sp, sp, #60
|
|
4535 .cfi_def_cfa_offset 88
|
|
4536 0006 0191 str r1, [sp, #4]
|
|
2314:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
2315:../../../Source/third_party/fatfs/src/ff.c **** DIR dj;
|
|
2316:../../../Source/third_party/fatfs/src/ff.c **** BYTE *dir;
|
|
2317:../../../Source/third_party/fatfs/src/ff.c **** DEF_NAMEBUF;
|
|
2318:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2319:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2320:../../../Source/third_party/fatfs/src/ff.c **** if (!fp) return FR_INVALID_OBJECT;
|
|
4537 .loc 1 2320 0
|
|
4538 0008 0028 cmp r0, #0
|
|
4539 000a 00F08D80 beq .L475
|
|
4540 000e 0446 mov r4, r0
|
|
4541 0010 1546 mov r5, r2
|
|
2321:../../../Source/third_party/fatfs/src/ff.c **** fp->fs = 0; /* Clear file object */
|
|
4542 .loc 1 2321 0
|
|
4543 0012 0023 movs r3, #0
|
|
4544 0014 0360 str r3, [r0]
|
|
4545 .LVL710:
|
|
2322:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2323:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
2324:../../../Source/third_party/fatfs/src/ff.c **** mode &= FA_READ | FA_WRITE | FA_CREATE_ALWAYS | FA_OPEN_ALWAYS | FA_CREATE_NEW;
|
|
2325:../../../Source/third_party/fatfs/src/ff.c **** res = chk_mounted(&path, &dj.fs, (BYTE)(mode & ~FA_READ));
|
|
4546 .loc 1 2325 0
|
|
4547 0016 01A8 add r0, sp, #4
|
|
4548 .LVL711:
|
|
4549 0018 05A9 add r1, sp, #20
|
|
4550 .LVL712:
|
|
4551 001a 02F01E02 and r2, r2, #30
|
|
4552 .LVL713:
|
|
4553 001e FFF7FEFF bl chk_mounted
|
|
4554 .LVL714:
|
|
2326:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
2327:../../../Source/third_party/fatfs/src/ff.c **** mode &= FA_READ;
|
|
2328:../../../Source/third_party/fatfs/src/ff.c **** res = chk_mounted(&path, &dj.fs, 0);
|
|
2329:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2330:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
4555 .loc 1 2330 0
|
|
4556 0022 0028 cmp r0, #0
|
|
4557 0024 40F08280 bne .L476
|
|
2324:../../../Source/third_party/fatfs/src/ff.c **** res = chk_mounted(&path, &dj.fs, (BYTE)(mode & ~FA_READ));
|
|
4558 .loc 1 2324 0
|
|
4559 0028 05F01F07 and r7, r5, #31
|
|
2331:../../../Source/third_party/fatfs/src/ff.c **** INIT_BUF(dj);
|
|
4560 .loc 1 2331 0
|
|
4561 002c 02AB add r3, sp, #8
|
|
4562 002e 0B93 str r3, [sp, #44]
|
|
4563 0030 534B ldr r3, .L487
|
|
4564 0032 0C93 str r3, [sp, #48]
|
|
2332:../../../Source/third_party/fatfs/src/ff.c **** res = follow_path(&dj, path); /* Follow the file path */
|
|
4565 .loc 1 2332 0
|
|
4566 0034 05A8 add r0, sp, #20
|
|
4567 .LVL715:
|
|
4568 0036 0199 ldr r1, [sp, #4]
|
|
4569 0038 FFF7FEFF bl follow_path
|
|
4570 .LVL716:
|
|
2333:../../../Source/third_party/fatfs/src/ff.c **** dir = dj.dir;
|
|
4571 .loc 1 2333 0
|
|
4572 003c 0A9E ldr r6, [sp, #40]
|
|
4573 .LVL717:
|
|
2334:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY /* R/W configuration */
|
|
2335:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
4574 .loc 1 2335 0
|
|
4575 003e 0346 mov r3, r0
|
|
4576 0040 0028 cmp r0, #0
|
|
4577 0042 74D1 bne .L459
|
|
2336:../../../Source/third_party/fatfs/src/ff.c **** if (!dir) /* Current dir itself */
|
|
4578 .loc 1 2336 0
|
|
4579 0044 002E cmp r6, #0
|
|
4580 0046 7BD1 bne .L482
|
|
4581 0048 75E0 b .L460
|
|
4582 .LVL718:
|
|
4583 .L468:
|
|
4584 .LBB65:
|
|
2337:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INVALID_NAME;
|
|
2338:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_LOCK
|
|
2339:../../../Source/third_party/fatfs/src/ff.c **** else
|
|
2340:../../../Source/third_party/fatfs/src/ff.c **** res = chk_lock(&dj, (mode & ~FA_READ) ? 1 : 0);
|
|
2341:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2342:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2343:../../../Source/third_party/fatfs/src/ff.c **** /* Create or Open a file */
|
|
2344:../../../Source/third_party/fatfs/src/ff.c **** if (mode & (FA_CREATE_ALWAYS | FA_OPEN_ALWAYS | FA_CREATE_NEW)) {
|
|
2345:../../../Source/third_party/fatfs/src/ff.c **** DWORD dw, cl;
|
|
2346:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2347:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) { /* No file, create new */
|
|
2348:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_NO_FILE) /* There is no file to open, create a new entry */
|
|
4585 .loc 1 2348 0
|
|
4586 004a 042B cmp r3, #4
|
|
4587 004c 40F08880 bne .L462
|
|
2349:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_LOCK
|
|
2350:../../../Source/third_party/fatfs/src/ff.c **** res = enq_lock() ? dir_register(&dj) : FR_TOO_MANY_OPEN_FILES;
|
|
2351:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
2352:../../../Source/third_party/fatfs/src/ff.c **** res = dir_register(&dj);
|
|
4588 .loc 1 2352 0
|
|
4589 0050 05A8 add r0, sp, #20
|
|
4590 0052 FFF7FEFF bl dir_register
|
|
4591 .LVL719:
|
|
2353:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2354:../../../Source/third_party/fatfs/src/ff.c **** mode |= FA_CREATE_ALWAYS; /* File is created */
|
|
4592 .loc 1 2354 0
|
|
4593 0056 47F00807 orr r7, r7, #8
|
|
4594 .LVL720:
|
|
2355:../../../Source/third_party/fatfs/src/ff.c **** dir = dj.dir; /* New entry */
|
|
4595 .loc 1 2355 0
|
|
4596 005a 0A9E ldr r6, [sp, #40]
|
|
2356:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2357:../../../Source/third_party/fatfs/src/ff.c **** else { /* Any object is already existing */
|
|
2358:../../../Source/third_party/fatfs/src/ff.c **** if (dir[DIR_Attr] & (AM_RDO | AM_DIR)) { /* Cannot overwrite it (R/O or DIR) */
|
|
2359:../../../Source/third_party/fatfs/src/ff.c **** res = FR_DENIED;
|
|
2360:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
2361:../../../Source/third_party/fatfs/src/ff.c **** if (mode & FA_CREATE_NEW) /* Cannot create as new file */
|
|
2362:../../../Source/third_party/fatfs/src/ff.c **** res = FR_EXIST;
|
|
2363:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2364:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2365:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK && (mode & FA_CREATE_ALWAYS)) { /* Truncate it if overwrite mode */
|
|
4597 .loc 1 2365 0
|
|
4598 005c 0346 mov r3, r0
|
|
4599 005e 48B1 cbz r0, .L463
|
|
4600 0060 75E0 b .L464
|
|
4601 .LVL721:
|
|
4602 .L470:
|
|
2358:../../../Source/third_party/fatfs/src/ff.c **** res = FR_DENIED;
|
|
4603 .loc 1 2358 0
|
|
4604 0062 F37A ldrb r3, [r6, #11] @ zero_extendqisi2
|
|
4605 0064 13F0110F tst r3, #17
|
|
4606 0068 40F08380 bne .L477
|
|
2361:../../../Source/third_party/fatfs/src/ff.c **** res = FR_EXIST;
|
|
4607 .loc 1 2361 0
|
|
4608 006c 15F0040F tst r5, #4
|
|
4609 0070 40F08180 bne .L478
|
|
4610 .LVL722:
|
|
4611 .L463:
|
|
4612 .loc 1 2365 0 discriminator 1
|
|
4613 0074 17F0080F tst r7, #8
|
|
4614 0078 6DD0 beq .L466
|
|
2366:../../../Source/third_party/fatfs/src/ff.c **** dw = get_fattime(); /* Created time */
|
|
4615 .loc 1 2366 0
|
|
4616 007a FFF7FEFF bl get_fattime
|
|
4617 .LVL723:
|
|
2367:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(dir+DIR_CrtTime, dw);
|
|
4618 .loc 1 2367 0
|
|
4619 007e B073 strb r0, [r6, #14]
|
|
4620 0080 C0F30723 ubfx r3, r0, #8, #8
|
|
4621 0084 F373 strb r3, [r6, #15]
|
|
4622 0086 030C lsrs r3, r0, #16
|
|
4623 0088 3374 strb r3, [r6, #16]
|
|
4624 008a 000E lsrs r0, r0, #24
|
|
4625 .LVL724:
|
|
4626 008c 7074 strb r0, [r6, #17]
|
|
2368:../../../Source/third_party/fatfs/src/ff.c **** dir[DIR_Attr] = 0; /* Reset attribute */
|
|
4627 .loc 1 2368 0
|
|
4628 008e 0025 movs r5, #0
|
|
4629 0090 F572 strb r5, [r6, #11]
|
|
2369:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(dir+DIR_FileSize, 0); /* size = 0 */
|
|
4630 .loc 1 2369 0
|
|
4631 0092 3577 strb r5, [r6, #28]
|
|
4632 0094 7577 strb r5, [r6, #29]
|
|
4633 0096 B577 strb r5, [r6, #30]
|
|
4634 0098 F577 strb r5, [r6, #31]
|
|
2370:../../../Source/third_party/fatfs/src/ff.c **** cl = ld_clust(dj.fs, dir); /* Get start cluster */
|
|
4635 .loc 1 2370 0
|
|
4636 009a DDF81480 ldr r8, [sp, #20]
|
|
4637 009e 4046 mov r0, r8
|
|
4638 00a0 3146 mov r1, r6
|
|
4639 00a2 FFF7FEFF bl ld_clust
|
|
4640 .LVL725:
|
|
4641 .LBB66:
|
|
4642 .LBB67:
|
|
1261:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(dir+DIR_FstClusHI, cl >> 16);
|
|
4643 .loc 1 1261 0
|
|
4644 00a6 B576 strb r5, [r6, #26]
|
|
4645 00a8 F576 strb r5, [r6, #27]
|
|
1262:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4646 .loc 1 1262 0
|
|
4647 00aa 3575 strb r5, [r6, #20]
|
|
4648 00ac 7575 strb r5, [r6, #21]
|
|
4649 .LBE67:
|
|
4650 .LBE66:
|
|
2371:../../../Source/third_party/fatfs/src/ff.c **** st_clust(dir, 0); /* cluster = 0 */
|
|
2372:../../../Source/third_party/fatfs/src/ff.c **** dj.fs->wflag = 1;
|
|
4651 .loc 1 2372 0
|
|
4652 00ae 0123 movs r3, #1
|
|
4653 00b0 88F80430 strb r3, [r8, #4]
|
|
2373:../../../Source/third_party/fatfs/src/ff.c **** if (cl) { /* Remove the cluster chain if exist */
|
|
4654 .loc 1 2373 0
|
|
4655 00b4 0546 mov r5, r0
|
|
4656 00b6 0028 cmp r0, #0
|
|
4657 00b8 4DD0 beq .L466
|
|
2374:../../../Source/third_party/fatfs/src/ff.c **** dw = dj.fs->winsect;
|
|
4658 .loc 1 2374 0
|
|
4659 00ba D8F83090 ldr r9, [r8, #48]
|
|
4660 .LVL726:
|
|
2375:../../../Source/third_party/fatfs/src/ff.c **** res = remove_chain(dj.fs, cl);
|
|
4661 .loc 1 2375 0
|
|
4662 00be 4046 mov r0, r8
|
|
4663 .LVL727:
|
|
4664 00c0 2946 mov r1, r5
|
|
4665 00c2 FFF7FEFF bl remove_chain
|
|
4666 .LVL728:
|
|
2376:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
4667 .loc 1 2376 0
|
|
4668 00c6 0346 mov r3, r0
|
|
4669 00c8 0028 cmp r0, #0
|
|
4670 00ca 40D1 bne .L464
|
|
2377:../../../Source/third_party/fatfs/src/ff.c **** dj.fs->last_clust = cl - 1; /* Reuse the cluster hole */
|
|
4671 .loc 1 2377 0
|
|
4672 00cc 0598 ldr r0, [sp, #20]
|
|
4673 .LVL729:
|
|
4674 00ce 013D subs r5, r5, #1
|
|
4675 .LVL730:
|
|
4676 00d0 C560 str r5, [r0, #12]
|
|
2378:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(dj.fs, dw);
|
|
4677 .loc 1 2378 0
|
|
4678 00d2 4946 mov r1, r9
|
|
4679 00d4 FFF7FEFF bl move_window
|
|
4680 .LVL731:
|
|
4681 .LBE65:
|
|
2379:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2380:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2381:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2382:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2383:../../../Source/third_party/fatfs/src/ff.c **** else { /* Open an existing file */
|
|
2384:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) { /* Follow succeeded */
|
|
2385:../../../Source/third_party/fatfs/src/ff.c **** if (dir[DIR_Attr] & AM_DIR) { /* It is a directory */
|
|
2386:../../../Source/third_party/fatfs/src/ff.c **** res = FR_NO_FILE;
|
|
2387:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
2388:../../../Source/third_party/fatfs/src/ff.c **** if ((mode & FA_WRITE) && (dir[DIR_Attr] & AM_RDO)) /* R/O violation */
|
|
2389:../../../Source/third_party/fatfs/src/ff.c **** res = FR_DENIED;
|
|
2390:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2391:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2392:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2393:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
4682 .loc 1 2393 0
|
|
4683 00d8 38B1 cbz r0, .L467
|
|
4684 00da 4DE0 b .L483
|
|
4685 .LVL732:
|
|
4686 .L485:
|
|
2388:../../../Source/third_party/fatfs/src/ff.c **** res = FR_DENIED;
|
|
4687 .loc 1 2388 0
|
|
4688 00dc 15F0020F tst r5, #2
|
|
4689 00e0 39D0 beq .L466
|
|
2388:../../../Source/third_party/fatfs/src/ff.c **** res = FR_DENIED;
|
|
4690 .loc 1 2388 0 is_stmt 0 discriminator 1
|
|
4691 00e2 13F0010F tst r3, #1
|
|
4692 00e6 2FD1 bne .L479
|
|
4693 00e8 35E0 b .L466
|
|
4694 .LVL733:
|
|
4695 .L467:
|
|
2394:../../../Source/third_party/fatfs/src/ff.c **** if (mode & FA_CREATE_ALWAYS) /* Set file change flag if created or overwritten */
|
|
2395:../../../Source/third_party/fatfs/src/ff.c **** mode |= FA__WRITTEN;
|
|
4696 .loc 1 2395 0 is_stmt 1
|
|
4697 00ea 47F02007 orr r7, r7, #32
|
|
4698 .LVL734:
|
|
4699 .L473:
|
|
2396:../../../Source/third_party/fatfs/src/ff.c **** fp->dir_sect = dj.fs->winsect; /* Pointer to the directory entry */
|
|
4700 .loc 1 2396 0
|
|
4701 00ee 059B ldr r3, [sp, #20]
|
|
4702 00f0 1B6B ldr r3, [r3, #48]
|
|
4703 00f2 E361 str r3, [r4, #28]
|
|
2397:../../../Source/third_party/fatfs/src/ff.c **** fp->dir_ptr = dir;
|
|
4704 .loc 1 2397 0
|
|
4705 00f4 2662 str r6, [r4, #32]
|
|
4706 .L472:
|
|
2398:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_LOCK
|
|
2399:../../../Source/third_party/fatfs/src/ff.c **** fp->lockid = inc_lock(&dj, (mode & ~FA_READ) ? 1 : 0);
|
|
2400:../../../Source/third_party/fatfs/src/ff.c **** if (!fp->lockid) res = FR_INT_ERR;
|
|
2401:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2402:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2403:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2404:../../../Source/third_party/fatfs/src/ff.c **** #else /* R/O configuration */
|
|
2405:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) { /* Follow succeeded */
|
|
2406:../../../Source/third_party/fatfs/src/ff.c **** dir = dj.dir;
|
|
2407:../../../Source/third_party/fatfs/src/ff.c **** if (!dir) { /* Current dir itself */
|
|
2408:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INVALID_NAME;
|
|
2409:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
2410:../../../Source/third_party/fatfs/src/ff.c **** if (dir[DIR_Attr] & AM_DIR) /* It is a directory */
|
|
2411:../../../Source/third_party/fatfs/src/ff.c **** res = FR_NO_FILE;
|
|
2412:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2413:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2414:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2415:../../../Source/third_party/fatfs/src/ff.c **** FREE_BUF();
|
|
2416:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2417:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
2418:../../../Source/third_party/fatfs/src/ff.c **** fp->flag = mode; /* File access mode */
|
|
4707 .loc 1 2418 0
|
|
4708 00f6 A771 strb r7, [r4, #6]
|
|
2419:../../../Source/third_party/fatfs/src/ff.c **** fp->sclust = ld_clust(dj.fs, dir); /* File start cluster */
|
|
4709 .loc 1 2419 0
|
|
4710 00f8 059D ldr r5, [sp, #20]
|
|
4711 00fa 2846 mov r0, r5
|
|
4712 00fc 3146 mov r1, r6
|
|
4713 00fe FFF7FEFF bl ld_clust
|
|
4714 .LVL735:
|
|
4715 0102 2061 str r0, [r4, #16]
|
|
2420:../../../Source/third_party/fatfs/src/ff.c **** fp->fsize = LD_DWORD(dir+DIR_FileSize); /* File size */
|
|
4716 .loc 1 2420 0
|
|
4717 0104 F17F ldrb r1, [r6, #31] @ zero_extendqisi2
|
|
4718 0106 B27F ldrb r2, [r6, #30] @ zero_extendqisi2
|
|
4719 0108 1304 lsls r3, r2, #16
|
|
4720 010a 43EA0162 orr r2, r3, r1, lsl #24
|
|
4721 010e 337F ldrb r3, [r6, #28] @ zero_extendqisi2
|
|
4722 0110 1343 orrs r3, r3, r2
|
|
4723 0112 727F ldrb r2, [r6, #29] @ zero_extendqisi2
|
|
4724 0114 43EA0223 orr r3, r3, r2, lsl #8
|
|
4725 0118 E360 str r3, [r4, #12]
|
|
2421:../../../Source/third_party/fatfs/src/ff.c **** fp->fptr = 0; /* File pointer */
|
|
4726 .loc 1 2421 0
|
|
4727 011a 0020 movs r0, #0
|
|
4728 011c A060 str r0, [r4, #8]
|
|
2422:../../../Source/third_party/fatfs/src/ff.c **** fp->dsect = 0;
|
|
4729 .loc 1 2422 0
|
|
4730 011e A061 str r0, [r4, #24]
|
|
2423:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_FASTSEEK
|
|
2424:../../../Source/third_party/fatfs/src/ff.c **** fp->cltbl = 0; /* Normal seek mode */
|
|
2425:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2426:../../../Source/third_party/fatfs/src/ff.c **** fp->fs = dj.fs; fp->id = dj.fs->id; /* Validate file object */
|
|
4731 .loc 1 2426 0
|
|
4732 0120 2560 str r5, [r4]
|
|
4733 0122 EB88 ldrh r3, [r5, #6]
|
|
4734 0124 A380 strh r3, [r4, #4] @ movhi
|
|
4735 0126 27E0 b .L483
|
|
4736 .LVL736:
|
|
4737 .L475:
|
|
2320:../../../Source/third_party/fatfs/src/ff.c **** fp->fs = 0; /* Clear file object */
|
|
4738 .loc 1 2320 0
|
|
4739 0128 0920 movs r0, #9
|
|
4740 .LVL737:
|
|
4741 012a 25E0 b .L483
|
|
4742 .LVL738:
|
|
4743 .L476:
|
|
4744 012c 24E0 b .L483
|
|
4745 .LVL739:
|
|
4746 .L459:
|
|
2344:../../../Source/third_party/fatfs/src/ff.c **** DWORD dw, cl;
|
|
4747 .loc 1 2344 0
|
|
4748 012e 15F01C0F tst r5, #28
|
|
4749 0132 8AD1 bne .L468
|
|
4750 0134 0BE0 b .L464
|
|
4751 .LVL740:
|
|
4752 .L460:
|
|
4753 0136 15F01C0F tst r5, #28
|
|
4754 013a 10D1 bne .L480
|
|
2337:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_LOCK
|
|
4755 .loc 1 2337 0
|
|
4756 013c 0623 movs r3, #6
|
|
4757 013e 06E0 b .L464
|
|
4758 .LVL741:
|
|
4759 .L482:
|
|
2344:../../../Source/third_party/fatfs/src/ff.c **** DWORD dw, cl;
|
|
4760 .loc 1 2344 0
|
|
4761 0140 15F01C0F tst r5, #28
|
|
4762 0144 8DD1 bne .L470
|
|
4763 0146 0FE0 b .L484
|
|
4764 .L479:
|
|
2389:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4765 .loc 1 2389 0
|
|
4766 0148 0723 movs r3, #7
|
|
4767 014a 00E0 b .L464
|
|
4768 .L481:
|
|
2386:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
4769 .loc 1 2386 0
|
|
4770 014c 0423 movs r3, #4
|
|
4771 .LVL742:
|
|
4772 .L464:
|
|
2417:../../../Source/third_party/fatfs/src/ff.c **** fp->flag = mode; /* File access mode */
|
|
4773 .loc 1 2417 0
|
|
4774 014e 002B cmp r3, #0
|
|
4775 0150 D1D0 beq .L472
|
|
4776 0152 1846 mov r0, r3
|
|
4777 0154 10E0 b .L483
|
|
4778 .LVL743:
|
|
4779 .L466:
|
|
2394:../../../Source/third_party/fatfs/src/ff.c **** mode |= FA__WRITTEN;
|
|
4780 .loc 1 2394 0
|
|
4781 0156 17F0080F tst r7, #8
|
|
4782 015a C6D1 bne .L467
|
|
4783 015c C7E7 b .L473
|
|
4784 .LVL744:
|
|
4785 .L480:
|
|
2337:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_LOCK
|
|
4786 .loc 1 2337 0
|
|
4787 015e 0623 movs r3, #6
|
|
4788 .LVL745:
|
|
4789 .L462:
|
|
4790 .LBB68:
|
|
2354:../../../Source/third_party/fatfs/src/ff.c **** dir = dj.dir; /* New entry */
|
|
4791 .loc 1 2354 0
|
|
4792 0160 47F00807 orr r7, r7, #8
|
|
4793 .LVL746:
|
|
2355:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4794 .loc 1 2355 0
|
|
4795 0164 0A9E ldr r6, [sp, #40]
|
|
4796 0166 F2E7 b .L464
|
|
4797 .LVL747:
|
|
4798 .L484:
|
|
4799 .LBE68:
|
|
2385:../../../Source/third_party/fatfs/src/ff.c **** res = FR_NO_FILE;
|
|
4800 .loc 1 2385 0
|
|
4801 0168 F37A ldrb r3, [r6, #11] @ zero_extendqisi2
|
|
4802 016a 13F0100F tst r3, #16
|
|
4803 016e EDD1 bne .L481
|
|
4804 0170 B4E7 b .L485
|
|
4805 .L477:
|
|
4806 .LBB69:
|
|
2359:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
4807 .loc 1 2359 0
|
|
4808 0172 0720 movs r0, #7
|
|
4809 0174 00E0 b .L483
|
|
4810 .L478:
|
|
2362:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4811 .loc 1 2362 0
|
|
4812 0176 0820 movs r0, #8
|
|
4813 .LVL748:
|
|
4814 .L483:
|
|
4815 .LBE69:
|
|
2427:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2428:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2429:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2430:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(dj.fs, res);
|
|
2431:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4816 .loc 1 2431 0
|
|
4817 0178 0FB0 add sp, sp, #60
|
|
4818 .cfi_def_cfa_offset 28
|
|
4819 @ sp needed
|
|
4820 017a BDE8F083 pop {r4, r5, r6, r7, r8, r9, pc}
|
|
4821 .LVL749:
|
|
4822 .L488:
|
|
4823 017e 00BF .align 2
|
|
4824 .L487:
|
|
4825 0180 00000000 .word .LANCHOR4
|
|
4826 .cfi_endproc
|
|
4827 .LFE33:
|
|
4829 .section .text.f_read,"ax",%progbits
|
|
4830 .align 2
|
|
4831 .global f_read
|
|
4832 .thumb
|
|
4833 .thumb_func
|
|
4835 f_read:
|
|
4836 .LFB34:
|
|
2432:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2433:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2434:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2435:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2436:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2437:../../../Source/third_party/fatfs/src/ff.c **** /* Read File */
|
|
2438:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2439:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2440:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_read (
|
|
2441:../../../Source/third_party/fatfs/src/ff.c **** FIL *fp, /* Pointer to the file object */
|
|
2442:../../../Source/third_party/fatfs/src/ff.c **** void *buff, /* Pointer to data buffer */
|
|
2443:../../../Source/third_party/fatfs/src/ff.c **** UINT btr, /* Number of bytes to read */
|
|
2444:../../../Source/third_party/fatfs/src/ff.c **** UINT *br /* Pointer to number of bytes read */
|
|
2445:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
2446:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
4837 .loc 1 2446 0
|
|
4838 .cfi_startproc
|
|
4839 @ args = 0, pretend = 0, frame = 8
|
|
4840 @ frame_needed = 0, uses_anonymous_args = 0
|
|
4841 .LVL750:
|
|
4842 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
4843 .cfi_def_cfa_offset 36
|
|
4844 .cfi_offset 4, -36
|
|
4845 .cfi_offset 5, -32
|
|
4846 .cfi_offset 6, -28
|
|
4847 .cfi_offset 7, -24
|
|
4848 .cfi_offset 8, -20
|
|
4849 .cfi_offset 9, -16
|
|
4850 .cfi_offset 10, -12
|
|
4851 .cfi_offset 11, -8
|
|
4852 .cfi_offset 14, -4
|
|
4853 0004 83B0 sub sp, sp, #12
|
|
4854 .cfi_def_cfa_offset 48
|
|
4855 0006 0446 mov r4, r0
|
|
4856 0008 8946 mov r9, r1
|
|
4857 000a 1546 mov r5, r2
|
|
4858 000c 9846 mov r8, r3
|
|
4859 .LVL751:
|
|
2447:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
2448:../../../Source/third_party/fatfs/src/ff.c **** DWORD clst, sect, remain;
|
|
2449:../../../Source/third_party/fatfs/src/ff.c **** UINT rcnt, cc;
|
|
2450:../../../Source/third_party/fatfs/src/ff.c **** BYTE csect, *rbuff = (BYTE*)buff;
|
|
2451:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2452:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2453:../../../Source/third_party/fatfs/src/ff.c **** *br = 0; /* Clear read byte counter */
|
|
4860 .loc 1 2453 0
|
|
4861 000e 0023 movs r3, #0
|
|
4862 .LVL752:
|
|
4863 0010 C8F80030 str r3, [r8]
|
|
2454:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2455:../../../Source/third_party/fatfs/src/ff.c **** res = validate(fp); /* Check validity */
|
|
4864 .loc 1 2455 0
|
|
4865 0014 FFF7FEFF bl validate
|
|
4866 .LVL753:
|
|
2456:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) LEAVE_FF(fp->fs, res);
|
|
4867 .loc 1 2456 0
|
|
4868 0018 0028 cmp r0, #0
|
|
4869 001a 40F0B580 bne .L507
|
|
2457:../../../Source/third_party/fatfs/src/ff.c **** if (fp->flag & FA__ERROR) /* Aborted file? */
|
|
4870 .loc 1 2457 0
|
|
4871 001e A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
4872 0020 13F0800F tst r3, #128
|
|
4873 0024 40F0B180 bne .L508
|
|
2458:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(fp->fs, FR_INT_ERR);
|
|
2459:../../../Source/third_party/fatfs/src/ff.c **** if (!(fp->flag & FA_READ)) /* Check access mode */
|
|
4874 .loc 1 2459 0
|
|
4875 0028 13F0010F tst r3, #1
|
|
4876 002c 00F0AF80 beq .L509
|
|
2460:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(fp->fs, FR_DENIED);
|
|
2461:../../../Source/third_party/fatfs/src/ff.c **** remain = fp->fsize - fp->fptr;
|
|
4877 .loc 1 2461 0
|
|
4878 0030 E368 ldr r3, [r4, #12]
|
|
4879 0032 A668 ldr r6, [r4, #8]
|
|
4880 0034 9E1B subs r6, r3, r6
|
|
4881 .LVL754:
|
|
4882 0036 AE42 cmp r6, r5
|
|
4883 0038 28BF it cs
|
|
4884 003a 2E46 movcs r6, r5
|
|
4885 .LVL755:
|
|
2462:../../../Source/third_party/fatfs/src/ff.c **** if (btr > remain) btr = (UINT)remain; /* Truncate btr by remaining bytes */
|
|
2463:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2464:../../../Source/third_party/fatfs/src/ff.c **** for ( ; btr; /* Repeat until all data read */
|
|
4886 .loc 1 2464 0
|
|
4887 003c 002E cmp r6, #0
|
|
4888 003e 00F0A880 beq .L510
|
|
2465:../../../Source/third_party/fatfs/src/ff.c **** rbuff += rcnt, fp->fptr += rcnt, *br += rcnt, btr -= rcnt) {
|
|
2466:../../../Source/third_party/fatfs/src/ff.c **** if ((fp->fptr % SS(fp->fs)) == 0) { /* On the sector boundary? */
|
|
2467:../../../Source/third_party/fatfs/src/ff.c **** csect = (BYTE)(fp->fptr / SS(fp->fs) & (fp->fs->csize - 1)); /* Sector offset in the cluster */
|
|
2468:../../../Source/third_party/fatfs/src/ff.c **** if (!csect) { /* On the cluster boundary? */
|
|
2469:../../../Source/third_party/fatfs/src/ff.c **** if (fp->fptr == 0) { /* On the top of the file? */
|
|
2470:../../../Source/third_party/fatfs/src/ff.c **** clst = fp->sclust; /* Follow from the origin */
|
|
2471:../../../Source/third_party/fatfs/src/ff.c **** } else { /* Middle or end of the file */
|
|
2472:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_FASTSEEK
|
|
2473:../../../Source/third_party/fatfs/src/ff.c **** if (fp->cltbl)
|
|
2474:../../../Source/third_party/fatfs/src/ff.c **** clst = clmt_clust(fp, fp->fptr); /* Get cluster# from the CLMT */
|
|
2475:../../../Source/third_party/fatfs/src/ff.c **** else
|
|
2476:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2477:../../../Source/third_party/fatfs/src/ff.c **** clst = get_fat(fp->fs, fp->clust); /* Follow cluster chain on the FAT */
|
|
2478:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2479:../../../Source/third_party/fatfs/src/ff.c **** if (clst < 2) ABORT(fp->fs, FR_INT_ERR);
|
|
2480:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fp->fs, FR_DISK_ERR);
|
|
2481:../../../Source/third_party/fatfs/src/ff.c **** fp->clust = clst; /* Update current cluster */
|
|
2482:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2483:../../../Source/third_party/fatfs/src/ff.c **** sect = clust2sect(fp->fs, fp->clust); /* Get current sector */
|
|
2484:../../../Source/third_party/fatfs/src/ff.c **** if (!sect) ABORT(fp->fs, FR_INT_ERR);
|
|
2485:../../../Source/third_party/fatfs/src/ff.c **** sect += csect;
|
|
2486:../../../Source/third_party/fatfs/src/ff.c **** cc = btr / SS(fp->fs); /* When remaining bytes >= sector size, */
|
|
2487:../../../Source/third_party/fatfs/src/ff.c **** if (cc) { /* Read maximum contiguous sectors directly */
|
|
2488:../../../Source/third_party/fatfs/src/ff.c **** if (csect + cc > fp->fs->csize) /* Clip at cluster boundary */
|
|
2489:../../../Source/third_party/fatfs/src/ff.c **** cc = fp->fs->csize - csect;
|
|
2490:../../../Source/third_party/fatfs/src/ff.c **** if (disk_read(fp->fs->drv, rbuff, sect, (BYTE)cc) != RES_OK)
|
|
2491:../../../Source/third_party/fatfs/src/ff.c **** ABORT(fp->fs, FR_DISK_ERR);
|
|
2492:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY && _FS_MINIMIZE <= 2 /* Replace one of the read sectors with cached data if it
|
|
2493:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_TINY
|
|
2494:../../../Source/third_party/fatfs/src/ff.c **** if (fp->fs->wflag && fp->fs->winsect - sect < cc)
|
|
2495:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(rbuff + ((fp->fs->winsect - sect) * SS(fp->fs)), fp->fs->win, SS(fp->fs));
|
|
2496:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
2497:../../../Source/third_party/fatfs/src/ff.c **** if ((fp->flag & FA__DIRTY) && fp->dsect - sect < cc)
|
|
2498:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(rbuff + ((fp->dsect - sect) * SS(fp->fs)), fp->buf, SS(fp->fs));
|
|
2499:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2500:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2501:../../../Source/third_party/fatfs/src/ff.c **** rcnt = SS(fp->fs) * cc; /* Number of bytes transferred */
|
|
2502:../../../Source/third_party/fatfs/src/ff.c **** continue;
|
|
2503:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2504:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_TINY
|
|
2505:../../../Source/third_party/fatfs/src/ff.c **** if (fp->dsect != sect) { /* Load data sector if not in cache */
|
|
2506:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
2507:../../../Source/third_party/fatfs/src/ff.c **** if (fp->flag & FA__DIRTY) { /* Write-back dirty sector cache */
|
|
2508:../../../Source/third_party/fatfs/src/ff.c **** if (disk_write(fp->fs->drv, fp->buf, fp->dsect, 1) != RES_OK)
|
|
2509:../../../Source/third_party/fatfs/src/ff.c **** ABORT(fp->fs, FR_DISK_ERR);
|
|
2510:../../../Source/third_party/fatfs/src/ff.c **** fp->flag &= ~FA__DIRTY;
|
|
2511:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2512:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2513:../../../Source/third_party/fatfs/src/ff.c **** if (disk_read(fp->fs->drv, fp->buf, sect, 1) != RES_OK) /* Fill sector cache */
|
|
4889 .loc 1 2513 0
|
|
4890 0042 04F12403 add r3, r4, #36
|
|
4891 .LVL756:
|
|
4892 0046 0193 str r3, [sp, #4]
|
|
4893 .LVL757:
|
|
4894 .L511:
|
|
2466:../../../Source/third_party/fatfs/src/ff.c **** csect = (BYTE)(fp->fptr / SS(fp->fs) & (fp->fs->csize - 1)); /* Sector offset in the cluster */
|
|
4895 .loc 1 2466 0
|
|
4896 0048 A368 ldr r3, [r4, #8]
|
|
4897 004a C3F30802 ubfx r2, r3, #0, #9
|
|
4898 004e 002A cmp r2, #0
|
|
4899 0050 7ED1 bne .L491
|
|
2467:../../../Source/third_party/fatfs/src/ff.c **** if (!csect) { /* On the cluster boundary? */
|
|
4900 .loc 1 2467 0
|
|
4901 0052 2068 ldr r0, [r4]
|
|
4902 0054 8778 ldrb r7, [r0, #2] @ zero_extendqisi2
|
|
4903 0056 013F subs r7, r7, #1
|
|
4904 0058 07EA5327 and r7, r7, r3, lsr #9
|
|
4905 .LVL758:
|
|
2468:../../../Source/third_party/fatfs/src/ff.c **** if (fp->fptr == 0) { /* On the top of the file? */
|
|
4906 .loc 1 2468 0
|
|
4907 005c 17F0FF07 ands r7, r7, #255
|
|
4908 .LVL759:
|
|
4909 0060 17D1 bne .L492
|
|
2469:../../../Source/third_party/fatfs/src/ff.c **** clst = fp->sclust; /* Follow from the origin */
|
|
4910 .loc 1 2469 0
|
|
4911 0062 0BB9 cbnz r3, .L493
|
|
2470:../../../Source/third_party/fatfs/src/ff.c **** } else { /* Middle or end of the file */
|
|
4912 .loc 1 2470 0
|
|
4913 0064 2069 ldr r0, [r4, #16]
|
|
4914 .LVL760:
|
|
4915 0066 02E0 b .L494
|
|
4916 .LVL761:
|
|
4917 .L493:
|
|
2477:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4918 .loc 1 2477 0
|
|
4919 0068 6169 ldr r1, [r4, #20]
|
|
4920 006a FFF7FEFF bl get_fat
|
|
4921 .LVL762:
|
|
4922 .L494:
|
|
2479:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fp->fs, FR_DISK_ERR);
|
|
4923 .loc 1 2479 0
|
|
4924 006e 0128 cmp r0, #1
|
|
4925 0070 05D8 bhi .L495
|
|
2479:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fp->fs, FR_DISK_ERR);
|
|
4926 .loc 1 2479 0 is_stmt 0 discriminator 1
|
|
4927 0072 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
4928 0074 63F07F03 orn r3, r3, #127
|
|
4929 0078 A371 strb r3, [r4, #6]
|
|
4930 007a 0220 movs r0, #2
|
|
4931 .LVL763:
|
|
4932 007c 8AE0 b .L490
|
|
4933 .LVL764:
|
|
4934 .L495:
|
|
2480:../../../Source/third_party/fatfs/src/ff.c **** fp->clust = clst; /* Update current cluster */
|
|
4935 .loc 1 2480 0 is_stmt 1
|
|
4936 007e B0F1FF3F cmp r0, #-1
|
|
4937 0082 05D1 bne .L496
|
|
2480:../../../Source/third_party/fatfs/src/ff.c **** fp->clust = clst; /* Update current cluster */
|
|
4938 .loc 1 2480 0 is_stmt 0 discriminator 1
|
|
4939 0084 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
4940 0086 63F07F03 orn r3, r3, #127
|
|
4941 008a A371 strb r3, [r4, #6]
|
|
4942 008c 0120 movs r0, #1
|
|
4943 .LVL765:
|
|
4944 008e 81E0 b .L490
|
|
4945 .LVL766:
|
|
4946 .L496:
|
|
2481:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4947 .loc 1 2481 0 is_stmt 1
|
|
4948 0090 6061 str r0, [r4, #20]
|
|
4949 .LVL767:
|
|
4950 .L492:
|
|
2483:../../../Source/third_party/fatfs/src/ff.c **** if (!sect) ABORT(fp->fs, FR_INT_ERR);
|
|
4951 .loc 1 2483 0
|
|
4952 0092 D4F800B0 ldr fp, [r4]
|
|
4953 0096 5846 mov r0, fp
|
|
4954 0098 6169 ldr r1, [r4, #20]
|
|
4955 009a FFF7FEFF bl clust2sect
|
|
4956 .LVL768:
|
|
2484:../../../Source/third_party/fatfs/src/ff.c **** sect += csect;
|
|
4957 .loc 1 2484 0
|
|
4958 009e 8246 mov r10, r0
|
|
4959 00a0 28B9 cbnz r0, .L497
|
|
2484:../../../Source/third_party/fatfs/src/ff.c **** sect += csect;
|
|
4960 .loc 1 2484 0 is_stmt 0 discriminator 1
|
|
4961 00a2 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
4962 00a4 63F07F03 orn r3, r3, #127
|
|
4963 00a8 A371 strb r3, [r4, #6]
|
|
4964 00aa 0220 movs r0, #2
|
|
4965 .LVL769:
|
|
4966 00ac 72E0 b .L490
|
|
4967 .LVL770:
|
|
4968 .L497:
|
|
2485:../../../Source/third_party/fatfs/src/ff.c **** cc = btr / SS(fp->fs); /* When remaining bytes >= sector size, */
|
|
4969 .loc 1 2485 0 is_stmt 1
|
|
4970 00ae BA44 add r10, r10, r7
|
|
4971 .LVL771:
|
|
2487:../../../Source/third_party/fatfs/src/ff.c **** if (csect + cc > fp->fs->csize) /* Clip at cluster boundary */
|
|
4972 .loc 1 2487 0
|
|
4973 00b0 750A lsrs r5, r6, #9
|
|
4974 .LVL772:
|
|
4975 00b2 25D0 beq .L498
|
|
2488:../../../Source/third_party/fatfs/src/ff.c **** cc = fp->fs->csize - csect;
|
|
4976 .loc 1 2488 0
|
|
4977 00b4 9BF80230 ldrb r3, [fp, #2] @ zero_extendqisi2
|
|
4978 00b8 EA19 adds r2, r5, r7
|
|
4979 00ba 9A42 cmp r2, r3
|
|
2489:../../../Source/third_party/fatfs/src/ff.c **** if (disk_read(fp->fs->drv, rbuff, sect, (BYTE)cc) != RES_OK)
|
|
4980 .loc 1 2489 0
|
|
4981 00bc 88BF it hi
|
|
4982 00be DD1B subhi r5, r3, r7
|
|
4983 .LVL773:
|
|
2490:../../../Source/third_party/fatfs/src/ff.c **** ABORT(fp->fs, FR_DISK_ERR);
|
|
4984 .loc 1 2490 0
|
|
4985 00c0 9BF80100 ldrb r0, [fp, #1] @ zero_extendqisi2
|
|
4986 00c4 4946 mov r1, r9
|
|
4987 00c6 5246 mov r2, r10
|
|
4988 00c8 EBB2 uxtb r3, r5
|
|
4989 00ca FFF7FEFF bl disk_read
|
|
4990 .LVL774:
|
|
4991 00ce 28B1 cbz r0, .L500
|
|
2491:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY && _FS_MINIMIZE <= 2 /* Replace one of the read sectors with cached data if it
|
|
4992 .loc 1 2491 0
|
|
4993 00d0 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
4994 00d2 63F07F03 orn r3, r3, #127
|
|
4995 00d6 A371 strb r3, [r4, #6]
|
|
4996 00d8 0120 movs r0, #1
|
|
4997 00da 5BE0 b .L490
|
|
4998 .L500:
|
|
2497:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(rbuff + ((fp->dsect - sect) * SS(fp->fs)), fp->buf, SS(fp->fs));
|
|
4999 .loc 1 2497 0
|
|
5000 00dc A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5001 00de 13F0400F tst r3, #64
|
|
5002 00e2 0BD0 beq .L501
|
|
2497:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(rbuff + ((fp->dsect - sect) * SS(fp->fs)), fp->buf, SS(fp->fs));
|
|
5003 .loc 1 2497 0 is_stmt 0 discriminator 1
|
|
5004 00e4 A069 ldr r0, [r4, #24]
|
|
5005 00e6 CAEB0000 rsb r0, r10, r0
|
|
5006 00ea 8542 cmp r5, r0
|
|
5007 00ec 06D9 bls .L501
|
|
2498:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
5008 .loc 1 2498 0 is_stmt 1
|
|
5009 00ee 09EB4020 add r0, r9, r0, lsl #9
|
|
5010 00f2 0199 ldr r1, [sp, #4]
|
|
5011 00f4 4FF40072 mov r2, #512
|
|
5012 00f8 FFF7FEFF bl mem_cpy
|
|
5013 .LVL775:
|
|
5014 .L501:
|
|
2501:../../../Source/third_party/fatfs/src/ff.c **** continue;
|
|
5015 .loc 1 2501 0
|
|
5016 00fc 6D02 lsls r5, r5, #9
|
|
5017 .LVL776:
|
|
2502:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
5018 .loc 1 2502 0
|
|
5019 00fe 35E0 b .L502
|
|
5020 .LVL777:
|
|
5021 .L498:
|
|
2505:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
5022 .loc 1 2505 0
|
|
5023 0100 A269 ldr r2, [r4, #24]
|
|
5024 0102 5245 cmp r2, r10
|
|
5025 0104 22D0 beq .L503
|
|
2507:../../../Source/third_party/fatfs/src/ff.c **** if (disk_write(fp->fs->drv, fp->buf, fp->dsect, 1) != RES_OK)
|
|
5026 .loc 1 2507 0
|
|
5027 0106 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5028 0108 13F0400F tst r3, #64
|
|
5029 010c 10D0 beq .L504
|
|
2508:../../../Source/third_party/fatfs/src/ff.c **** ABORT(fp->fs, FR_DISK_ERR);
|
|
5030 .loc 1 2508 0
|
|
5031 010e 9BF80100 ldrb r0, [fp, #1] @ zero_extendqisi2
|
|
5032 0112 0199 ldr r1, [sp, #4]
|
|
5033 0114 0123 movs r3, #1
|
|
5034 0116 FFF7FEFF bl disk_write
|
|
5035 .LVL778:
|
|
5036 011a 28B1 cbz r0, .L505
|
|
2509:../../../Source/third_party/fatfs/src/ff.c **** fp->flag &= ~FA__DIRTY;
|
|
5037 .loc 1 2509 0
|
|
5038 011c A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5039 011e 63F07F03 orn r3, r3, #127
|
|
5040 0122 A371 strb r3, [r4, #6]
|
|
5041 0124 0120 movs r0, #1
|
|
5042 0126 35E0 b .L490
|
|
5043 .L505:
|
|
2510:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
5044 .loc 1 2510 0
|
|
5045 0128 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5046 012a 23F04003 bic r3, r3, #64
|
|
5047 012e A371 strb r3, [r4, #6]
|
|
5048 .L504:
|
|
5049 .loc 1 2513 0
|
|
5050 0130 2368 ldr r3, [r4]
|
|
5051 0132 5878 ldrb r0, [r3, #1] @ zero_extendqisi2
|
|
5052 0134 0199 ldr r1, [sp, #4]
|
|
5053 0136 5246 mov r2, r10
|
|
5054 0138 0123 movs r3, #1
|
|
5055 013a FFF7FEFF bl disk_read
|
|
5056 .LVL779:
|
|
5057 013e 28B1 cbz r0, .L503
|
|
2514:../../../Source/third_party/fatfs/src/ff.c **** ABORT(fp->fs, FR_DISK_ERR);
|
|
5058 .loc 1 2514 0
|
|
5059 0140 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5060 0142 63F07F03 orn r3, r3, #127
|
|
5061 0146 A371 strb r3, [r4, #6]
|
|
5062 0148 0120 movs r0, #1
|
|
5063 014a 23E0 b .L490
|
|
5064 .L503:
|
|
2515:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2516:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2517:../../../Source/third_party/fatfs/src/ff.c **** fp->dsect = sect;
|
|
5065 .loc 1 2517 0
|
|
5066 014c C4F818A0 str r10, [r4, #24]
|
|
5067 .LVL780:
|
|
5068 .L491:
|
|
2518:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2519:../../../Source/third_party/fatfs/src/ff.c **** rcnt = SS(fp->fs) - ((UINT)fp->fptr % SS(fp->fs)); /* Get partial sector data from sector buffer
|
|
5069 .loc 1 2519 0
|
|
5070 0150 A168 ldr r1, [r4, #8]
|
|
5071 0152 C1F30801 ubfx r1, r1, #0, #9
|
|
5072 0156 C1F50075 rsb r5, r1, #512
|
|
5073 .LVL781:
|
|
5074 015a B542 cmp r5, r6
|
|
5075 015c 28BF it cs
|
|
5076 015e 3546 movcs r5, r6
|
|
5077 .LVL782:
|
|
2520:../../../Source/third_party/fatfs/src/ff.c **** if (rcnt > btr) rcnt = btr;
|
|
2521:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_TINY
|
|
2522:../../../Source/third_party/fatfs/src/ff.c **** if (move_window(fp->fs, fp->dsect)) /* Move sector window */
|
|
2523:../../../Source/third_party/fatfs/src/ff.c **** ABORT(fp->fs, FR_DISK_ERR);
|
|
2524:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(rbuff, &fp->fs->win[fp->fptr % SS(fp->fs)], rcnt); /* Pick partial sector */
|
|
2525:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
2526:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(rbuff, &fp->buf[fp->fptr % SS(fp->fs)], rcnt); /* Pick partial sector */
|
|
5078 .loc 1 2526 0
|
|
5079 0160 2144 add r1, r1, r4
|
|
5080 0162 4846 mov r0, r9
|
|
5081 0164 2431 adds r1, r1, #36
|
|
5082 0166 2A46 mov r2, r5
|
|
5083 0168 FFF7FEFF bl mem_cpy
|
|
5084 .LVL783:
|
|
5085 .L502:
|
|
2465:../../../Source/third_party/fatfs/src/ff.c **** if ((fp->fptr % SS(fp->fs)) == 0) { /* On the sector boundary? */
|
|
5086 .loc 1 2465 0
|
|
5087 016c A944 add r9, r9, r5
|
|
5088 .LVL784:
|
|
5089 016e A368 ldr r3, [r4, #8]
|
|
5090 0170 2B44 add r3, r3, r5
|
|
5091 0172 A360 str r3, [r4, #8]
|
|
5092 0174 D8F80030 ldr r3, [r8]
|
|
5093 0178 2B44 add r3, r3, r5
|
|
5094 017a C8F80030 str r3, [r8]
|
|
5095 .LVL785:
|
|
2464:../../../Source/third_party/fatfs/src/ff.c **** rbuff += rcnt, fp->fptr += rcnt, *br += rcnt, btr -= rcnt) {
|
|
5096 .loc 1 2464 0
|
|
5097 017e 761B subs r6, r6, r5
|
|
5098 .LVL786:
|
|
5099 0180 7FF462AF bne .L511
|
|
2527:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2528:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2529:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2530:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(fp->fs, FR_OK);
|
|
5100 .loc 1 2530 0
|
|
5101 0184 0020 movs r0, #0
|
|
5102 0186 05E0 b .L490
|
|
5103 .LVL787:
|
|
5104 .L507:
|
|
5105 0188 04E0 b .L490
|
|
5106 .L508:
|
|
2458:../../../Source/third_party/fatfs/src/ff.c **** if (!(fp->flag & FA_READ)) /* Check access mode */
|
|
5107 .loc 1 2458 0
|
|
5108 018a 0220 movs r0, #2
|
|
5109 .LVL788:
|
|
5110 018c 02E0 b .L490
|
|
5111 .LVL789:
|
|
5112 .L509:
|
|
2460:../../../Source/third_party/fatfs/src/ff.c **** remain = fp->fsize - fp->fptr;
|
|
5113 .loc 1 2460 0
|
|
5114 018e 0720 movs r0, #7
|
|
5115 .LVL790:
|
|
5116 0190 00E0 b .L490
|
|
5117 .LVL791:
|
|
5118 .L510:
|
|
5119 .loc 1 2530 0
|
|
5120 0192 0020 movs r0, #0
|
|
5121 .LVL792:
|
|
5122 .L490:
|
|
2531:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
5123 .loc 1 2531 0
|
|
5124 0194 03B0 add sp, sp, #12
|
|
5125 .cfi_def_cfa_offset 36
|
|
5126 @ sp needed
|
|
5127 0196 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
5128 .cfi_endproc
|
|
5129 .LFE34:
|
|
5131 019a 00BF .section .text.f_write,"ax",%progbits
|
|
5132 .align 2
|
|
5133 .global f_write
|
|
5134 .thumb
|
|
5135 .thumb_func
|
|
5137 f_write:
|
|
5138 .LFB35:
|
|
2532:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2533:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2534:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2535:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2536:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
2537:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2538:../../../Source/third_party/fatfs/src/ff.c **** /* Write File */
|
|
2539:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2540:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2541:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_write (
|
|
2542:../../../Source/third_party/fatfs/src/ff.c **** FIL *fp, /* Pointer to the file object */
|
|
2543:../../../Source/third_party/fatfs/src/ff.c **** const void *buff, /* Pointer to the data to be written */
|
|
2544:../../../Source/third_party/fatfs/src/ff.c **** UINT btw, /* Number of bytes to write */
|
|
2545:../../../Source/third_party/fatfs/src/ff.c **** UINT *bw /* Pointer to number of bytes written */
|
|
2546:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
2547:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
5139 .loc 1 2547 0
|
|
5140 .cfi_startproc
|
|
5141 @ args = 0, pretend = 0, frame = 8
|
|
5142 @ frame_needed = 0, uses_anonymous_args = 0
|
|
5143 .LVL793:
|
|
5144 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
5145 .cfi_def_cfa_offset 36
|
|
5146 .cfi_offset 4, -36
|
|
5147 .cfi_offset 5, -32
|
|
5148 .cfi_offset 6, -28
|
|
5149 .cfi_offset 7, -24
|
|
5150 .cfi_offset 8, -20
|
|
5151 .cfi_offset 9, -16
|
|
5152 .cfi_offset 10, -12
|
|
5153 .cfi_offset 11, -8
|
|
5154 .cfi_offset 14, -4
|
|
5155 0004 83B0 sub sp, sp, #12
|
|
5156 .cfi_def_cfa_offset 48
|
|
5157 0006 0446 mov r4, r0
|
|
5158 0008 8946 mov r9, r1
|
|
5159 000a 1646 mov r6, r2
|
|
5160 000c 9846 mov r8, r3
|
|
5161 .LVL794:
|
|
2548:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
2549:../../../Source/third_party/fatfs/src/ff.c **** DWORD clst, sect;
|
|
2550:../../../Source/third_party/fatfs/src/ff.c **** UINT wcnt, cc;
|
|
2551:../../../Source/third_party/fatfs/src/ff.c **** const BYTE *wbuff = (const BYTE*)buff;
|
|
2552:../../../Source/third_party/fatfs/src/ff.c **** BYTE csect;
|
|
2553:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2554:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2555:../../../Source/third_party/fatfs/src/ff.c **** *bw = 0; /* Clear write byte counter */
|
|
5162 .loc 1 2555 0
|
|
5163 000e 0023 movs r3, #0
|
|
5164 .LVL795:
|
|
5165 0010 C8F80030 str r3, [r8]
|
|
2556:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2557:../../../Source/third_party/fatfs/src/ff.c **** res = validate(fp); /* Check validity */
|
|
5166 .loc 1 2557 0
|
|
5167 0014 FFF7FEFF bl validate
|
|
5168 .LVL796:
|
|
2558:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) LEAVE_FF(fp->fs, res);
|
|
5169 .loc 1 2558 0
|
|
5170 0018 0028 cmp r0, #0
|
|
5171 001a 40F0D080 bne .L535
|
|
2559:../../../Source/third_party/fatfs/src/ff.c **** if (fp->flag & FA__ERROR) /* Aborted file? */
|
|
5172 .loc 1 2559 0
|
|
5173 001e A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5174 0020 13F0800F tst r3, #128
|
|
5175 0024 40F0CC80 bne .L536
|
|
2560:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(fp->fs, FR_INT_ERR);
|
|
2561:../../../Source/third_party/fatfs/src/ff.c **** if (!(fp->flag & FA_WRITE)) /* Check access mode */
|
|
5176 .loc 1 2561 0
|
|
5177 0028 13F0020F tst r3, #2
|
|
5178 002c 00F0CA80 beq .L537
|
|
2562:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(fp->fs, FR_DENIED);
|
|
2563:../../../Source/third_party/fatfs/src/ff.c **** if ((DWORD)(fp->fsize + btw) < fp->fsize) btw = 0; /* File size cannot reach 4GB */
|
|
5179 .loc 1 2563 0
|
|
5180 0030 E368 ldr r3, [r4, #12]
|
|
5181 0032 DE42 cmn r6, r3
|
|
5182 0034 80F0B880 bcs .L516
|
|
2564:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2565:../../../Source/third_party/fatfs/src/ff.c **** for ( ; btw; /* Repeat until all data written */
|
|
5183 .loc 1 2565 0
|
|
5184 0038 002E cmp r6, #0
|
|
5185 003a 00F0B580 beq .L516
|
|
2566:../../../Source/third_party/fatfs/src/ff.c **** wbuff += wcnt, fp->fptr += wcnt, *bw += wcnt, btw -= wcnt) {
|
|
2567:../../../Source/third_party/fatfs/src/ff.c **** if ((fp->fptr % SS(fp->fs)) == 0) { /* On the sector boundary? */
|
|
2568:../../../Source/third_party/fatfs/src/ff.c **** csect = (BYTE)(fp->fptr / SS(fp->fs) & (fp->fs->csize - 1)); /* Sector offset in the cluster */
|
|
2569:../../../Source/third_party/fatfs/src/ff.c **** if (!csect) { /* On the cluster boundary? */
|
|
2570:../../../Source/third_party/fatfs/src/ff.c **** if (fp->fptr == 0) { /* On the top of the file? */
|
|
2571:../../../Source/third_party/fatfs/src/ff.c **** clst = fp->sclust; /* Follow from the origin */
|
|
2572:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0) /* When no cluster is allocated, */
|
|
2573:../../../Source/third_party/fatfs/src/ff.c **** fp->sclust = clst = create_chain(fp->fs, 0); /* Create a new cluster chain */
|
|
2574:../../../Source/third_party/fatfs/src/ff.c **** } else { /* Middle or end of the file */
|
|
2575:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_FASTSEEK
|
|
2576:../../../Source/third_party/fatfs/src/ff.c **** if (fp->cltbl)
|
|
2577:../../../Source/third_party/fatfs/src/ff.c **** clst = clmt_clust(fp, fp->fptr); /* Get cluster# from the CLMT */
|
|
2578:../../../Source/third_party/fatfs/src/ff.c **** else
|
|
2579:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2580:../../../Source/third_party/fatfs/src/ff.c **** clst = create_chain(fp->fs, fp->clust); /* Follow or stretch cluster chain on the FAT */
|
|
2581:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2582:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0) break; /* Could not allocate a new cluster (disk full) */
|
|
2583:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 1) ABORT(fp->fs, FR_INT_ERR);
|
|
2584:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fp->fs, FR_DISK_ERR);
|
|
2585:../../../Source/third_party/fatfs/src/ff.c **** fp->clust = clst; /* Update current cluster */
|
|
2586:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2587:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_TINY
|
|
2588:../../../Source/third_party/fatfs/src/ff.c **** if (fp->fs->winsect == fp->dsect && sync_window(fp->fs)) /* Write-back sector cache */
|
|
2589:../../../Source/third_party/fatfs/src/ff.c **** ABORT(fp->fs, FR_DISK_ERR);
|
|
2590:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
2591:../../../Source/third_party/fatfs/src/ff.c **** if (fp->flag & FA__DIRTY) { /* Write-back sector cache */
|
|
2592:../../../Source/third_party/fatfs/src/ff.c **** if (disk_write(fp->fs->drv, fp->buf, fp->dsect, 1) != RES_OK)
|
|
2593:../../../Source/third_party/fatfs/src/ff.c **** ABORT(fp->fs, FR_DISK_ERR);
|
|
2594:../../../Source/third_party/fatfs/src/ff.c **** fp->flag &= ~FA__DIRTY;
|
|
2595:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2596:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2597:../../../Source/third_party/fatfs/src/ff.c **** sect = clust2sect(fp->fs, fp->clust); /* Get current sector */
|
|
2598:../../../Source/third_party/fatfs/src/ff.c **** if (!sect) ABORT(fp->fs, FR_INT_ERR);
|
|
2599:../../../Source/third_party/fatfs/src/ff.c **** sect += csect;
|
|
2600:../../../Source/third_party/fatfs/src/ff.c **** cc = btw / SS(fp->fs); /* When remaining bytes >= sector size, */
|
|
2601:../../../Source/third_party/fatfs/src/ff.c **** if (cc) { /* Write maximum contiguous sectors directly */
|
|
2602:../../../Source/third_party/fatfs/src/ff.c **** if (csect + cc > fp->fs->csize) /* Clip at cluster boundary */
|
|
2603:../../../Source/third_party/fatfs/src/ff.c **** cc = fp->fs->csize - csect;
|
|
2604:../../../Source/third_party/fatfs/src/ff.c **** if (disk_write(fp->fs->drv, wbuff, sect, (BYTE)cc) != RES_OK)
|
|
2605:../../../Source/third_party/fatfs/src/ff.c **** ABORT(fp->fs, FR_DISK_ERR);
|
|
2606:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_TINY
|
|
2607:../../../Source/third_party/fatfs/src/ff.c **** if (fp->fs->winsect - sect < cc) { /* Refill sector cache if it gets invalidated by the direct
|
|
2608:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(fp->fs->win, wbuff + ((fp->fs->winsect - sect) * SS(fp->fs)), SS(fp->fs));
|
|
2609:../../../Source/third_party/fatfs/src/ff.c **** fp->fs->wflag = 0;
|
|
2610:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2611:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
2612:../../../Source/third_party/fatfs/src/ff.c **** if (fp->dsect - sect < cc) { /* Refill sector cache if it gets invalidated by the direct write
|
|
2613:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(fp->buf, wbuff + ((fp->dsect - sect) * SS(fp->fs)), SS(fp->fs));
|
|
2614:../../../Source/third_party/fatfs/src/ff.c **** fp->flag &= ~FA__DIRTY;
|
|
2615:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2616:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2617:../../../Source/third_party/fatfs/src/ff.c **** wcnt = SS(fp->fs) * cc; /* Number of bytes transferred */
|
|
2618:../../../Source/third_party/fatfs/src/ff.c **** continue;
|
|
2619:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2620:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_TINY
|
|
2621:../../../Source/third_party/fatfs/src/ff.c **** if (fp->fptr >= fp->fsize) { /* Avoid silly cache filling at growing edge */
|
|
2622:../../../Source/third_party/fatfs/src/ff.c **** if (sync_window(fp->fs)) ABORT(fp->fs, FR_DISK_ERR);
|
|
2623:../../../Source/third_party/fatfs/src/ff.c **** fp->fs->winsect = sect;
|
|
2624:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2625:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
2626:../../../Source/third_party/fatfs/src/ff.c **** if (fp->dsect != sect) { /* Fill sector cache with file data */
|
|
2627:../../../Source/third_party/fatfs/src/ff.c **** if (fp->fptr < fp->fsize &&
|
|
2628:../../../Source/third_party/fatfs/src/ff.c **** disk_read(fp->fs->drv, fp->buf, sect, 1) != RES_OK)
|
|
5186 .loc 1 2628 0
|
|
5187 003e 04F12403 add r3, r4, #36
|
|
5188 0042 0193 str r3, [sp, #4]
|
|
5189 .LVL797:
|
|
5190 .L538:
|
|
2567:../../../Source/third_party/fatfs/src/ff.c **** csect = (BYTE)(fp->fptr / SS(fp->fs) & (fp->fs->csize - 1)); /* Sector offset in the cluster */
|
|
5191 .loc 1 2567 0
|
|
5192 0044 A368 ldr r3, [r4, #8]
|
|
5193 0046 C3F30802 ubfx r2, r3, #0, #9
|
|
5194 004a 002A cmp r2, #0
|
|
5195 004c 40F08E80 bne .L517
|
|
2568:../../../Source/third_party/fatfs/src/ff.c **** if (!csect) { /* On the cluster boundary? */
|
|
5196 .loc 1 2568 0
|
|
5197 0050 2068 ldr r0, [r4]
|
|
5198 0052 8778 ldrb r7, [r0, #2] @ zero_extendqisi2
|
|
5199 0054 013F subs r7, r7, #1
|
|
5200 0056 07EA5327 and r7, r7, r3, lsr #9
|
|
5201 .LVL798:
|
|
2569:../../../Source/third_party/fatfs/src/ff.c **** if (fp->fptr == 0) { /* On the top of the file? */
|
|
5202 .loc 1 2569 0
|
|
5203 005a 17F0FF07 ands r7, r7, #255
|
|
5204 .LVL799:
|
|
5205 005e 21D1 bne .L518
|
|
2570:../../../Source/third_party/fatfs/src/ff.c **** clst = fp->sclust; /* Follow from the origin */
|
|
5206 .loc 1 2570 0
|
|
5207 0060 3BB9 cbnz r3, .L519
|
|
2571:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0) /* When no cluster is allocated, */
|
|
5208 .loc 1 2571 0
|
|
5209 0062 2369 ldr r3, [r4, #16]
|
|
5210 .LVL800:
|
|
2572:../../../Source/third_party/fatfs/src/ff.c **** fp->sclust = clst = create_chain(fp->fs, 0); /* Create a new cluster chain */
|
|
5211 .loc 1 2572 0
|
|
5212 0064 63B9 cbnz r3, .L520
|
|
2573:../../../Source/third_party/fatfs/src/ff.c **** } else { /* Middle or end of the file */
|
|
5213 .loc 1 2573 0
|
|
5214 0066 0021 movs r1, #0
|
|
5215 0068 FFF7FEFF bl create_chain
|
|
5216 .LVL801:
|
|
5217 006c 0346 mov r3, r0
|
|
5218 .LVL802:
|
|
5219 006e 2061 str r0, [r4, #16]
|
|
5220 0070 03E0 b .L521
|
|
5221 .LVL803:
|
|
5222 .L519:
|
|
2580:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
5223 .loc 1 2580 0
|
|
5224 0072 6169 ldr r1, [r4, #20]
|
|
5225 0074 FFF7FEFF bl create_chain
|
|
5226 .LVL804:
|
|
5227 0078 0346 mov r3, r0
|
|
5228 .LVL805:
|
|
5229 .L521:
|
|
2582:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 1) ABORT(fp->fs, FR_INT_ERR);
|
|
5230 .loc 1 2582 0
|
|
5231 007a 002B cmp r3, #0
|
|
5232 007c 00F09480 beq .L516
|
|
5233 .LVL806:
|
|
5234 .L520:
|
|
2583:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fp->fs, FR_DISK_ERR);
|
|
5235 .loc 1 2583 0
|
|
5236 0080 012B cmp r3, #1
|
|
5237 0082 05D1 bne .L522
|
|
2583:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fp->fs, FR_DISK_ERR);
|
|
5238 .loc 1 2583 0 is_stmt 0 discriminator 1
|
|
5239 0084 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5240 .LVL807:
|
|
5241 0086 63F07F03 orn r3, r3, #127
|
|
5242 008a A371 strb r3, [r4, #6]
|
|
5243 008c 0220 movs r0, #2
|
|
5244 008e 9AE0 b .L515
|
|
5245 .LVL808:
|
|
5246 .L522:
|
|
2584:../../../Source/third_party/fatfs/src/ff.c **** fp->clust = clst; /* Update current cluster */
|
|
5247 .loc 1 2584 0 is_stmt 1
|
|
5248 0090 B3F1FF3F cmp r3, #-1
|
|
5249 0094 05D1 bne .L523
|
|
2584:../../../Source/third_party/fatfs/src/ff.c **** fp->clust = clst; /* Update current cluster */
|
|
5250 .loc 1 2584 0 is_stmt 0 discriminator 1
|
|
5251 0096 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5252 .LVL809:
|
|
5253 0098 63F07F03 orn r3, r3, #127
|
|
5254 009c A371 strb r3, [r4, #6]
|
|
5255 009e 0120 movs r0, #1
|
|
5256 00a0 91E0 b .L515
|
|
5257 .LVL810:
|
|
5258 .L523:
|
|
2585:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
5259 .loc 1 2585 0 is_stmt 1
|
|
5260 00a2 6361 str r3, [r4, #20]
|
|
5261 .LVL811:
|
|
5262 .L518:
|
|
2591:../../../Source/third_party/fatfs/src/ff.c **** if (disk_write(fp->fs->drv, fp->buf, fp->dsect, 1) != RES_OK)
|
|
5263 .loc 1 2591 0
|
|
5264 00a4 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5265 00a6 13F0400F tst r3, #64
|
|
5266 00aa 11D0 beq .L524
|
|
2592:../../../Source/third_party/fatfs/src/ff.c **** ABORT(fp->fs, FR_DISK_ERR);
|
|
5267 .loc 1 2592 0
|
|
5268 00ac 2368 ldr r3, [r4]
|
|
5269 00ae 5878 ldrb r0, [r3, #1] @ zero_extendqisi2
|
|
5270 00b0 0199 ldr r1, [sp, #4]
|
|
5271 00b2 A269 ldr r2, [r4, #24]
|
|
5272 00b4 0123 movs r3, #1
|
|
5273 00b6 FFF7FEFF bl disk_write
|
|
5274 .LVL812:
|
|
5275 00ba 28B1 cbz r0, .L525
|
|
2593:../../../Source/third_party/fatfs/src/ff.c **** fp->flag &= ~FA__DIRTY;
|
|
5276 .loc 1 2593 0
|
|
5277 00bc A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5278 00be 63F07F03 orn r3, r3, #127
|
|
5279 00c2 A371 strb r3, [r4, #6]
|
|
5280 00c4 0120 movs r0, #1
|
|
5281 00c6 7EE0 b .L515
|
|
5282 .L525:
|
|
2594:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
5283 .loc 1 2594 0
|
|
5284 00c8 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5285 00ca 23F04003 bic r3, r3, #64
|
|
5286 00ce A371 strb r3, [r4, #6]
|
|
5287 .L524:
|
|
2597:../../../Source/third_party/fatfs/src/ff.c **** if (!sect) ABORT(fp->fs, FR_INT_ERR);
|
|
5288 .loc 1 2597 0
|
|
5289 00d0 D4F800B0 ldr fp, [r4]
|
|
5290 00d4 5846 mov r0, fp
|
|
5291 00d6 6169 ldr r1, [r4, #20]
|
|
5292 00d8 FFF7FEFF bl clust2sect
|
|
5293 .LVL813:
|
|
2598:../../../Source/third_party/fatfs/src/ff.c **** sect += csect;
|
|
5294 .loc 1 2598 0
|
|
5295 00dc 8246 mov r10, r0
|
|
5296 00de 28B9 cbnz r0, .L526
|
|
2598:../../../Source/third_party/fatfs/src/ff.c **** sect += csect;
|
|
5297 .loc 1 2598 0 is_stmt 0 discriminator 1
|
|
5298 00e0 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5299 00e2 63F07F03 orn r3, r3, #127
|
|
5300 00e6 A371 strb r3, [r4, #6]
|
|
5301 00e8 0220 movs r0, #2
|
|
5302 .LVL814:
|
|
5303 00ea 6CE0 b .L515
|
|
5304 .LVL815:
|
|
5305 .L526:
|
|
2599:../../../Source/third_party/fatfs/src/ff.c **** cc = btw / SS(fp->fs); /* When remaining bytes >= sector size, */
|
|
5306 .loc 1 2599 0 is_stmt 1
|
|
5307 00ec BA44 add r10, r10, r7
|
|
5308 .LVL816:
|
|
2601:../../../Source/third_party/fatfs/src/ff.c **** if (csect + cc > fp->fs->csize) /* Clip at cluster boundary */
|
|
5309 .loc 1 2601 0
|
|
5310 00ee 750A lsrs r5, r6, #9
|
|
5311 .LVL817:
|
|
5312 00f0 25D0 beq .L527
|
|
2602:../../../Source/third_party/fatfs/src/ff.c **** cc = fp->fs->csize - csect;
|
|
5313 .loc 1 2602 0
|
|
5314 00f2 9BF80230 ldrb r3, [fp, #2] @ zero_extendqisi2
|
|
5315 00f6 EA19 adds r2, r5, r7
|
|
5316 00f8 9A42 cmp r2, r3
|
|
2603:../../../Source/third_party/fatfs/src/ff.c **** if (disk_write(fp->fs->drv, wbuff, sect, (BYTE)cc) != RES_OK)
|
|
5317 .loc 1 2603 0
|
|
5318 00fa 88BF it hi
|
|
5319 00fc DD1B subhi r5, r3, r7
|
|
5320 .LVL818:
|
|
2604:../../../Source/third_party/fatfs/src/ff.c **** ABORT(fp->fs, FR_DISK_ERR);
|
|
5321 .loc 1 2604 0
|
|
5322 00fe 9BF80100 ldrb r0, [fp, #1] @ zero_extendqisi2
|
|
5323 0102 4946 mov r1, r9
|
|
5324 0104 5246 mov r2, r10
|
|
5325 0106 EBB2 uxtb r3, r5
|
|
5326 0108 FFF7FEFF bl disk_write
|
|
5327 .LVL819:
|
|
5328 010c 28B1 cbz r0, .L529
|
|
2605:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_TINY
|
|
5329 .loc 1 2605 0
|
|
5330 010e A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5331 0110 63F07F03 orn r3, r3, #127
|
|
5332 0114 A371 strb r3, [r4, #6]
|
|
5333 0116 0120 movs r0, #1
|
|
5334 0118 55E0 b .L515
|
|
5335 .L529:
|
|
2612:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(fp->buf, wbuff + ((fp->dsect - sect) * SS(fp->fs)), SS(fp->fs));
|
|
5336 .loc 1 2612 0
|
|
5337 011a A169 ldr r1, [r4, #24]
|
|
5338 011c CAEB0101 rsb r1, r10, r1
|
|
5339 0120 8D42 cmp r5, r1
|
|
5340 0122 0AD9 bls .L530
|
|
2613:../../../Source/third_party/fatfs/src/ff.c **** fp->flag &= ~FA__DIRTY;
|
|
5341 .loc 1 2613 0
|
|
5342 0124 0198 ldr r0, [sp, #4]
|
|
5343 0126 09EB4121 add r1, r9, r1, lsl #9
|
|
5344 012a 4FF40072 mov r2, #512
|
|
5345 012e FFF7FEFF bl mem_cpy
|
|
5346 .LVL820:
|
|
2614:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
5347 .loc 1 2614 0
|
|
5348 0132 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5349 0134 23F04003 bic r3, r3, #64
|
|
5350 0138 A371 strb r3, [r4, #6]
|
|
5351 .L530:
|
|
2617:../../../Source/third_party/fatfs/src/ff.c **** continue;
|
|
5352 .loc 1 2617 0
|
|
5353 013a 6D02 lsls r5, r5, #9
|
|
5354 .LVL821:
|
|
2618:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
5355 .loc 1 2618 0
|
|
5356 013c 28E0 b .L531
|
|
5357 .LVL822:
|
|
5358 .L527:
|
|
2626:../../../Source/third_party/fatfs/src/ff.c **** if (fp->fptr < fp->fsize &&
|
|
5359 .loc 1 2626 0
|
|
5360 013e A369 ldr r3, [r4, #24]
|
|
5361 0140 5345 cmp r3, r10
|
|
5362 0142 11D0 beq .L532
|
|
2627:../../../Source/third_party/fatfs/src/ff.c **** disk_read(fp->fs->drv, fp->buf, sect, 1) != RES_OK)
|
|
5363 .loc 1 2627 0
|
|
5364 0144 A268 ldr r2, [r4, #8]
|
|
5365 0146 E368 ldr r3, [r4, #12]
|
|
5366 0148 9A42 cmp r2, r3
|
|
5367 014a 0DD2 bcs .L532
|
|
5368 .loc 1 2628 0 discriminator 1
|
|
5369 014c 9BF80100 ldrb r0, [fp, #1] @ zero_extendqisi2
|
|
5370 0150 0199 ldr r1, [sp, #4]
|
|
5371 0152 5246 mov r2, r10
|
|
5372 0154 0123 movs r3, #1
|
|
5373 0156 FFF7FEFF bl disk_read
|
|
5374 .LVL823:
|
|
2627:../../../Source/third_party/fatfs/src/ff.c **** disk_read(fp->fs->drv, fp->buf, sect, 1) != RES_OK)
|
|
5375 .loc 1 2627 0 discriminator 1
|
|
5376 015a 28B1 cbz r0, .L532
|
|
2629:../../../Source/third_party/fatfs/src/ff.c **** ABORT(fp->fs, FR_DISK_ERR);
|
|
5377 .loc 1 2629 0
|
|
5378 015c A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5379 015e 63F07F03 orn r3, r3, #127
|
|
5380 0162 A371 strb r3, [r4, #6]
|
|
5381 0164 0120 movs r0, #1
|
|
5382 0166 2EE0 b .L515
|
|
5383 .L532:
|
|
2630:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2631:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2632:../../../Source/third_party/fatfs/src/ff.c **** fp->dsect = sect;
|
|
5384 .loc 1 2632 0
|
|
5385 0168 C4F818A0 str r10, [r4, #24]
|
|
5386 .LVL824:
|
|
5387 .L517:
|
|
2633:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2634:../../../Source/third_party/fatfs/src/ff.c **** wcnt = SS(fp->fs) - ((UINT)fp->fptr % SS(fp->fs));/* Put partial sector into file I/O buffer */
|
|
5388 .loc 1 2634 0
|
|
5389 016c A068 ldr r0, [r4, #8]
|
|
5390 016e C0F30800 ubfx r0, r0, #0, #9
|
|
5391 0172 C0F50075 rsb r5, r0, #512
|
|
5392 .LVL825:
|
|
5393 0176 B542 cmp r5, r6
|
|
5394 0178 28BF it cs
|
|
5395 017a 3546 movcs r5, r6
|
|
5396 .LVL826:
|
|
2635:../../../Source/third_party/fatfs/src/ff.c **** if (wcnt > btw) wcnt = btw;
|
|
2636:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_TINY
|
|
2637:../../../Source/third_party/fatfs/src/ff.c **** if (move_window(fp->fs, fp->dsect)) /* Move sector window */
|
|
2638:../../../Source/third_party/fatfs/src/ff.c **** ABORT(fp->fs, FR_DISK_ERR);
|
|
2639:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(&fp->fs->win[fp->fptr % SS(fp->fs)], wbuff, wcnt); /* Fit partial sector */
|
|
2640:../../../Source/third_party/fatfs/src/ff.c **** fp->fs->wflag = 1;
|
|
2641:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
2642:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(&fp->buf[fp->fptr % SS(fp->fs)], wbuff, wcnt); /* Fit partial sector */
|
|
5397 .loc 1 2642 0
|
|
5398 017c 2044 add r0, r0, r4
|
|
5399 017e 2430 adds r0, r0, #36
|
|
5400 0180 4946 mov r1, r9
|
|
5401 0182 2A46 mov r2, r5
|
|
5402 0184 FFF7FEFF bl mem_cpy
|
|
5403 .LVL827:
|
|
2643:../../../Source/third_party/fatfs/src/ff.c **** fp->flag |= FA__DIRTY;
|
|
5404 .loc 1 2643 0
|
|
5405 0188 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5406 018a 43F04003 orr r3, r3, #64
|
|
5407 018e A371 strb r3, [r4, #6]
|
|
5408 .L531:
|
|
2566:../../../Source/third_party/fatfs/src/ff.c **** if ((fp->fptr % SS(fp->fs)) == 0) { /* On the sector boundary? */
|
|
5409 .loc 1 2566 0
|
|
5410 0190 A944 add r9, r9, r5
|
|
5411 .LVL828:
|
|
5412 0192 A368 ldr r3, [r4, #8]
|
|
5413 0194 2B44 add r3, r3, r5
|
|
5414 0196 A360 str r3, [r4, #8]
|
|
5415 0198 D8F80030 ldr r3, [r8]
|
|
5416 019c 2B44 add r3, r3, r5
|
|
5417 019e C8F80030 str r3, [r8]
|
|
5418 .LVL829:
|
|
2565:../../../Source/third_party/fatfs/src/ff.c **** wbuff += wcnt, fp->fptr += wcnt, *bw += wcnt, btw -= wcnt) {
|
|
5419 .loc 1 2565 0
|
|
5420 01a2 761B subs r6, r6, r5
|
|
5421 .LVL830:
|
|
5422 01a4 7FF44EAF bne .L538
|
|
5423 .LVL831:
|
|
5424 .L516:
|
|
2644:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2645:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2646:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2647:../../../Source/third_party/fatfs/src/ff.c **** if (fp->fptr > fp->fsize) fp->fsize = fp->fptr; /* Update file size if needed */
|
|
5425 .loc 1 2647 0
|
|
5426 01a8 A368 ldr r3, [r4, #8]
|
|
5427 01aa E268 ldr r2, [r4, #12]
|
|
5428 01ac 9342 cmp r3, r2
|
|
5429 01ae 88BF it hi
|
|
5430 01b0 E360 strhi r3, [r4, #12]
|
|
2648:../../../Source/third_party/fatfs/src/ff.c **** fp->flag |= FA__WRITTEN; /* Set file change flag */
|
|
5431 .loc 1 2648 0
|
|
5432 01b2 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5433 01b4 43F02003 orr r3, r3, #32
|
|
5434 01b8 A371 strb r3, [r4, #6]
|
|
2649:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2650:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(fp->fs, FR_OK);
|
|
5435 .loc 1 2650 0
|
|
5436 01ba 0020 movs r0, #0
|
|
5437 01bc 03E0 b .L515
|
|
5438 .LVL832:
|
|
5439 .L535:
|
|
5440 01be 02E0 b .L515
|
|
5441 .L536:
|
|
2560:../../../Source/third_party/fatfs/src/ff.c **** if (!(fp->flag & FA_WRITE)) /* Check access mode */
|
|
5442 .loc 1 2560 0
|
|
5443 01c0 0220 movs r0, #2
|
|
5444 .LVL833:
|
|
5445 01c2 00E0 b .L515
|
|
5446 .LVL834:
|
|
5447 .L537:
|
|
2562:../../../Source/third_party/fatfs/src/ff.c **** if ((DWORD)(fp->fsize + btw) < fp->fsize) btw = 0; /* File size cannot reach 4GB */
|
|
5448 .loc 1 2562 0
|
|
5449 01c4 0720 movs r0, #7
|
|
5450 .LVL835:
|
|
5451 .L515:
|
|
2651:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
5452 .loc 1 2651 0
|
|
5453 01c6 03B0 add sp, sp, #12
|
|
5454 .cfi_def_cfa_offset 36
|
|
5455 @ sp needed
|
|
5456 01c8 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
5457 .cfi_endproc
|
|
5458 .LFE35:
|
|
5460 .section .text.f_sync,"ax",%progbits
|
|
5461 .align 2
|
|
5462 .global f_sync
|
|
5463 .thumb
|
|
5464 .thumb_func
|
|
5466 f_sync:
|
|
5467 .LFB36:
|
|
2652:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2653:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2654:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2655:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2656:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2657:../../../Source/third_party/fatfs/src/ff.c **** /* Synchronize the File Object */
|
|
2658:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2659:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2660:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_sync (
|
|
2661:../../../Source/third_party/fatfs/src/ff.c **** FIL *fp /* Pointer to the file object */
|
|
2662:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
2663:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
5468 .loc 1 2663 0
|
|
5469 .cfi_startproc
|
|
5470 @ args = 0, pretend = 0, frame = 0
|
|
5471 @ frame_needed = 0, uses_anonymous_args = 0
|
|
5472 .LVL836:
|
|
5473 0000 38B5 push {r3, r4, r5, lr}
|
|
5474 .cfi_def_cfa_offset 16
|
|
5475 .cfi_offset 3, -16
|
|
5476 .cfi_offset 4, -12
|
|
5477 .cfi_offset 5, -8
|
|
5478 .cfi_offset 14, -4
|
|
5479 0002 0446 mov r4, r0
|
|
2664:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
2665:../../../Source/third_party/fatfs/src/ff.c **** DWORD tm;
|
|
2666:../../../Source/third_party/fatfs/src/ff.c **** BYTE *dir;
|
|
2667:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2668:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2669:../../../Source/third_party/fatfs/src/ff.c **** res = validate(fp); /* Check validity of the object */
|
|
5480 .loc 1 2669 0
|
|
5481 0004 FFF7FEFF bl validate
|
|
5482 .LVL837:
|
|
2670:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
5483 .loc 1 2670 0
|
|
5484 0008 0028 cmp r0, #0
|
|
5485 000a 49D1 bne .L544
|
|
2671:../../../Source/third_party/fatfs/src/ff.c **** if (fp->flag & FA__WRITTEN) { /* Has the file been written? */
|
|
5486 .loc 1 2671 0
|
|
5487 000c A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5488 000e 13F0200F tst r3, #32
|
|
5489 0012 46D0 beq .L545
|
|
2672:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_TINY /* Write-back dirty buffer */
|
|
2673:../../../Source/third_party/fatfs/src/ff.c **** if (fp->flag & FA__DIRTY) {
|
|
5490 .loc 1 2673 0
|
|
5491 0014 13F0400F tst r3, #64
|
|
5492 0018 0DD0 beq .L543
|
|
2674:../../../Source/third_party/fatfs/src/ff.c **** if (disk_write(fp->fs->drv, fp->buf, fp->dsect, 1) != RES_OK)
|
|
5493 .loc 1 2674 0
|
|
5494 001a 2146 mov r1, r4
|
|
5495 001c 51F8243B ldr r3, [r1], #36
|
|
5496 0020 5878 ldrb r0, [r3, #1] @ zero_extendqisi2
|
|
5497 .LVL838:
|
|
5498 0022 A269 ldr r2, [r4, #24]
|
|
5499 0024 0123 movs r3, #1
|
|
5500 0026 FFF7FEFF bl disk_write
|
|
5501 .LVL839:
|
|
5502 002a 0028 cmp r0, #0
|
|
5503 002c 3BD1 bne .L546
|
|
2675:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(fp->fs, FR_DISK_ERR);
|
|
2676:../../../Source/third_party/fatfs/src/ff.c **** fp->flag &= ~FA__DIRTY;
|
|
5504 .loc 1 2676 0
|
|
5505 002e A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5506 0030 23F04003 bic r3, r3, #64
|
|
5507 0034 A371 strb r3, [r4, #6]
|
|
5508 .L543:
|
|
2677:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2678:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2679:../../../Source/third_party/fatfs/src/ff.c **** /* Update the directory entry */
|
|
2680:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(fp->fs, fp->dir_sect);
|
|
5509 .loc 1 2680 0
|
|
5510 0036 2068 ldr r0, [r4]
|
|
5511 0038 E169 ldr r1, [r4, #28]
|
|
5512 003a FFF7FEFF bl move_window
|
|
5513 .LVL840:
|
|
2681:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
5514 .loc 1 2681 0
|
|
5515 003e 0028 cmp r0, #0
|
|
5516 0040 33D1 bne .L547
|
|
2682:../../../Source/third_party/fatfs/src/ff.c **** dir = fp->dir_ptr;
|
|
5517 .loc 1 2682 0
|
|
5518 0042 256A ldr r5, [r4, #32]
|
|
5519 .LVL841:
|
|
2683:../../../Source/third_party/fatfs/src/ff.c **** dir[DIR_Attr] |= AM_ARC; /* Set archive bit */
|
|
5520 .loc 1 2683 0
|
|
5521 0044 EB7A ldrb r3, [r5, #11] @ zero_extendqisi2
|
|
5522 0046 43F02003 orr r3, r3, #32
|
|
5523 004a EB72 strb r3, [r5, #11]
|
|
2684:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(dir+DIR_FileSize, fp->fsize); /* Update file size */
|
|
5524 .loc 1 2684 0
|
|
5525 004c E368 ldr r3, [r4, #12]
|
|
5526 004e 2B77 strb r3, [r5, #28]
|
|
5527 0050 A389 ldrh r3, [r4, #12]
|
|
5528 0052 1B0A lsrs r3, r3, #8
|
|
5529 0054 6B77 strb r3, [r5, #29]
|
|
5530 0056 E389 ldrh r3, [r4, #14]
|
|
5531 0058 AB77 strb r3, [r5, #30]
|
|
5532 005a E37B ldrb r3, [r4, #15] @ zero_extendqisi2
|
|
5533 005c EB77 strb r3, [r5, #31]
|
|
2685:../../../Source/third_party/fatfs/src/ff.c **** st_clust(dir, fp->sclust); /* Update start cluster */
|
|
5534 .loc 1 2685 0
|
|
5535 005e 2369 ldr r3, [r4, #16]
|
|
5536 .LVL842:
|
|
5537 .LBB72:
|
|
5538 .LBB73:
|
|
1261:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(dir+DIR_FstClusHI, cl >> 16);
|
|
5539 .loc 1 1261 0
|
|
5540 0060 AB76 strb r3, [r5, #26]
|
|
5541 0062 C3F30722 ubfx r2, r3, #8, #8
|
|
5542 0066 EA76 strb r2, [r5, #27]
|
|
1262:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
5543 .loc 1 1262 0
|
|
5544 0068 1B0C lsrs r3, r3, #16
|
|
5545 .LVL843:
|
|
5546 006a 2B75 strb r3, [r5, #20]
|
|
5547 006c 1B0A lsrs r3, r3, #8
|
|
5548 006e 6B75 strb r3, [r5, #21]
|
|
5549 .LBE73:
|
|
5550 .LBE72:
|
|
2686:../../../Source/third_party/fatfs/src/ff.c **** tm = get_fattime(); /* Update updated time */
|
|
5551 .loc 1 2686 0
|
|
5552 0070 FFF7FEFF bl get_fattime
|
|
5553 .LVL844:
|
|
2687:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(dir+DIR_WrtTime, tm);
|
|
5554 .loc 1 2687 0
|
|
5555 0074 A875 strb r0, [r5, #22]
|
|
5556 0076 C0F30723 ubfx r3, r0, #8, #8
|
|
5557 007a EB75 strb r3, [r5, #23]
|
|
5558 007c 030C lsrs r3, r0, #16
|
|
5559 007e 2B76 strb r3, [r5, #24]
|
|
5560 0080 000E lsrs r0, r0, #24
|
|
5561 .LVL845:
|
|
5562 0082 6876 strb r0, [r5, #25]
|
|
2688:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(dir+DIR_LstAccDate, 0);
|
|
5563 .loc 1 2688 0
|
|
5564 0084 0023 movs r3, #0
|
|
5565 0086 AB74 strb r3, [r5, #18]
|
|
5566 0088 EB74 strb r3, [r5, #19]
|
|
2689:../../../Source/third_party/fatfs/src/ff.c **** fp->flag &= ~FA__WRITTEN;
|
|
5567 .loc 1 2689 0
|
|
5568 008a A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5569 008c 23F02003 bic r3, r3, #32
|
|
5570 0090 A371 strb r3, [r4, #6]
|
|
2690:../../../Source/third_party/fatfs/src/ff.c **** fp->fs->wflag = 1;
|
|
5571 .loc 1 2690 0
|
|
5572 0092 2368 ldr r3, [r4]
|
|
5573 0094 0122 movs r2, #1
|
|
5574 0096 1A71 strb r2, [r3, #4]
|
|
2691:../../../Source/third_party/fatfs/src/ff.c **** res = sync_fs(fp->fs);
|
|
5575 .loc 1 2691 0
|
|
5576 0098 2068 ldr r0, [r4]
|
|
5577 009a FFF7FEFF bl sync_fs
|
|
5578 .LVL846:
|
|
5579 009e 38BD pop {r3, r4, r5, pc}
|
|
5580 .LVL847:
|
|
5581 .L544:
|
|
5582 00a0 38BD pop {r3, r4, r5, pc}
|
|
5583 .LVL848:
|
|
5584 .L545:
|
|
2669:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
5585 .loc 1 2669 0
|
|
5586 00a2 0020 movs r0, #0
|
|
5587 .LVL849:
|
|
5588 00a4 38BD pop {r3, r4, r5, pc}
|
|
5589 .LVL850:
|
|
5590 .L546:
|
|
2675:../../../Source/third_party/fatfs/src/ff.c **** fp->flag &= ~FA__DIRTY;
|
|
5591 .loc 1 2675 0
|
|
5592 00a6 0120 movs r0, #1
|
|
5593 00a8 38BD pop {r3, r4, r5, pc}
|
|
5594 .LVL851:
|
|
5595 .L547:
|
|
2692:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2693:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2694:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2695:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2696:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(fp->fs, res);
|
|
2697:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
5596 .loc 1 2697 0
|
|
5597 00aa 38BD pop {r3, r4, r5, pc}
|
|
5598 .cfi_endproc
|
|
5599 .LFE36:
|
|
5601 .section .text.f_close,"ax",%progbits
|
|
5602 .align 2
|
|
5603 .global f_close
|
|
5604 .thumb
|
|
5605 .thumb_func
|
|
5607 f_close:
|
|
5608 .LFB37:
|
|
2698:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2699:../../../Source/third_party/fatfs/src/ff.c **** #endif /* !_FS_READONLY */
|
|
2700:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2701:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2702:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2703:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2704:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2705:../../../Source/third_party/fatfs/src/ff.c **** /* Close File */
|
|
2706:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2707:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2708:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_close (
|
|
2709:../../../Source/third_party/fatfs/src/ff.c **** FIL *fp /* Pointer to the file object to be closed */
|
|
2710:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
2711:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
5609 .loc 1 2711 0
|
|
5610 .cfi_startproc
|
|
5611 @ args = 0, pretend = 0, frame = 0
|
|
5612 @ frame_needed = 0, uses_anonymous_args = 0
|
|
5613 .LVL852:
|
|
5614 0000 10B5 push {r4, lr}
|
|
5615 .cfi_def_cfa_offset 8
|
|
5616 .cfi_offset 4, -8
|
|
5617 .cfi_offset 14, -4
|
|
5618 0002 0446 mov r4, r0
|
|
2712:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
2713:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2714:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2715:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_READONLY
|
|
2716:../../../Source/third_party/fatfs/src/ff.c **** res = validate(fp);
|
|
2717:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
2718:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_REENTRANT
|
|
2719:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs = fp->fs;
|
|
2720:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2721:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) fp->fs = 0; /* Discard file object */
|
|
2722:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(fs, res);
|
|
2723:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2724:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
2725:../../../Source/third_party/fatfs/src/ff.c **** res = f_sync(fp); /* Flush cached data */
|
|
5619 .loc 1 2725 0
|
|
5620 0004 FFF7FEFF bl f_sync
|
|
5621 .LVL853:
|
|
2726:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_LOCK
|
|
2727:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) { /* Decrement open counter */
|
|
2728:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_REENTRANT
|
|
2729:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs = fp->fs;;
|
|
2730:../../../Source/third_party/fatfs/src/ff.c **** res = validate(fp);
|
|
2731:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
2732:../../../Source/third_party/fatfs/src/ff.c **** res = dec_lock(fp->lockid);
|
|
2733:../../../Source/third_party/fatfs/src/ff.c **** unlock_fs(fs, FR_OK);
|
|
2734:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2735:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
2736:../../../Source/third_party/fatfs/src/ff.c **** res = dec_lock(fp->lockid);
|
|
2737:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2738:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2739:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2740:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) fp->fs = 0; /* Discard file object */
|
|
5622 .loc 1 2740 0
|
|
5623 0008 0346 mov r3, r0
|
|
5624 000a 08B9 cbnz r0, .L550
|
|
5625 .loc 1 2740 0 is_stmt 0 discriminator 1
|
|
5626 000c 0022 movs r2, #0
|
|
5627 000e 2260 str r2, [r4]
|
|
5628 .L550:
|
|
2741:../../../Source/third_party/fatfs/src/ff.c **** return res;
|
|
2742:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2743:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
5629 .loc 1 2743 0 is_stmt 1
|
|
5630 0010 1846 mov r0, r3
|
|
5631 .LVL854:
|
|
5632 0012 10BD pop {r4, pc}
|
|
5633 .cfi_endproc
|
|
5634 .LFE37:
|
|
5636 .section .text.f_lseek,"ax",%progbits
|
|
5637 .align 2
|
|
5638 .global f_lseek
|
|
5639 .thumb
|
|
5640 .thumb_func
|
|
5642 f_lseek:
|
|
5643 .LFB38:
|
|
2744:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2745:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2746:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2747:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2748:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2749:../../../Source/third_party/fatfs/src/ff.c **** /* Current Drive/Directory Handlings */
|
|
2750:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2751:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2752:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_RPATH >= 1
|
|
2753:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2754:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_chdrive (
|
|
2755:../../../Source/third_party/fatfs/src/ff.c **** BYTE drv /* Drive number */
|
|
2756:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
2757:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
2758:../../../Source/third_party/fatfs/src/ff.c **** if (drv >= _VOLUMES) return FR_INVALID_DRIVE;
|
|
2759:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2760:../../../Source/third_party/fatfs/src/ff.c **** CurrVol = drv;
|
|
2761:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2762:../../../Source/third_party/fatfs/src/ff.c **** return FR_OK;
|
|
2763:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2764:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2765:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2766:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2767:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_chdir (
|
|
2768:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR *path /* Pointer to the directory path */
|
|
2769:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
2770:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
2771:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
2772:../../../Source/third_party/fatfs/src/ff.c **** DIR dj;
|
|
2773:../../../Source/third_party/fatfs/src/ff.c **** DEF_NAMEBUF;
|
|
2774:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2775:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2776:../../../Source/third_party/fatfs/src/ff.c **** res = chk_mounted(&path, &dj.fs, 0);
|
|
2777:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
2778:../../../Source/third_party/fatfs/src/ff.c **** INIT_BUF(dj);
|
|
2779:../../../Source/third_party/fatfs/src/ff.c **** res = follow_path(&dj, path); /* Follow the path */
|
|
2780:../../../Source/third_party/fatfs/src/ff.c **** FREE_BUF();
|
|
2781:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) { /* Follow completed */
|
|
2782:../../../Source/third_party/fatfs/src/ff.c **** if (!dj.dir) {
|
|
2783:../../../Source/third_party/fatfs/src/ff.c **** dj.fs->cdir = dj.sclust; /* Start directory itself */
|
|
2784:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
2785:../../../Source/third_party/fatfs/src/ff.c **** if (dj.dir[DIR_Attr] & AM_DIR) /* Reached to the directory */
|
|
2786:../../../Source/third_party/fatfs/src/ff.c **** dj.fs->cdir = ld_clust(dj.fs, dj.dir);
|
|
2787:../../../Source/third_party/fatfs/src/ff.c **** else
|
|
2788:../../../Source/third_party/fatfs/src/ff.c **** res = FR_NO_PATH; /* Reached but a file */
|
|
2789:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2790:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2791:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_NO_FILE) res = FR_NO_PATH;
|
|
2792:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2793:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2794:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(dj.fs, res);
|
|
2795:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2796:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2797:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2798:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_RPATH >= 2
|
|
2799:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_getcwd (
|
|
2800:../../../Source/third_party/fatfs/src/ff.c **** TCHAR *buff, /* Pointer to the directory path */
|
|
2801:../../../Source/third_party/fatfs/src/ff.c **** UINT len /* Size of path */
|
|
2802:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
2803:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
2804:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
2805:../../../Source/third_party/fatfs/src/ff.c **** DIR dj;
|
|
2806:../../../Source/third_party/fatfs/src/ff.c **** UINT i, n;
|
|
2807:../../../Source/third_party/fatfs/src/ff.c **** DWORD ccl;
|
|
2808:../../../Source/third_party/fatfs/src/ff.c **** TCHAR *tp;
|
|
2809:../../../Source/third_party/fatfs/src/ff.c **** FILINFO fno;
|
|
2810:../../../Source/third_party/fatfs/src/ff.c **** DEF_NAMEBUF;
|
|
2811:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2812:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2813:../../../Source/third_party/fatfs/src/ff.c **** *buff = 0;
|
|
2814:../../../Source/third_party/fatfs/src/ff.c **** res = chk_mounted((const TCHAR**)&buff, &dj.fs, 0); /* Get current volume */
|
|
2815:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
2816:../../../Source/third_party/fatfs/src/ff.c **** INIT_BUF(dj);
|
|
2817:../../../Source/third_party/fatfs/src/ff.c **** i = len; /* Bottom of buffer (dir stack base) */
|
|
2818:../../../Source/third_party/fatfs/src/ff.c **** dj.sclust = dj.fs->cdir; /* Start to follow upper dir from current dir */
|
|
2819:../../../Source/third_party/fatfs/src/ff.c **** while ((ccl = dj.sclust) != 0) { /* Repeat while current dir is a sub-dir */
|
|
2820:../../../Source/third_party/fatfs/src/ff.c **** res = dir_sdi(&dj, 1); /* Get parent dir */
|
|
2821:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
2822:../../../Source/third_party/fatfs/src/ff.c **** res = dir_read(&dj, 0);
|
|
2823:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
2824:../../../Source/third_party/fatfs/src/ff.c **** dj.sclust = ld_clust(dj.fs, dj.dir); /* Goto parent dir */
|
|
2825:../../../Source/third_party/fatfs/src/ff.c **** res = dir_sdi(&dj, 0);
|
|
2826:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
2827:../../../Source/third_party/fatfs/src/ff.c **** do { /* Find the entry links to the child dir */
|
|
2828:../../../Source/third_party/fatfs/src/ff.c **** res = dir_read(&dj, 0);
|
|
2829:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
2830:../../../Source/third_party/fatfs/src/ff.c **** if (ccl == ld_clust(dj.fs, dj.dir)) break; /* Found the entry */
|
|
2831:../../../Source/third_party/fatfs/src/ff.c **** res = dir_next(&dj, 0);
|
|
2832:../../../Source/third_party/fatfs/src/ff.c **** } while (res == FR_OK);
|
|
2833:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_NO_FILE) res = FR_INT_ERR;/* It cannot be 'not found'. */
|
|
2834:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
2835:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN
|
|
2836:../../../Source/third_party/fatfs/src/ff.c **** fno.lfname = buff;
|
|
2837:../../../Source/third_party/fatfs/src/ff.c **** fno.lfsize = i;
|
|
2838:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2839:../../../Source/third_party/fatfs/src/ff.c **** get_fileinfo(&dj, &fno); /* Get the dir name and push it to the buffer */
|
|
2840:../../../Source/third_party/fatfs/src/ff.c **** tp = fno.fname;
|
|
2841:../../../Source/third_party/fatfs/src/ff.c **** if (_USE_LFN && *buff) tp = buff;
|
|
2842:../../../Source/third_party/fatfs/src/ff.c **** for (n = 0; tp[n]; n++) ;
|
|
2843:../../../Source/third_party/fatfs/src/ff.c **** if (i < n + 3) {
|
|
2844:../../../Source/third_party/fatfs/src/ff.c **** res = FR_NOT_ENOUGH_CORE; break;
|
|
2845:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2846:../../../Source/third_party/fatfs/src/ff.c **** while (n) buff[--i] = tp[--n];
|
|
2847:../../../Source/third_party/fatfs/src/ff.c **** buff[--i] = '/';
|
|
2848:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2849:../../../Source/third_party/fatfs/src/ff.c **** tp = buff;
|
|
2850:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
2851:../../../Source/third_party/fatfs/src/ff.c **** *tp++ = '0' + CurrVol; /* Put drive number */
|
|
2852:../../../Source/third_party/fatfs/src/ff.c **** *tp++ = ':';
|
|
2853:../../../Source/third_party/fatfs/src/ff.c **** if (i == len) { /* Root-dir */
|
|
2854:../../../Source/third_party/fatfs/src/ff.c **** *tp++ = '/';
|
|
2855:../../../Source/third_party/fatfs/src/ff.c **** } else { /* Sub-dir */
|
|
2856:../../../Source/third_party/fatfs/src/ff.c **** do /* Add stacked path str */
|
|
2857:../../../Source/third_party/fatfs/src/ff.c **** *tp++ = buff[i++];
|
|
2858:../../../Source/third_party/fatfs/src/ff.c **** while (i < len);
|
|
2859:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2860:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2861:../../../Source/third_party/fatfs/src/ff.c **** *tp = 0;
|
|
2862:../../../Source/third_party/fatfs/src/ff.c **** FREE_BUF();
|
|
2863:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2864:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2865:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(dj.fs, res);
|
|
2866:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2867:../../../Source/third_party/fatfs/src/ff.c **** #endif /* _FS_RPATH >= 2 */
|
|
2868:../../../Source/third_party/fatfs/src/ff.c **** #endif /* _FS_RPATH >= 1 */
|
|
2869:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2870:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2871:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2872:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_MINIMIZE <= 2
|
|
2873:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2874:../../../Source/third_party/fatfs/src/ff.c **** /* Seek File R/W Pointer */
|
|
2875:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
2876:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2877:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_lseek (
|
|
2878:../../../Source/third_party/fatfs/src/ff.c **** FIL *fp, /* Pointer to the file object */
|
|
2879:../../../Source/third_party/fatfs/src/ff.c **** DWORD ofs /* File pointer from top of file */
|
|
2880:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
2881:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
5644 .loc 1 2881 0
|
|
5645 .cfi_startproc
|
|
5646 @ args = 0, pretend = 0, frame = 0
|
|
5647 @ frame_needed = 0, uses_anonymous_args = 0
|
|
5648 .LVL855:
|
|
5649 0000 70B5 push {r4, r5, r6, lr}
|
|
5650 .cfi_def_cfa_offset 16
|
|
5651 .cfi_offset 4, -16
|
|
5652 .cfi_offset 5, -12
|
|
5653 .cfi_offset 6, -8
|
|
5654 .cfi_offset 14, -4
|
|
5655 0002 0446 mov r4, r0
|
|
5656 0004 0D46 mov r5, r1
|
|
2882:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
2883:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2884:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2885:../../../Source/third_party/fatfs/src/ff.c **** res = validate(fp); /* Check validity of the object */
|
|
5657 .loc 1 2885 0
|
|
5658 0006 FFF7FEFF bl validate
|
|
5659 .LVL856:
|
|
2886:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) LEAVE_FF(fp->fs, res);
|
|
5660 .loc 1 2886 0
|
|
5661 000a 0028 cmp r0, #0
|
|
5662 000c 40F0BC80 bne .L573
|
|
2887:../../../Source/third_party/fatfs/src/ff.c **** if (fp->flag & FA__ERROR) /* Check abort flag */
|
|
5663 .loc 1 2887 0
|
|
5664 0010 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5665 0012 13F0800F tst r3, #128
|
|
5666 0016 40F0B880 bne .L574
|
|
5667 .LBB74:
|
|
2888:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(fp->fs, FR_INT_ERR);
|
|
2889:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2890:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_FASTSEEK
|
|
2891:../../../Source/third_party/fatfs/src/ff.c **** if (fp->cltbl) { /* Fast seek */
|
|
2892:../../../Source/third_party/fatfs/src/ff.c **** DWORD cl, pcl, ncl, tcl, dsc, tlen, ulen, *tbl;
|
|
2893:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2894:../../../Source/third_party/fatfs/src/ff.c **** if (ofs == CREATE_LINKMAP) { /* Create CLMT */
|
|
2895:../../../Source/third_party/fatfs/src/ff.c **** tbl = fp->cltbl;
|
|
2896:../../../Source/third_party/fatfs/src/ff.c **** tlen = *tbl++; ulen = 2; /* Given table size and required table size */
|
|
2897:../../../Source/third_party/fatfs/src/ff.c **** cl = fp->sclust; /* Top of the chain */
|
|
2898:../../../Source/third_party/fatfs/src/ff.c **** if (cl) {
|
|
2899:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
2900:../../../Source/third_party/fatfs/src/ff.c **** /* Get a fragment */
|
|
2901:../../../Source/third_party/fatfs/src/ff.c **** tcl = cl; ncl = 0; ulen += 2; /* Top, length and used items */
|
|
2902:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
2903:../../../Source/third_party/fatfs/src/ff.c **** pcl = cl; ncl++;
|
|
2904:../../../Source/third_party/fatfs/src/ff.c **** cl = get_fat(fp->fs, cl);
|
|
2905:../../../Source/third_party/fatfs/src/ff.c **** if (cl <= 1) ABORT(fp->fs, FR_INT_ERR);
|
|
2906:../../../Source/third_party/fatfs/src/ff.c **** if (cl == 0xFFFFFFFF) ABORT(fp->fs, FR_DISK_ERR);
|
|
2907:../../../Source/third_party/fatfs/src/ff.c **** } while (cl == pcl + 1);
|
|
2908:../../../Source/third_party/fatfs/src/ff.c **** if (ulen <= tlen) { /* Store the length and top of the fragment */
|
|
2909:../../../Source/third_party/fatfs/src/ff.c **** *tbl++ = ncl; *tbl++ = tcl;
|
|
2910:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2911:../../../Source/third_party/fatfs/src/ff.c **** } while (cl < fp->fs->n_fatent); /* Repeat until end of chain */
|
|
2912:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2913:../../../Source/third_party/fatfs/src/ff.c **** *fp->cltbl = ulen; /* Number of items used */
|
|
2914:../../../Source/third_party/fatfs/src/ff.c **** if (ulen <= tlen)
|
|
2915:../../../Source/third_party/fatfs/src/ff.c **** *tbl = 0; /* Terminate table */
|
|
2916:../../../Source/third_party/fatfs/src/ff.c **** else
|
|
2917:../../../Source/third_party/fatfs/src/ff.c **** res = FR_NOT_ENOUGH_CORE; /* Given table size is smaller than required */
|
|
2918:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2919:../../../Source/third_party/fatfs/src/ff.c **** } else { /* Fast seek */
|
|
2920:../../../Source/third_party/fatfs/src/ff.c **** if (ofs > fp->fsize) /* Clip offset at the file size */
|
|
2921:../../../Source/third_party/fatfs/src/ff.c **** ofs = fp->fsize;
|
|
2922:../../../Source/third_party/fatfs/src/ff.c **** fp->fptr = ofs; /* Set file pointer */
|
|
2923:../../../Source/third_party/fatfs/src/ff.c **** if (ofs) {
|
|
2924:../../../Source/third_party/fatfs/src/ff.c **** fp->clust = clmt_clust(fp, ofs - 1);
|
|
2925:../../../Source/third_party/fatfs/src/ff.c **** dsc = clust2sect(fp->fs, fp->clust);
|
|
2926:../../../Source/third_party/fatfs/src/ff.c **** if (!dsc) ABORT(fp->fs, FR_INT_ERR);
|
|
2927:../../../Source/third_party/fatfs/src/ff.c **** dsc += (ofs - 1) / SS(fp->fs) & (fp->fs->csize - 1);
|
|
2928:../../../Source/third_party/fatfs/src/ff.c **** if (fp->fptr % SS(fp->fs) && dsc != fp->dsect) { /* Refill sector cache if needed */
|
|
2929:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_TINY
|
|
2930:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
2931:../../../Source/third_party/fatfs/src/ff.c **** if (fp->flag & FA__DIRTY) { /* Write-back dirty sector cache */
|
|
2932:../../../Source/third_party/fatfs/src/ff.c **** if (disk_write(fp->fs->drv, fp->buf, fp->dsect, 1) != RES_OK)
|
|
2933:../../../Source/third_party/fatfs/src/ff.c **** ABORT(fp->fs, FR_DISK_ERR);
|
|
2934:../../../Source/third_party/fatfs/src/ff.c **** fp->flag &= ~FA__DIRTY;
|
|
2935:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2936:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2937:../../../Source/third_party/fatfs/src/ff.c **** if (disk_read(fp->fs->drv, fp->buf, dsc, 1) != RES_OK) /* Load current sector */
|
|
2938:../../../Source/third_party/fatfs/src/ff.c **** ABORT(fp->fs, FR_DISK_ERR);
|
|
2939:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2940:../../../Source/third_party/fatfs/src/ff.c **** fp->dsect = dsc;
|
|
2941:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2942:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2943:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2944:../../../Source/third_party/fatfs/src/ff.c **** } else
|
|
2945:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2946:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2947:../../../Source/third_party/fatfs/src/ff.c **** /* Normal Seek */
|
|
2948:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
2949:../../../Source/third_party/fatfs/src/ff.c **** DWORD clst, bcs, nsect, ifptr;
|
|
2950:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2951:../../../Source/third_party/fatfs/src/ff.c **** if (ofs > fp->fsize /* In read-only mode, clip offset with the file size */
|
|
5668 .loc 1 2951 0
|
|
5669 001a E268 ldr r2, [r4, #12]
|
|
5670 001c AA42 cmp r2, r5
|
|
5671 001e 05D2 bcs .L554
|
|
2952:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
2953:../../../Source/third_party/fatfs/src/ff.c **** && !(fp->flag & FA_WRITE)
|
|
5672 .loc 1 2953 0
|
|
5673 0020 03F00203 and r3, r3, #2
|
|
5674 0024 DBB2 uxtb r3, r3
|
|
2954:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2955:../../../Source/third_party/fatfs/src/ff.c **** ) ofs = fp->fsize;
|
|
5675 .loc 1 2955 0
|
|
5676 0026 002B cmp r3, #0
|
|
5677 0028 08BF it eq
|
|
5678 002a 1546 moveq r5, r2
|
|
5679 .LVL857:
|
|
5680 .L554:
|
|
2956:../../../Source/third_party/fatfs/src/ff.c ****
|
|
2957:../../../Source/third_party/fatfs/src/ff.c **** ifptr = fp->fptr;
|
|
5681 .loc 1 2957 0
|
|
5682 002c A368 ldr r3, [r4, #8]
|
|
5683 .LVL858:
|
|
2958:../../../Source/third_party/fatfs/src/ff.c **** fp->fptr = nsect = 0;
|
|
5684 .loc 1 2958 0
|
|
5685 002e 0022 movs r2, #0
|
|
5686 0030 A260 str r2, [r4, #8]
|
|
2959:../../../Source/third_party/fatfs/src/ff.c **** if (ofs) {
|
|
5687 .loc 1 2959 0
|
|
5688 0032 002D cmp r5, #0
|
|
5689 0034 00F0AB80 beq .L575
|
|
2960:../../../Source/third_party/fatfs/src/ff.c **** bcs = (DWORD)fp->fs->csize * SS(fp->fs); /* Cluster size (byte) */
|
|
5690 .loc 1 2960 0
|
|
5691 0038 2068 ldr r0, [r4]
|
|
5692 .LVL859:
|
|
5693 003a 8678 ldrb r6, [r0, #2] @ zero_extendqisi2
|
|
5694 003c 7602 lsls r6, r6, #9
|
|
5695 .LVL860:
|
|
2961:../../../Source/third_party/fatfs/src/ff.c **** if (ifptr > 0 &&
|
|
5696 .loc 1 2961 0
|
|
5697 003e 6BB1 cbz r3, .L555
|
|
2962:../../../Source/third_party/fatfs/src/ff.c **** (ofs - 1) / bcs >= (ifptr - 1) / bcs) { /* When seek to same or following cluster, */
|
|
5698 .loc 1 2962 0 discriminator 1
|
|
5699 0040 013B subs r3, r3, #1
|
|
5700 .LVL861:
|
|
5701 0042 6A1E subs r2, r5, #1
|
|
5702 0044 B2FBF6F2 udiv r2, r2, r6
|
|
5703 0048 B3FBF6F1 udiv r1, r3, r6
|
|
2961:../../../Source/third_party/fatfs/src/ff.c **** if (ifptr > 0 &&
|
|
5704 .loc 1 2961 0 discriminator 1
|
|
5705 004c 8A42 cmp r2, r1
|
|
5706 004e 05D3 bcc .L555
|
|
2963:../../../Source/third_party/fatfs/src/ff.c **** fp->fptr = (ifptr - 1) & ~(bcs - 1); /* start from the current cluster */
|
|
5707 .loc 1 2963 0
|
|
5708 0050 7242 negs r2, r6
|
|
5709 0052 1340 ands r3, r3, r2
|
|
5710 .LVL862:
|
|
5711 0054 A360 str r3, [r4, #8]
|
|
2964:../../../Source/third_party/fatfs/src/ff.c **** ofs -= fp->fptr;
|
|
5712 .loc 1 2964 0
|
|
5713 0056 ED1A subs r5, r5, r3
|
|
5714 .LVL863:
|
|
2965:../../../Source/third_party/fatfs/src/ff.c **** clst = fp->clust;
|
|
5715 .loc 1 2965 0
|
|
5716 0058 6169 ldr r1, [r4, #20]
|
|
5717 .LVL864:
|
|
5718 005a 17E0 b .L556
|
|
5719 .LVL865:
|
|
5720 .L555:
|
|
2966:../../../Source/third_party/fatfs/src/ff.c **** } else { /* When seek to back cluster, */
|
|
2967:../../../Source/third_party/fatfs/src/ff.c **** clst = fp->sclust; /* start from the first cluster */
|
|
5721 .loc 1 2967 0
|
|
5722 005c 2169 ldr r1, [r4, #16]
|
|
5723 .LVL866:
|
|
2968:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
2969:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0) { /* If no cluster chain, create a new chain */
|
|
5724 .loc 1 2969 0
|
|
5725 005e A1B9 cbnz r1, .L557
|
|
2970:../../../Source/third_party/fatfs/src/ff.c **** clst = create_chain(fp->fs, 0);
|
|
5726 .loc 1 2970 0
|
|
5727 0060 FFF7FEFF bl create_chain
|
|
5728 .LVL867:
|
|
5729 0064 0146 mov r1, r0
|
|
5730 .LVL868:
|
|
2971:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 1) ABORT(fp->fs, FR_INT_ERR);
|
|
5731 .loc 1 2971 0
|
|
5732 0066 0128 cmp r0, #1
|
|
5733 0068 05D1 bne .L558
|
|
5734 .loc 1 2971 0 is_stmt 0 discriminator 1
|
|
5735 006a A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5736 006c 63F07F03 orn r3, r3, #127
|
|
5737 0070 A371 strb r3, [r4, #6]
|
|
5738 0072 0220 movs r0, #2
|
|
5739 .LVL869:
|
|
5740 0074 70BD pop {r4, r5, r6, pc}
|
|
5741 .LVL870:
|
|
5742 .L558:
|
|
2972:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fp->fs, FR_DISK_ERR);
|
|
5743 .loc 1 2972 0 is_stmt 1
|
|
5744 0076 B0F1FF3F cmp r0, #-1
|
|
5745 007a 05D1 bne .L559
|
|
5746 .loc 1 2972 0 is_stmt 0 discriminator 1
|
|
5747 007c A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5748 007e 63F07F03 orn r3, r3, #127
|
|
5749 0082 A371 strb r3, [r4, #6]
|
|
5750 0084 0120 movs r0, #1
|
|
5751 .LVL871:
|
|
5752 0086 70BD pop {r4, r5, r6, pc}
|
|
5753 .LVL872:
|
|
5754 .L559:
|
|
2973:../../../Source/third_party/fatfs/src/ff.c **** fp->sclust = clst;
|
|
5755 .loc 1 2973 0 is_stmt 1
|
|
5756 0088 2061 str r0, [r4, #16]
|
|
5757 .LVL873:
|
|
5758 .L557:
|
|
2974:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2975:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2976:../../../Source/third_party/fatfs/src/ff.c **** fp->clust = clst;
|
|
5759 .loc 1 2976 0
|
|
5760 008a 6161 str r1, [r4, #20]
|
|
5761 .L556:
|
|
2977:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2978:../../../Source/third_party/fatfs/src/ff.c **** if (clst != 0) {
|
|
5762 .loc 1 2978 0
|
|
5763 008c 0029 cmp r1, #0
|
|
5764 008e 40D0 beq .L576
|
|
2979:../../../Source/third_party/fatfs/src/ff.c **** while (ofs > bcs) { /* Cluster following loop */
|
|
5765 .loc 1 2979 0
|
|
5766 0090 B542 cmp r5, r6
|
|
5767 0092 2BD9 bls .L561
|
|
5768 .L580:
|
|
2980:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
2981:../../../Source/third_party/fatfs/src/ff.c **** if (fp->flag & FA_WRITE) { /* Check if in write mode or not */
|
|
5769 .loc 1 2981 0
|
|
5770 0094 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5771 0096 13F0020F tst r3, #2
|
|
5772 009a 05D0 beq .L562
|
|
2982:../../../Source/third_party/fatfs/src/ff.c **** clst = create_chain(fp->fs, clst); /* Force stretch if in write mode */
|
|
5773 .loc 1 2982 0
|
|
5774 009c 2068 ldr r0, [r4]
|
|
5775 009e FFF7FEFF bl create_chain
|
|
5776 .LVL874:
|
|
2983:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0) { /* When disk gets full, clip file size */
|
|
5777 .loc 1 2983 0
|
|
5778 00a2 0146 mov r1, r0
|
|
5779 00a4 20B9 cbnz r0, .L563
|
|
5780 00a6 20E0 b .L577
|
|
5781 .LVL875:
|
|
5782 .L562:
|
|
2984:../../../Source/third_party/fatfs/src/ff.c **** ofs = bcs; break;
|
|
2985:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2986:../../../Source/third_party/fatfs/src/ff.c **** } else
|
|
2987:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
2988:../../../Source/third_party/fatfs/src/ff.c **** clst = get_fat(fp->fs, clst); /* Follow cluster chain if not in write mode */
|
|
5783 .loc 1 2988 0
|
|
5784 00a8 2068 ldr r0, [r4]
|
|
5785 00aa FFF7FEFF bl get_fat
|
|
5786 .LVL876:
|
|
5787 00ae 0146 mov r1, r0
|
|
5788 .LVL877:
|
|
5789 .L563:
|
|
2989:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fp->fs, FR_DISK_ERR);
|
|
5790 .loc 1 2989 0
|
|
5791 00b0 B1F1FF3F cmp r1, #-1
|
|
5792 00b4 05D1 bne .L564
|
|
5793 .loc 1 2989 0 is_stmt 0 discriminator 1
|
|
5794 00b6 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5795 00b8 63F07F03 orn r3, r3, #127
|
|
5796 00bc A371 strb r3, [r4, #6]
|
|
5797 00be 0120 movs r0, #1
|
|
5798 .LVL878:
|
|
5799 00c0 70BD pop {r4, r5, r6, pc}
|
|
5800 .LVL879:
|
|
5801 .L564:
|
|
2990:../../../Source/third_party/fatfs/src/ff.c **** if (clst <= 1 || clst >= fp->fs->n_fatent) ABORT(fp->fs, FR_INT_ERR);
|
|
5802 .loc 1 2990 0 is_stmt 1
|
|
5803 00c2 0129 cmp r1, #1
|
|
5804 00c4 03D9 bls .L565
|
|
5805 .loc 1 2990 0 is_stmt 0 discriminator 2
|
|
5806 00c6 2368 ldr r3, [r4]
|
|
5807 00c8 9B69 ldr r3, [r3, #24]
|
|
5808 00ca 9942 cmp r1, r3
|
|
5809 00cc 05D3 bcc .L566
|
|
5810 .L565:
|
|
5811 .loc 1 2990 0 discriminator 3
|
|
5812 00ce A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5813 00d0 63F07F03 orn r3, r3, #127
|
|
5814 00d4 A371 strb r3, [r4, #6]
|
|
5815 00d6 0220 movs r0, #2
|
|
5816 .LVL880:
|
|
5817 00d8 70BD pop {r4, r5, r6, pc}
|
|
5818 .LVL881:
|
|
5819 .L566:
|
|
2991:../../../Source/third_party/fatfs/src/ff.c **** fp->clust = clst;
|
|
5820 .loc 1 2991 0 is_stmt 1
|
|
5821 00da 6161 str r1, [r4, #20]
|
|
2992:../../../Source/third_party/fatfs/src/ff.c **** fp->fptr += bcs;
|
|
5822 .loc 1 2992 0
|
|
5823 00dc A368 ldr r3, [r4, #8]
|
|
5824 00de 3344 add r3, r3, r6
|
|
5825 00e0 A360 str r3, [r4, #8]
|
|
2993:../../../Source/third_party/fatfs/src/ff.c **** ofs -= bcs;
|
|
5826 .loc 1 2993 0
|
|
5827 00e2 AD1B subs r5, r5, r6
|
|
5828 .LVL882:
|
|
2979:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
5829 .loc 1 2979 0
|
|
5830 00e4 AE42 cmp r6, r5
|
|
5831 00e6 D5D3 bcc .L580
|
|
5832 .LVL883:
|
|
5833 00e8 00E0 b .L561
|
|
5834 .L577:
|
|
2984:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
5835 .loc 1 2984 0
|
|
5836 00ea 3546 mov r5, r6
|
|
5837 .LVL884:
|
|
5838 .L561:
|
|
2994:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
2995:../../../Source/third_party/fatfs/src/ff.c **** fp->fptr += ofs;
|
|
5839 .loc 1 2995 0
|
|
5840 00ec A368 ldr r3, [r4, #8]
|
|
5841 00ee 2B44 add r3, r3, r5
|
|
5842 00f0 A360 str r3, [r4, #8]
|
|
2996:../../../Source/third_party/fatfs/src/ff.c **** if (ofs % SS(fp->fs)) {
|
|
5843 .loc 1 2996 0
|
|
5844 00f2 C5F30803 ubfx r3, r5, #0, #9
|
|
5845 00f6 73B1 cbz r3, .L578
|
|
2997:../../../Source/third_party/fatfs/src/ff.c **** nsect = clust2sect(fp->fs, clst); /* Current sector */
|
|
5846 .loc 1 2997 0
|
|
5847 00f8 2068 ldr r0, [r4]
|
|
5848 00fa FFF7FEFF bl clust2sect
|
|
5849 .LVL885:
|
|
2998:../../../Source/third_party/fatfs/src/ff.c **** if (!nsect) ABORT(fp->fs, FR_INT_ERR);
|
|
5850 .loc 1 2998 0
|
|
5851 00fe 28B9 cbnz r0, .L568
|
|
5852 .loc 1 2998 0 is_stmt 0 discriminator 1
|
|
5853 0100 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5854 0102 63F07F03 orn r3, r3, #127
|
|
5855 0106 A371 strb r3, [r4, #6]
|
|
5856 0108 0220 movs r0, #2
|
|
5857 .LVL886:
|
|
5858 010a 70BD pop {r4, r5, r6, pc}
|
|
5859 .LVL887:
|
|
5860 .L568:
|
|
2999:../../../Source/third_party/fatfs/src/ff.c **** nsect += ofs / SS(fp->fs);
|
|
5861 .loc 1 2999 0 is_stmt 1
|
|
5862 010c 00EB5525 add r5, r0, r5, lsr #9
|
|
5863 .LVL888:
|
|
5864 0110 02E0 b .L560
|
|
5865 .LVL889:
|
|
5866 .L576:
|
|
2958:../../../Source/third_party/fatfs/src/ff.c **** if (ofs) {
|
|
5867 .loc 1 2958 0
|
|
5868 0112 0025 movs r5, #0
|
|
5869 .LVL890:
|
|
5870 0114 00E0 b .L560
|
|
5871 .LVL891:
|
|
5872 .L578:
|
|
5873 0116 0025 movs r5, #0
|
|
5874 .LVL892:
|
|
5875 .L560:
|
|
3000:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3001:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3002:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3003:../../../Source/third_party/fatfs/src/ff.c **** if (fp->fptr % SS(fp->fs) && nsect != fp->dsect) { /* Fill sector cache if needed */
|
|
5876 .loc 1 3003 0
|
|
5877 0118 A368 ldr r3, [r4, #8]
|
|
5878 011a C3F30803 ubfx r3, r3, #0, #9
|
|
5879 011e 43B3 cbz r3, .L569
|
|
5880 .loc 1 3003 0 is_stmt 0 discriminator 1
|
|
5881 0120 A269 ldr r2, [r4, #24]
|
|
5882 0122 AA42 cmp r2, r5
|
|
5883 0124 25D0 beq .L569
|
|
3004:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_TINY
|
|
3005:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
3006:../../../Source/third_party/fatfs/src/ff.c **** if (fp->flag & FA__DIRTY) { /* Write-back dirty sector cache */
|
|
5884 .loc 1 3006 0 is_stmt 1
|
|
5885 0126 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5886 0128 13F0400F tst r3, #64
|
|
5887 012c 11D0 beq .L570
|
|
3007:../../../Source/third_party/fatfs/src/ff.c **** if (disk_write(fp->fs->drv, fp->buf, fp->dsect, 1) != RES_OK)
|
|
5888 .loc 1 3007 0
|
|
5889 012e 2146 mov r1, r4
|
|
5890 0130 51F8243B ldr r3, [r1], #36
|
|
5891 0134 5878 ldrb r0, [r3, #1] @ zero_extendqisi2
|
|
5892 0136 0123 movs r3, #1
|
|
5893 0138 FFF7FEFF bl disk_write
|
|
5894 .LVL893:
|
|
5895 013c 28B1 cbz r0, .L571
|
|
3008:../../../Source/third_party/fatfs/src/ff.c **** ABORT(fp->fs, FR_DISK_ERR);
|
|
5896 .loc 1 3008 0
|
|
5897 013e A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5898 0140 63F07F03 orn r3, r3, #127
|
|
5899 0144 A371 strb r3, [r4, #6]
|
|
5900 0146 0120 movs r0, #1
|
|
5901 0148 70BD pop {r4, r5, r6, pc}
|
|
5902 .LVL894:
|
|
5903 .L571:
|
|
3009:../../../Source/third_party/fatfs/src/ff.c **** fp->flag &= ~FA__DIRTY;
|
|
5904 .loc 1 3009 0
|
|
5905 014a A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5906 014c 23F04003 bic r3, r3, #64
|
|
5907 0150 A371 strb r3, [r4, #6]
|
|
5908 .L570:
|
|
3010:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3011:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
3012:../../../Source/third_party/fatfs/src/ff.c **** if (disk_read(fp->fs->drv, fp->buf, nsect, 1) != RES_OK) /* Fill sector cache */
|
|
5909 .loc 1 3012 0
|
|
5910 0152 2146 mov r1, r4
|
|
5911 0154 51F8243B ldr r3, [r1], #36
|
|
5912 0158 5878 ldrb r0, [r3, #1] @ zero_extendqisi2
|
|
5913 015a 2A46 mov r2, r5
|
|
5914 015c 0123 movs r3, #1
|
|
5915 015e FFF7FEFF bl disk_read
|
|
5916 .LVL895:
|
|
5917 0162 28B1 cbz r0, .L572
|
|
3013:../../../Source/third_party/fatfs/src/ff.c **** ABORT(fp->fs, FR_DISK_ERR);
|
|
5918 .loc 1 3013 0
|
|
5919 0164 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5920 0166 63F07F03 orn r3, r3, #127
|
|
5921 016a A371 strb r3, [r4, #6]
|
|
5922 016c 0120 movs r0, #1
|
|
5923 016e 70BD pop {r4, r5, r6, pc}
|
|
5924 .LVL896:
|
|
5925 .L572:
|
|
3014:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
3015:../../../Source/third_party/fatfs/src/ff.c **** fp->dsect = nsect;
|
|
5926 .loc 1 3015 0
|
|
5927 0170 A561 str r5, [r4, #24]
|
|
5928 .L569:
|
|
3016:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3017:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
3018:../../../Source/third_party/fatfs/src/ff.c **** if (fp->fptr > fp->fsize) { /* Set file change flag if the file size is extended */
|
|
5929 .loc 1 3018 0
|
|
5930 0172 A368 ldr r3, [r4, #8]
|
|
5931 0174 E268 ldr r2, [r4, #12]
|
|
5932 0176 9342 cmp r3, r2
|
|
5933 0178 0BD9 bls .L579
|
|
3019:../../../Source/third_party/fatfs/src/ff.c **** fp->fsize = fp->fptr;
|
|
5934 .loc 1 3019 0
|
|
5935 017a E360 str r3, [r4, #12]
|
|
3020:../../../Source/third_party/fatfs/src/ff.c **** fp->flag |= FA__WRITTEN;
|
|
5936 .loc 1 3020 0
|
|
5937 017c A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
5938 017e 43F02003 orr r3, r3, #32
|
|
5939 0182 A371 strb r3, [r4, #6]
|
|
5940 .LBE74:
|
|
3021:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3022:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
3023:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3024:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3025:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(fp->fs, res);
|
|
5941 .loc 1 3025 0
|
|
5942 0184 0020 movs r0, #0
|
|
5943 0186 70BD pop {r4, r5, r6, pc}
|
|
5944 .LVL897:
|
|
5945 .L573:
|
|
5946 0188 70BD pop {r4, r5, r6, pc}
|
|
5947 .LVL898:
|
|
5948 .L574:
|
|
2888:../../../Source/third_party/fatfs/src/ff.c ****
|
|
5949 .loc 1 2888 0
|
|
5950 018a 0220 movs r0, #2
|
|
5951 .LVL899:
|
|
5952 018c 70BD pop {r4, r5, r6, pc}
|
|
5953 .LVL900:
|
|
5954 .L575:
|
|
5955 .loc 1 3025 0
|
|
5956 018e 0020 movs r0, #0
|
|
5957 .LVL901:
|
|
5958 0190 70BD pop {r4, r5, r6, pc}
|
|
5959 .LVL902:
|
|
5960 .L579:
|
|
5961 0192 0020 movs r0, #0
|
|
3026:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
5962 .loc 1 3026 0
|
|
5963 0194 70BD pop {r4, r5, r6, pc}
|
|
5964 .cfi_endproc
|
|
5965 .LFE38:
|
|
5967 0196 00BF .section .text.f_opendir,"ax",%progbits
|
|
5968 .align 2
|
|
5969 .global f_opendir
|
|
5970 .thumb
|
|
5971 .thumb_func
|
|
5973 f_opendir:
|
|
5974 .LFB39:
|
|
3027:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3028:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3029:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3030:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_MINIMIZE <= 1
|
|
3031:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3032:../../../Source/third_party/fatfs/src/ff.c **** /* Create a Directory Object */
|
|
3033:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3034:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3035:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_opendir (
|
|
3036:../../../Source/third_party/fatfs/src/ff.c **** DIR *dj, /* Pointer to directory object to create */
|
|
3037:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR *path /* Pointer to the directory path */
|
|
3038:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
3039:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
5975 .loc 1 3039 0
|
|
5976 .cfi_startproc
|
|
5977 @ args = 0, pretend = 0, frame = 24
|
|
5978 @ frame_needed = 0, uses_anonymous_args = 0
|
|
5979 .LVL903:
|
|
5980 0000 30B5 push {r4, r5, lr}
|
|
5981 .cfi_def_cfa_offset 12
|
|
5982 .cfi_offset 4, -12
|
|
5983 .cfi_offset 5, -8
|
|
5984 .cfi_offset 14, -4
|
|
5985 0002 87B0 sub sp, sp, #28
|
|
5986 .cfi_def_cfa_offset 40
|
|
5987 0004 0191 str r1, [sp, #4]
|
|
3040:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
3041:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs;
|
|
3042:../../../Source/third_party/fatfs/src/ff.c **** DEF_NAMEBUF;
|
|
3043:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3044:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3045:../../../Source/third_party/fatfs/src/ff.c **** if (!dj) return FR_INVALID_OBJECT;
|
|
5988 .loc 1 3045 0
|
|
5989 0006 30B3 cbz r0, .L591
|
|
5990 0008 0446 mov r4, r0
|
|
3046:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3047:../../../Source/third_party/fatfs/src/ff.c **** res = chk_mounted(&path, &dj->fs, 0);
|
|
5991 .loc 1 3047 0
|
|
5992 000a 01A8 add r0, sp, #4
|
|
5993 .LVL904:
|
|
5994 000c 2146 mov r1, r4
|
|
5995 .LVL905:
|
|
5996 000e 0022 movs r2, #0
|
|
5997 0010 FFF7FEFF bl chk_mounted
|
|
5998 .LVL906:
|
|
3048:../../../Source/third_party/fatfs/src/ff.c **** fs = dj->fs;
|
|
5999 .loc 1 3048 0
|
|
6000 0014 2568 ldr r5, [r4]
|
|
6001 .LVL907:
|
|
3049:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
6002 .loc 1 3049 0
|
|
6003 0016 D8B9 cbnz r0, .L585
|
|
3050:../../../Source/third_party/fatfs/src/ff.c **** INIT_BUF(*dj);
|
|
6004 .loc 1 3050 0
|
|
6005 0018 03AB add r3, sp, #12
|
|
6006 001a A361 str r3, [r4, #24]
|
|
6007 001c 184B ldr r3, .L597
|
|
6008 001e E361 str r3, [r4, #28]
|
|
3051:../../../Source/third_party/fatfs/src/ff.c **** res = follow_path(dj, path); /* Follow the path to the directory */
|
|
6009 .loc 1 3051 0
|
|
6010 0020 2046 mov r0, r4
|
|
6011 .LVL908:
|
|
6012 0022 0199 ldr r1, [sp, #4]
|
|
6013 0024 FFF7FEFF bl follow_path
|
|
6014 .LVL909:
|
|
3052:../../../Source/third_party/fatfs/src/ff.c **** FREE_BUF();
|
|
3053:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) { /* Follow completed */
|
|
6015 .loc 1 3053 0
|
|
6016 0028 0346 mov r3, r0
|
|
6017 002a 10BB cbnz r0, .L586
|
|
3054:../../../Source/third_party/fatfs/src/ff.c **** if (dj->dir) { /* It is not the root dir */
|
|
6018 .loc 1 3054 0
|
|
6019 002c 6169 ldr r1, [r4, #20]
|
|
6020 002e B1B1 cbz r1, .L587
|
|
3055:../../../Source/third_party/fatfs/src/ff.c **** if (dj->dir[DIR_Attr] & AM_DIR) { /* The object is a directory */
|
|
6021 .loc 1 3055 0
|
|
6022 0030 CB7A ldrb r3, [r1, #11] @ zero_extendqisi2
|
|
6023 0032 13F0100F tst r3, #16
|
|
6024 0036 06D0 beq .L592
|
|
3056:../../../Source/third_party/fatfs/src/ff.c **** dj->sclust = ld_clust(fs, dj->dir);
|
|
6025 .loc 1 3056 0
|
|
6026 0038 2846 mov r0, r5
|
|
6027 .LVL910:
|
|
6028 003a FFF7FEFF bl ld_clust
|
|
6029 .LVL911:
|
|
6030 003e A060 str r0, [r4, #8]
|
|
6031 0040 0DE0 b .L587
|
|
6032 .LVL912:
|
|
6033 .L595:
|
|
3057:../../../Source/third_party/fatfs/src/ff.c **** } else { /* The object is not a directory */
|
|
3058:../../../Source/third_party/fatfs/src/ff.c **** res = FR_NO_PATH;
|
|
3059:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3060:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3061:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
3062:../../../Source/third_party/fatfs/src/ff.c **** dj->id = fs->id;
|
|
3063:../../../Source/third_party/fatfs/src/ff.c **** res = dir_sdi(dj, 0); /* Rewind dir */
|
|
3064:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3065:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3066:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_NO_FILE) res = FR_NO_PATH;
|
|
3067:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) dj->fs = 0; /* Invalidate the dir object if function faild */
|
|
6034 .loc 1 3067 0
|
|
6035 0042 53B1 cbz r3, .L593
|
|
6036 0044 00E0 b .L588
|
|
6037 .LVL913:
|
|
6038 .L592:
|
|
3058:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
6039 .loc 1 3058 0
|
|
6040 0046 0523 movs r3, #5
|
|
6041 .LVL914:
|
|
6042 .L588:
|
|
6043 .loc 1 3067 0 discriminator 1
|
|
6044 0048 0022 movs r2, #0
|
|
6045 004a 2260 str r2, [r4]
|
|
6046 004c 1846 mov r0, r3
|
|
6047 004e 14E0 b .L594
|
|
6048 .LVL915:
|
|
6049 .L585:
|
|
3068:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3069:../../../Source/third_party/fatfs/src/ff.c **** dj->fs = 0;
|
|
6050 .loc 1 3069 0
|
|
6051 0050 0022 movs r2, #0
|
|
6052 0052 2260 str r2, [r4]
|
|
6053 0054 11E0 b .L594
|
|
6054 .LVL916:
|
|
6055 .L591:
|
|
3045:../../../Source/third_party/fatfs/src/ff.c ****
|
|
6056 .loc 1 3045 0
|
|
6057 0056 0920 movs r0, #9
|
|
6058 .LVL917:
|
|
6059 0058 0FE0 b .L594
|
|
6060 .LVL918:
|
|
6061 .L593:
|
|
6062 005a 0020 movs r0, #0
|
|
6063 005c 0DE0 b .L594
|
|
6064 .LVL919:
|
|
6065 .L587:
|
|
3062:../../../Source/third_party/fatfs/src/ff.c **** res = dir_sdi(dj, 0); /* Rewind dir */
|
|
6066 .loc 1 3062 0
|
|
6067 005e EB88 ldrh r3, [r5, #6]
|
|
6068 0060 A380 strh r3, [r4, #4] @ movhi
|
|
3063:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
6069 .loc 1 3063 0
|
|
6070 0062 2046 mov r0, r4
|
|
6071 0064 0021 movs r1, #0
|
|
6072 0066 FFF7FEFF bl dir_sdi
|
|
6073 .LVL920:
|
|
6074 006a 0346 mov r3, r0
|
|
6075 .LVL921:
|
|
3066:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) dj->fs = 0; /* Invalidate the dir object if function faild */
|
|
6076 .loc 1 3066 0
|
|
6077 006c 0428 cmp r0, #4
|
|
6078 006e E8D1 bne .L595
|
|
6079 0070 01E0 b .L589
|
|
6080 .L586:
|
|
6081 0072 0428 cmp r0, #4
|
|
6082 0074 E8D1 bne .L588
|
|
6083 .L589:
|
|
6084 .LVL922:
|
|
3039:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
6085 .loc 1 3039 0
|
|
6086 0076 0523 movs r3, #5
|
|
6087 0078 E6E7 b .L588
|
|
6088 .LVL923:
|
|
6089 .L594:
|
|
3070:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3071:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3072:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(fs, res);
|
|
3073:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
6090 .loc 1 3073 0
|
|
6091 007a 07B0 add sp, sp, #28
|
|
6092 .cfi_def_cfa_offset 12
|
|
6093 @ sp needed
|
|
6094 007c 30BD pop {r4, r5, pc}
|
|
6095 .LVL924:
|
|
6096 .L598:
|
|
6097 007e 00BF .align 2
|
|
6098 .L597:
|
|
6099 0080 00000000 .word .LANCHOR4
|
|
6100 .cfi_endproc
|
|
6101 .LFE39:
|
|
6103 .section .text.f_readdir,"ax",%progbits
|
|
6104 .align 2
|
|
6105 .global f_readdir
|
|
6106 .thumb
|
|
6107 .thumb_func
|
|
6109 f_readdir:
|
|
6110 .LFB40:
|
|
3074:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3075:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3076:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3077:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3078:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3079:../../../Source/third_party/fatfs/src/ff.c **** /* Read Directory Entry in Sequence */
|
|
3080:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3081:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3082:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_readdir (
|
|
3083:../../../Source/third_party/fatfs/src/ff.c **** DIR *dj, /* Pointer to the open directory object */
|
|
3084:../../../Source/third_party/fatfs/src/ff.c **** FILINFO *fno /* Pointer to file information to return */
|
|
3085:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
3086:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
6111 .loc 1 3086 0
|
|
6112 .cfi_startproc
|
|
6113 @ args = 0, pretend = 0, frame = 16
|
|
6114 @ frame_needed = 0, uses_anonymous_args = 0
|
|
6115 .LVL925:
|
|
6116 0000 70B5 push {r4, r5, r6, lr}
|
|
6117 .cfi_def_cfa_offset 16
|
|
6118 .cfi_offset 4, -16
|
|
6119 .cfi_offset 5, -12
|
|
6120 .cfi_offset 6, -8
|
|
6121 .cfi_offset 14, -4
|
|
6122 0002 84B0 sub sp, sp, #16
|
|
6123 .cfi_def_cfa_offset 32
|
|
6124 0004 0446 mov r4, r0
|
|
6125 0006 0E46 mov r6, r1
|
|
3087:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
3088:../../../Source/third_party/fatfs/src/ff.c **** DEF_NAMEBUF;
|
|
3089:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3090:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3091:../../../Source/third_party/fatfs/src/ff.c **** res = validate(dj); /* Check validity of the object */
|
|
6126 .loc 1 3091 0
|
|
6127 0008 FFF7FEFF bl validate
|
|
6128 .LVL926:
|
|
3092:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
6129 .loc 1 3092 0
|
|
6130 000c 0546 mov r5, r0
|
|
6131 000e 20BB cbnz r0, .L600
|
|
3093:../../../Source/third_party/fatfs/src/ff.c **** if (!fno) {
|
|
6132 .loc 1 3093 0
|
|
6133 0010 2EB9 cbnz r6, .L601
|
|
3094:../../../Source/third_party/fatfs/src/ff.c **** res = dir_sdi(dj, 0); /* Rewind the directory object */
|
|
6134 .loc 1 3094 0
|
|
6135 0012 2046 mov r0, r4
|
|
6136 .LVL927:
|
|
6137 0014 0021 movs r1, #0
|
|
6138 0016 FFF7FEFF bl dir_sdi
|
|
6139 .LVL928:
|
|
6140 001a 0546 mov r5, r0
|
|
6141 .LVL929:
|
|
6142 001c 1DE0 b .L600
|
|
6143 .LVL930:
|
|
6144 .L601:
|
|
3095:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3096:../../../Source/third_party/fatfs/src/ff.c **** INIT_BUF(*dj);
|
|
6145 .loc 1 3096 0
|
|
6146 001e 01AB add r3, sp, #4
|
|
6147 0020 A361 str r3, [r4, #24]
|
|
6148 0022 0F4B ldr r3, .L607
|
|
6149 0024 E361 str r3, [r4, #28]
|
|
3097:../../../Source/third_party/fatfs/src/ff.c **** res = dir_read(dj, 0); /* Read an item */
|
|
6150 .loc 1 3097 0
|
|
6151 0026 2046 mov r0, r4
|
|
6152 .LVL931:
|
|
6153 0028 0021 movs r1, #0
|
|
6154 002a FFF7FEFF bl dir_read
|
|
6155 .LVL932:
|
|
3098:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_NO_FILE) { /* Reached end of dir */
|
|
6156 .loc 1 3098 0
|
|
6157 002e 0428 cmp r0, #4
|
|
6158 0030 02D1 bne .L602
|
|
3099:../../../Source/third_party/fatfs/src/ff.c **** dj->sect = 0;
|
|
6159 .loc 1 3099 0
|
|
6160 0032 0023 movs r3, #0
|
|
6161 0034 2361 str r3, [r4, #16]
|
|
6162 .LVL933:
|
|
6163 0036 00E0 b .L603
|
|
6164 .LVL934:
|
|
6165 .L602:
|
|
3100:../../../Source/third_party/fatfs/src/ff.c **** res = FR_OK;
|
|
3101:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3102:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) { /* A valid entry is found */
|
|
6166 .loc 1 3102 0
|
|
6167 0038 60B9 cbnz r0, .L604
|
|
6168 .LVL935:
|
|
6169 .L603:
|
|
3103:../../../Source/third_party/fatfs/src/ff.c **** get_fileinfo(dj, fno); /* Get the object information */
|
|
6170 .loc 1 3103 0
|
|
6171 003a 2046 mov r0, r4
|
|
6172 003c 3146 mov r1, r6
|
|
6173 003e FFF7FEFF bl get_fileinfo
|
|
6174 .LVL936:
|
|
3104:../../../Source/third_party/fatfs/src/ff.c **** res = dir_next(dj, 0); /* Increment index for next */
|
|
6175 .loc 1 3104 0
|
|
6176 0042 2046 mov r0, r4
|
|
6177 0044 0021 movs r1, #0
|
|
6178 0046 FFF7FEFF bl dir_next
|
|
6179 .LVL937:
|
|
3105:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_NO_FILE) {
|
|
6180 .loc 1 3105 0
|
|
6181 004a 0428 cmp r0, #4
|
|
6182 004c 04D1 bne .L605
|
|
3106:../../../Source/third_party/fatfs/src/ff.c **** dj->sect = 0;
|
|
6183 .loc 1 3106 0
|
|
6184 004e 0023 movs r3, #0
|
|
6185 0050 2361 str r3, [r4, #16]
|
|
6186 .LVL938:
|
|
6187 0052 02E0 b .L600
|
|
6188 .LVL939:
|
|
6189 .L604:
|
|
3097:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_NO_FILE) { /* Reached end of dir */
|
|
6190 .loc 1 3097 0
|
|
6191 0054 0546 mov r5, r0
|
|
6192 0056 00E0 b .L600
|
|
6193 .L605:
|
|
3104:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_NO_FILE) {
|
|
6194 .loc 1 3104 0
|
|
6195 0058 0546 mov r5, r0
|
|
6196 .LVL940:
|
|
6197 .L600:
|
|
3107:../../../Source/third_party/fatfs/src/ff.c **** res = FR_OK;
|
|
3108:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3109:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3110:../../../Source/third_party/fatfs/src/ff.c **** FREE_BUF();
|
|
3111:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3112:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3113:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3114:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(dj->fs, res);
|
|
3115:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
6198 .loc 1 3115 0
|
|
6199 005a 2846 mov r0, r5
|
|
6200 005c 04B0 add sp, sp, #16
|
|
6201 .cfi_def_cfa_offset 16
|
|
6202 @ sp needed
|
|
6203 005e 70BD pop {r4, r5, r6, pc}
|
|
6204 .LVL941:
|
|
6205 .L608:
|
|
6206 .align 2
|
|
6207 .L607:
|
|
6208 0060 00000000 .word .LANCHOR4
|
|
6209 .cfi_endproc
|
|
6210 .LFE40:
|
|
6212 .section .text.f_stat,"ax",%progbits
|
|
6213 .align 2
|
|
6214 .global f_stat
|
|
6215 .thumb
|
|
6216 .thumb_func
|
|
6218 f_stat:
|
|
6219 .LFB41:
|
|
3116:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3117:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3118:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3119:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_MINIMIZE == 0
|
|
3120:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3121:../../../Source/third_party/fatfs/src/ff.c **** /* Get File Status */
|
|
3122:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3123:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3124:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_stat (
|
|
3125:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR *path, /* Pointer to the file path */
|
|
3126:../../../Source/third_party/fatfs/src/ff.c **** FILINFO *fno /* Pointer to file information to return */
|
|
3127:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
3128:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
6220 .loc 1 3128 0
|
|
6221 .cfi_startproc
|
|
6222 @ args = 0, pretend = 0, frame = 56
|
|
6223 @ frame_needed = 0, uses_anonymous_args = 0
|
|
6224 .LVL942:
|
|
6225 0000 30B5 push {r4, r5, lr}
|
|
6226 .cfi_def_cfa_offset 12
|
|
6227 .cfi_offset 4, -12
|
|
6228 .cfi_offset 5, -8
|
|
6229 .cfi_offset 14, -4
|
|
6230 0002 8FB0 sub sp, sp, #60
|
|
6231 .cfi_def_cfa_offset 72
|
|
6232 0004 0EAB add r3, sp, #56
|
|
6233 0006 43F8340D str r0, [r3, #-52]!
|
|
6234 000a 0D46 mov r5, r1
|
|
3129:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
3130:../../../Source/third_party/fatfs/src/ff.c **** DIR dj;
|
|
3131:../../../Source/third_party/fatfs/src/ff.c **** DEF_NAMEBUF;
|
|
3132:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3133:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3134:../../../Source/third_party/fatfs/src/ff.c **** res = chk_mounted(&path, &dj.fs, 0);
|
|
6235 .loc 1 3134 0
|
|
6236 000c 1846 mov r0, r3
|
|
6237 .LVL943:
|
|
6238 000e 05A9 add r1, sp, #20
|
|
6239 .LVL944:
|
|
6240 0010 0022 movs r2, #0
|
|
6241 0012 FFF7FEFF bl chk_mounted
|
|
6242 .LVL945:
|
|
3135:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
6243 .loc 1 3135 0
|
|
6244 0016 0446 mov r4, r0
|
|
6245 0018 88B9 cbnz r0, .L610
|
|
3136:../../../Source/third_party/fatfs/src/ff.c **** INIT_BUF(dj);
|
|
6246 .loc 1 3136 0
|
|
6247 001a 02AB add r3, sp, #8
|
|
6248 001c 0B93 str r3, [sp, #44]
|
|
6249 001e 094B ldr r3, .L613
|
|
6250 0020 0C93 str r3, [sp, #48]
|
|
3137:../../../Source/third_party/fatfs/src/ff.c **** res = follow_path(&dj, path); /* Follow the file path */
|
|
6251 .loc 1 3137 0
|
|
6252 0022 05A8 add r0, sp, #20
|
|
6253 .LVL946:
|
|
6254 0024 0199 ldr r1, [sp, #4]
|
|
6255 0026 FFF7FEFF bl follow_path
|
|
6256 .LVL947:
|
|
3138:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) { /* Follow completed */
|
|
6257 .loc 1 3138 0
|
|
6258 002a 0446 mov r4, r0
|
|
6259 002c 38B9 cbnz r0, .L610
|
|
3139:../../../Source/third_party/fatfs/src/ff.c **** if (dj.dir) /* Found an object */
|
|
6260 .loc 1 3139 0
|
|
6261 002e 0A9B ldr r3, [sp, #40]
|
|
6262 0030 23B1 cbz r3, .L611
|
|
3140:../../../Source/third_party/fatfs/src/ff.c **** get_fileinfo(&dj, fno);
|
|
6263 .loc 1 3140 0
|
|
6264 0032 05A8 add r0, sp, #20
|
|
6265 .LVL948:
|
|
6266 0034 2946 mov r1, r5
|
|
6267 0036 FFF7FEFF bl get_fileinfo
|
|
6268 .LVL949:
|
|
6269 003a 00E0 b .L610
|
|
6270 .LVL950:
|
|
6271 .L611:
|
|
3141:../../../Source/third_party/fatfs/src/ff.c **** else /* It is root dir */
|
|
3142:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INVALID_NAME;
|
|
6272 .loc 1 3142 0
|
|
6273 003c 0624 movs r4, #6
|
|
6274 .LVL951:
|
|
6275 .L610:
|
|
3143:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3144:../../../Source/third_party/fatfs/src/ff.c **** FREE_BUF();
|
|
3145:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3146:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3147:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(dj.fs, res);
|
|
3148:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
6276 .loc 1 3148 0
|
|
6277 003e 2046 mov r0, r4
|
|
6278 0040 0FB0 add sp, sp, #60
|
|
6279 .cfi_def_cfa_offset 12
|
|
6280 @ sp needed
|
|
6281 0042 30BD pop {r4, r5, pc}
|
|
6282 .LVL952:
|
|
6283 .L614:
|
|
6284 .align 2
|
|
6285 .L613:
|
|
6286 0044 00000000 .word .LANCHOR4
|
|
6287 .cfi_endproc
|
|
6288 .LFE41:
|
|
6290 .section .text.f_getfree,"ax",%progbits
|
|
6291 .align 2
|
|
6292 .global f_getfree
|
|
6293 .thumb
|
|
6294 .thumb_func
|
|
6296 f_getfree:
|
|
6297 .LFB42:
|
|
3149:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3150:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3151:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3152:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
3153:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3154:../../../Source/third_party/fatfs/src/ff.c **** /* Get Number of Free Clusters */
|
|
3155:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3156:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3157:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_getfree (
|
|
3158:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR *path, /* Path name of the logical drive number */
|
|
3159:../../../Source/third_party/fatfs/src/ff.c **** DWORD *nclst, /* Pointer to a variable to return number of free clusters */
|
|
3160:../../../Source/third_party/fatfs/src/ff.c **** FATFS **fatfs /* Pointer to return pointer to corresponding file system object */
|
|
3161:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
3162:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
6298 .loc 1 3162 0
|
|
6299 .cfi_startproc
|
|
6300 @ args = 0, pretend = 0, frame = 8
|
|
6301 @ frame_needed = 0, uses_anonymous_args = 0
|
|
6302 .LVL953:
|
|
6303 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
6304 .cfi_def_cfa_offset 36
|
|
6305 .cfi_offset 4, -36
|
|
6306 .cfi_offset 5, -32
|
|
6307 .cfi_offset 6, -28
|
|
6308 .cfi_offset 7, -24
|
|
6309 .cfi_offset 8, -20
|
|
6310 .cfi_offset 9, -16
|
|
6311 .cfi_offset 10, -12
|
|
6312 .cfi_offset 11, -8
|
|
6313 .cfi_offset 14, -4
|
|
6314 0004 83B0 sub sp, sp, #12
|
|
6315 .cfi_def_cfa_offset 48
|
|
6316 0006 02AB add r3, sp, #8
|
|
6317 0008 43F8040D str r0, [r3, #-4]!
|
|
6318 000c 8A46 mov r10, r1
|
|
6319 000e 1446 mov r4, r2
|
|
3163:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
3164:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs;
|
|
3165:../../../Source/third_party/fatfs/src/ff.c **** DWORD n, clst, sect, stat;
|
|
3166:../../../Source/third_party/fatfs/src/ff.c **** UINT i;
|
|
3167:../../../Source/third_party/fatfs/src/ff.c **** BYTE fat, *p;
|
|
3168:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3169:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3170:../../../Source/third_party/fatfs/src/ff.c **** /* Get drive number */
|
|
3171:../../../Source/third_party/fatfs/src/ff.c **** res = chk_mounted(&path, fatfs, 0);
|
|
6320 .loc 1 3171 0
|
|
6321 0010 1846 mov r0, r3
|
|
6322 .LVL954:
|
|
6323 0012 1146 mov r1, r2
|
|
6324 .LVL955:
|
|
6325 0014 0022 movs r2, #0
|
|
6326 .LVL956:
|
|
6327 0016 FFF7FEFF bl chk_mounted
|
|
6328 .LVL957:
|
|
3172:../../../Source/third_party/fatfs/src/ff.c **** fs = *fatfs;
|
|
6329 .loc 1 3172 0
|
|
6330 001a 2568 ldr r5, [r4]
|
|
6331 .LVL958:
|
|
3173:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
6332 .loc 1 3173 0
|
|
6333 001c 8146 mov r9, r0
|
|
6334 001e 0028 cmp r0, #0
|
|
6335 0020 60D1 bne .L633
|
|
3174:../../../Source/third_party/fatfs/src/ff.c **** /* If free_clust is valid, return it without full cluster scan */
|
|
3175:../../../Source/third_party/fatfs/src/ff.c **** if (fs->free_clust <= fs->n_fatent - 2) {
|
|
6336 .loc 1 3175 0
|
|
6337 0022 2B69 ldr r3, [r5, #16]
|
|
6338 0024 AC69 ldr r4, [r5, #24]
|
|
6339 .LVL959:
|
|
6340 0026 A21E subs r2, r4, #2
|
|
6341 0028 9342 cmp r3, r2
|
|
6342 002a 02D8 bhi .L617
|
|
3176:../../../Source/third_party/fatfs/src/ff.c **** *nclst = fs->free_clust;
|
|
6343 .loc 1 3176 0
|
|
6344 002c CAF80030 str r3, [r10]
|
|
6345 0030 58E0 b .L633
|
|
6346 .L617:
|
|
3177:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3178:../../../Source/third_party/fatfs/src/ff.c **** /* Get number of free clusters */
|
|
3179:../../../Source/third_party/fatfs/src/ff.c **** fat = fs->fs_type;
|
|
6347 .loc 1 3179 0
|
|
6348 0032 2F78 ldrb r7, [r5] @ zero_extendqisi2
|
|
6349 .LVL960:
|
|
3180:../../../Source/third_party/fatfs/src/ff.c **** n = 0;
|
|
3181:../../../Source/third_party/fatfs/src/ff.c **** if (fat == FS_FAT12) {
|
|
6350 .loc 1 3181 0
|
|
6351 0034 012F cmp r7, #1
|
|
6352 0036 11D1 bne .L618
|
|
6353 0038 0224 movs r4, #2
|
|
6354 003a 0026 movs r6, #0
|
|
6355 .LVL961:
|
|
6356 .L621:
|
|
3182:../../../Source/third_party/fatfs/src/ff.c **** clst = 2;
|
|
3183:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
3184:../../../Source/third_party/fatfs/src/ff.c **** stat = get_fat(fs, clst);
|
|
6357 .loc 1 3184 0
|
|
6358 003c 2846 mov r0, r5
|
|
6359 003e 2146 mov r1, r4
|
|
6360 0040 FFF7FEFF bl get_fat
|
|
6361 .LVL962:
|
|
3185:../../../Source/third_party/fatfs/src/ff.c **** if (stat == 0xFFFFFFFF) { res = FR_DISK_ERR; break; }
|
|
6362 .loc 1 3185 0
|
|
6363 0044 B0F1FF3F cmp r0, #-1
|
|
6364 0048 45D0 beq .L630
|
|
3186:../../../Source/third_party/fatfs/src/ff.c **** if (stat == 1) { res = FR_INT_ERR; break; }
|
|
6365 .loc 1 3186 0
|
|
6366 004a 0128 cmp r0, #1
|
|
6367 004c 46D0 beq .L631
|
|
3187:../../../Source/third_party/fatfs/src/ff.c **** if (stat == 0) n++;
|
|
6368 .loc 1 3187 0
|
|
6369 004e 00B9 cbnz r0, .L620
|
|
6370 .loc 1 3187 0 is_stmt 0 discriminator 1
|
|
6371 0050 0136 adds r6, r6, #1
|
|
6372 .LVL963:
|
|
6373 .L620:
|
|
3188:../../../Source/third_party/fatfs/src/ff.c **** } while (++clst < fs->n_fatent);
|
|
6374 .loc 1 3188 0 is_stmt 1
|
|
6375 0052 0134 adds r4, r4, #1
|
|
6376 .LVL964:
|
|
6377 0054 AB69 ldr r3, [r5, #24]
|
|
6378 0056 9C42 cmp r4, r3
|
|
6379 0058 F0D3 bcc .L621
|
|
6380 005a 41E0 b .L619
|
|
6381 .LVL965:
|
|
6382 .L618:
|
|
3189:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3190:../../../Source/third_party/fatfs/src/ff.c **** clst = fs->n_fatent;
|
|
3191:../../../Source/third_party/fatfs/src/ff.c **** sect = fs->fatbase;
|
|
6383 .loc 1 3191 0
|
|
6384 005c 696A ldr r1, [r5, #36]
|
|
6385 .LVL966:
|
|
3192:../../../Source/third_party/fatfs/src/ff.c **** i = 0; p = 0;
|
|
6386 .loc 1 3192 0
|
|
6387 005e 0023 movs r3, #0
|
|
6388 0060 9E46 mov lr, r3
|
|
3180:../../../Source/third_party/fatfs/src/ff.c **** if (fat == FS_FAT12) {
|
|
6389 .loc 1 3180 0
|
|
6390 0062 1E46 mov r6, r3
|
|
3193:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
3194:../../../Source/third_party/fatfs/src/ff.c **** if (!i) {
|
|
3195:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(fs, sect++);
|
|
3196:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
3197:../../../Source/third_party/fatfs/src/ff.c **** p = fs->win;
|
|
3198:../../../Source/third_party/fatfs/src/ff.c **** i = SS(fs);
|
|
6391 .loc 1 3198 0
|
|
6392 0064 4FF4007B mov fp, #512
|
|
6393 .LVL967:
|
|
6394 .L628:
|
|
3194:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(fs, sect++);
|
|
6395 .loc 1 3194 0
|
|
6396 0068 BEF1000F cmp lr, #0
|
|
6397 006c 0AD1 bne .L622
|
|
6398 .LVL968:
|
|
3195:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
6399 .loc 1 3195 0
|
|
6400 006e 01F10108 add r8, r1, #1
|
|
6401 .LVL969:
|
|
6402 0072 2846 mov r0, r5
|
|
6403 0074 FFF7FEFF bl move_window
|
|
6404 .LVL970:
|
|
3196:../../../Source/third_party/fatfs/src/ff.c **** p = fs->win;
|
|
6405 .loc 1 3196 0
|
|
6406 0078 0346 mov r3, r0
|
|
6407 007a 18BB cbnz r0, .L632
|
|
6408 .LVL971:
|
|
3197:../../../Source/third_party/fatfs/src/ff.c **** i = SS(fs);
|
|
6409 .loc 1 3197 0
|
|
6410 007c 05F13403 add r3, r5, #52
|
|
6411 .LVL972:
|
|
3195:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
6412 .loc 1 3195 0
|
|
6413 0080 4146 mov r1, r8
|
|
6414 .loc 1 3198 0
|
|
6415 0082 DE46 mov lr, fp
|
|
6416 .LVL973:
|
|
6417 .L622:
|
|
3199:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3200:../../../Source/third_party/fatfs/src/ff.c **** if (fat == FS_FAT16) {
|
|
6418 .loc 1 3200 0
|
|
6419 0084 022F cmp r7, #2
|
|
6420 0086 09D1 bne .L624
|
|
3201:../../../Source/third_party/fatfs/src/ff.c **** if (LD_WORD(p) == 0) n++;
|
|
6421 .loc 1 3201 0
|
|
6422 0088 5878 ldrb r0, [r3, #1] @ zero_extendqisi2
|
|
6423 008a 1A78 ldrb r2, [r3] @ zero_extendqisi2
|
|
6424 008c 52EA0022 orrs r2, r2, r0, lsl #8
|
|
6425 0090 08BF it eq
|
|
6426 0092 0136 addeq r6, r6, #1
|
|
6427 .LVL974:
|
|
3202:../../../Source/third_party/fatfs/src/ff.c **** p += 2; i -= 2;
|
|
6428 .loc 1 3202 0
|
|
6429 0094 0233 adds r3, r3, #2
|
|
6430 .LVL975:
|
|
6431 0096 AEF1020E sub lr, lr, #2
|
|
6432 .LVL976:
|
|
6433 009a 10E0 b .L626
|
|
6434 .LVL977:
|
|
6435 .L624:
|
|
3203:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3204:../../../Source/third_party/fatfs/src/ff.c **** if ((LD_DWORD(p) & 0x0FFFFFFF) == 0) n++;
|
|
6436 .loc 1 3204 0
|
|
6437 009c D878 ldrb r0, [r3, #3] @ zero_extendqisi2
|
|
6438 009e 9A78 ldrb r2, [r3, #2] @ zero_extendqisi2
|
|
6439 00a0 1204 lsls r2, r2, #16
|
|
6440 00a2 42EA0062 orr r2, r2, r0, lsl #24
|
|
6441 00a6 1878 ldrb r0, [r3] @ zero_extendqisi2
|
|
6442 00a8 0243 orrs r2, r2, r0
|
|
6443 00aa 5878 ldrb r0, [r3, #1] @ zero_extendqisi2
|
|
6444 00ac 42EA0022 orr r2, r2, r0, lsl #8
|
|
6445 00b0 22F07042 bic r2, r2, #-268435456
|
|
6446 00b4 02B9 cbnz r2, .L627
|
|
6447 .loc 1 3204 0 is_stmt 0 discriminator 1
|
|
6448 00b6 0136 adds r6, r6, #1
|
|
6449 .LVL978:
|
|
6450 .L627:
|
|
3205:../../../Source/third_party/fatfs/src/ff.c **** p += 4; i -= 4;
|
|
6451 .loc 1 3205 0 is_stmt 1
|
|
6452 00b8 0433 adds r3, r3, #4
|
|
6453 .LVL979:
|
|
6454 00ba AEF1040E sub lr, lr, #4
|
|
6455 .LVL980:
|
|
6456 .L626:
|
|
3206:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3207:../../../Source/third_party/fatfs/src/ff.c **** } while (--clst);
|
|
6457 .loc 1 3207 0
|
|
6458 00be 013C subs r4, r4, #1
|
|
6459 .LVL981:
|
|
6460 00c0 D2D1 bne .L628
|
|
6461 00c2 00E0 b .L623
|
|
6462 .LVL982:
|
|
6463 .L632:
|
|
3195:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
6464 .loc 1 3195 0
|
|
6465 00c4 8146 mov r9, r0
|
|
6466 .LVL983:
|
|
6467 .L623:
|
|
3208:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3209:../../../Source/third_party/fatfs/src/ff.c **** fs->free_clust = n;
|
|
6468 .loc 1 3209 0
|
|
6469 00c6 2E61 str r6, [r5, #16]
|
|
3210:../../../Source/third_party/fatfs/src/ff.c **** if (fat == FS_FAT32) fs->fsi_flag = 1;
|
|
6470 .loc 1 3210 0
|
|
6471 00c8 032F cmp r7, #3
|
|
6472 00ca 04BF itt eq
|
|
6473 00cc 0123 moveq r3, #1
|
|
6474 00ce 6B71 strbeq r3, [r5, #5]
|
|
6475 .L629:
|
|
3211:../../../Source/third_party/fatfs/src/ff.c **** *nclst = n;
|
|
6476 .loc 1 3211 0
|
|
6477 00d0 CAF80060 str r6, [r10]
|
|
6478 00d4 06E0 b .L633
|
|
6479 .LVL984:
|
|
6480 .L630:
|
|
3185:../../../Source/third_party/fatfs/src/ff.c **** if (stat == 1) { res = FR_INT_ERR; break; }
|
|
6481 .loc 1 3185 0
|
|
6482 00d6 4FF00109 mov r9, #1
|
|
6483 00da 01E0 b .L619
|
|
6484 .L631:
|
|
3186:../../../Source/third_party/fatfs/src/ff.c **** if (stat == 0) n++;
|
|
6485 .loc 1 3186 0
|
|
6486 00dc 4FF00209 mov r9, #2
|
|
6487 .L619:
|
|
6488 .LVL985:
|
|
3209:../../../Source/third_party/fatfs/src/ff.c **** if (fat == FS_FAT32) fs->fsi_flag = 1;
|
|
6489 .loc 1 3209 0
|
|
6490 00e0 2E61 str r6, [r5, #16]
|
|
6491 00e2 F5E7 b .L629
|
|
6492 .LVL986:
|
|
6493 .L633:
|
|
3212:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3213:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3214:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(fs, res);
|
|
3215:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
6494 .loc 1 3215 0
|
|
6495 00e4 4846 mov r0, r9
|
|
6496 00e6 03B0 add sp, sp, #12
|
|
6497 .cfi_def_cfa_offset 36
|
|
6498 @ sp needed
|
|
6499 00e8 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
6500 .cfi_endproc
|
|
6501 .LFE42:
|
|
6503 .section .text.f_truncate,"ax",%progbits
|
|
6504 .align 2
|
|
6505 .global f_truncate
|
|
6506 .thumb
|
|
6507 .thumb_func
|
|
6509 f_truncate:
|
|
6510 .LFB43:
|
|
3216:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3217:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3218:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3219:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3220:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3221:../../../Source/third_party/fatfs/src/ff.c **** /* Truncate File */
|
|
3222:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3223:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3224:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_truncate (
|
|
3225:../../../Source/third_party/fatfs/src/ff.c **** FIL *fp /* Pointer to the file object */
|
|
3226:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
3227:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
6511 .loc 1 3227 0
|
|
6512 .cfi_startproc
|
|
6513 @ args = 0, pretend = 0, frame = 0
|
|
6514 @ frame_needed = 0, uses_anonymous_args = 0
|
|
6515 .LVL987:
|
|
6516 0000 70B5 push {r4, r5, r6, lr}
|
|
6517 .cfi_def_cfa_offset 16
|
|
6518 .cfi_offset 4, -16
|
|
6519 .cfi_offset 5, -12
|
|
6520 .cfi_offset 6, -8
|
|
6521 .cfi_offset 14, -4
|
|
6522 0002 0446 mov r4, r0
|
|
3228:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
3229:../../../Source/third_party/fatfs/src/ff.c **** DWORD ncl;
|
|
3230:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3231:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3232:../../../Source/third_party/fatfs/src/ff.c **** res = validate(fp); /* Check validity of the object */
|
|
6523 .loc 1 3232 0
|
|
6524 0004 FFF7FEFF bl validate
|
|
6525 .LVL988:
|
|
3233:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
6526 .loc 1 3233 0
|
|
6527 0008 0546 mov r5, r0
|
|
6528 000a 0028 cmp r0, #0
|
|
6529 000c 45D1 bne .L650
|
|
3234:../../../Source/third_party/fatfs/src/ff.c **** if (fp->flag & FA__ERROR) { /* Check abort flag */
|
|
6530 .loc 1 3234 0
|
|
6531 000e A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
6532 0010 13F0800F tst r3, #128
|
|
6533 0014 3BD1 bne .L647
|
|
3235:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INT_ERR;
|
|
3236:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3237:../../../Source/third_party/fatfs/src/ff.c **** if (!(fp->flag & FA_WRITE)) /* Check access mode */
|
|
6534 .loc 1 3237 0
|
|
6535 0016 13F0020F tst r3, #2
|
|
6536 001a 3AD0 beq .L648
|
|
6537 001c 32E0 b .L651
|
|
6538 .LVL989:
|
|
6539 .L646:
|
|
3238:../../../Source/third_party/fatfs/src/ff.c **** res = FR_DENIED;
|
|
3239:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3240:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3241:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
3242:../../../Source/third_party/fatfs/src/ff.c **** if (fp->fsize > fp->fptr) {
|
|
3243:../../../Source/third_party/fatfs/src/ff.c **** fp->fsize = fp->fptr; /* Set file size to current R/W point */
|
|
6540 .loc 1 3243 0
|
|
6541 001e E260 str r2, [r4, #12]
|
|
3244:../../../Source/third_party/fatfs/src/ff.c **** fp->flag |= FA__WRITTEN;
|
|
6542 .loc 1 3244 0
|
|
6543 0020 A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
6544 0022 43F02003 orr r3, r3, #32
|
|
6545 0026 A371 strb r3, [r4, #6]
|
|
3245:../../../Source/third_party/fatfs/src/ff.c **** if (fp->fptr == 0) { /* When set file size to zero, remove entire cluster chain */
|
|
6546 .loc 1 3245 0
|
|
6547 0028 3AB9 cbnz r2, .L640
|
|
3246:../../../Source/third_party/fatfs/src/ff.c **** res = remove_chain(fp->fs, fp->sclust);
|
|
6548 .loc 1 3246 0
|
|
6549 002a 2068 ldr r0, [r4]
|
|
6550 002c 2169 ldr r1, [r4, #16]
|
|
6551 002e FFF7FEFF bl remove_chain
|
|
6552 .LVL990:
|
|
6553 0032 0546 mov r5, r0
|
|
6554 .LVL991:
|
|
3247:../../../Source/third_party/fatfs/src/ff.c **** fp->sclust = 0;
|
|
6555 .loc 1 3247 0
|
|
6556 0034 0023 movs r3, #0
|
|
6557 0036 2361 str r3, [r4, #16]
|
|
6558 0038 1CE0 b .L641
|
|
6559 .LVL992:
|
|
6560 .L640:
|
|
3248:../../../Source/third_party/fatfs/src/ff.c **** } else { /* When truncate a part of the file, remove remaining clusters */
|
|
3249:../../../Source/third_party/fatfs/src/ff.c **** ncl = get_fat(fp->fs, fp->clust);
|
|
6561 .loc 1 3249 0
|
|
6562 003a 2068 ldr r0, [r4]
|
|
6563 003c 6169 ldr r1, [r4, #20]
|
|
6564 003e FFF7FEFF bl get_fat
|
|
6565 .LVL993:
|
|
6566 0042 0646 mov r6, r0
|
|
6567 .LVL994:
|
|
3250:../../../Source/third_party/fatfs/src/ff.c **** res = FR_OK;
|
|
3251:../../../Source/third_party/fatfs/src/ff.c **** if (ncl == 0xFFFFFFFF) res = FR_DISK_ERR;
|
|
3252:../../../Source/third_party/fatfs/src/ff.c **** if (ncl == 1) res = FR_INT_ERR;
|
|
6568 .loc 1 3252 0
|
|
6569 0044 0128 cmp r0, #1
|
|
6570 0046 17D0 beq .L649
|
|
3250:../../../Source/third_party/fatfs/src/ff.c **** res = FR_OK;
|
|
6571 .loc 1 3250 0
|
|
6572 0048 B0F1FF3F cmp r0, #-1
|
|
6573 004c 14BF ite ne
|
|
6574 004e 0023 movne r3, #0
|
|
6575 0050 0123 moveq r3, #1
|
|
3253:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK && ncl < fp->fs->n_fatent) {
|
|
6576 .loc 1 3253 0
|
|
6577 0052 03BB cbnz r3, .L643
|
|
6578 .loc 1 3253 0 is_stmt 0 discriminator 1
|
|
6579 0054 2068 ldr r0, [r4]
|
|
6580 .LVL995:
|
|
6581 0056 8369 ldr r3, [r0, #24]
|
|
6582 0058 9E42 cmp r6, r3
|
|
6583 005a 1ED2 bcs .L650
|
|
3254:../../../Source/third_party/fatfs/src/ff.c **** res = put_fat(fp->fs, fp->clust, 0x0FFFFFFF);
|
|
6584 .loc 1 3254 0 is_stmt 1
|
|
6585 005c 6169 ldr r1, [r4, #20]
|
|
6586 005e 6FF07042 mvn r2, #-268435456
|
|
6587 0062 FFF7FEFF bl put_fat
|
|
6588 .LVL996:
|
|
3255:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) res = remove_chain(fp->fs, ncl);
|
|
6589 .loc 1 3255 0
|
|
6590 0066 0346 mov r3, r0
|
|
6591 0068 A8B9 cbnz r0, .L643
|
|
6592 .loc 1 3255 0 is_stmt 0 discriminator 1
|
|
6593 006a 2068 ldr r0, [r4]
|
|
6594 .LVL997:
|
|
6595 006c 3146 mov r1, r6
|
|
6596 006e FFF7FEFF bl remove_chain
|
|
6597 .LVL998:
|
|
6598 0072 0546 mov r5, r0
|
|
6599 .LVL999:
|
|
6600 .L641:
|
|
3256:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3257:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3258:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3259:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) fp->flag |= FA__ERROR;
|
|
6601 .loc 1 3259 0 is_stmt 1
|
|
6602 0074 0DB9 cbnz r5, .L642
|
|
6603 0076 10E0 b .L650
|
|
6604 .LVL1000:
|
|
6605 .L649:
|
|
3252:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK && ncl < fp->fs->n_fatent) {
|
|
6606 .loc 1 3252 0
|
|
6607 0078 0225 movs r5, #2
|
|
6608 .LVL1001:
|
|
6609 .L642:
|
|
6610 .loc 1 3259 0 discriminator 1
|
|
6611 007a A379 ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
6612 007c 63F07F03 orn r3, r3, #127
|
|
6613 0080 A371 strb r3, [r4, #6]
|
|
6614 0082 0AE0 b .L650
|
|
6615 .LVL1002:
|
|
6616 .L651:
|
|
3242:../../../Source/third_party/fatfs/src/ff.c **** fp->fsize = fp->fptr; /* Set file size to current R/W point */
|
|
6617 .loc 1 3242 0
|
|
6618 0084 A268 ldr r2, [r4, #8]
|
|
6619 0086 E368 ldr r3, [r4, #12]
|
|
6620 0088 9342 cmp r3, r2
|
|
6621 008a C8D8 bhi .L646
|
|
6622 008c 05E0 b .L650
|
|
6623 .LVL1003:
|
|
6624 .L647:
|
|
3235:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
6625 .loc 1 3235 0
|
|
6626 008e 0225 movs r5, #2
|
|
6627 0090 03E0 b .L650
|
|
6628 .L648:
|
|
3238:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
6629 .loc 1 3238 0
|
|
6630 0092 0725 movs r5, #7
|
|
6631 .LVL1004:
|
|
6632 0094 01E0 b .L650
|
|
6633 .LVL1005:
|
|
6634 .L643:
|
|
3227:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
6635 .loc 1 3227 0
|
|
6636 0096 1D46 mov r5, r3
|
|
6637 0098 EFE7 b .L642
|
|
6638 .LVL1006:
|
|
6639 .L650:
|
|
3260:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3261:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3262:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(fp->fs, res);
|
|
3263:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
6640 .loc 1 3263 0
|
|
6641 009a 2846 mov r0, r5
|
|
6642 009c 70BD pop {r4, r5, r6, pc}
|
|
6643 .cfi_endproc
|
|
6644 .LFE43:
|
|
6646 009e 00BF .section .text.f_unlink,"ax",%progbits
|
|
6647 .align 2
|
|
6648 .global f_unlink
|
|
6649 .thumb
|
|
6650 .thumb_func
|
|
6652 f_unlink:
|
|
6653 .LFB44:
|
|
3264:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3265:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3266:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3267:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3268:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3269:../../../Source/third_party/fatfs/src/ff.c **** /* Delete a File or Directory */
|
|
3270:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3271:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3272:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_unlink (
|
|
3273:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR *path /* Pointer to the file or directory path */
|
|
3274:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
3275:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
6654 .loc 1 3275 0
|
|
6655 .cfi_startproc
|
|
6656 @ args = 0, pretend = 0, frame = 96
|
|
6657 @ frame_needed = 0, uses_anonymous_args = 0
|
|
6658 .LVL1007:
|
|
6659 0000 30B5 push {r4, r5, lr}
|
|
6660 .cfi_def_cfa_offset 12
|
|
6661 .cfi_offset 4, -12
|
|
6662 .cfi_offset 5, -8
|
|
6663 .cfi_offset 14, -4
|
|
6664 0002 99B0 sub sp, sp, #100
|
|
6665 .cfi_def_cfa_offset 112
|
|
6666 0004 18AB add r3, sp, #96
|
|
6667 0006 43F85C0D str r0, [r3, #-92]!
|
|
3276:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
3277:../../../Source/third_party/fatfs/src/ff.c **** DIR dj, sdj;
|
|
3278:../../../Source/third_party/fatfs/src/ff.c **** BYTE *dir;
|
|
3279:../../../Source/third_party/fatfs/src/ff.c **** DWORD dclst;
|
|
3280:../../../Source/third_party/fatfs/src/ff.c **** DEF_NAMEBUF;
|
|
3281:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3282:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3283:../../../Source/third_party/fatfs/src/ff.c **** res = chk_mounted(&path, &dj.fs, 1);
|
|
6668 .loc 1 3283 0
|
|
6669 000a 1846 mov r0, r3
|
|
6670 .LVL1008:
|
|
6671 000c 0FA9 add r1, sp, #60
|
|
6672 000e 0122 movs r2, #1
|
|
6673 0010 FFF7FEFF bl chk_mounted
|
|
6674 .LVL1009:
|
|
3284:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
6675 .loc 1 3284 0
|
|
6676 0014 0346 mov r3, r0
|
|
6677 0016 0028 cmp r0, #0
|
|
6678 0018 4AD1 bne .L667
|
|
3285:../../../Source/third_party/fatfs/src/ff.c **** INIT_BUF(dj);
|
|
6679 .loc 1 3285 0
|
|
6680 001a 03AB add r3, sp, #12
|
|
6681 001c 1593 str r3, [sp, #84]
|
|
6682 001e 264B ldr r3, .L670
|
|
6683 0020 1693 str r3, [sp, #88]
|
|
3286:../../../Source/third_party/fatfs/src/ff.c **** res = follow_path(&dj, path); /* Follow the file path */
|
|
6684 .loc 1 3286 0
|
|
6685 0022 0FA8 add r0, sp, #60
|
|
6686 .LVL1010:
|
|
6687 0024 0199 ldr r1, [sp, #4]
|
|
6688 0026 FFF7FEFF bl follow_path
|
|
6689 .LVL1011:
|
|
3287:../../../Source/third_party/fatfs/src/ff.c **** if (_FS_RPATH && res == FR_OK && (dj.fn[NS] & NS_DOT))
|
|
3288:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INVALID_NAME; /* Cannot remove dot entry */
|
|
3289:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_LOCK
|
|
3290:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) res = chk_lock(&dj, 2); /* Cannot remove open file */
|
|
3291:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
3292:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) { /* The object is accessible */
|
|
6690 .loc 1 3292 0
|
|
6691 002a 0346 mov r3, r0
|
|
6692 002c 0028 cmp r0, #0
|
|
6693 002e 3FD1 bne .L667
|
|
3293:../../../Source/third_party/fatfs/src/ff.c **** dir = dj.dir;
|
|
6694 .loc 1 3293 0
|
|
6695 0030 1499 ldr r1, [sp, #80]
|
|
6696 .LVL1012:
|
|
3294:../../../Source/third_party/fatfs/src/ff.c **** if (!dir) {
|
|
6697 .loc 1 3294 0
|
|
6698 0032 31B3 cbz r1, .L664
|
|
3295:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INVALID_NAME; /* Cannot remove the start directory */
|
|
3296:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3297:../../../Source/third_party/fatfs/src/ff.c **** if (dir[DIR_Attr] & AM_RDO)
|
|
6699 .loc 1 3297 0
|
|
6700 0034 CC7A ldrb r4, [r1, #11] @ zero_extendqisi2
|
|
6701 0036 14F0010F tst r4, #1
|
|
6702 003a 24D1 bne .L665
|
|
6703 003c 25E0 b .L668
|
|
6704 .LVL1013:
|
|
6705 .L661:
|
|
3298:../../../Source/third_party/fatfs/src/ff.c **** res = FR_DENIED; /* Cannot remove R/O object */
|
|
3299:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3300:../../../Source/third_party/fatfs/src/ff.c **** dclst = ld_clust(dj.fs, dir);
|
|
3301:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK && (dir[DIR_Attr] & AM_DIR)) { /* Is it a sub-dir? */
|
|
3302:../../../Source/third_party/fatfs/src/ff.c **** if (dclst < 2) {
|
|
6706 .loc 1 3302 0
|
|
6707 003e 012D cmp r5, #1
|
|
6708 0040 2ED9 bls .L666
|
|
3303:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INT_ERR;
|
|
3304:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3305:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(&sdj, &dj, sizeof (DIR)); /* Check if the sub-dir is empty or not */
|
|
6709 .loc 1 3305 0
|
|
6710 0042 06A8 add r0, sp, #24
|
|
6711 .LVL1014:
|
|
6712 0044 0FA9 add r1, sp, #60
|
|
6713 0046 2422 movs r2, #36
|
|
6714 0048 FFF7FEFF bl mem_cpy
|
|
6715 .LVL1015:
|
|
3306:../../../Source/third_party/fatfs/src/ff.c **** sdj.sclust = dclst;
|
|
6716 .loc 1 3306 0
|
|
6717 004c 0895 str r5, [sp, #32]
|
|
3307:../../../Source/third_party/fatfs/src/ff.c **** res = dir_sdi(&sdj, 2); /* Exclude dot entries */
|
|
6718 .loc 1 3307 0
|
|
6719 004e 06A8 add r0, sp, #24
|
|
6720 0050 0221 movs r1, #2
|
|
6721 0052 FFF7FEFF bl dir_sdi
|
|
6722 .LVL1016:
|
|
3308:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
6723 .loc 1 3308 0
|
|
6724 0056 0346 mov r3, r0
|
|
6725 0058 50BB cbnz r0, .L667
|
|
3309:../../../Source/third_party/fatfs/src/ff.c **** res = dir_read(&sdj, 0); /* Read an item */
|
|
6726 .loc 1 3309 0
|
|
6727 005a 06A8 add r0, sp, #24
|
|
6728 .LVL1017:
|
|
6729 005c 0021 movs r1, #0
|
|
6730 005e FFF7FEFF bl dir_read
|
|
6731 .LVL1018:
|
|
3310:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK /* Not empty dir */
|
|
6732 .loc 1 3310 0
|
|
6733 0062 0346 mov r3, r0
|
|
6734 0064 C8B9 cbnz r0, .L658
|
|
3311:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_RPATH
|
|
3312:../../../Source/third_party/fatfs/src/ff.c **** || dclst == dj.fs->cdir /* Current dir */
|
|
3313:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
3314:../../../Source/third_party/fatfs/src/ff.c **** ) res = FR_DENIED;
|
|
6735 .loc 1 3314 0
|
|
6736 0066 0723 movs r3, #7
|
|
6737 .LVL1019:
|
|
6738 0068 22E0 b .L667
|
|
6739 .LVL1020:
|
|
6740 .L663:
|
|
3315:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_NO_FILE) res = FR_OK; /* Empty */
|
|
3316:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3317:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3318:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3319:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
3320:../../../Source/third_party/fatfs/src/ff.c **** res = dir_remove(&dj); /* Remove the directory entry */
|
|
3321:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
3322:../../../Source/third_party/fatfs/src/ff.c **** if (dclst) /* Remove the cluster chain if exist */
|
|
6741 .loc 1 3322 0
|
|
6742 006a 2DB1 cbz r5, .L659
|
|
3323:../../../Source/third_party/fatfs/src/ff.c **** res = remove_chain(dj.fs, dclst);
|
|
6743 .loc 1 3323 0
|
|
6744 006c 0F98 ldr r0, [sp, #60]
|
|
6745 .LVL1021:
|
|
6746 006e 2946 mov r1, r5
|
|
6747 0070 FFF7FEFF bl remove_chain
|
|
6748 .LVL1022:
|
|
3324:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) res = sync_fs(dj.fs);
|
|
6749 .loc 1 3324 0
|
|
6750 0074 0346 mov r3, r0
|
|
6751 0076 D8B9 cbnz r0, .L667
|
|
6752 .L659:
|
|
6753 .LVL1023:
|
|
6754 .loc 1 3324 0 is_stmt 0 discriminator 1
|
|
6755 0078 0F98 ldr r0, [sp, #60]
|
|
6756 007a FFF7FEFF bl sync_fs
|
|
6757 .LVL1024:
|
|
6758 007e 0346 mov r3, r0
|
|
6759 .LVL1025:
|
|
6760 0080 16E0 b .L667
|
|
6761 .LVL1026:
|
|
6762 .L664:
|
|
3295:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
6763 .loc 1 3295 0 is_stmt 1
|
|
6764 0082 0623 movs r3, #6
|
|
6765 0084 14E0 b .L667
|
|
6766 .L665:
|
|
3298:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
6767 .loc 1 3298 0
|
|
6768 0086 0723 movs r3, #7
|
|
6769 0088 12E0 b .L667
|
|
6770 .L668:
|
|
6771 .LVL1027:
|
|
3300:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK && (dir[DIR_Attr] & AM_DIR)) { /* Is it a sub-dir? */
|
|
6772 .loc 1 3300 0
|
|
6773 008a 0F98 ldr r0, [sp, #60]
|
|
6774 008c FFF7FEFF bl ld_clust
|
|
6775 .LVL1028:
|
|
6776 0090 0546 mov r5, r0
|
|
6777 .LVL1029:
|
|
3301:../../../Source/third_party/fatfs/src/ff.c **** if (dclst < 2) {
|
|
6778 .loc 1 3301 0
|
|
6779 0092 14F0100F tst r4, #16
|
|
6780 0096 D2D1 bne .L661
|
|
6781 0098 04E0 b .L662
|
|
6782 .LVL1030:
|
|
6783 .L658:
|
|
3315:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
6784 .loc 1 3315 0
|
|
6785 009a 0428 cmp r0, #4
|
|
6786 009c 02D0 beq .L662
|
|
6787 009e 07E0 b .L667
|
|
6788 .LVL1031:
|
|
6789 .L666:
|
|
3303:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
6790 .loc 1 3303 0
|
|
6791 00a0 0223 movs r3, #2
|
|
6792 .LVL1032:
|
|
6793 00a2 05E0 b .L667
|
|
6794 .LVL1033:
|
|
6795 .L662:
|
|
3320:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
6796 .loc 1 3320 0
|
|
6797 00a4 0FA8 add r0, sp, #60
|
|
6798 00a6 FFF7FEFF bl dir_remove
|
|
6799 .LVL1034:
|
|
3321:../../../Source/third_party/fatfs/src/ff.c **** if (dclst) /* Remove the cluster chain if exist */
|
|
6800 .loc 1 3321 0
|
|
6801 00aa 0346 mov r3, r0
|
|
6802 00ac 0028 cmp r0, #0
|
|
6803 00ae DCD0 beq .L663
|
|
6804 .LVL1035:
|
|
6805 .L667:
|
|
3325:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3326:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3327:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3328:../../../Source/third_party/fatfs/src/ff.c **** FREE_BUF();
|
|
3329:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3330:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3331:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(dj.fs, res);
|
|
3332:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
6806 .loc 1 3332 0
|
|
6807 00b0 1846 mov r0, r3
|
|
6808 00b2 19B0 add sp, sp, #100
|
|
6809 .cfi_def_cfa_offset 12
|
|
6810 @ sp needed
|
|
6811 00b4 30BD pop {r4, r5, pc}
|
|
6812 .LVL1036:
|
|
6813 .L671:
|
|
6814 00b6 00BF .align 2
|
|
6815 .L670:
|
|
6816 00b8 00000000 .word .LANCHOR4
|
|
6817 .cfi_endproc
|
|
6818 .LFE44:
|
|
6820 .section .text.f_mkdir,"ax",%progbits
|
|
6821 .align 2
|
|
6822 .global f_mkdir
|
|
6823 .thumb
|
|
6824 .thumb_func
|
|
6826 f_mkdir:
|
|
6827 .LFB45:
|
|
3333:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3334:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3335:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3336:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3337:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3338:../../../Source/third_party/fatfs/src/ff.c **** /* Create a Directory */
|
|
3339:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3340:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3341:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_mkdir (
|
|
3342:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR *path /* Pointer to the directory path */
|
|
3343:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
3344:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
6828 .loc 1 3344 0
|
|
6829 .cfi_startproc
|
|
6830 @ args = 0, pretend = 0, frame = 56
|
|
6831 @ frame_needed = 0, uses_anonymous_args = 0
|
|
6832 .LVL1037:
|
|
6833 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
6834 .cfi_def_cfa_offset 36
|
|
6835 .cfi_offset 4, -36
|
|
6836 .cfi_offset 5, -32
|
|
6837 .cfi_offset 6, -28
|
|
6838 .cfi_offset 7, -24
|
|
6839 .cfi_offset 8, -20
|
|
6840 .cfi_offset 9, -16
|
|
6841 .cfi_offset 10, -12
|
|
6842 .cfi_offset 11, -8
|
|
6843 .cfi_offset 14, -4
|
|
6844 0004 8FB0 sub sp, sp, #60
|
|
6845 .cfi_def_cfa_offset 96
|
|
6846 0006 0EAC add r4, sp, #56
|
|
6847 0008 44F8340D str r0, [r4, #-52]!
|
|
3345:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
3346:../../../Source/third_party/fatfs/src/ff.c **** DIR dj;
|
|
3347:../../../Source/third_party/fatfs/src/ff.c **** BYTE *dir, n;
|
|
3348:../../../Source/third_party/fatfs/src/ff.c **** DWORD dsc, dcl, pcl, tm = get_fattime();
|
|
6848 .loc 1 3348 0
|
|
6849 000c FFF7FEFF bl get_fattime
|
|
6850 .LVL1038:
|
|
6851 0010 0746 mov r7, r0
|
|
6852 .LVL1039:
|
|
3349:../../../Source/third_party/fatfs/src/ff.c **** DEF_NAMEBUF;
|
|
3350:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3351:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3352:../../../Source/third_party/fatfs/src/ff.c **** res = chk_mounted(&path, &dj.fs, 1);
|
|
6853 .loc 1 3352 0
|
|
6854 0012 2046 mov r0, r4
|
|
6855 .LVL1040:
|
|
6856 0014 05A9 add r1, sp, #20
|
|
6857 0016 0122 movs r2, #1
|
|
6858 0018 FFF7FEFF bl chk_mounted
|
|
6859 .LVL1041:
|
|
3353:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
6860 .loc 1 3353 0
|
|
6861 001c 0446 mov r4, r0
|
|
6862 .LVL1042:
|
|
6863 001e 0028 cmp r0, #0
|
|
6864 0020 40F0CE80 bne .L691
|
|
3354:../../../Source/third_party/fatfs/src/ff.c **** INIT_BUF(dj);
|
|
6865 .loc 1 3354 0
|
|
6866 0024 02AB add r3, sp, #8
|
|
6867 0026 0B93 str r3, [sp, #44]
|
|
6868 0028 674B ldr r3, .L699
|
|
6869 002a 0C93 str r3, [sp, #48]
|
|
3355:../../../Source/third_party/fatfs/src/ff.c **** res = follow_path(&dj, path); /* Follow the file path */
|
|
6870 .loc 1 3355 0
|
|
6871 002c 05A8 add r0, sp, #20
|
|
6872 .LVL1043:
|
|
6873 002e 0199 ldr r1, [sp, #4]
|
|
6874 0030 FFF7FEFF bl follow_path
|
|
6875 .LVL1044:
|
|
3356:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) res = FR_EXIST; /* Any object with same name is already existing */
|
|
6876 .loc 1 3356 0
|
|
6877 0034 0446 mov r4, r0
|
|
6878 0036 0028 cmp r0, #0
|
|
6879 0038 00F0B480 beq .L687
|
|
3357:../../../Source/third_party/fatfs/src/ff.c **** if (_FS_RPATH && res == FR_NO_FILE && (dj.fn[NS] & NS_DOT))
|
|
3358:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INVALID_NAME;
|
|
3359:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_NO_FILE) { /* Can create a new directory */
|
|
6880 .loc 1 3359 0
|
|
6881 003c 0428 cmp r0, #4
|
|
6882 003e 40F0BF80 bne .L691
|
|
3360:../../../Source/third_party/fatfs/src/ff.c **** dcl = create_chain(dj.fs, 0); /* Allocate a cluster for the new directory table */
|
|
6883 .loc 1 3360 0
|
|
6884 0042 0598 ldr r0, [sp, #20]
|
|
6885 .LVL1045:
|
|
6886 0044 0021 movs r1, #0
|
|
6887 0046 FFF7FEFF bl create_chain
|
|
6888 .LVL1046:
|
|
3361:../../../Source/third_party/fatfs/src/ff.c **** res = FR_OK;
|
|
3362:../../../Source/third_party/fatfs/src/ff.c **** if (dcl == 0) res = FR_DENIED; /* No space to allocate a new cluster */
|
|
6889 .loc 1 3362 0
|
|
6890 004a 8146 mov r9, r0
|
|
6891 004c 0028 cmp r0, #0
|
|
6892 004e 00F08280 beq .L688
|
|
3363:../../../Source/third_party/fatfs/src/ff.c **** if (dcl == 1) res = FR_INT_ERR;
|
|
6893 .loc 1 3363 0
|
|
6894 0052 0128 cmp r0, #1
|
|
6895 0054 00F08180 beq .L689
|
|
6896 0058 ABE0 b .L696
|
|
6897 .L697:
|
|
3364:../../../Source/third_party/fatfs/src/ff.c **** if (dcl == 0xFFFFFFFF) res = FR_DISK_ERR;
|
|
3365:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) /* Flush FAT */
|
|
3366:../../../Source/third_party/fatfs/src/ff.c **** res = sync_window(dj.fs);
|
|
6898 .loc 1 3366 0
|
|
6899 005a 0598 ldr r0, [sp, #20]
|
|
6900 .LVL1047:
|
|
6901 005c FFF7FEFF bl sync_window
|
|
6902 .LVL1048:
|
|
6903 0060 0446 mov r4, r0
|
|
6904 .LVL1049:
|
|
6905 0062 FFE7 b .L685
|
|
6906 .LVL1050:
|
|
6907 .L685:
|
|
3367:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) { /* Initialize the new directory table */
|
|
6908 .loc 1 3367 0
|
|
6909 0064 002C cmp r4, #0
|
|
6910 0066 74D1 bne .L684
|
|
3368:../../../Source/third_party/fatfs/src/ff.c **** dsc = clust2sect(dj.fs, dcl);
|
|
6911 .loc 1 3368 0
|
|
6912 0068 059E ldr r6, [sp, #20]
|
|
6913 006a 3046 mov r0, r6
|
|
6914 006c 4946 mov r1, r9
|
|
6915 006e FFF7FEFF bl clust2sect
|
|
6916 .LVL1051:
|
|
6917 0072 0446 mov r4, r0
|
|
6918 .LVL1052:
|
|
3369:../../../Source/third_party/fatfs/src/ff.c **** dir = dj.fs->win;
|
|
6919 .loc 1 3369 0
|
|
6920 0074 06F13403 add r3, r6, #52
|
|
6921 0078 0093 str r3, [sp]
|
|
6922 .LVL1053:
|
|
6923 007a 06F50D75 add r5, r6, #564
|
|
6924 .LBB87:
|
|
6925 .LBB88:
|
|
560:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
6926 .loc 1 560 0
|
|
6927 007e 0022 movs r2, #0
|
|
6928 .LVL1054:
|
|
6929 .L677:
|
|
6930 0080 03F8012B strb r2, [r3], #1
|
|
6931 .LVL1055:
|
|
559:../../../Source/third_party/fatfs/src/ff.c **** *d++ = (BYTE)val;
|
|
6932 .loc 1 559 0
|
|
6933 0084 AB42 cmp r3, r5
|
|
6934 0086 FBD1 bne .L677
|
|
6935 0088 06F13F01 add r1, r6, #63
|
|
6936 008c 009B ldr r3, [sp]
|
|
6937 .LVL1056:
|
|
6938 .LBE88:
|
|
6939 .LBE87:
|
|
6940 .LBB89:
|
|
6941 .LBB90:
|
|
560:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
6942 .loc 1 560 0
|
|
6943 008e 2022 movs r2, #32
|
|
6944 .L678:
|
|
6945 .LVL1057:
|
|
6946 0090 03F8012B strb r2, [r3], #1
|
|
6947 .LVL1058:
|
|
559:../../../Source/third_party/fatfs/src/ff.c **** *d++ = (BYTE)val;
|
|
6948 .loc 1 559 0
|
|
6949 0094 8B42 cmp r3, r1
|
|
6950 0096 FBD1 bne .L678
|
|
6951 .LBE90:
|
|
6952 .LBE89:
|
|
3370:../../../Source/third_party/fatfs/src/ff.c **** mem_set(dir, 0, SS(dj.fs));
|
|
3371:../../../Source/third_party/fatfs/src/ff.c **** mem_set(dir+DIR_Name, ' ', 11); /* Create "." entry */
|
|
3372:../../../Source/third_party/fatfs/src/ff.c **** dir[DIR_Name] = '.';
|
|
6953 .loc 1 3372 0
|
|
6954 0098 4FF02E08 mov r8, #46
|
|
6955 009c 86F83480 strb r8, [r6, #52]
|
|
3373:../../../Source/third_party/fatfs/src/ff.c **** dir[DIR_Attr] = AM_DIR;
|
|
6956 .loc 1 3373 0
|
|
6957 00a0 1023 movs r3, #16
|
|
6958 .LVL1059:
|
|
6959 00a2 86F83F30 strb r3, [r6, #63]
|
|
3374:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(dir+DIR_WrtTime, tm);
|
|
6960 .loc 1 3374 0
|
|
6961 00a6 86F84A70 strb r7, [r6, #74]
|
|
6962 00aa C7F30723 ubfx r3, r7, #8, #8
|
|
6963 00ae 86F84B30 strb r3, [r6, #75]
|
|
6964 00b2 3B0C lsrs r3, r7, #16
|
|
6965 00b4 86F84C30 strb r3, [r6, #76]
|
|
6966 00b8 3B0E lsrs r3, r7, #24
|
|
6967 00ba 86F84D30 strb r3, [r6, #77]
|
|
6968 .LVL1060:
|
|
6969 .LBB91:
|
|
6970 .LBB92:
|
|
1261:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(dir+DIR_FstClusHI, cl >> 16);
|
|
6971 .loc 1 1261 0
|
|
6972 00be 86F84E90 strb r9, [r6, #78]
|
|
6973 00c2 C9F30723 ubfx r3, r9, #8, #8
|
|
6974 00c6 86F84F30 strb r3, [r6, #79]
|
|
1262:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
6975 .loc 1 1262 0
|
|
6976 00ca 4FEA1943 lsr r3, r9, #16
|
|
6977 00ce 86F84830 strb r3, [r6, #72]
|
|
6978 00d2 1B0A lsrs r3, r3, #8
|
|
6979 00d4 86F84930 strb r3, [r6, #73]
|
|
6980 .LBE92:
|
|
6981 .LBE91:
|
|
3375:../../../Source/third_party/fatfs/src/ff.c **** st_clust(dir, dcl);
|
|
3376:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(dir+SZ_DIR, dir, SZ_DIR); /* Create ".." entry */
|
|
6982 .loc 1 3376 0
|
|
6983 00d8 06F15400 add r0, r6, #84
|
|
6984 .LVL1061:
|
|
6985 00dc 0099 ldr r1, [sp]
|
|
6986 00de 2022 movs r2, #32
|
|
6987 00e0 FFF7FEFF bl mem_cpy
|
|
6988 .LVL1062:
|
|
3377:../../../Source/third_party/fatfs/src/ff.c **** dir[33] = '.'; pcl = dj.sclust;
|
|
6989 .loc 1 3377 0
|
|
6990 00e4 86F85580 strb r8, [r6, #85]
|
|
6991 00e8 079B ldr r3, [sp, #28]
|
|
6992 .LVL1063:
|
|
3378:../../../Source/third_party/fatfs/src/ff.c **** if (dj.fs->fs_type == FS_FAT32 && pcl == dj.fs->dirbase)
|
|
6993 .loc 1 3378 0
|
|
6994 00ea 059A ldr r2, [sp, #20]
|
|
6995 00ec 1178 ldrb r1, [r2] @ zero_extendqisi2
|
|
6996 00ee 0329 cmp r1, #3
|
|
6997 00f0 03D1 bne .L679
|
|
6998 .loc 1 3378 0 is_stmt 0 discriminator 1
|
|
6999 00f2 916A ldr r1, [r2, #40]
|
|
3379:../../../Source/third_party/fatfs/src/ff.c **** pcl = 0;
|
|
7000 .loc 1 3379 0 is_stmt 1 discriminator 1
|
|
7001 00f4 9942 cmp r1, r3
|
|
7002 00f6 08BF it eq
|
|
7003 00f8 0023 moveq r3, #0
|
|
7004 .LVL1064:
|
|
7005 .L679:
|
|
7006 .LBB93:
|
|
7007 .LBB94:
|
|
1261:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(dir+DIR_FstClusHI, cl >> 16);
|
|
7008 .loc 1 1261 0
|
|
7009 00fa 86F86E30 strb r3, [r6, #110]
|
|
7010 00fe C3F30721 ubfx r1, r3, #8, #8
|
|
7011 0102 86F86F10 strb r1, [r6, #111]
|
|
1262:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
7012 .loc 1 1262 0
|
|
7013 0106 1B0C lsrs r3, r3, #16
|
|
7014 .LVL1065:
|
|
7015 0108 86F86830 strb r3, [r6, #104]
|
|
7016 010c 1B0A lsrs r3, r3, #8
|
|
7017 010e 86F86930 strb r3, [r6, #105]
|
|
7018 .LBE94:
|
|
7019 .LBE93:
|
|
3380:../../../Source/third_party/fatfs/src/ff.c **** st_clust(dir+SZ_DIR, pcl);
|
|
3381:../../../Source/third_party/fatfs/src/ff.c **** for (n = dj.fs->csize; n; n--) { /* Write dot entries and clear following sectors */
|
|
7020 .loc 1 3381 0
|
|
7021 0112 9378 ldrb r3, [r2, #2] @ zero_extendqisi2
|
|
7022 .LVL1066:
|
|
7023 0114 002B cmp r3, #0
|
|
7024 0116 47D0 beq .L680
|
|
7025 0118 03F1FF3A add r10, r3, #-1
|
|
7026 011c 5FFA8AFA uxtb r10, r10
|
|
7027 0120 0AF1010A add r10, r10, #1
|
|
7028 0124 A244 add r10, r10, r4
|
|
3382:../../../Source/third_party/fatfs/src/ff.c **** dj.fs->winsect = dsc++;
|
|
3383:../../../Source/third_party/fatfs/src/ff.c **** dj.fs->wflag = 1;
|
|
7029 .loc 1 3383 0
|
|
7030 0126 4FF0010B mov fp, #1
|
|
7031 .LBB95:
|
|
7032 .LBB96:
|
|
560:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
7033 .loc 1 560 0
|
|
7034 012a 0026 movs r6, #0
|
|
7035 .LVL1067:
|
|
7036 .L682:
|
|
7037 .LBE96:
|
|
7038 .LBE95:
|
|
3382:../../../Source/third_party/fatfs/src/ff.c **** dj.fs->winsect = dsc++;
|
|
7039 .loc 1 3382 0
|
|
7040 012c 0598 ldr r0, [sp, #20]
|
|
7041 012e 04F10108 add r8, r4, #1
|
|
7042 .LVL1068:
|
|
7043 0132 0463 str r4, [r0, #48]
|
|
7044 .loc 1 3383 0
|
|
7045 0134 80F804B0 strb fp, [r0, #4]
|
|
3384:../../../Source/third_party/fatfs/src/ff.c **** res = sync_window(dj.fs);
|
|
7046 .loc 1 3384 0
|
|
7047 0138 FFF7FEFF bl sync_window
|
|
7048 .LVL1069:
|
|
3385:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) break;
|
|
7049 .loc 1 3385 0
|
|
7050 013c 0446 mov r4, r0
|
|
7051 013e 40B9 cbnz r0, .L684
|
|
7052 0140 009B ldr r3, [sp]
|
|
7053 .L681:
|
|
7054 .LVL1070:
|
|
7055 .LBB98:
|
|
7056 .LBB97:
|
|
560:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
7057 .loc 1 560 0
|
|
7058 0142 03F8016B strb r6, [r3], #1
|
|
7059 .LVL1071:
|
|
559:../../../Source/third_party/fatfs/src/ff.c **** *d++ = (BYTE)val;
|
|
7060 .loc 1 559 0
|
|
7061 0146 AB42 cmp r3, r5
|
|
7062 0148 FBD1 bne .L681
|
|
7063 .LVL1072:
|
|
7064 .LBE97:
|
|
7065 .LBE98:
|
|
3382:../../../Source/third_party/fatfs/src/ff.c **** dj.fs->wflag = 1;
|
|
7066 .loc 1 3382 0 discriminator 2
|
|
7067 014a 4446 mov r4, r8
|
|
3381:../../../Source/third_party/fatfs/src/ff.c **** dj.fs->winsect = dsc++;
|
|
7068 .loc 1 3381 0 discriminator 2
|
|
7069 014c D045 cmp r8, r10
|
|
7070 014e EDD1 bne .L682
|
|
7071 .LVL1073:
|
|
7072 0150 2AE0 b .L680
|
|
7073 .LVL1074:
|
|
7074 .L684:
|
|
3386:../../../Source/third_party/fatfs/src/ff.c **** mem_set(dir, 0, SS(dj.fs));
|
|
3387:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3388:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3389:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) res = dir_register(&dj); /* Register the object to the directoy */
|
|
3390:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) {
|
|
7075 .loc 1 3390 0
|
|
7076 0152 44B1 cbz r4, .L683
|
|
7077 0154 02E0 b .L674
|
|
7078 .LVL1075:
|
|
7079 .L688:
|
|
3362:../../../Source/third_party/fatfs/src/ff.c **** if (dcl == 1) res = FR_INT_ERR;
|
|
7080 .loc 1 3362 0
|
|
7081 0156 0724 movs r4, #7
|
|
7082 0158 00E0 b .L674
|
|
7083 .L689:
|
|
3363:../../../Source/third_party/fatfs/src/ff.c **** if (dcl == 0xFFFFFFFF) res = FR_DISK_ERR;
|
|
7084 .loc 1 3363 0
|
|
7085 015a 0224 movs r4, #2
|
|
7086 .LVL1076:
|
|
7087 .L674:
|
|
3391:../../../Source/third_party/fatfs/src/ff.c **** remove_chain(dj.fs, dcl); /* Could not register, remove cluster chain */
|
|
7088 .loc 1 3391 0
|
|
7089 015c 0598 ldr r0, [sp, #20]
|
|
7090 015e 4946 mov r1, r9
|
|
7091 0160 FFF7FEFF bl remove_chain
|
|
7092 .LVL1077:
|
|
7093 0164 2CE0 b .L691
|
|
7094 .L683:
|
|
3392:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3393:../../../Source/third_party/fatfs/src/ff.c **** dir = dj.dir;
|
|
7095 .loc 1 3393 0
|
|
7096 0166 0A9B ldr r3, [sp, #40]
|
|
7097 .LVL1078:
|
|
3394:../../../Source/third_party/fatfs/src/ff.c **** dir[DIR_Attr] = AM_DIR; /* Attribute */
|
|
7098 .loc 1 3394 0
|
|
7099 0168 1022 movs r2, #16
|
|
7100 016a DA72 strb r2, [r3, #11]
|
|
3395:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(dir+DIR_WrtTime, tm); /* Created time */
|
|
7101 .loc 1 3395 0
|
|
7102 016c 9F75 strb r7, [r3, #22]
|
|
7103 016e C7F30722 ubfx r2, r7, #8, #8
|
|
7104 0172 DA75 strb r2, [r3, #23]
|
|
7105 0174 3A0C lsrs r2, r7, #16
|
|
7106 0176 1A76 strb r2, [r3, #24]
|
|
7107 0178 3F0E lsrs r7, r7, #24
|
|
7108 .LVL1079:
|
|
7109 017a 5F76 strb r7, [r3, #25]
|
|
7110 .LVL1080:
|
|
7111 .LBB99:
|
|
7112 .LBB100:
|
|
1261:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(dir+DIR_FstClusHI, cl >> 16);
|
|
7113 .loc 1 1261 0
|
|
7114 017c 83F81A90 strb r9, [r3, #26]
|
|
7115 0180 C9F30722 ubfx r2, r9, #8, #8
|
|
7116 0184 DA76 strb r2, [r3, #27]
|
|
1262:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
7117 .loc 1 1262 0
|
|
7118 0186 4FEA1949 lsr r9, r9, #16
|
|
7119 .LVL1081:
|
|
7120 018a 83F81490 strb r9, [r3, #20]
|
|
7121 018e 4FEA1929 lsr r9, r9, #8
|
|
7122 0192 83F81590 strb r9, [r3, #21]
|
|
7123 .LBE100:
|
|
7124 .LBE99:
|
|
3396:../../../Source/third_party/fatfs/src/ff.c **** st_clust(dir, dcl); /* Table start cluster */
|
|
3397:../../../Source/third_party/fatfs/src/ff.c **** dj.fs->wflag = 1;
|
|
7125 .loc 1 3397 0
|
|
7126 0196 0598 ldr r0, [sp, #20]
|
|
7127 0198 0123 movs r3, #1
|
|
7128 .LVL1082:
|
|
7129 019a 0371 strb r3, [r0, #4]
|
|
3398:../../../Source/third_party/fatfs/src/ff.c **** res = sync_fs(dj.fs);
|
|
7130 .loc 1 3398 0
|
|
7131 019c FFF7FEFF bl sync_fs
|
|
7132 .LVL1083:
|
|
7133 01a0 0446 mov r4, r0
|
|
7134 .LVL1084:
|
|
7135 01a2 0DE0 b .L691
|
|
7136 .LVL1085:
|
|
7137 .L687:
|
|
3356:../../../Source/third_party/fatfs/src/ff.c **** if (_FS_RPATH && res == FR_NO_FILE && (dj.fn[NS] & NS_DOT))
|
|
7138 .loc 1 3356 0
|
|
7139 01a4 0824 movs r4, #8
|
|
7140 .LVL1086:
|
|
7141 01a6 0BE0 b .L691
|
|
7142 .LVL1087:
|
|
7143 .L680:
|
|
3389:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) {
|
|
7144 .loc 1 3389 0
|
|
7145 01a8 05A8 add r0, sp, #20
|
|
7146 01aa FFF7FEFF bl dir_register
|
|
7147 .LVL1088:
|
|
7148 01ae 0446 mov r4, r0
|
|
7149 01b0 CFE7 b .L684
|
|
7150 .LVL1089:
|
|
7151 .L696:
|
|
3364:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) /* Flush FAT */
|
|
7152 .loc 1 3364 0
|
|
7153 01b2 B0F1FF3F cmp r0, #-1
|
|
7154 01b6 08BF it eq
|
|
7155 01b8 0124 moveq r4, #1
|
|
7156 01ba 3FF453AF beq .L685
|
|
7157 01be 4CE7 b .L697
|
|
7158 .LVL1090:
|
|
7159 .L691:
|
|
3399:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3400:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3401:../../../Source/third_party/fatfs/src/ff.c **** FREE_BUF();
|
|
3402:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3403:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3404:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(dj.fs, res);
|
|
3405:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
7160 .loc 1 3405 0
|
|
7161 01c0 2046 mov r0, r4
|
|
7162 01c2 0FB0 add sp, sp, #60
|
|
7163 .cfi_def_cfa_offset 36
|
|
7164 @ sp needed
|
|
7165 01c4 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
7166 .LVL1091:
|
|
7167 .L700:
|
|
7168 .align 2
|
|
7169 .L699:
|
|
7170 01c8 00000000 .word .LANCHOR4
|
|
7171 .cfi_endproc
|
|
7172 .LFE45:
|
|
7174 .section .text.f_chmod,"ax",%progbits
|
|
7175 .align 2
|
|
7176 .global f_chmod
|
|
7177 .thumb
|
|
7178 .thumb_func
|
|
7180 f_chmod:
|
|
7181 .LFB46:
|
|
3406:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3407:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3408:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3409:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3410:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3411:../../../Source/third_party/fatfs/src/ff.c **** /* Change Attribute */
|
|
3412:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3413:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3414:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_chmod (
|
|
3415:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR *path, /* Pointer to the file path */
|
|
3416:../../../Source/third_party/fatfs/src/ff.c **** BYTE value, /* Attribute bits */
|
|
3417:../../../Source/third_party/fatfs/src/ff.c **** BYTE mask /* Attribute mask to change */
|
|
3418:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
3419:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
7182 .loc 1 3419 0
|
|
7183 .cfi_startproc
|
|
7184 @ args = 0, pretend = 0, frame = 56
|
|
7185 @ frame_needed = 0, uses_anonymous_args = 0
|
|
7186 .LVL1092:
|
|
7187 0000 30B5 push {r4, r5, lr}
|
|
7188 .cfi_def_cfa_offset 12
|
|
7189 .cfi_offset 4, -12
|
|
7190 .cfi_offset 5, -8
|
|
7191 .cfi_offset 14, -4
|
|
7192 0002 8FB0 sub sp, sp, #60
|
|
7193 .cfi_def_cfa_offset 72
|
|
7194 0004 0EAB add r3, sp, #56
|
|
7195 0006 43F8340D str r0, [r3, #-52]!
|
|
7196 000a 0C46 mov r4, r1
|
|
7197 000c 1546 mov r5, r2
|
|
3420:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
3421:../../../Source/third_party/fatfs/src/ff.c **** DIR dj;
|
|
3422:../../../Source/third_party/fatfs/src/ff.c **** BYTE *dir;
|
|
3423:../../../Source/third_party/fatfs/src/ff.c **** DEF_NAMEBUF;
|
|
3424:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3425:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3426:../../../Source/third_party/fatfs/src/ff.c **** res = chk_mounted(&path, &dj.fs, 1);
|
|
7198 .loc 1 3426 0
|
|
7199 000e 1846 mov r0, r3
|
|
7200 .LVL1093:
|
|
7201 0010 05A9 add r1, sp, #20
|
|
7202 .LVL1094:
|
|
7203 0012 0122 movs r2, #1
|
|
7204 .LVL1095:
|
|
7205 0014 FFF7FEFF bl chk_mounted
|
|
7206 .LVL1096:
|
|
3427:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
7207 .loc 1 3427 0
|
|
7208 0018 0346 mov r3, r0
|
|
7209 001a D8B9 cbnz r0, .L702
|
|
3428:../../../Source/third_party/fatfs/src/ff.c **** INIT_BUF(dj);
|
|
7210 .loc 1 3428 0
|
|
7211 001c 02AB add r3, sp, #8
|
|
7212 001e 0B93 str r3, [sp, #44]
|
|
7213 0020 0E4B ldr r3, .L705
|
|
7214 0022 0C93 str r3, [sp, #48]
|
|
3429:../../../Source/third_party/fatfs/src/ff.c **** res = follow_path(&dj, path); /* Follow the file path */
|
|
7215 .loc 1 3429 0
|
|
7216 0024 05A8 add r0, sp, #20
|
|
7217 .LVL1097:
|
|
7218 0026 0199 ldr r1, [sp, #4]
|
|
7219 0028 FFF7FEFF bl follow_path
|
|
7220 .LVL1098:
|
|
3430:../../../Source/third_party/fatfs/src/ff.c **** FREE_BUF();
|
|
3431:../../../Source/third_party/fatfs/src/ff.c **** if (_FS_RPATH && res == FR_OK && (dj.fn[NS] & NS_DOT))
|
|
3432:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INVALID_NAME;
|
|
3433:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
7221 .loc 1 3433 0
|
|
7222 002c 0346 mov r3, r0
|
|
7223 002e 88B9 cbnz r0, .L702
|
|
3434:../../../Source/third_party/fatfs/src/ff.c **** dir = dj.dir;
|
|
7224 .loc 1 3434 0
|
|
7225 0030 0A9B ldr r3, [sp, #40]
|
|
7226 .LVL1099:
|
|
3435:../../../Source/third_party/fatfs/src/ff.c **** if (!dir) { /* Is it a root directory? */
|
|
7227 .loc 1 3435 0
|
|
7228 0032 73B1 cbz r3, .L703
|
|
3436:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INVALID_NAME;
|
|
3437:../../../Source/third_party/fatfs/src/ff.c **** } else { /* File or sub directory */
|
|
3438:../../../Source/third_party/fatfs/src/ff.c **** mask &= AM_RDO|AM_HID|AM_SYS|AM_ARC; /* Valid attribute mask */
|
|
7229 .loc 1 3438 0
|
|
7230 0034 05F02705 and r5, r5, #39
|
|
7231 .LVL1100:
|
|
3439:../../../Source/third_party/fatfs/src/ff.c **** dir[DIR_Attr] = (value & mask) | (dir[DIR_Attr] & (BYTE)~mask); /* Apply attribute change */
|
|
7232 .loc 1 3439 0
|
|
7233 0038 DA7A ldrb r2, [r3, #11] @ zero_extendqisi2
|
|
7234 003a 22EA0502 bic r2, r2, r5
|
|
7235 003e 2C40 ands r4, r4, r5
|
|
7236 0040 1443 orrs r4, r4, r2
|
|
7237 0042 DC72 strb r4, [r3, #11]
|
|
3440:../../../Source/third_party/fatfs/src/ff.c **** dj.fs->wflag = 1;
|
|
7238 .loc 1 3440 0
|
|
7239 0044 0598 ldr r0, [sp, #20]
|
|
7240 .LVL1101:
|
|
7241 0046 0123 movs r3, #1
|
|
7242 .LVL1102:
|
|
7243 0048 0371 strb r3, [r0, #4]
|
|
3441:../../../Source/third_party/fatfs/src/ff.c **** res = sync_fs(dj.fs);
|
|
7244 .loc 1 3441 0
|
|
7245 004a FFF7FEFF bl sync_fs
|
|
7246 .LVL1103:
|
|
7247 004e 0346 mov r3, r0
|
|
7248 .LVL1104:
|
|
7249 0050 00E0 b .L702
|
|
7250 .LVL1105:
|
|
7251 .L703:
|
|
3436:../../../Source/third_party/fatfs/src/ff.c **** } else { /* File or sub directory */
|
|
7252 .loc 1 3436 0
|
|
7253 0052 0623 movs r3, #6
|
|
7254 .LVL1106:
|
|
7255 .L702:
|
|
3442:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3443:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3444:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3445:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3446:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(dj.fs, res);
|
|
3447:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
7256 .loc 1 3447 0
|
|
7257 0054 1846 mov r0, r3
|
|
7258 0056 0FB0 add sp, sp, #60
|
|
7259 .cfi_def_cfa_offset 12
|
|
7260 @ sp needed
|
|
7261 0058 30BD pop {r4, r5, pc}
|
|
7262 .LVL1107:
|
|
7263 .L706:
|
|
7264 005a 00BF .align 2
|
|
7265 .L705:
|
|
7266 005c 00000000 .word .LANCHOR4
|
|
7267 .cfi_endproc
|
|
7268 .LFE46:
|
|
7270 .section .text.f_utime,"ax",%progbits
|
|
7271 .align 2
|
|
7272 .global f_utime
|
|
7273 .thumb
|
|
7274 .thumb_func
|
|
7276 f_utime:
|
|
7277 .LFB47:
|
|
3448:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3449:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3450:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3451:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3452:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3453:../../../Source/third_party/fatfs/src/ff.c **** /* Change Timestamp */
|
|
3454:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3455:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3456:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_utime (
|
|
3457:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR *path, /* Pointer to the file/directory name */
|
|
3458:../../../Source/third_party/fatfs/src/ff.c **** const FILINFO *fno /* Pointer to the time stamp to be set */
|
|
3459:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
3460:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
7278 .loc 1 3460 0
|
|
7279 .cfi_startproc
|
|
7280 @ args = 0, pretend = 0, frame = 56
|
|
7281 @ frame_needed = 0, uses_anonymous_args = 0
|
|
7282 .LVL1108:
|
|
7283 0000 10B5 push {r4, lr}
|
|
7284 .cfi_def_cfa_offset 8
|
|
7285 .cfi_offset 4, -8
|
|
7286 .cfi_offset 14, -4
|
|
7287 0002 8EB0 sub sp, sp, #56
|
|
7288 .cfi_def_cfa_offset 64
|
|
7289 0004 0EAB add r3, sp, #56
|
|
7290 0006 43F8340D str r0, [r3, #-52]!
|
|
7291 000a 0C46 mov r4, r1
|
|
3461:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
3462:../../../Source/third_party/fatfs/src/ff.c **** DIR dj;
|
|
3463:../../../Source/third_party/fatfs/src/ff.c **** BYTE *dir;
|
|
3464:../../../Source/third_party/fatfs/src/ff.c **** DEF_NAMEBUF;
|
|
3465:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3466:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3467:../../../Source/third_party/fatfs/src/ff.c **** res = chk_mounted(&path, &dj.fs, 1);
|
|
7292 .loc 1 3467 0
|
|
7293 000c 1846 mov r0, r3
|
|
7294 .LVL1109:
|
|
7295 000e 05A9 add r1, sp, #20
|
|
7296 .LVL1110:
|
|
7297 0010 0122 movs r2, #1
|
|
7298 0012 FFF7FEFF bl chk_mounted
|
|
7299 .LVL1111:
|
|
3468:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
7300 .loc 1 3468 0
|
|
7301 0016 0346 mov r3, r0
|
|
7302 0018 E8B9 cbnz r0, .L708
|
|
3469:../../../Source/third_party/fatfs/src/ff.c **** INIT_BUF(dj);
|
|
7303 .loc 1 3469 0
|
|
7304 001a 02AB add r3, sp, #8
|
|
7305 001c 0B93 str r3, [sp, #44]
|
|
7306 001e 0F4B ldr r3, .L711
|
|
7307 0020 0C93 str r3, [sp, #48]
|
|
3470:../../../Source/third_party/fatfs/src/ff.c **** res = follow_path(&dj, path); /* Follow the file path */
|
|
7308 .loc 1 3470 0
|
|
7309 0022 05A8 add r0, sp, #20
|
|
7310 .LVL1112:
|
|
7311 0024 0199 ldr r1, [sp, #4]
|
|
7312 0026 FFF7FEFF bl follow_path
|
|
7313 .LVL1113:
|
|
3471:../../../Source/third_party/fatfs/src/ff.c **** FREE_BUF();
|
|
3472:../../../Source/third_party/fatfs/src/ff.c **** if (_FS_RPATH && res == FR_OK && (dj.fn[NS] & NS_DOT))
|
|
3473:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INVALID_NAME;
|
|
3474:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
7314 .loc 1 3474 0
|
|
7315 002a 0346 mov r3, r0
|
|
7316 002c 98B9 cbnz r0, .L708
|
|
3475:../../../Source/third_party/fatfs/src/ff.c **** dir = dj.dir;
|
|
7317 .loc 1 3475 0
|
|
7318 002e 0A9B ldr r3, [sp, #40]
|
|
7319 .LVL1114:
|
|
3476:../../../Source/third_party/fatfs/src/ff.c **** if (!dir) { /* Root directory */
|
|
7320 .loc 1 3476 0
|
|
7321 0030 83B1 cbz r3, .L709
|
|
3477:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INVALID_NAME;
|
|
3478:../../../Source/third_party/fatfs/src/ff.c **** } else { /* File or sub-directory */
|
|
3479:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(dir+DIR_WrtTime, fno->ftime);
|
|
7322 .loc 1 3479 0
|
|
7323 0032 E288 ldrh r2, [r4, #6]
|
|
7324 0034 9A75 strb r2, [r3, #22]
|
|
7325 0036 E288 ldrh r2, [r4, #6]
|
|
7326 0038 120A lsrs r2, r2, #8
|
|
7327 003a DA75 strb r2, [r3, #23]
|
|
3480:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(dir+DIR_WrtDate, fno->fdate);
|
|
7328 .loc 1 3480 0
|
|
7329 003c A288 ldrh r2, [r4, #4]
|
|
7330 003e 1A76 strb r2, [r3, #24]
|
|
7331 0040 A288 ldrh r2, [r4, #4]
|
|
7332 0042 120A lsrs r2, r2, #8
|
|
7333 0044 5A76 strb r2, [r3, #25]
|
|
3481:../../../Source/third_party/fatfs/src/ff.c **** dj.fs->wflag = 1;
|
|
7334 .loc 1 3481 0
|
|
7335 0046 0598 ldr r0, [sp, #20]
|
|
7336 .LVL1115:
|
|
7337 0048 0123 movs r3, #1
|
|
7338 .LVL1116:
|
|
7339 004a 0371 strb r3, [r0, #4]
|
|
3482:../../../Source/third_party/fatfs/src/ff.c **** res = sync_fs(dj.fs);
|
|
7340 .loc 1 3482 0
|
|
7341 004c FFF7FEFF bl sync_fs
|
|
7342 .LVL1117:
|
|
7343 0050 0346 mov r3, r0
|
|
7344 .LVL1118:
|
|
7345 0052 00E0 b .L708
|
|
7346 .LVL1119:
|
|
7347 .L709:
|
|
3477:../../../Source/third_party/fatfs/src/ff.c **** } else { /* File or sub-directory */
|
|
7348 .loc 1 3477 0
|
|
7349 0054 0623 movs r3, #6
|
|
7350 .LVL1120:
|
|
7351 .L708:
|
|
3483:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3484:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3485:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3486:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3487:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(dj.fs, res);
|
|
3488:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
7352 .loc 1 3488 0
|
|
7353 0056 1846 mov r0, r3
|
|
7354 0058 0EB0 add sp, sp, #56
|
|
7355 .cfi_def_cfa_offset 8
|
|
7356 .LVL1121:
|
|
7357 @ sp needed
|
|
7358 005a 10BD pop {r4, pc}
|
|
7359 .LVL1122:
|
|
7360 .L712:
|
|
7361 .align 2
|
|
7362 .L711:
|
|
7363 005c 00000000 .word .LANCHOR4
|
|
7364 .cfi_endproc
|
|
7365 .LFE47:
|
|
7367 .section .text.f_rename,"ax",%progbits
|
|
7368 .align 2
|
|
7369 .global f_rename
|
|
7370 .thumb
|
|
7371 .thumb_func
|
|
7373 f_rename:
|
|
7374 .LFB48:
|
|
3489:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3490:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3491:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3492:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3493:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3494:../../../Source/third_party/fatfs/src/ff.c **** /* Rename File/Directory */
|
|
3495:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3496:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3497:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_rename (
|
|
3498:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR *path_old, /* Pointer to the old name */
|
|
3499:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR *path_new /* Pointer to the new name */
|
|
3500:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
3501:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
7375 .loc 1 3501 0
|
|
7376 .cfi_startproc
|
|
7377 @ args = 0, pretend = 0, frame = 120
|
|
7378 @ frame_needed = 0, uses_anonymous_args = 0
|
|
7379 .LVL1123:
|
|
7380 0000 30B5 push {r4, r5, lr}
|
|
7381 .cfi_def_cfa_offset 12
|
|
7382 .cfi_offset 4, -12
|
|
7383 .cfi_offset 5, -8
|
|
7384 .cfi_offset 14, -4
|
|
7385 0002 9FB0 sub sp, sp, #124
|
|
7386 .cfi_def_cfa_offset 136
|
|
7387 0004 1EAB add r3, sp, #120
|
|
7388 0006 43F8740D str r0, [r3, #-116]!
|
|
7389 000a 0C46 mov r4, r1
|
|
3502:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
3503:../../../Source/third_party/fatfs/src/ff.c **** DIR djo, djn;
|
|
3504:../../../Source/third_party/fatfs/src/ff.c **** BYTE buf[21], *dir;
|
|
3505:../../../Source/third_party/fatfs/src/ff.c **** DWORD dw;
|
|
3506:../../../Source/third_party/fatfs/src/ff.c **** DEF_NAMEBUF;
|
|
3507:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3508:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3509:../../../Source/third_party/fatfs/src/ff.c **** res = chk_mounted(&path_old, &djo.fs, 1);
|
|
7390 .loc 1 3509 0
|
|
7391 000c 1846 mov r0, r3
|
|
7392 .LVL1124:
|
|
7393 000e 15A9 add r1, sp, #84
|
|
7394 .LVL1125:
|
|
7395 0010 0122 movs r2, #1
|
|
7396 0012 FFF7FEFF bl chk_mounted
|
|
7397 .LVL1126:
|
|
3510:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
7398 .loc 1 3510 0
|
|
7399 0016 0346 mov r3, r0
|
|
7400 0018 0028 cmp r0, #0
|
|
7401 001a 7ED1 bne .L724
|
|
3511:../../../Source/third_party/fatfs/src/ff.c **** djn.fs = djo.fs;
|
|
7402 .loc 1 3511 0
|
|
7403 001c 159B ldr r3, [sp, #84]
|
|
7404 001e 0C93 str r3, [sp, #48]
|
|
3512:../../../Source/third_party/fatfs/src/ff.c **** INIT_BUF(djo);
|
|
7405 .loc 1 3512 0
|
|
7406 0020 03AB add r3, sp, #12
|
|
7407 0022 1B93 str r3, [sp, #108]
|
|
7408 0024 3E4B ldr r3, .L726
|
|
7409 0026 1C93 str r3, [sp, #112]
|
|
3513:../../../Source/third_party/fatfs/src/ff.c **** res = follow_path(&djo, path_old); /* Check old object */
|
|
7410 .loc 1 3513 0
|
|
7411 0028 15A8 add r0, sp, #84
|
|
7412 .LVL1127:
|
|
7413 002a 0199 ldr r1, [sp, #4]
|
|
7414 002c FFF7FEFF bl follow_path
|
|
7415 .LVL1128:
|
|
3514:../../../Source/third_party/fatfs/src/ff.c **** if (_FS_RPATH && res == FR_OK && (djo.fn[NS] & NS_DOT))
|
|
3515:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INVALID_NAME;
|
|
3516:../../../Source/third_party/fatfs/src/ff.c **** #if _FS_LOCK
|
|
3517:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) res = chk_lock(&djo, 2);
|
|
3518:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
3519:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) { /* Old object is found */
|
|
7416 .loc 1 3519 0
|
|
7417 0030 0346 mov r3, r0
|
|
7418 0032 0028 cmp r0, #0
|
|
7419 0034 71D1 bne .L724
|
|
3520:../../../Source/third_party/fatfs/src/ff.c **** if (!djo.dir) { /* Is root dir? */
|
|
7420 .loc 1 3520 0
|
|
7421 0036 1A99 ldr r1, [sp, #104]
|
|
7422 0038 0029 cmp r1, #0
|
|
7423 003a 62D0 beq .L720
|
|
3521:../../../Source/third_party/fatfs/src/ff.c **** res = FR_NO_FILE;
|
|
3522:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3523:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(buf, djo.dir+DIR_Attr, 21); /* Save the object information except for name */
|
|
7424 .loc 1 3523 0
|
|
7425 003c 06A8 add r0, sp, #24
|
|
7426 .LVL1129:
|
|
7427 003e 0B31 adds r1, r1, #11
|
|
7428 0040 1522 movs r2, #21
|
|
7429 0042 FFF7FEFF bl mem_cpy
|
|
7430 .LVL1130:
|
|
3524:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(&djn, &djo, sizeof (DIR)); /* Check new object */
|
|
7431 .loc 1 3524 0
|
|
7432 0046 0CA8 add r0, sp, #48
|
|
7433 0048 15A9 add r1, sp, #84
|
|
7434 004a 2422 movs r2, #36
|
|
7435 004c FFF7FEFF bl mem_cpy
|
|
7436 .LVL1131:
|
|
3525:../../../Source/third_party/fatfs/src/ff.c **** res = follow_path(&djn, path_new);
|
|
7437 .loc 1 3525 0
|
|
7438 0050 0CA8 add r0, sp, #48
|
|
7439 0052 2146 mov r1, r4
|
|
7440 0054 FFF7FEFF bl follow_path
|
|
7441 .LVL1132:
|
|
3526:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) res = FR_EXIST; /* The new object name is already existing */
|
|
7442 .loc 1 3526 0
|
|
7443 0058 0346 mov r3, r0
|
|
7444 005a 0028 cmp r0, #0
|
|
7445 005c 53D0 beq .L721
|
|
3527:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_NO_FILE) { /* Is it a valid path and no name collision? */
|
|
7446 .loc 1 3527 0
|
|
7447 005e 0428 cmp r0, #4
|
|
7448 0060 5BD1 bne .L724
|
|
3528:../../../Source/third_party/fatfs/src/ff.c **** /* Start critical section that any interruption can cause a cross-link */
|
|
3529:../../../Source/third_party/fatfs/src/ff.c **** res = dir_register(&djn); /* Register the new entry */
|
|
7449 .loc 1 3529 0
|
|
7450 0062 0CA8 add r0, sp, #48
|
|
7451 .LVL1133:
|
|
7452 0064 FFF7FEFF bl dir_register
|
|
7453 .LVL1134:
|
|
3530:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
7454 .loc 1 3530 0
|
|
7455 0068 0346 mov r3, r0
|
|
7456 006a 0028 cmp r0, #0
|
|
7457 006c 55D1 bne .L724
|
|
3531:../../../Source/third_party/fatfs/src/ff.c **** dir = djn.dir; /* Copy object information except for name */
|
|
7458 .loc 1 3531 0
|
|
7459 006e 119C ldr r4, [sp, #68]
|
|
7460 .LVL1135:
|
|
3532:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(dir+13, buf+2, 19);
|
|
7461 .loc 1 3532 0
|
|
7462 0070 04F10D00 add r0, r4, #13
|
|
7463 .LVL1136:
|
|
7464 0074 0DF11A01 add r1, sp, #26
|
|
7465 0078 1322 movs r2, #19
|
|
7466 007a FFF7FEFF bl mem_cpy
|
|
7467 .LVL1137:
|
|
3533:../../../Source/third_party/fatfs/src/ff.c **** dir[DIR_Attr] = buf[0] | AM_ARC;
|
|
7468 .loc 1 3533 0
|
|
7469 007e 9DF81830 ldrb r3, [sp, #24] @ zero_extendqisi2
|
|
7470 0082 43F02003 orr r3, r3, #32
|
|
7471 0086 E372 strb r3, [r4, #11]
|
|
3534:../../../Source/third_party/fatfs/src/ff.c **** djo.fs->wflag = 1;
|
|
7472 .loc 1 3534 0
|
|
7473 0088 159D ldr r5, [sp, #84]
|
|
7474 008a 0123 movs r3, #1
|
|
7475 008c 2B71 strb r3, [r5, #4]
|
|
3535:../../../Source/third_party/fatfs/src/ff.c **** if (djo.sclust != djn.sclust && (dir[DIR_Attr] & AM_DIR)) { /* Update .. entry in the direct
|
|
7476 .loc 1 3535 0
|
|
7477 008e 0E9B ldr r3, [sp, #56]
|
|
7478 0090 179A ldr r2, [sp, #92]
|
|
7479 0092 9A42 cmp r2, r3
|
|
7480 0094 3BD0 beq .L715
|
|
7481 .loc 1 3535 0 is_stmt 0 discriminator 1
|
|
7482 0096 E37A ldrb r3, [r4, #11] @ zero_extendqisi2
|
|
7483 0098 13F0100F tst r3, #16
|
|
7484 009c 37D0 beq .L715
|
|
3536:../../../Source/third_party/fatfs/src/ff.c **** dw = clust2sect(djo.fs, ld_clust(djo.fs, dir));
|
|
7485 .loc 1 3536 0 is_stmt 1
|
|
7486 009e 2846 mov r0, r5
|
|
7487 00a0 2146 mov r1, r4
|
|
7488 00a2 FFF7FEFF bl ld_clust
|
|
7489 .LVL1138:
|
|
7490 00a6 0146 mov r1, r0
|
|
7491 00a8 2846 mov r0, r5
|
|
7492 00aa FFF7FEFF bl clust2sect
|
|
7493 .LVL1139:
|
|
3537:../../../Source/third_party/fatfs/src/ff.c **** if (!dw) {
|
|
7494 .loc 1 3537 0
|
|
7495 00ae 0146 mov r1, r0
|
|
7496 00b0 58B3 cbz r0, .L722
|
|
3538:../../../Source/third_party/fatfs/src/ff.c **** res = FR_INT_ERR;
|
|
3539:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3540:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(djo.fs, dw);
|
|
7497 .loc 1 3540 0
|
|
7498 00b2 2846 mov r0, r5
|
|
7499 .LVL1140:
|
|
7500 00b4 FFF7FEFF bl move_window
|
|
7501 .LVL1141:
|
|
3541:../../../Source/third_party/fatfs/src/ff.c **** dir = djo.fs->win+SZ_DIR; /* .. entry */
|
|
7502 .loc 1 3541 0
|
|
7503 00b8 159A ldr r2, [sp, #84]
|
|
7504 .LVL1142:
|
|
3542:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK && dir[1] == '.') {
|
|
7505 .loc 1 3542 0
|
|
7506 00ba 0346 mov r3, r0
|
|
7507 00bc 68BB cbnz r0, .L724
|
|
7508 .loc 1 3542 0 is_stmt 0 discriminator 1
|
|
7509 00be 92F85530 ldrb r3, [r2, #85] @ zero_extendqisi2
|
|
7510 00c2 2E2B cmp r3, #46
|
|
7511 00c4 23D1 bne .L715
|
|
3543:../../../Source/third_party/fatfs/src/ff.c **** dw = (djo.fs->fs_type == FS_FAT32 && djn.sclust == djo.fs->dirbase) ? 0 : djn.sclust;
|
|
7512 .loc 1 3543 0 is_stmt 1
|
|
7513 00c6 1378 ldrb r3, [r2] @ zero_extendqisi2
|
|
7514 00c8 032B cmp r3, #3
|
|
7515 00ca 03D1 bne .L717
|
|
7516 .loc 1 3543 0 is_stmt 0 discriminator 2
|
|
7517 00cc 936A ldr r3, [r2, #40]
|
|
7518 00ce 0E99 ldr r1, [sp, #56]
|
|
7519 00d0 9942 cmp r1, r3
|
|
7520 00d2 01D0 beq .L723
|
|
7521 .L717:
|
|
7522 .loc 1 3543 0 discriminator 3
|
|
7523 00d4 0E9B ldr r3, [sp, #56]
|
|
7524 00d6 00E0 b .L718
|
|
7525 .L723:
|
|
7526 .loc 1 3543 0
|
|
7527 00d8 0023 movs r3, #0
|
|
7528 .L718:
|
|
7529 .LVL1143:
|
|
7530 .LBB103:
|
|
7531 .LBB104:
|
|
1261:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(dir+DIR_FstClusHI, cl >> 16);
|
|
7532 .loc 1 1261 0 is_stmt 1 discriminator 6
|
|
7533 00da 82F86E30 strb r3, [r2, #110]
|
|
7534 00de C3F30721 ubfx r1, r3, #8, #8
|
|
7535 00e2 82F86F10 strb r1, [r2, #111]
|
|
1262:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
7536 .loc 1 1262 0 discriminator 6
|
|
7537 00e6 1B0C lsrs r3, r3, #16
|
|
7538 .LVL1144:
|
|
7539 00e8 82F86830 strb r3, [r2, #104]
|
|
7540 00ec 1B0A lsrs r3, r3, #8
|
|
7541 00ee 82F86930 strb r3, [r2, #105]
|
|
7542 .LBE104:
|
|
7543 .LBE103:
|
|
3544:../../../Source/third_party/fatfs/src/ff.c **** st_clust(dir, dw);
|
|
3545:../../../Source/third_party/fatfs/src/ff.c **** djo.fs->wflag = 1;
|
|
7544 .loc 1 3545 0 discriminator 6
|
|
7545 00f2 0123 movs r3, #1
|
|
7546 00f4 1371 strb r3, [r2, #4]
|
|
7547 00f6 0AE0 b .L715
|
|
7548 .LVL1145:
|
|
7549 .L719:
|
|
3546:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3547:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3548:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3549:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
3550:../../../Source/third_party/fatfs/src/ff.c **** res = dir_remove(&djo); /* Remove old entry */
|
|
3551:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK)
|
|
3552:../../../Source/third_party/fatfs/src/ff.c **** res = sync_fs(djo.fs);
|
|
7550 .loc 1 3552 0
|
|
7551 00f8 1598 ldr r0, [sp, #84]
|
|
7552 .LVL1146:
|
|
7553 00fa FFF7FEFF bl sync_fs
|
|
7554 .LVL1147:
|
|
7555 00fe 0346 mov r3, r0
|
|
7556 .LVL1148:
|
|
7557 0100 0BE0 b .L724
|
|
7558 .LVL1149:
|
|
7559 .L720:
|
|
3521:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
7560 .loc 1 3521 0
|
|
7561 0102 0423 movs r3, #4
|
|
7562 0104 09E0 b .L724
|
|
7563 .L721:
|
|
3526:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_NO_FILE) { /* Is it a valid path and no name collision? */
|
|
7564 .loc 1 3526 0
|
|
7565 0106 0823 movs r3, #8
|
|
7566 0108 07E0 b .L724
|
|
7567 .LVL1150:
|
|
7568 .L722:
|
|
3538:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
7569 .loc 1 3538 0
|
|
7570 010a 0223 movs r3, #2
|
|
7571 .LVL1151:
|
|
7572 010c 05E0 b .L724
|
|
7573 .LVL1152:
|
|
7574 .L715:
|
|
3550:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK)
|
|
7575 .loc 1 3550 0
|
|
7576 010e 15A8 add r0, sp, #84
|
|
7577 0110 FFF7FEFF bl dir_remove
|
|
7578 .LVL1153:
|
|
3551:../../../Source/third_party/fatfs/src/ff.c **** res = sync_fs(djo.fs);
|
|
7579 .loc 1 3551 0
|
|
7580 0114 0346 mov r3, r0
|
|
7581 0116 0028 cmp r0, #0
|
|
7582 0118 EED0 beq .L719
|
|
7583 .LVL1154:
|
|
7584 .L724:
|
|
3553:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3554:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3555:../../../Source/third_party/fatfs/src/ff.c **** /* End critical section */
|
|
3556:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3557:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3558:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3559:../../../Source/third_party/fatfs/src/ff.c **** FREE_BUF();
|
|
3560:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3561:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3562:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(djo.fs, res);
|
|
3563:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
7585 .loc 1 3563 0
|
|
7586 011a 1846 mov r0, r3
|
|
7587 011c 1FB0 add sp, sp, #124
|
|
7588 .cfi_def_cfa_offset 12
|
|
7589 @ sp needed
|
|
7590 011e 30BD pop {r4, r5, pc}
|
|
7591 .LVL1155:
|
|
7592 .L727:
|
|
7593 .align 2
|
|
7594 .L726:
|
|
7595 0120 00000000 .word .LANCHOR4
|
|
7596 .cfi_endproc
|
|
7597 .LFE48:
|
|
7599 .section .text.f_gets,"ax",%progbits
|
|
7600 .align 2
|
|
7601 .global f_gets
|
|
7602 .thumb
|
|
7603 .thumb_func
|
|
7605 f_gets:
|
|
7606 .LFB49:
|
|
3564:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3565:../../../Source/third_party/fatfs/src/ff.c **** #endif /* !_FS_READONLY */
|
|
3566:../../../Source/third_party/fatfs/src/ff.c **** #endif /* _FS_MINIMIZE == 0 */
|
|
3567:../../../Source/third_party/fatfs/src/ff.c **** #endif /* _FS_MINIMIZE <= 1 */
|
|
3568:../../../Source/third_party/fatfs/src/ff.c **** #endif /* _FS_MINIMIZE <= 2 */
|
|
3569:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3570:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3571:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3572:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LABEL
|
|
3573:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3574:../../../Source/third_party/fatfs/src/ff.c **** /* Get volume label */
|
|
3575:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3576:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3577:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_getlabel (
|
|
3578:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR* path, /* Path name of the logical drive number */
|
|
3579:../../../Source/third_party/fatfs/src/ff.c **** TCHAR* label, /* Pointer to a buffer to return the volume label */
|
|
3580:../../../Source/third_party/fatfs/src/ff.c **** DWORD* sn /* Pointer to a variable to return the volume serial number */
|
|
3581:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
3582:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
3583:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
3584:../../../Source/third_party/fatfs/src/ff.c **** DIR dj;
|
|
3585:../../../Source/third_party/fatfs/src/ff.c **** UINT i, j;
|
|
3586:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3587:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3588:../../../Source/third_party/fatfs/src/ff.c **** /* Get logical drive */
|
|
3589:../../../Source/third_party/fatfs/src/ff.c **** res = chk_mounted(&path, &dj.fs, 0);
|
|
3590:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3591:../../../Source/third_party/fatfs/src/ff.c **** /* Get volume label */
|
|
3592:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK && label) {
|
|
3593:../../../Source/third_party/fatfs/src/ff.c **** dj.sclust = 0; /* Open root dir */
|
|
3594:../../../Source/third_party/fatfs/src/ff.c **** res = dir_sdi(&dj, 0);
|
|
3595:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
3596:../../../Source/third_party/fatfs/src/ff.c **** res = dir_read(&dj, 1); /* Get an entry with AM_VOL */
|
|
3597:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) { /* A volume label is exist */
|
|
3598:../../../Source/third_party/fatfs/src/ff.c **** #if _LFN_UNICODE
|
|
3599:../../../Source/third_party/fatfs/src/ff.c **** WCHAR w;
|
|
3600:../../../Source/third_party/fatfs/src/ff.c **** i = j = 0;
|
|
3601:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
3602:../../../Source/third_party/fatfs/src/ff.c **** w = (i < 11) ? dj.dir[i++] : ' ';
|
|
3603:../../../Source/third_party/fatfs/src/ff.c **** if (IsDBCS1(w) && i < 11 && IsDBCS2(dj.dir[i]))
|
|
3604:../../../Source/third_party/fatfs/src/ff.c **** w = (w << 8) | dj.dir[i++];
|
|
3605:../../../Source/third_party/fatfs/src/ff.c **** label[j++] = ff_convert(w, 1);
|
|
3606:../../../Source/third_party/fatfs/src/ff.c **** } while (j < 11);
|
|
3607:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
3608:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(label, dj.dir, 11);
|
|
3609:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
3610:../../../Source/third_party/fatfs/src/ff.c **** j = 11;
|
|
3611:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
3612:../../../Source/third_party/fatfs/src/ff.c **** label[j] = 0;
|
|
3613:../../../Source/third_party/fatfs/src/ff.c **** if (!j) break;
|
|
3614:../../../Source/third_party/fatfs/src/ff.c **** } while (label[--j] == ' ');
|
|
3615:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3616:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_NO_FILE) { /* No label, return nul string */
|
|
3617:../../../Source/third_party/fatfs/src/ff.c **** label[0] = 0;
|
|
3618:../../../Source/third_party/fatfs/src/ff.c **** res = FR_OK;
|
|
3619:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3620:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3621:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3622:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3623:../../../Source/third_party/fatfs/src/ff.c **** /* Get volume serial number */
|
|
3624:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK && sn) {
|
|
3625:../../../Source/third_party/fatfs/src/ff.c **** res = move_window(dj.fs, dj.fs->volbase);
|
|
3626:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
3627:../../../Source/third_party/fatfs/src/ff.c **** i = dj.fs->fs_type == FS_FAT32 ? BS_VolID32 : BS_VolID;
|
|
3628:../../../Source/third_party/fatfs/src/ff.c **** *sn = LD_DWORD(&dj.fs->win[i]);
|
|
3629:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3630:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3631:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3632:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(dj.fs, res);
|
|
3633:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3634:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3635:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3636:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3637:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
3638:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3639:../../../Source/third_party/fatfs/src/ff.c **** /* Set volume label */
|
|
3640:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3641:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3642:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_setlabel (
|
|
3643:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR* label /* Pointer to the volume label to set */
|
|
3644:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
3645:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
3646:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
3647:../../../Source/third_party/fatfs/src/ff.c **** DIR dj;
|
|
3648:../../../Source/third_party/fatfs/src/ff.c **** BYTE vn[11];
|
|
3649:../../../Source/third_party/fatfs/src/ff.c **** UINT i, j, sl;
|
|
3650:../../../Source/third_party/fatfs/src/ff.c **** WCHAR w;
|
|
3651:../../../Source/third_party/fatfs/src/ff.c **** DWORD tm;
|
|
3652:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3653:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3654:../../../Source/third_party/fatfs/src/ff.c **** /* Get logical drive */
|
|
3655:../../../Source/third_party/fatfs/src/ff.c **** res = chk_mounted(&label, &dj.fs, 1);
|
|
3656:../../../Source/third_party/fatfs/src/ff.c **** if (res) LEAVE_FF(dj.fs, res);
|
|
3657:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3658:../../../Source/third_party/fatfs/src/ff.c **** /* Create a volume label in directory form */
|
|
3659:../../../Source/third_party/fatfs/src/ff.c **** vn[0] = 0;
|
|
3660:../../../Source/third_party/fatfs/src/ff.c **** for (sl = 0; label[sl]; sl++) ; /* Get name length */
|
|
3661:../../../Source/third_party/fatfs/src/ff.c **** for ( ; sl && label[sl-1] == ' '; sl--) ; /* Remove trailing spaces */
|
|
3662:../../../Source/third_party/fatfs/src/ff.c **** if (sl) { /* Create volume label in directory form */
|
|
3663:../../../Source/third_party/fatfs/src/ff.c **** i = j = 0;
|
|
3664:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
3665:../../../Source/third_party/fatfs/src/ff.c **** #if _LFN_UNICODE
|
|
3666:../../../Source/third_party/fatfs/src/ff.c **** w = ff_convert(ff_wtoupper(label[i++]), 0);
|
|
3667:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
3668:../../../Source/third_party/fatfs/src/ff.c **** w = (BYTE)label[i++];
|
|
3669:../../../Source/third_party/fatfs/src/ff.c **** if (IsDBCS1(w))
|
|
3670:../../../Source/third_party/fatfs/src/ff.c **** w = (j < 10 && i < sl && IsDBCS2(label[i])) ? (w << 8) | (BYTE)label[i++] : 0;
|
|
3671:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_LFN
|
|
3672:../../../Source/third_party/fatfs/src/ff.c **** w = ff_convert(ff_wtoupper(ff_convert(w, 1)), 0);
|
|
3673:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
3674:../../../Source/third_party/fatfs/src/ff.c **** if (IsLower(w)) w -= 0x20; /* To upper ASCII chars */
|
|
3675:../../../Source/third_party/fatfs/src/ff.c **** #ifdef _EXCVT
|
|
3676:../../../Source/third_party/fatfs/src/ff.c **** if (w >= 0x80) w = ExCvt[w - 0x80]; /* To upper extended chars (SBCS cfg) */
|
|
3677:../../../Source/third_party/fatfs/src/ff.c **** #else
|
|
3678:../../../Source/third_party/fatfs/src/ff.c **** if (!_DF1S && w >= 0x80) w = 0; /* Reject extended chars (ASCII cfg) */
|
|
3679:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
3680:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
3681:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
3682:../../../Source/third_party/fatfs/src/ff.c **** if (!w || chk_chr("\"*+,.:;<=>\?[]|\x7F", w) || j >= (UINT)((w >= 0x100) ? 10 : 11)) /* Reject i
|
|
3683:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(dj.fs, FR_INVALID_NAME);
|
|
3684:../../../Source/third_party/fatfs/src/ff.c **** if (w >= 0x100) vn[j++] = (BYTE)(w >> 8);
|
|
3685:../../../Source/third_party/fatfs/src/ff.c **** vn[j++] = (BYTE)w;
|
|
3686:../../../Source/third_party/fatfs/src/ff.c **** } while (i < sl);
|
|
3687:../../../Source/third_party/fatfs/src/ff.c **** while (j < 11) vn[j++] = ' ';
|
|
3688:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3689:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3690:../../../Source/third_party/fatfs/src/ff.c **** /* Set volume label */
|
|
3691:../../../Source/third_party/fatfs/src/ff.c **** dj.sclust = 0; /* Open root dir */
|
|
3692:../../../Source/third_party/fatfs/src/ff.c **** res = dir_sdi(&dj, 0);
|
|
3693:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
3694:../../../Source/third_party/fatfs/src/ff.c **** res = dir_read(&dj, 1); /* Get an entry with AM_VOL */
|
|
3695:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) { /* A volume label is found */
|
|
3696:../../../Source/third_party/fatfs/src/ff.c **** if (vn[0]) {
|
|
3697:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(dj.dir, vn, 11); /* Change the volume label name */
|
|
3698:../../../Source/third_party/fatfs/src/ff.c **** tm = get_fattime();
|
|
3699:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(dj.dir+DIR_WrtTime, tm);
|
|
3700:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3701:../../../Source/third_party/fatfs/src/ff.c **** dj.dir[0] = DDE; /* Remove the volume label */
|
|
3702:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3703:../../../Source/third_party/fatfs/src/ff.c **** dj.fs->wflag = 1;
|
|
3704:../../../Source/third_party/fatfs/src/ff.c **** res = sync_fs(dj.fs);
|
|
3705:../../../Source/third_party/fatfs/src/ff.c **** } else { /* No volume label is found or error */
|
|
3706:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_NO_FILE) {
|
|
3707:../../../Source/third_party/fatfs/src/ff.c **** res = FR_OK;
|
|
3708:../../../Source/third_party/fatfs/src/ff.c **** if (vn[0]) { /* Create volume label as new */
|
|
3709:../../../Source/third_party/fatfs/src/ff.c **** res = dir_alloc(&dj, 1); /* Allocate an entry for volume label */
|
|
3710:../../../Source/third_party/fatfs/src/ff.c **** if (res == FR_OK) {
|
|
3711:../../../Source/third_party/fatfs/src/ff.c **** mem_set(dj.dir, 0, SZ_DIR); /* Set volume label */
|
|
3712:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(dj.dir, vn, 11);
|
|
3713:../../../Source/third_party/fatfs/src/ff.c **** dj.dir[DIR_Attr] = AM_VOL;
|
|
3714:../../../Source/third_party/fatfs/src/ff.c **** tm = get_fattime();
|
|
3715:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(dj.dir+DIR_WrtTime, tm);
|
|
3716:../../../Source/third_party/fatfs/src/ff.c **** dj.fs->wflag = 1;
|
|
3717:../../../Source/third_party/fatfs/src/ff.c **** res = sync_fs(dj.fs);
|
|
3718:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3719:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3720:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3721:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3722:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3723:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3724:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(dj.fs, res);
|
|
3725:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3726:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3727:../../../Source/third_party/fatfs/src/ff.c **** #endif /* !_FS_READONLY */
|
|
3728:../../../Source/third_party/fatfs/src/ff.c **** #endif /* _USE_LABEL */
|
|
3729:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3730:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3731:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3732:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3733:../../../Source/third_party/fatfs/src/ff.c **** /* Forward data to the stream directly (available on only tiny cfg) */
|
|
3734:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3735:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_FORWARD && _FS_TINY
|
|
3736:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3737:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_forward (
|
|
3738:../../../Source/third_party/fatfs/src/ff.c **** FIL *fp, /* Pointer to the file object */
|
|
3739:../../../Source/third_party/fatfs/src/ff.c **** UINT (*func)(const BYTE*,UINT), /* Pointer to the streaming function */
|
|
3740:../../../Source/third_party/fatfs/src/ff.c **** UINT btf, /* Number of bytes to forward */
|
|
3741:../../../Source/third_party/fatfs/src/ff.c **** UINT *bf /* Pointer to number of bytes forwarded */
|
|
3742:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
3743:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
3744:../../../Source/third_party/fatfs/src/ff.c **** FRESULT res;
|
|
3745:../../../Source/third_party/fatfs/src/ff.c **** DWORD remain, clst, sect;
|
|
3746:../../../Source/third_party/fatfs/src/ff.c **** UINT rcnt;
|
|
3747:../../../Source/third_party/fatfs/src/ff.c **** BYTE csect;
|
|
3748:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3749:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3750:../../../Source/third_party/fatfs/src/ff.c **** *bf = 0; /* Clear transfer byte counter */
|
|
3751:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3752:../../../Source/third_party/fatfs/src/ff.c **** res = validate(fp); /* Check validity of the object */
|
|
3753:../../../Source/third_party/fatfs/src/ff.c **** if (res != FR_OK) LEAVE_FF(fp->fs, res);
|
|
3754:../../../Source/third_party/fatfs/src/ff.c **** if (fp->flag & FA__ERROR) /* Check error flag */
|
|
3755:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(fp->fs, FR_INT_ERR);
|
|
3756:../../../Source/third_party/fatfs/src/ff.c **** if (!(fp->flag & FA_READ)) /* Check access mode */
|
|
3757:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(fp->fs, FR_DENIED);
|
|
3758:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3759:../../../Source/third_party/fatfs/src/ff.c **** remain = fp->fsize - fp->fptr;
|
|
3760:../../../Source/third_party/fatfs/src/ff.c **** if (btf > remain) btf = (UINT)remain; /* Truncate btf by remaining bytes */
|
|
3761:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3762:../../../Source/third_party/fatfs/src/ff.c **** for ( ; btf && (*func)(0, 0); /* Repeat until all data transferred or stream becomes busy */
|
|
3763:../../../Source/third_party/fatfs/src/ff.c **** fp->fptr += rcnt, *bf += rcnt, btf -= rcnt) {
|
|
3764:../../../Source/third_party/fatfs/src/ff.c **** csect = (BYTE)(fp->fptr / SS(fp->fs) & (fp->fs->csize - 1)); /* Sector offset in the cluster */
|
|
3765:../../../Source/third_party/fatfs/src/ff.c **** if ((fp->fptr % SS(fp->fs)) == 0) { /* On the sector boundary? */
|
|
3766:../../../Source/third_party/fatfs/src/ff.c **** if (!csect) { /* On the cluster boundary? */
|
|
3767:../../../Source/third_party/fatfs/src/ff.c **** clst = (fp->fptr == 0) ? /* On the top of the file? */
|
|
3768:../../../Source/third_party/fatfs/src/ff.c **** fp->sclust : get_fat(fp->fs, fp->clust);
|
|
3769:../../../Source/third_party/fatfs/src/ff.c **** if (clst <= 1) ABORT(fp->fs, FR_INT_ERR);
|
|
3770:../../../Source/third_party/fatfs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fp->fs, FR_DISK_ERR);
|
|
3771:../../../Source/third_party/fatfs/src/ff.c **** fp->clust = clst; /* Update current cluster */
|
|
3772:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3773:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3774:../../../Source/third_party/fatfs/src/ff.c **** sect = clust2sect(fp->fs, fp->clust); /* Get current data sector */
|
|
3775:../../../Source/third_party/fatfs/src/ff.c **** if (!sect) ABORT(fp->fs, FR_INT_ERR);
|
|
3776:../../../Source/third_party/fatfs/src/ff.c **** sect += csect;
|
|
3777:../../../Source/third_party/fatfs/src/ff.c **** if (move_window(fp->fs, sect)) /* Move sector window */
|
|
3778:../../../Source/third_party/fatfs/src/ff.c **** ABORT(fp->fs, FR_DISK_ERR);
|
|
3779:../../../Source/third_party/fatfs/src/ff.c **** fp->dsect = sect;
|
|
3780:../../../Source/third_party/fatfs/src/ff.c **** rcnt = SS(fp->fs) - (WORD)(fp->fptr % SS(fp->fs)); /* Forward data from sector window */
|
|
3781:../../../Source/third_party/fatfs/src/ff.c **** if (rcnt > btf) rcnt = btf;
|
|
3782:../../../Source/third_party/fatfs/src/ff.c **** rcnt = (*func)(&fp->fs->win[(WORD)fp->fptr % SS(fp->fs)], rcnt);
|
|
3783:../../../Source/third_party/fatfs/src/ff.c **** if (!rcnt) ABORT(fp->fs, FR_INT_ERR);
|
|
3784:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3785:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3786:../../../Source/third_party/fatfs/src/ff.c **** LEAVE_FF(fp->fs, FR_OK);
|
|
3787:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3788:../../../Source/third_party/fatfs/src/ff.c **** #endif /* _USE_FORWARD */
|
|
3789:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3790:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3791:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3792:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_MKFS && !_FS_READONLY
|
|
3793:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3794:../../../Source/third_party/fatfs/src/ff.c **** /* Create File System on the Drive */
|
|
3795:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
3796:../../../Source/third_party/fatfs/src/ff.c **** #define N_ROOTDIR 512 /* Number of root dir entries for FAT12/16 */
|
|
3797:../../../Source/third_party/fatfs/src/ff.c **** #define N_FATS 1 /* Number of FAT copies (1 or 2) */
|
|
3798:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3799:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3800:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_mkfs (
|
|
3801:../../../Source/third_party/fatfs/src/ff.c **** BYTE vol, /* Logical drive number */
|
|
3802:../../../Source/third_party/fatfs/src/ff.c **** BYTE sfd, /* Partitioning rule 0:FDISK, 1:SFD */
|
|
3803:../../../Source/third_party/fatfs/src/ff.c **** UINT au /* Allocation unit size [bytes] */
|
|
3804:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
3805:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
3806:../../../Source/third_party/fatfs/src/ff.c **** static const WORD vst[] = { 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 0};
|
|
3807:../../../Source/third_party/fatfs/src/ff.c **** static const WORD cst[] = {32768, 16384, 8192, 4096, 2048, 16384, 8192, 4096, 2048, 1024, 512};
|
|
3808:../../../Source/third_party/fatfs/src/ff.c **** BYTE fmt, md, sys, *tbl, pdrv, part;
|
|
3809:../../../Source/third_party/fatfs/src/ff.c **** DWORD n_clst, vs, n, wsect;
|
|
3810:../../../Source/third_party/fatfs/src/ff.c **** UINT i;
|
|
3811:../../../Source/third_party/fatfs/src/ff.c **** DWORD b_vol, b_fat, b_dir, b_data; /* LBA */
|
|
3812:../../../Source/third_party/fatfs/src/ff.c **** DWORD n_vol, n_rsv, n_fat, n_dir; /* Size */
|
|
3813:../../../Source/third_party/fatfs/src/ff.c **** FATFS *fs;
|
|
3814:../../../Source/third_party/fatfs/src/ff.c **** DSTATUS stat;
|
|
3815:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3816:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3817:../../../Source/third_party/fatfs/src/ff.c **** /* Check mounted drive and clear work area */
|
|
3818:../../../Source/third_party/fatfs/src/ff.c **** if (vol >= _VOLUMES) return FR_INVALID_DRIVE;
|
|
3819:../../../Source/third_party/fatfs/src/ff.c **** if (sfd > 1) return FR_INVALID_PARAMETER;
|
|
3820:../../../Source/third_party/fatfs/src/ff.c **** if (au & (au - 1)) return FR_INVALID_PARAMETER;
|
|
3821:../../../Source/third_party/fatfs/src/ff.c **** fs = FatFs[vol];
|
|
3822:../../../Source/third_party/fatfs/src/ff.c **** if (!fs) return FR_NOT_ENABLED;
|
|
3823:../../../Source/third_party/fatfs/src/ff.c **** fs->fs_type = 0;
|
|
3824:../../../Source/third_party/fatfs/src/ff.c **** pdrv = LD2PD(vol); /* Physical drive */
|
|
3825:../../../Source/third_party/fatfs/src/ff.c **** part = LD2PT(vol); /* Partition (0:auto detect, 1-4:get from partition table)*/
|
|
3826:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3827:../../../Source/third_party/fatfs/src/ff.c **** /* Get disk statics */
|
|
3828:../../../Source/third_party/fatfs/src/ff.c **** stat = disk_initialize(pdrv);
|
|
3829:../../../Source/third_party/fatfs/src/ff.c **** if (stat & STA_NOINIT) return FR_NOT_READY;
|
|
3830:../../../Source/third_party/fatfs/src/ff.c **** if (stat & STA_PROTECT) return FR_WRITE_PROTECTED;
|
|
3831:../../../Source/third_party/fatfs/src/ff.c **** #if _MAX_SS != 512 /* Get disk sector size */
|
|
3832:../../../Source/third_party/fatfs/src/ff.c **** if (disk_ioctl(pdrv, GET_SECTOR_SIZE, &SS(fs)) != RES_OK || SS(fs) > _MAX_SS)
|
|
3833:../../../Source/third_party/fatfs/src/ff.c **** return FR_DISK_ERR;
|
|
3834:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
3835:../../../Source/third_party/fatfs/src/ff.c **** if (_MULTI_PARTITION && part) {
|
|
3836:../../../Source/third_party/fatfs/src/ff.c **** /* Get partition information from partition table in the MBR */
|
|
3837:../../../Source/third_party/fatfs/src/ff.c **** if (disk_read(pdrv, fs->win, 0, 1) != RES_OK) return FR_DISK_ERR;
|
|
3838:../../../Source/third_party/fatfs/src/ff.c **** if (LD_WORD(fs->win+BS_55AA) != 0xAA55) return FR_MKFS_ABORTED;
|
|
3839:../../../Source/third_party/fatfs/src/ff.c **** tbl = &fs->win[MBR_Table + (part - 1) * SZ_PTE];
|
|
3840:../../../Source/third_party/fatfs/src/ff.c **** if (!tbl[4]) return FR_MKFS_ABORTED; /* No partition? */
|
|
3841:../../../Source/third_party/fatfs/src/ff.c **** b_vol = LD_DWORD(tbl+8); /* Volume start sector */
|
|
3842:../../../Source/third_party/fatfs/src/ff.c **** n_vol = LD_DWORD(tbl+12); /* Volume size */
|
|
3843:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3844:../../../Source/third_party/fatfs/src/ff.c **** /* Create a partition in this function */
|
|
3845:../../../Source/third_party/fatfs/src/ff.c **** if (disk_ioctl(pdrv, GET_SECTOR_COUNT, &n_vol) != RES_OK || n_vol < 128)
|
|
3846:../../../Source/third_party/fatfs/src/ff.c **** return FR_DISK_ERR;
|
|
3847:../../../Source/third_party/fatfs/src/ff.c **** b_vol = (sfd) ? 0 : 63; /* Volume start sector */
|
|
3848:../../../Source/third_party/fatfs/src/ff.c **** n_vol -= b_vol; /* Volume size */
|
|
3849:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3850:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3851:../../../Source/third_party/fatfs/src/ff.c **** if (!au) { /* AU auto selection */
|
|
3852:../../../Source/third_party/fatfs/src/ff.c **** vs = n_vol / (2000 / (SS(fs) / 512));
|
|
3853:../../../Source/third_party/fatfs/src/ff.c **** for (i = 0; vs < vst[i]; i++) ;
|
|
3854:../../../Source/third_party/fatfs/src/ff.c **** au = cst[i];
|
|
3855:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3856:../../../Source/third_party/fatfs/src/ff.c **** au /= SS(fs); /* Number of sectors per cluster */
|
|
3857:../../../Source/third_party/fatfs/src/ff.c **** if (au == 0) au = 1;
|
|
3858:../../../Source/third_party/fatfs/src/ff.c **** if (au > 128) au = 128;
|
|
3859:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3860:../../../Source/third_party/fatfs/src/ff.c **** /* Pre-compute number of clusters and FAT sub-type */
|
|
3861:../../../Source/third_party/fatfs/src/ff.c **** n_clst = n_vol / au;
|
|
3862:../../../Source/third_party/fatfs/src/ff.c **** fmt = FS_FAT12;
|
|
3863:../../../Source/third_party/fatfs/src/ff.c **** if (n_clst >= MIN_FAT16) fmt = FS_FAT16;
|
|
3864:../../../Source/third_party/fatfs/src/ff.c **** if (n_clst >= MIN_FAT32) fmt = FS_FAT32;
|
|
3865:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3866:../../../Source/third_party/fatfs/src/ff.c **** /* Determine offset and size of FAT structure */
|
|
3867:../../../Source/third_party/fatfs/src/ff.c **** if (fmt == FS_FAT32) {
|
|
3868:../../../Source/third_party/fatfs/src/ff.c **** n_fat = ((n_clst * 4) + 8 + SS(fs) - 1) / SS(fs);
|
|
3869:../../../Source/third_party/fatfs/src/ff.c **** n_rsv = 32;
|
|
3870:../../../Source/third_party/fatfs/src/ff.c **** n_dir = 0;
|
|
3871:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3872:../../../Source/third_party/fatfs/src/ff.c **** n_fat = (fmt == FS_FAT12) ? (n_clst * 3 + 1) / 2 + 3 : (n_clst * 2) + 4;
|
|
3873:../../../Source/third_party/fatfs/src/ff.c **** n_fat = (n_fat + SS(fs) - 1) / SS(fs);
|
|
3874:../../../Source/third_party/fatfs/src/ff.c **** n_rsv = 1;
|
|
3875:../../../Source/third_party/fatfs/src/ff.c **** n_dir = (DWORD)N_ROOTDIR * SZ_DIR / SS(fs);
|
|
3876:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3877:../../../Source/third_party/fatfs/src/ff.c **** b_fat = b_vol + n_rsv; /* FAT area start sector */
|
|
3878:../../../Source/third_party/fatfs/src/ff.c **** b_dir = b_fat + n_fat * N_FATS; /* Directory area start sector */
|
|
3879:../../../Source/third_party/fatfs/src/ff.c **** b_data = b_dir + n_dir; /* Data area start sector */
|
|
3880:../../../Source/third_party/fatfs/src/ff.c **** if (n_vol < b_data + au - b_vol) return FR_MKFS_ABORTED; /* Too small volume */
|
|
3881:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3882:../../../Source/third_party/fatfs/src/ff.c **** /* Align data start sector to erase block boundary (for flash memory media) */
|
|
3883:../../../Source/third_party/fatfs/src/ff.c **** if (disk_ioctl(pdrv, GET_BLOCK_SIZE, &n) != RES_OK || !n || n > 32768) n = 1;
|
|
3884:../../../Source/third_party/fatfs/src/ff.c **** n = (b_data + n - 1) & ~(n - 1); /* Next nearest erase block from current data start */
|
|
3885:../../../Source/third_party/fatfs/src/ff.c **** n = (n - b_data) / N_FATS;
|
|
3886:../../../Source/third_party/fatfs/src/ff.c **** if (fmt == FS_FAT32) { /* FAT32: Move FAT offset */
|
|
3887:../../../Source/third_party/fatfs/src/ff.c **** n_rsv += n;
|
|
3888:../../../Source/third_party/fatfs/src/ff.c **** b_fat += n;
|
|
3889:../../../Source/third_party/fatfs/src/ff.c **** } else { /* FAT12/16: Expand FAT size */
|
|
3890:../../../Source/third_party/fatfs/src/ff.c **** n_fat += n;
|
|
3891:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3892:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3893:../../../Source/third_party/fatfs/src/ff.c **** /* Determine number of clusters and final check of validity of the FAT sub-type */
|
|
3894:../../../Source/third_party/fatfs/src/ff.c **** n_clst = (n_vol - n_rsv - n_fat * N_FATS - n_dir) / au;
|
|
3895:../../../Source/third_party/fatfs/src/ff.c **** if ( (fmt == FS_FAT16 && n_clst < MIN_FAT16)
|
|
3896:../../../Source/third_party/fatfs/src/ff.c **** || (fmt == FS_FAT32 && n_clst < MIN_FAT32))
|
|
3897:../../../Source/third_party/fatfs/src/ff.c **** return FR_MKFS_ABORTED;
|
|
3898:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3899:../../../Source/third_party/fatfs/src/ff.c **** switch (fmt) { /* Determine system ID for partition table */
|
|
3900:../../../Source/third_party/fatfs/src/ff.c **** case FS_FAT12: sys = 0x01; break;
|
|
3901:../../../Source/third_party/fatfs/src/ff.c **** case FS_FAT16: sys = (n_vol < 0x10000) ? 0x04 : 0x06; break;
|
|
3902:../../../Source/third_party/fatfs/src/ff.c **** default: sys = 0x0C;
|
|
3903:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3904:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3905:../../../Source/third_party/fatfs/src/ff.c **** if (_MULTI_PARTITION && part) {
|
|
3906:../../../Source/third_party/fatfs/src/ff.c **** /* Update system ID in the partition table */
|
|
3907:../../../Source/third_party/fatfs/src/ff.c **** tbl = &fs->win[MBR_Table + (part - 1) * SZ_PTE];
|
|
3908:../../../Source/third_party/fatfs/src/ff.c **** tbl[4] = sys;
|
|
3909:../../../Source/third_party/fatfs/src/ff.c **** if (disk_write(pdrv, fs->win, 0, 1) != RES_OK) return FR_DISK_ERR;
|
|
3910:../../../Source/third_party/fatfs/src/ff.c **** md = 0xF8;
|
|
3911:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3912:../../../Source/third_party/fatfs/src/ff.c **** if (sfd) { /* No partition table (SFD) */
|
|
3913:../../../Source/third_party/fatfs/src/ff.c **** md = 0xF0;
|
|
3914:../../../Source/third_party/fatfs/src/ff.c **** } else { /* Create partition table (FDISK) */
|
|
3915:../../../Source/third_party/fatfs/src/ff.c **** mem_set(fs->win, 0, SS(fs));
|
|
3916:../../../Source/third_party/fatfs/src/ff.c **** tbl = fs->win+MBR_Table; /* Create partition table for single partition in the drive */
|
|
3917:../../../Source/third_party/fatfs/src/ff.c **** tbl[1] = 1; /* Partition start head */
|
|
3918:../../../Source/third_party/fatfs/src/ff.c **** tbl[2] = 1; /* Partition start sector */
|
|
3919:../../../Source/third_party/fatfs/src/ff.c **** tbl[3] = 0; /* Partition start cylinder */
|
|
3920:../../../Source/third_party/fatfs/src/ff.c **** tbl[4] = sys; /* System type */
|
|
3921:../../../Source/third_party/fatfs/src/ff.c **** tbl[5] = 254; /* Partition end head */
|
|
3922:../../../Source/third_party/fatfs/src/ff.c **** n = (b_vol + n_vol) / 63 / 255;
|
|
3923:../../../Source/third_party/fatfs/src/ff.c **** tbl[6] = (BYTE)((n >> 2) | 63); /* Partition end sector */
|
|
3924:../../../Source/third_party/fatfs/src/ff.c **** tbl[7] = (BYTE)n; /* End cylinder */
|
|
3925:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(tbl+8, 63); /* Partition start in LBA */
|
|
3926:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(tbl+12, n_vol); /* Partition size in LBA */
|
|
3927:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(fs->win+BS_55AA, 0xAA55); /* MBR signature */
|
|
3928:../../../Source/third_party/fatfs/src/ff.c **** if (disk_write(pdrv, fs->win, 0, 1) != RES_OK) /* Write it to the MBR sector */
|
|
3929:../../../Source/third_party/fatfs/src/ff.c **** return FR_DISK_ERR;
|
|
3930:../../../Source/third_party/fatfs/src/ff.c **** md = 0xF8;
|
|
3931:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3932:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3933:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3934:../../../Source/third_party/fatfs/src/ff.c **** /* Create BPB in the VBR */
|
|
3935:../../../Source/third_party/fatfs/src/ff.c **** tbl = fs->win; /* Clear sector */
|
|
3936:../../../Source/third_party/fatfs/src/ff.c **** mem_set(tbl, 0, SS(fs));
|
|
3937:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(tbl, "\xEB\xFE\x90" "MSDOS5.0", 11);/* Boot jump code, OEM name */
|
|
3938:../../../Source/third_party/fatfs/src/ff.c **** i = SS(fs); /* Sector size */
|
|
3939:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(tbl+BPB_BytsPerSec, i);
|
|
3940:../../../Source/third_party/fatfs/src/ff.c **** tbl[BPB_SecPerClus] = (BYTE)au; /* Sectors per cluster */
|
|
3941:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(tbl+BPB_RsvdSecCnt, n_rsv); /* Reserved sectors */
|
|
3942:../../../Source/third_party/fatfs/src/ff.c **** tbl[BPB_NumFATs] = N_FATS; /* Number of FATs */
|
|
3943:../../../Source/third_party/fatfs/src/ff.c **** i = (fmt == FS_FAT32) ? 0 : N_ROOTDIR; /* Number of rootdir entries */
|
|
3944:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(tbl+BPB_RootEntCnt, i);
|
|
3945:../../../Source/third_party/fatfs/src/ff.c **** if (n_vol < 0x10000) { /* Number of total sectors */
|
|
3946:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(tbl+BPB_TotSec16, n_vol);
|
|
3947:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3948:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(tbl+BPB_TotSec32, n_vol);
|
|
3949:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3950:../../../Source/third_party/fatfs/src/ff.c **** tbl[BPB_Media] = md; /* Media descriptor */
|
|
3951:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(tbl+BPB_SecPerTrk, 63); /* Number of sectors per track */
|
|
3952:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(tbl+BPB_NumHeads, 255); /* Number of heads */
|
|
3953:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(tbl+BPB_HiddSec, b_vol); /* Hidden sectors */
|
|
3954:../../../Source/third_party/fatfs/src/ff.c **** n = get_fattime(); /* Use current time as VSN */
|
|
3955:../../../Source/third_party/fatfs/src/ff.c **** if (fmt == FS_FAT32) {
|
|
3956:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(tbl+BS_VolID32, n); /* VSN */
|
|
3957:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(tbl+BPB_FATSz32, n_fat); /* Number of sectors per FAT */
|
|
3958:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(tbl+BPB_RootClus, 2); /* Root directory start cluster (2) */
|
|
3959:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(tbl+BPB_FSInfo, 1); /* FSInfo record offset (VBR+1) */
|
|
3960:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(tbl+BPB_BkBootSec, 6); /* Backup boot record offset (VBR+6) */
|
|
3961:../../../Source/third_party/fatfs/src/ff.c **** tbl[BS_DrvNum32] = 0x80; /* Drive number */
|
|
3962:../../../Source/third_party/fatfs/src/ff.c **** tbl[BS_BootSig32] = 0x29; /* Extended boot signature */
|
|
3963:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(tbl+BS_VolLab32, "NO NAME " "FAT32 ", 19); /* Volume label, FAT signature */
|
|
3964:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3965:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(tbl+BS_VolID, n); /* VSN */
|
|
3966:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(tbl+BPB_FATSz16, n_fat); /* Number of sectors per FAT */
|
|
3967:../../../Source/third_party/fatfs/src/ff.c **** tbl[BS_DrvNum] = 0x80; /* Drive number */
|
|
3968:../../../Source/third_party/fatfs/src/ff.c **** tbl[BS_BootSig] = 0x29; /* Extended boot signature */
|
|
3969:../../../Source/third_party/fatfs/src/ff.c **** mem_cpy(tbl+BS_VolLab, "NO NAME " "FAT ", 19); /* Volume label, FAT signature */
|
|
3970:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3971:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(tbl+BS_55AA, 0xAA55); /* Signature (Offset is fixed here regardless of sector size) */
|
|
3972:../../../Source/third_party/fatfs/src/ff.c **** if (disk_write(pdrv, tbl, b_vol, 1) != RES_OK) /* Write it to the VBR sector */
|
|
3973:../../../Source/third_party/fatfs/src/ff.c **** return FR_DISK_ERR;
|
|
3974:../../../Source/third_party/fatfs/src/ff.c **** if (fmt == FS_FAT32) /* Write backup VBR if needed (VBR+6) */
|
|
3975:../../../Source/third_party/fatfs/src/ff.c **** disk_write(pdrv, tbl, b_vol + 6, 1);
|
|
3976:../../../Source/third_party/fatfs/src/ff.c ****
|
|
3977:../../../Source/third_party/fatfs/src/ff.c **** /* Initialize FAT area */
|
|
3978:../../../Source/third_party/fatfs/src/ff.c **** wsect = b_fat;
|
|
3979:../../../Source/third_party/fatfs/src/ff.c **** for (i = 0; i < N_FATS; i++) { /* Initialize each FAT copy */
|
|
3980:../../../Source/third_party/fatfs/src/ff.c **** mem_set(tbl, 0, SS(fs)); /* 1st sector of the FAT */
|
|
3981:../../../Source/third_party/fatfs/src/ff.c **** n = md; /* Media descriptor byte */
|
|
3982:../../../Source/third_party/fatfs/src/ff.c **** if (fmt != FS_FAT32) {
|
|
3983:../../../Source/third_party/fatfs/src/ff.c **** n |= (fmt == FS_FAT12) ? 0x00FFFF00 : 0xFFFFFF00;
|
|
3984:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(tbl+0, n); /* Reserve cluster #0-1 (FAT12/16) */
|
|
3985:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
3986:../../../Source/third_party/fatfs/src/ff.c **** n |= 0xFFFFFF00;
|
|
3987:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(tbl+0, n); /* Reserve cluster #0-1 (FAT32) */
|
|
3988:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(tbl+4, 0xFFFFFFFF);
|
|
3989:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(tbl+8, 0x0FFFFFFF); /* Reserve cluster #2 for root dir */
|
|
3990:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3991:../../../Source/third_party/fatfs/src/ff.c **** if (disk_write(pdrv, tbl, wsect++, 1) != RES_OK)
|
|
3992:../../../Source/third_party/fatfs/src/ff.c **** return FR_DISK_ERR;
|
|
3993:../../../Source/third_party/fatfs/src/ff.c **** mem_set(tbl, 0, SS(fs)); /* Fill following FAT entries with zero */
|
|
3994:../../../Source/third_party/fatfs/src/ff.c **** for (n = 1; n < n_fat; n++) { /* This loop may take a time on FAT32 volume due to many single se
|
|
3995:../../../Source/third_party/fatfs/src/ff.c **** if (disk_write(pdrv, tbl, wsect++, 1) != RES_OK)
|
|
3996:../../../Source/third_party/fatfs/src/ff.c **** return FR_DISK_ERR;
|
|
3997:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3998:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
3999:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4000:../../../Source/third_party/fatfs/src/ff.c **** /* Initialize root directory */
|
|
4001:../../../Source/third_party/fatfs/src/ff.c **** i = (fmt == FS_FAT32) ? au : n_dir;
|
|
4002:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
4003:../../../Source/third_party/fatfs/src/ff.c **** if (disk_write(pdrv, tbl, wsect++, 1) != RES_OK)
|
|
4004:../../../Source/third_party/fatfs/src/ff.c **** return FR_DISK_ERR;
|
|
4005:../../../Source/third_party/fatfs/src/ff.c **** } while (--i);
|
|
4006:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4007:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_ERASE /* Erase data area if needed */
|
|
4008:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
4009:../../../Source/third_party/fatfs/src/ff.c **** DWORD eb[2];
|
|
4010:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4011:../../../Source/third_party/fatfs/src/ff.c **** eb[0] = wsect; eb[1] = wsect + (n_clst - ((fmt == FS_FAT32) ? 1 : 0)) * au - 1;
|
|
4012:../../../Source/third_party/fatfs/src/ff.c **** disk_ioctl(pdrv, CTRL_ERASE_SECTOR, eb);
|
|
4013:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4014:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
4015:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4016:../../../Source/third_party/fatfs/src/ff.c **** /* Create FSInfo if needed */
|
|
4017:../../../Source/third_party/fatfs/src/ff.c **** if (fmt == FS_FAT32) {
|
|
4018:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(tbl+FSI_LeadSig, 0x41615252);
|
|
4019:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(tbl+FSI_StrucSig, 0x61417272);
|
|
4020:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(tbl+FSI_Free_Count, n_clst - 1); /* Number of free clusters */
|
|
4021:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(tbl+FSI_Nxt_Free, 2); /* Last allocated cluster# */
|
|
4022:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(tbl+BS_55AA, 0xAA55);
|
|
4023:../../../Source/third_party/fatfs/src/ff.c **** disk_write(pdrv, tbl, b_vol + 1, 1); /* Write original (VBR+1) */
|
|
4024:../../../Source/third_party/fatfs/src/ff.c **** disk_write(pdrv, tbl, b_vol + 7, 1); /* Write backup (VBR+7) */
|
|
4025:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4026:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4027:../../../Source/third_party/fatfs/src/ff.c **** return (disk_ioctl(pdrv, CTRL_SYNC, 0) == RES_OK) ? FR_OK : FR_DISK_ERR;
|
|
4028:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4029:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4030:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4031:../../../Source/third_party/fatfs/src/ff.c **** #if _MULTI_PARTITION
|
|
4032:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
4033:../../../Source/third_party/fatfs/src/ff.c **** /* Divide Physical Drive */
|
|
4034:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
4035:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4036:../../../Source/third_party/fatfs/src/ff.c **** FRESULT f_fdisk (
|
|
4037:../../../Source/third_party/fatfs/src/ff.c **** BYTE pdrv, /* Physical drive number */
|
|
4038:../../../Source/third_party/fatfs/src/ff.c **** const DWORD szt[], /* Pointer to the size table for each partitions */
|
|
4039:../../../Source/third_party/fatfs/src/ff.c **** void* work /* Pointer to the working buffer */
|
|
4040:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
4041:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
4042:../../../Source/third_party/fatfs/src/ff.c **** UINT i, n, sz_cyl, tot_cyl, b_cyl, e_cyl, p_cyl;
|
|
4043:../../../Source/third_party/fatfs/src/ff.c **** BYTE s_hd, e_hd, *p, *buf = (BYTE*)work;
|
|
4044:../../../Source/third_party/fatfs/src/ff.c **** DSTATUS stat;
|
|
4045:../../../Source/third_party/fatfs/src/ff.c **** DWORD sz_disk, sz_part, s_part;
|
|
4046:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4047:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4048:../../../Source/third_party/fatfs/src/ff.c **** stat = disk_initialize(pdrv);
|
|
4049:../../../Source/third_party/fatfs/src/ff.c **** if (stat & STA_NOINIT) return FR_NOT_READY;
|
|
4050:../../../Source/third_party/fatfs/src/ff.c **** if (stat & STA_PROTECT) return FR_WRITE_PROTECTED;
|
|
4051:../../../Source/third_party/fatfs/src/ff.c **** if (disk_ioctl(pdrv, GET_SECTOR_COUNT, &sz_disk)) return FR_DISK_ERR;
|
|
4052:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4053:../../../Source/third_party/fatfs/src/ff.c **** /* Determine CHS in the table regardless of the drive geometry */
|
|
4054:../../../Source/third_party/fatfs/src/ff.c **** for (n = 16; n < 256 && sz_disk / n / 63 > 1024; n *= 2) ;
|
|
4055:../../../Source/third_party/fatfs/src/ff.c **** if (n == 256) n--;
|
|
4056:../../../Source/third_party/fatfs/src/ff.c **** e_hd = n - 1;
|
|
4057:../../../Source/third_party/fatfs/src/ff.c **** sz_cyl = 63 * n;
|
|
4058:../../../Source/third_party/fatfs/src/ff.c **** tot_cyl = sz_disk / sz_cyl;
|
|
4059:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4060:../../../Source/third_party/fatfs/src/ff.c **** /* Create partition table */
|
|
4061:../../../Source/third_party/fatfs/src/ff.c **** mem_set(buf, 0, _MAX_SS);
|
|
4062:../../../Source/third_party/fatfs/src/ff.c **** p = buf + MBR_Table; b_cyl = 0;
|
|
4063:../../../Source/third_party/fatfs/src/ff.c **** for (i = 0; i < 4; i++, p += SZ_PTE) {
|
|
4064:../../../Source/third_party/fatfs/src/ff.c **** p_cyl = (szt[i] <= 100) ? (DWORD)tot_cyl * szt[i] / 100 : szt[i] / sz_cyl;
|
|
4065:../../../Source/third_party/fatfs/src/ff.c **** if (!p_cyl) continue;
|
|
4066:../../../Source/third_party/fatfs/src/ff.c **** s_part = (DWORD)sz_cyl * b_cyl;
|
|
4067:../../../Source/third_party/fatfs/src/ff.c **** sz_part = (DWORD)sz_cyl * p_cyl;
|
|
4068:../../../Source/third_party/fatfs/src/ff.c **** if (i == 0) { /* Exclude first track of cylinder 0 */
|
|
4069:../../../Source/third_party/fatfs/src/ff.c **** s_hd = 1;
|
|
4070:../../../Source/third_party/fatfs/src/ff.c **** s_part += 63; sz_part -= 63;
|
|
4071:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
4072:../../../Source/third_party/fatfs/src/ff.c **** s_hd = 0;
|
|
4073:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4074:../../../Source/third_party/fatfs/src/ff.c **** e_cyl = b_cyl + p_cyl - 1;
|
|
4075:../../../Source/third_party/fatfs/src/ff.c **** if (e_cyl >= tot_cyl) return FR_INVALID_PARAMETER;
|
|
4076:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4077:../../../Source/third_party/fatfs/src/ff.c **** /* Set partition table */
|
|
4078:../../../Source/third_party/fatfs/src/ff.c **** p[1] = s_hd; /* Start head */
|
|
4079:../../../Source/third_party/fatfs/src/ff.c **** p[2] = (BYTE)((b_cyl >> 2) + 1); /* Start sector */
|
|
4080:../../../Source/third_party/fatfs/src/ff.c **** p[3] = (BYTE)b_cyl; /* Start cylinder */
|
|
4081:../../../Source/third_party/fatfs/src/ff.c **** p[4] = 0x06; /* System type (temporary setting) */
|
|
4082:../../../Source/third_party/fatfs/src/ff.c **** p[5] = e_hd; /* End head */
|
|
4083:../../../Source/third_party/fatfs/src/ff.c **** p[6] = (BYTE)((e_cyl >> 2) + 63); /* End sector */
|
|
4084:../../../Source/third_party/fatfs/src/ff.c **** p[7] = (BYTE)e_cyl; /* End cylinder */
|
|
4085:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(p + 8, s_part); /* Start sector in LBA */
|
|
4086:../../../Source/third_party/fatfs/src/ff.c **** ST_DWORD(p + 12, sz_part); /* Partition size */
|
|
4087:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4088:../../../Source/third_party/fatfs/src/ff.c **** /* Next partition */
|
|
4089:../../../Source/third_party/fatfs/src/ff.c **** b_cyl += p_cyl;
|
|
4090:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4091:../../../Source/third_party/fatfs/src/ff.c **** ST_WORD(p, 0xAA55);
|
|
4092:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4093:../../../Source/third_party/fatfs/src/ff.c **** /* Write it to the MBR */
|
|
4094:../../../Source/third_party/fatfs/src/ff.c **** return (disk_write(pdrv, buf, 0, 1) || disk_ioctl(pdrv, CTRL_SYNC, 0)) ? FR_DISK_ERR : FR_OK;
|
|
4095:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4096:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4097:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4098:../../../Source/third_party/fatfs/src/ff.c **** #endif /* _MULTI_PARTITION */
|
|
4099:../../../Source/third_party/fatfs/src/ff.c **** #endif /* _USE_MKFS && !_FS_READONLY */
|
|
4100:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4101:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4102:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4103:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4104:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_STRFUNC
|
|
4105:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
4106:../../../Source/third_party/fatfs/src/ff.c **** /* Get a string from the file */
|
|
4107:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
4108:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4109:../../../Source/third_party/fatfs/src/ff.c **** TCHAR* f_gets (
|
|
4110:../../../Source/third_party/fatfs/src/ff.c **** TCHAR* buff, /* Pointer to the string buffer to read */
|
|
4111:../../../Source/third_party/fatfs/src/ff.c **** int len, /* Size of string buffer (characters) */
|
|
4112:../../../Source/third_party/fatfs/src/ff.c **** FIL* fp /* Pointer to the file object */
|
|
4113:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
4114:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
7607 .loc 1 4114 0
|
|
7608 .cfi_startproc
|
|
7609 @ args = 0, pretend = 0, frame = 8
|
|
7610 @ frame_needed = 0, uses_anonymous_args = 0
|
|
7611 .LVL1156:
|
|
7612 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr}
|
|
7613 .cfi_def_cfa_offset 24
|
|
7614 .cfi_offset 4, -24
|
|
7615 .cfi_offset 5, -20
|
|
7616 .cfi_offset 6, -16
|
|
7617 .cfi_offset 7, -12
|
|
7618 .cfi_offset 8, -8
|
|
7619 .cfi_offset 14, -4
|
|
7620 0004 82B0 sub sp, sp, #8
|
|
7621 .cfi_def_cfa_offset 32
|
|
7622 0006 8046 mov r8, r0
|
|
7623 0008 1746 mov r7, r2
|
|
7624 .LVL1157:
|
|
4115:../../../Source/third_party/fatfs/src/ff.c **** int n = 0;
|
|
4116:../../../Source/third_party/fatfs/src/ff.c **** TCHAR c, *p = buff;
|
|
7625 .loc 1 4116 0
|
|
7626 000a 0546 mov r5, r0
|
|
4115:../../../Source/third_party/fatfs/src/ff.c **** int n = 0;
|
|
7627 .loc 1 4115 0
|
|
7628 000c 0024 movs r4, #0
|
|
4117:../../../Source/third_party/fatfs/src/ff.c **** BYTE s[2];
|
|
4118:../../../Source/third_party/fatfs/src/ff.c **** UINT rc;
|
|
4119:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4120:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4121:../../../Source/third_party/fatfs/src/ff.c **** while (n < len - 1) { /* Read bytes until buffer gets filled */
|
|
7629 .loc 1 4121 0
|
|
7630 000e 4E1E subs r6, r1, #1
|
|
7631 0010 11E0 b .L731
|
|
7632 .LVL1158:
|
|
7633 .L732:
|
|
4122:../../../Source/third_party/fatfs/src/ff.c **** f_read(fp, s, 1, &rc);
|
|
7634 .loc 1 4122 0
|
|
7635 0012 3846 mov r0, r7
|
|
7636 0014 01A9 add r1, sp, #4
|
|
7637 0016 0122 movs r2, #1
|
|
7638 0018 6B46 mov r3, sp
|
|
7639 001a FFF7FEFF bl f_read
|
|
7640 .LVL1159:
|
|
4123:../../../Source/third_party/fatfs/src/ff.c **** if (rc != 1) break; /* Break on EOF or error */
|
|
7641 .loc 1 4123 0
|
|
7642 001e 009B ldr r3, [sp]
|
|
7643 0020 012B cmp r3, #1
|
|
7644 0022 0AD1 bne .L730
|
|
4124:../../../Source/third_party/fatfs/src/ff.c **** c = s[0];
|
|
7645 .loc 1 4124 0
|
|
7646 0024 9DF80430 ldrb r3, [sp, #4] @ zero_extendqisi2
|
|
7647 .LVL1160:
|
|
4125:../../../Source/third_party/fatfs/src/ff.c **** #if _LFN_UNICODE /* Read a character in UTF-8 encoding */
|
|
4126:../../../Source/third_party/fatfs/src/ff.c **** if (c >= 0x80) {
|
|
4127:../../../Source/third_party/fatfs/src/ff.c **** if (c < 0xC0) continue; /* Skip stray trailer */
|
|
4128:../../../Source/third_party/fatfs/src/ff.c **** if (c < 0xE0) { /* Two-byte sequence */
|
|
4129:../../../Source/third_party/fatfs/src/ff.c **** f_read(fp, s, 1, &rc);
|
|
4130:../../../Source/third_party/fatfs/src/ff.c **** if (rc != 1) break;
|
|
4131:../../../Source/third_party/fatfs/src/ff.c **** c = ((c & 0x1F) << 6) | (s[0] & 0x3F);
|
|
4132:../../../Source/third_party/fatfs/src/ff.c **** if (c < 0x80) c = '?';
|
|
4133:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
4134:../../../Source/third_party/fatfs/src/ff.c **** if (c < 0xF0) { /* Three-byte sequence */
|
|
4135:../../../Source/third_party/fatfs/src/ff.c **** f_read(fp, s, 2, &rc);
|
|
4136:../../../Source/third_party/fatfs/src/ff.c **** if (rc != 2) break;
|
|
4137:../../../Source/third_party/fatfs/src/ff.c **** c = (c << 12) | ((s[0] & 0x3F) << 6) | (s[1] & 0x3F);
|
|
4138:../../../Source/third_party/fatfs/src/ff.c **** if (c < 0x800) c = '?';
|
|
4139:../../../Source/third_party/fatfs/src/ff.c **** } else { /* Reject four-byte sequence */
|
|
4140:../../../Source/third_party/fatfs/src/ff.c **** c = '?';
|
|
4141:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4142:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4143:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4144:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
4145:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_STRFUNC >= 2
|
|
4146:../../../Source/third_party/fatfs/src/ff.c **** if (c == '\r') continue; /* Strip '\r' */
|
|
7648 .loc 1 4146 0
|
|
7649 0028 0D2B cmp r3, #13
|
|
7650 002a 04D0 beq .L731
|
|
7651 .LVL1161:
|
|
4147:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
4148:../../../Source/third_party/fatfs/src/ff.c **** *p++ = c;
|
|
7652 .loc 1 4148 0
|
|
7653 002c 05F8013B strb r3, [r5], #1
|
|
7654 .LVL1162:
|
|
4149:../../../Source/third_party/fatfs/src/ff.c **** n++;
|
|
7655 .loc 1 4149 0
|
|
7656 0030 0134 adds r4, r4, #1
|
|
7657 .LVL1163:
|
|
4150:../../../Source/third_party/fatfs/src/ff.c **** if (c == '\n') break; /* Break on EOL */
|
|
7658 .loc 1 4150 0
|
|
7659 0032 0A2B cmp r3, #10
|
|
7660 0034 01D0 beq .L730
|
|
7661 .LVL1164:
|
|
7662 .L731:
|
|
4121:../../../Source/third_party/fatfs/src/ff.c **** f_read(fp, s, 1, &rc);
|
|
7663 .loc 1 4121 0
|
|
7664 0036 A642 cmp r6, r4
|
|
7665 0038 EBDC bgt .L732
|
|
7666 .L730:
|
|
7667 .LVL1165:
|
|
4151:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4152:../../../Source/third_party/fatfs/src/ff.c **** *p = 0;
|
|
7668 .loc 1 4152 0
|
|
7669 003a 0023 movs r3, #0
|
|
7670 003c 2B70 strb r3, [r5]
|
|
4153:../../../Source/third_party/fatfs/src/ff.c **** return n ? buff : 0; /* When no data read (eof or error), return with error. */
|
|
7671 .loc 1 4153 0
|
|
7672 003e 9C42 cmp r4, r3
|
|
4154:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
7673 .loc 1 4154 0
|
|
7674 0040 14BF ite ne
|
|
7675 0042 4046 movne r0, r8
|
|
7676 0044 1846 moveq r0, r3
|
|
7677 0046 02B0 add sp, sp, #8
|
|
7678 .cfi_def_cfa_offset 24
|
|
7679 @ sp needed
|
|
7680 0048 BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
|
7681 .cfi_endproc
|
|
7682 .LFE49:
|
|
7684 .section .text.f_putc,"ax",%progbits
|
|
7685 .align 2
|
|
7686 .global f_putc
|
|
7687 .thumb
|
|
7688 .thumb_func
|
|
7690 f_putc:
|
|
7691 .LFB50:
|
|
4155:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4156:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4157:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4158:../../../Source/third_party/fatfs/src/ff.c **** #if !_FS_READONLY
|
|
4159:../../../Source/third_party/fatfs/src/ff.c **** #include <stdarg.h>
|
|
4160:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
4161:../../../Source/third_party/fatfs/src/ff.c **** /* Put a character to the file */
|
|
4162:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
4163:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4164:../../../Source/third_party/fatfs/src/ff.c **** int f_putc (
|
|
4165:../../../Source/third_party/fatfs/src/ff.c **** TCHAR c, /* A character to be output */
|
|
4166:../../../Source/third_party/fatfs/src/ff.c **** FIL* fp /* Pointer to the file object */
|
|
4167:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
4168:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
7692 .loc 1 4168 0
|
|
7693 .cfi_startproc
|
|
7694 @ args = 0, pretend = 0, frame = 8
|
|
7695 @ frame_needed = 0, uses_anonymous_args = 0
|
|
7696 .LVL1166:
|
|
7697 0000 30B5 push {r4, r5, lr}
|
|
7698 .cfi_def_cfa_offset 12
|
|
7699 .cfi_offset 4, -12
|
|
7700 .cfi_offset 5, -8
|
|
7701 .cfi_offset 14, -4
|
|
7702 0002 83B0 sub sp, sp, #12
|
|
7703 .cfi_def_cfa_offset 24
|
|
7704 0004 0446 mov r4, r0
|
|
7705 0006 0D46 mov r5, r1
|
|
4169:../../../Source/third_party/fatfs/src/ff.c **** UINT bw, btw;
|
|
4170:../../../Source/third_party/fatfs/src/ff.c **** BYTE s[3];
|
|
4171:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4172:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4173:../../../Source/third_party/fatfs/src/ff.c **** #if _USE_STRFUNC >= 2
|
|
4174:../../../Source/third_party/fatfs/src/ff.c **** if (c == '\n') f_putc ('\r', fp); /* LF -> CRLF conversion */
|
|
7706 .loc 1 4174 0
|
|
7707 0008 0A28 cmp r0, #10
|
|
7708 000a 02D1 bne .L738
|
|
7709 .loc 1 4174 0 is_stmt 0 discriminator 1
|
|
7710 000c 0D20 movs r0, #13
|
|
7711 .LVL1167:
|
|
7712 000e FFF7FEFF bl f_putc
|
|
7713 .LVL1168:
|
|
7714 .L738:
|
|
4175:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
4176:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4177:../../../Source/third_party/fatfs/src/ff.c **** #if _LFN_UNICODE /* Write the character in UTF-8 encoding */
|
|
4178:../../../Source/third_party/fatfs/src/ff.c **** if (c < 0x80) { /* 7-bit */
|
|
4179:../../../Source/third_party/fatfs/src/ff.c **** s[0] = (BYTE)c;
|
|
4180:../../../Source/third_party/fatfs/src/ff.c **** btw = 1;
|
|
4181:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
4182:../../../Source/third_party/fatfs/src/ff.c **** if (c < 0x800) { /* 11-bit */
|
|
4183:../../../Source/third_party/fatfs/src/ff.c **** s[0] = (BYTE)(0xC0 | (c >> 6));
|
|
4184:../../../Source/third_party/fatfs/src/ff.c **** s[1] = (BYTE)(0x80 | (c & 0x3F));
|
|
4185:../../../Source/third_party/fatfs/src/ff.c **** btw = 2;
|
|
4186:../../../Source/third_party/fatfs/src/ff.c **** } else { /* 16-bit */
|
|
4187:../../../Source/third_party/fatfs/src/ff.c **** s[0] = (BYTE)(0xE0 | (c >> 12));
|
|
4188:../../../Source/third_party/fatfs/src/ff.c **** s[1] = (BYTE)(0x80 | ((c >> 6) & 0x3F));
|
|
4189:../../../Source/third_party/fatfs/src/ff.c **** s[2] = (BYTE)(0x80 | (c & 0x3F));
|
|
4190:../../../Source/third_party/fatfs/src/ff.c **** btw = 3;
|
|
4191:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4192:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4193:../../../Source/third_party/fatfs/src/ff.c **** #else /* Write the character without conversion */
|
|
4194:../../../Source/third_party/fatfs/src/ff.c **** s[0] = (BYTE)c;
|
|
7715 .loc 1 4194 0 is_stmt 1
|
|
7716 0012 02A9 add r1, sp, #8
|
|
7717 0014 01F8084D strb r4, [r1, #-8]!
|
|
7718 .LVL1169:
|
|
4195:../../../Source/third_party/fatfs/src/ff.c **** btw = 1;
|
|
4196:../../../Source/third_party/fatfs/src/ff.c **** #endif
|
|
4197:../../../Source/third_party/fatfs/src/ff.c **** f_write(fp, s, btw, &bw); /* Write the char to the file */
|
|
7719 .loc 1 4197 0
|
|
7720 0018 2846 mov r0, r5
|
|
7721 001a 0122 movs r2, #1
|
|
7722 001c 01AB add r3, sp, #4
|
|
7723 001e FFF7FEFF bl f_write
|
|
7724 .LVL1170:
|
|
4198:../../../Source/third_party/fatfs/src/ff.c **** return (bw == btw) ? 1 : EOF; /* Return the result */
|
|
7725 .loc 1 4198 0
|
|
7726 0022 019B ldr r3, [sp, #4]
|
|
7727 0024 012B cmp r3, #1
|
|
4199:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
7728 .loc 1 4199 0
|
|
7729 0026 0CBF ite eq
|
|
7730 0028 0120 moveq r0, #1
|
|
7731 002a 4FF0FF30 movne r0, #-1
|
|
7732 002e 03B0 add sp, sp, #12
|
|
7733 .cfi_def_cfa_offset 12
|
|
7734 @ sp needed
|
|
7735 0030 30BD pop {r4, r5, pc}
|
|
7736 .cfi_endproc
|
|
7737 .LFE50:
|
|
7739 0032 00BF .section .text.f_puts,"ax",%progbits
|
|
7740 .align 2
|
|
7741 .global f_puts
|
|
7742 .thumb
|
|
7743 .thumb_func
|
|
7745 f_puts:
|
|
7746 .LFB51:
|
|
4200:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4201:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4202:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4203:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4204:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
4205:../../../Source/third_party/fatfs/src/ff.c **** /* Put a string to the file */
|
|
4206:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
4207:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4208:../../../Source/third_party/fatfs/src/ff.c **** int f_puts (
|
|
4209:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR* str, /* Pointer to the string to be output */
|
|
4210:../../../Source/third_party/fatfs/src/ff.c **** FIL* fp /* Pointer to the file object */
|
|
4211:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
4212:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
7747 .loc 1 4212 0
|
|
7748 .cfi_startproc
|
|
7749 @ args = 0, pretend = 0, frame = 0
|
|
7750 @ frame_needed = 0, uses_anonymous_args = 0
|
|
7751 .LVL1171:
|
|
7752 0000 70B5 push {r4, r5, r6, lr}
|
|
7753 .cfi_def_cfa_offset 16
|
|
7754 .cfi_offset 4, -16
|
|
7755 .cfi_offset 5, -12
|
|
7756 .cfi_offset 6, -8
|
|
7757 .cfi_offset 14, -4
|
|
7758 0002 0546 mov r5, r0
|
|
7759 .LVL1172:
|
|
4213:../../../Source/third_party/fatfs/src/ff.c **** int n;
|
|
4214:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4215:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4216:../../../Source/third_party/fatfs/src/ff.c **** for (n = 0; *str; str++, n++) {
|
|
7760 .loc 1 4216 0
|
|
7761 0004 0078 ldrb r0, [r0] @ zero_extendqisi2
|
|
7762 .LVL1173:
|
|
7763 0006 68B1 cbz r0, .L746
|
|
7764 0008 0E46 mov r6, r1
|
|
7765 000a 6C1C adds r4, r5, #1
|
|
7766 .LVL1174:
|
|
7767 .L745:
|
|
4217:../../../Source/third_party/fatfs/src/ff.c **** if (f_putc(*str, fp) == EOF) return EOF;
|
|
7768 .loc 1 4217 0
|
|
7769 000c 3146 mov r1, r6
|
|
7770 000e FFF7FEFF bl f_putc
|
|
7771 .LVL1175:
|
|
7772 0012 B0F1FF3F cmp r0, #-1
|
|
7773 0016 07D0 beq .L744
|
|
7774 .LVL1176:
|
|
7775 0018 631B subs r3, r4, r5
|
|
7776 .LVL1177:
|
|
4216:../../../Source/third_party/fatfs/src/ff.c **** if (f_putc(*str, fp) == EOF) return EOF;
|
|
7777 .loc 1 4216 0 discriminator 2
|
|
7778 001a 14F8010B ldrb r0, [r4], #1 @ zero_extendqisi2
|
|
7779 .LVL1178:
|
|
7780 001e 0028 cmp r0, #0
|
|
7781 0020 F4D1 bne .L745
|
|
7782 0022 00E0 b .L743
|
|
7783 .LVL1179:
|
|
7784 .L746:
|
|
4216:../../../Source/third_party/fatfs/src/ff.c **** if (f_putc(*str, fp) == EOF) return EOF;
|
|
7785 .loc 1 4216 0 is_stmt 0
|
|
7786 0024 0023 movs r3, #0
|
|
7787 .LVL1180:
|
|
7788 .L743:
|
|
4218:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4219:../../../Source/third_party/fatfs/src/ff.c **** return n;
|
|
7789 .loc 1 4219 0 is_stmt 1
|
|
7790 0026 1846 mov r0, r3
|
|
7791 .L744:
|
|
4220:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
7792 .loc 1 4220 0
|
|
7793 0028 70BD pop {r4, r5, r6, pc}
|
|
7794 .cfi_endproc
|
|
7795 .LFE51:
|
|
7797 002a 00BF .section .text.f_printf,"ax",%progbits
|
|
7798 .align 2
|
|
7799 .global f_printf
|
|
7800 .thumb
|
|
7801 .thumb_func
|
|
7803 f_printf:
|
|
7804 .LFB52:
|
|
4221:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4222:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4223:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4224:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4225:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
4226:../../../Source/third_party/fatfs/src/ff.c **** /* Put a formatted string to the file */
|
|
4227:../../../Source/third_party/fatfs/src/ff.c **** /*-----------------------------------------------------------------------*/
|
|
4228:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4229:../../../Source/third_party/fatfs/src/ff.c **** int f_printf (
|
|
4230:../../../Source/third_party/fatfs/src/ff.c **** FIL* fp, /* Pointer to the file object */
|
|
4231:../../../Source/third_party/fatfs/src/ff.c **** const TCHAR* str, /* Pointer to the format string */
|
|
4232:../../../Source/third_party/fatfs/src/ff.c **** ... /* Optional arguments... */
|
|
4233:../../../Source/third_party/fatfs/src/ff.c **** )
|
|
4234:../../../Source/third_party/fatfs/src/ff.c **** {
|
|
7805 .loc 1 4234 0
|
|
7806 .cfi_startproc
|
|
7807 @ args = 4, pretend = 12, frame = 32
|
|
7808 @ frame_needed = 0, uses_anonymous_args = 1
|
|
7809 .LVL1181:
|
|
7810 0000 0EB4 push {r1, r2, r3}
|
|
7811 .cfi_def_cfa_offset 12
|
|
7812 .cfi_offset 1, -12
|
|
7813 .cfi_offset 2, -8
|
|
7814 .cfi_offset 3, -4
|
|
7815 0002 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
7816 .cfi_def_cfa_offset 48
|
|
7817 .cfi_offset 4, -48
|
|
7818 .cfi_offset 5, -44
|
|
7819 .cfi_offset 6, -40
|
|
7820 .cfi_offset 7, -36
|
|
7821 .cfi_offset 8, -32
|
|
7822 .cfi_offset 9, -28
|
|
7823 .cfi_offset 10, -24
|
|
7824 .cfi_offset 11, -20
|
|
7825 .cfi_offset 14, -16
|
|
7826 0006 88B0 sub sp, sp, #32
|
|
7827 .cfi_def_cfa_offset 80
|
|
7828 0008 0190 str r0, [sp, #4]
|
|
7829 000a 11AB add r3, sp, #68
|
|
7830 000c 53F8047B ldr r7, [r3], #4
|
|
4235:../../../Source/third_party/fatfs/src/ff.c **** va_list arp;
|
|
4236:../../../Source/third_party/fatfs/src/ff.c **** BYTE f, r;
|
|
4237:../../../Source/third_party/fatfs/src/ff.c **** UINT i, j, w;
|
|
4238:../../../Source/third_party/fatfs/src/ff.c **** ULONG v;
|
|
4239:../../../Source/third_party/fatfs/src/ff.c **** TCHAR c, d, s[16], *p;
|
|
4240:../../../Source/third_party/fatfs/src/ff.c **** int res, chc, cc;
|
|
4241:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4242:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4243:../../../Source/third_party/fatfs/src/ff.c **** va_start(arp, str);
|
|
7831 .loc 1 4243 0
|
|
7832 0010 0793 str r3, [sp, #28]
|
|
7833 .LVL1182:
|
|
4244:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4245:../../../Source/third_party/fatfs/src/ff.c **** for (cc = res = 0; cc != EOF; res += cc) {
|
|
4246:../../../Source/third_party/fatfs/src/ff.c **** c = *str++;
|
|
7834 .loc 1 4246 0
|
|
7835 0012 7C1C adds r4, r7, #1
|
|
7836 .LVL1183:
|
|
7837 0014 3878 ldrb r0, [r7] @ zero_extendqisi2
|
|
7838 .LVL1184:
|
|
4247:../../../Source/third_party/fatfs/src/ff.c **** if (c == 0) break; /* End of string */
|
|
7839 .loc 1 4247 0
|
|
7840 0016 0028 cmp r0, #0
|
|
7841 0018 00F04581 beq .L803
|
|
7842 001c 0025 movs r5, #0
|
|
7843 001e AB46 mov fp, r5
|
|
7844 0020 04E0 b .L751
|
|
7845 .LVL1185:
|
|
7846 .L794:
|
|
4246:../../../Source/third_party/fatfs/src/ff.c **** if (c == 0) break; /* End of string */
|
|
7847 .loc 1 4246 0
|
|
7848 0022 7C1C adds r4, r7, #1
|
|
7849 .LVL1186:
|
|
7850 0024 3878 ldrb r0, [r7] @ zero_extendqisi2
|
|
7851 .LVL1187:
|
|
7852 .loc 1 4247 0
|
|
7853 0026 0028 cmp r0, #0
|
|
7854 0028 00F06881 beq .L814
|
|
7855 .LVL1188:
|
|
7856 .L751:
|
|
4248:../../../Source/third_party/fatfs/src/ff.c **** if (c != '%') { /* Non escape character */
|
|
7857 .loc 1 4248 0
|
|
7858 002c 2528 cmp r0, #37
|
|
7859 002e 07D0 beq .L752
|
|
4249:../../../Source/third_party/fatfs/src/ff.c **** cc = f_putc(c, fp);
|
|
7860 .loc 1 4249 0
|
|
7861 0030 0199 ldr r1, [sp, #4]
|
|
7862 0032 FFF7FEFF bl f_putc
|
|
7863 .LVL1189:
|
|
4250:../../../Source/third_party/fatfs/src/ff.c **** if (cc != EOF) cc = 1;
|
|
7864 .loc 1 4250 0
|
|
7865 0036 B0F1FF3F cmp r0, #-1
|
|
7866 003a 40F02F81 bne .L753
|
|
7867 003e 24E1 b .L799
|
|
7868 .LVL1190:
|
|
7869 .L752:
|
|
4251:../../../Source/third_party/fatfs/src/ff.c **** continue;
|
|
4252:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4253:../../../Source/third_party/fatfs/src/ff.c **** w = f = 0;
|
|
4254:../../../Source/third_party/fatfs/src/ff.c **** c = *str++;
|
|
7870 .loc 1 4254 0
|
|
7871 0040 7B78 ldrb r3, [r7, #1] @ zero_extendqisi2
|
|
7872 .LVL1191:
|
|
4255:../../../Source/third_party/fatfs/src/ff.c **** if (c == '0') { /* Flag: '0' padding */
|
|
7873 .loc 1 4255 0
|
|
7874 0042 302B cmp r3, #48
|
|
7875 0044 04D1 bne .L755
|
|
7876 .LVL1192:
|
|
4256:../../../Source/third_party/fatfs/src/ff.c **** f = 1; c = *str++;
|
|
7877 .loc 1 4256 0
|
|
7878 0046 BB78 ldrb r3, [r7, #2] @ zero_extendqisi2
|
|
7879 .LVL1193:
|
|
7880 0048 0337 adds r7, r7, #3
|
|
7881 .LVL1194:
|
|
7882 004a 4FF0010E mov lr, #1
|
|
7883 004e 09E0 b .L756
|
|
7884 .LVL1195:
|
|
7885 .L755:
|
|
4257:../../../Source/third_party/fatfs/src/ff.c **** } else {
|
|
4258:../../../Source/third_party/fatfs/src/ff.c **** if (c == '-') { /* Flag: left justified */
|
|
7886 .loc 1 4258 0
|
|
7887 0050 2D2B cmp r3, #45
|
|
7888 0052 03D0 beq .L757
|
|
4254:../../../Source/third_party/fatfs/src/ff.c **** if (c == '0') { /* Flag: '0' padding */
|
|
7889 .loc 1 4254 0
|
|
7890 0054 0237 adds r7, r7, #2
|
|
7891 .LVL1196:
|
|
4253:../../../Source/third_party/fatfs/src/ff.c **** c = *str++;
|
|
7892 .loc 1 4253 0
|
|
7893 0056 4FF0000E mov lr, #0
|
|
7894 005a 03E0 b .L756
|
|
7895 .LVL1197:
|
|
7896 .L757:
|
|
4259:../../../Source/third_party/fatfs/src/ff.c **** f = 2; c = *str++;
|
|
7897 .loc 1 4259 0
|
|
7898 005c BB78 ldrb r3, [r7, #2] @ zero_extendqisi2
|
|
7899 .LVL1198:
|
|
7900 005e 0337 adds r7, r7, #3
|
|
7901 .LVL1199:
|
|
7902 0060 4FF0020E mov lr, #2
|
|
7903 .LVL1200:
|
|
7904 .L756:
|
|
4260:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4261:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4262:../../../Source/third_party/fatfs/src/ff.c **** while (IsDigit(c)) { /* Precision */
|
|
7905 .loc 1 4262 0
|
|
7906 0064 A3F13002 sub r2, r3, #48
|
|
7907 0068 D2B2 uxtb r2, r2
|
|
7908 006a 092A cmp r2, #9
|
|
7909 006c 0DD8 bhi .L804
|
|
7910 006e 0026 movs r6, #0
|
|
7911 .LVL1201:
|
|
7912 .L759:
|
|
4263:../../../Source/third_party/fatfs/src/ff.c **** w = w * 10 + c - '0';
|
|
7913 .loc 1 4263 0
|
|
7914 0070 06EB8606 add r6, r6, r6, lsl #2
|
|
7915 .LVL1202:
|
|
7916 0074 03EB4606 add r6, r3, r6, lsl #1
|
|
7917 0078 303E subs r6, r6, #48
|
|
7918 .LVL1203:
|
|
4264:../../../Source/third_party/fatfs/src/ff.c **** c = *str++;
|
|
7919 .loc 1 4264 0
|
|
7920 007a 17F8013B ldrb r3, [r7], #1 @ zero_extendqisi2
|
|
7921 .LVL1204:
|
|
4262:../../../Source/third_party/fatfs/src/ff.c **** w = w * 10 + c - '0';
|
|
7922 .loc 1 4262 0
|
|
7923 007e A3F13002 sub r2, r3, #48
|
|
7924 0082 D2B2 uxtb r2, r2
|
|
7925 0084 092A cmp r2, #9
|
|
7926 0086 F3D9 bls .L759
|
|
7927 0088 00E0 b .L758
|
|
7928 .LVL1205:
|
|
7929 .L804:
|
|
7930 008a 0026 movs r6, #0
|
|
7931 .LVL1206:
|
|
7932 .L758:
|
|
4265:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4266:../../../Source/third_party/fatfs/src/ff.c **** if (c == 'l' || c == 'L') { /* Prefix: Size is long int */
|
|
7933 .loc 1 4266 0
|
|
7934 008c 03F0DF02 and r2, r3, #223
|
|
7935 0090 4C2A cmp r2, #76
|
|
7936 0092 03D1 bne .L760
|
|
4267:../../../Source/third_party/fatfs/src/ff.c **** f |= 4; c = *str++;
|
|
7937 .loc 1 4267 0
|
|
7938 0094 4EF0040E orr lr, lr, #4
|
|
7939 .LVL1207:
|
|
7940 0098 3B78 ldrb r3, [r7] @ zero_extendqisi2
|
|
7941 .LVL1208:
|
|
7942 009a 0137 adds r7, r7, #1
|
|
7943 .LVL1209:
|
|
7944 .L760:
|
|
4268:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4269:../../../Source/third_party/fatfs/src/ff.c **** if (!c) break;
|
|
7945 .loc 1 4269 0
|
|
7946 009c 002B cmp r3, #0
|
|
7947 009e 00F0F180 beq .L761
|
|
7948 .LVL1210:
|
|
4270:../../../Source/third_party/fatfs/src/ff.c **** d = c;
|
|
4271:../../../Source/third_party/fatfs/src/ff.c **** if (IsLower(d)) d -= 0x20;
|
|
7949 .loc 1 4271 0
|
|
7950 00a2 A3F16102 sub r2, r3, #97
|
|
7951 00a6 D2B2 uxtb r2, r2
|
|
7952 00a8 192A cmp r2, #25
|
|
7953 00aa 9ABF itte ls
|
|
7954 00ac A3F12002 subls r2, r3, #32
|
|
7955 00b0 D2B2 uxtbls r2, r2
|
|
7956 .LVL1211:
|
|
4270:../../../Source/third_party/fatfs/src/ff.c **** d = c;
|
|
7957 .loc 1 4270 0
|
|
7958 00b2 1A46 movhi r2, r3
|
|
7959 .LVL1212:
|
|
4272:../../../Source/third_party/fatfs/src/ff.c **** switch (d) { /* Type is... */
|
|
7960 .loc 1 4272 0
|
|
7961 00b4 A2F14201 sub r1, r2, #66
|
|
7962 00b8 1629 cmp r1, #22
|
|
7963 00ba 61D8 bhi .L763
|
|
7964 00bc DFE811F0 tbh [pc, r1, lsl #1]
|
|
7965 .L765:
|
|
7966 00c0 0E01 .2byte (.L764-.L765)/2
|
|
7967 00c2 5700 .2byte (.L766-.L765)/2
|
|
7968 00c4 6600 .2byte (.L767-.L765)/2
|
|
7969 00c6 6000 .2byte (.L763-.L765)/2
|
|
7970 00c8 6000 .2byte (.L763-.L765)/2
|
|
7971 00ca 6000 .2byte (.L763-.L765)/2
|
|
7972 00cc 6000 .2byte (.L763-.L765)/2
|
|
7973 00ce 6000 .2byte (.L763-.L765)/2
|
|
7974 00d0 6000 .2byte (.L763-.L765)/2
|
|
7975 00d2 6000 .2byte (.L763-.L765)/2
|
|
7976 00d4 6000 .2byte (.L763-.L765)/2
|
|
7977 00d6 6000 .2byte (.L763-.L765)/2
|
|
7978 00d8 6000 .2byte (.L763-.L765)/2
|
|
7979 00da 1901 .2byte (.L768-.L765)/2
|
|
7980 00dc 6000 .2byte (.L763-.L765)/2
|
|
7981 00de 6000 .2byte (.L763-.L765)/2
|
|
7982 00e0 6000 .2byte (.L763-.L765)/2
|
|
7983 00e2 1700 .2byte (.L769-.L765)/2
|
|
7984 00e4 6000 .2byte (.L763-.L765)/2
|
|
7985 00e6 6600 .2byte (.L767-.L765)/2
|
|
7986 00e8 6000 .2byte (.L763-.L765)/2
|
|
7987 00ea 6000 .2byte (.L763-.L765)/2
|
|
7988 00ec E800 .2byte (.L770-.L765)/2
|
|
7989 .p2align 1
|
|
7990 .L769:
|
|
4273:../../../Source/third_party/fatfs/src/ff.c **** case 'S' : /* String */
|
|
4274:../../../Source/third_party/fatfs/src/ff.c **** p = va_arg(arp, TCHAR*);
|
|
7991 .loc 1 4274 0
|
|
7992 00ee 079B ldr r3, [sp, #28]
|
|
7993 .LVL1213:
|
|
7994 00f0 1A1D adds r2, r3, #4
|
|
7995 .LVL1214:
|
|
7996 00f2 0792 str r2, [sp, #28]
|
|
7997 00f4 1D68 ldr r5, [r3]
|
|
7998 .LVL1215:
|
|
4275:../../../Source/third_party/fatfs/src/ff.c **** for (j = 0; p[j]; j++) ;
|
|
7999 .loc 1 4275 0
|
|
8000 00f6 2B78 ldrb r3, [r5] @ zero_extendqisi2
|
|
8001 00f8 3BB1 cbz r3, .L806
|
|
8002 00fa 2B46 mov r3, r5
|
|
8003 00fc 0024 movs r4, #0
|
|
8004 .LVL1216:
|
|
8005 .L772:
|
|
8006 .loc 1 4275 0 is_stmt 0 discriminator 3
|
|
8007 00fe 0134 adds r4, r4, #1
|
|
8008 .LVL1217:
|
|
8009 0100 13F8012F ldrb r2, [r3, #1]! @ zero_extendqisi2
|
|
8010 0104 002A cmp r2, #0
|
|
8011 0106 FAD1 bne .L772
|
|
8012 0108 00E0 b .L771
|
|
8013 .LVL1218:
|
|
8014 .L806:
|
|
8015 .loc 1 4275 0
|
|
8016 010a 0024 movs r4, #0
|
|
8017 .LVL1219:
|
|
8018 .L771:
|
|
4276:../../../Source/third_party/fatfs/src/ff.c **** chc = 0;
|
|
4277:../../../Source/third_party/fatfs/src/ff.c **** if (!(f & 2)) {
|
|
8019 .loc 1 4277 0 is_stmt 1
|
|
8020 010c 1EF0020F tst lr, #2
|
|
8021 0110 10D1 bne .L807
|
|
8022 .LVL1220:
|
|
4278:../../../Source/third_party/fatfs/src/ff.c **** while (j++ < w) chc += (cc = f_putc(' ', fp));
|
|
8023 .loc 1 4278 0 discriminator 1
|
|
8024 0112 631C adds r3, r4, #1
|
|
8025 .LVL1221:
|
|
8026 0114 B442 cmp r4, r6
|
|
8027 0116 10D2 bcs .L808
|
|
8028 .loc 1 4278 0 is_stmt 0
|
|
8029 0118 4FF00008 mov r8, #0
|
|
8030 011c 4FF02009 mov r9, #32
|
|
8031 .LVL1222:
|
|
8032 .L774:
|
|
8033 .loc 1 4278 0 discriminator 2
|
|
8034 0120 4846 mov r0, r9
|
|
8035 0122 0199 ldr r1, [sp, #4]
|
|
8036 0124 FFF7FEFF bl f_putc
|
|
8037 .LVL1223:
|
|
8038 0128 8044 add r8, r8, r0
|
|
8039 .LVL1224:
|
|
8040 012a 0134 adds r4, r4, #1
|
|
8041 .LVL1225:
|
|
8042 012c B442 cmp r4, r6
|
|
8043 012e F7D3 bcc .L774
|
|
8044 0130 741C adds r4, r6, #1
|
|
8045 .LVL1226:
|
|
8046 0132 05E0 b .L773
|
|
8047 .LVL1227:
|
|
8048 .L807:
|
|
4276:../../../Source/third_party/fatfs/src/ff.c **** chc = 0;
|
|
8049 .loc 1 4276 0 is_stmt 1
|
|
8050 0134 4FF00008 mov r8, #0
|
|
8051 0138 02E0 b .L773
|
|
8052 .LVL1228:
|
|
8053 .L808:
|
|
8054 .loc 1 4278 0
|
|
8055 013a 1C46 mov r4, r3
|
|
8056 013c 4FF00008 mov r8, #0
|
|
8057 .LVL1229:
|
|
8058 .L773:
|
|
4279:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4280:../../../Source/third_party/fatfs/src/ff.c **** chc += (cc = f_puts(p, fp));
|
|
8059 .loc 1 4280 0
|
|
8060 0140 2846 mov r0, r5
|
|
8061 0142 0199 ldr r1, [sp, #4]
|
|
8062 0144 FFF7FEFF bl f_puts
|
|
8063 .LVL1230:
|
|
8064 0148 08EB0005 add r5, r8, r0
|
|
8065 .LVL1231:
|
|
4281:../../../Source/third_party/fatfs/src/ff.c **** while (j++ < w) chc += (cc = f_putc(' ', fp));
|
|
8066 .loc 1 4281 0
|
|
8067 014c B442 cmp r4, r6
|
|
8068 014e 09D2 bcs .L775
|
|
8069 0150 4FF02008 mov r8, #32
|
|
8070 .LVL1232:
|
|
8071 .L776:
|
|
8072 .loc 1 4281 0 is_stmt 0 discriminator 2
|
|
8073 0154 4046 mov r0, r8
|
|
8074 .LVL1233:
|
|
8075 0156 0199 ldr r1, [sp, #4]
|
|
8076 0158 FFF7FEFF bl f_putc
|
|
8077 .LVL1234:
|
|
8078 015c 0544 add r5, r5, r0
|
|
8079 .LVL1235:
|
|
8080 015e 0134 adds r4, r4, #1
|
|
8081 .LVL1236:
|
|
8082 0160 B442 cmp r4, r6
|
|
8083 0162 F7D3 bcc .L776
|
|
8084 .LVL1237:
|
|
8085 .L775:
|
|
4282:../../../Source/third_party/fatfs/src/ff.c **** if (cc != EOF) cc = chc;
|
|
8086 .loc 1 4282 0 is_stmt 1
|
|
8087 0164 B0F1FF3F cmp r0, #-1
|
|
8088 0168 40F08680 bne .L777
|
|
8089 016c 8DE0 b .L799
|
|
8090 .LVL1238:
|
|
8091 .L766:
|
|
4283:../../../Source/third_party/fatfs/src/ff.c **** continue;
|
|
4284:../../../Source/third_party/fatfs/src/ff.c **** case 'C' : /* Character */
|
|
4285:../../../Source/third_party/fatfs/src/ff.c **** cc = f_putc((TCHAR)va_arg(arp, int), fp); continue;
|
|
8092 .loc 1 4285 0
|
|
8093 016e 079B ldr r3, [sp, #28]
|
|
8094 .LVL1239:
|
|
8095 0170 1A1D adds r2, r3, #4
|
|
8096 .LVL1240:
|
|
8097 0172 0792 str r2, [sp, #28]
|
|
8098 0174 1878 ldrb r0, [r3] @ zero_extendqisi2
|
|
8099 0176 0199 ldr r1, [sp, #4]
|
|
8100 .LVL1241:
|
|
8101 0178 FFF7FEFF bl f_putc
|
|
8102 .LVL1242:
|
|
8103 017c 0546 mov r5, r0
|
|
8104 .LVL1243:
|
|
8105 017e 7BE0 b .L777
|
|
8106 .LVL1244:
|
|
8107 .L763:
|
|
4286:../../../Source/third_party/fatfs/src/ff.c **** case 'B' : /* Binary */
|
|
4287:../../../Source/third_party/fatfs/src/ff.c **** r = 2; break;
|
|
4288:../../../Source/third_party/fatfs/src/ff.c **** case 'O' : /* Octal */
|
|
4289:../../../Source/third_party/fatfs/src/ff.c **** r = 8; break;
|
|
4290:../../../Source/third_party/fatfs/src/ff.c **** case 'D' : /* Signed decimal */
|
|
4291:../../../Source/third_party/fatfs/src/ff.c **** case 'U' : /* Unsigned decimal */
|
|
4292:../../../Source/third_party/fatfs/src/ff.c **** r = 10; break;
|
|
4293:../../../Source/third_party/fatfs/src/ff.c **** case 'X' : /* Hexdecimal */
|
|
4294:../../../Source/third_party/fatfs/src/ff.c **** r = 16; break;
|
|
4295:../../../Source/third_party/fatfs/src/ff.c **** default: /* Unknown type (pass-through) */
|
|
4296:../../../Source/third_party/fatfs/src/ff.c **** cc = f_putc(c, fp); continue;
|
|
8108 .loc 1 4296 0
|
|
8109 0180 1846 mov r0, r3
|
|
8110 0182 0199 ldr r1, [sp, #4]
|
|
8111 0184 FFF7FEFF bl f_putc
|
|
8112 .LVL1245:
|
|
8113 0188 0546 mov r5, r0
|
|
8114 .LVL1246:
|
|
8115 018a 75E0 b .L777
|
|
8116 .LVL1247:
|
|
8117 .L767:
|
|
4297:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4298:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4299:../../../Source/third_party/fatfs/src/ff.c **** /* Get an argument and put it in numeral */
|
|
4300:../../../Source/third_party/fatfs/src/ff.c **** v = (f & 4) ? (ULONG)va_arg(arp, long) : ((d == 'D') ? (ULONG)(long)va_arg(arp, int) : (ULONG)va_
|
|
8118 .loc 1 4300 0
|
|
8119 018c 1EF0040F tst lr, #4
|
|
8120 0190 09D0 beq .L809
|
|
4292:../../../Source/third_party/fatfs/src/ff.c **** case 'X' : /* Hexdecimal */
|
|
8121 .loc 1 4292 0
|
|
8122 0192 0A25 movs r5, #10
|
|
8123 0194 00E0 b .L798
|
|
8124 .LVL1248:
|
|
8125 .L813:
|
|
4294:../../../Source/third_party/fatfs/src/ff.c **** default: /* Unknown type (pass-through) */
|
|
8126 .loc 1 4294 0
|
|
8127 0196 1025 movs r5, #16
|
|
8128 .LVL1249:
|
|
8129 .L798:
|
|
8130 .loc 1 4300 0 discriminator 1
|
|
8131 0198 0799 ldr r1, [sp, #28]
|
|
8132 019a 081D adds r0, r1, #4
|
|
8133 019c 0790 str r0, [sp, #28]
|
|
8134 019e 0968 ldr r1, [r1]
|
|
8135 .LVL1250:
|
|
4301:../../../Source/third_party/fatfs/src/ff.c **** if (d == 'D' && (v & 0x80000000)) {
|
|
8136 .loc 1 4301 0 discriminator 1
|
|
8137 01a0 442A cmp r2, #68
|
|
8138 01a2 12D1 bne .L780
|
|
8139 01a4 0CE0 b .L779
|
|
8140 .LVL1251:
|
|
8141 .L809:
|
|
4292:../../../Source/third_party/fatfs/src/ff.c **** case 'X' : /* Hexdecimal */
|
|
8142 .loc 1 4292 0
|
|
8143 01a6 0A25 movs r5, #10
|
|
8144 .LVL1252:
|
|
8145 .L778:
|
|
4300:../../../Source/third_party/fatfs/src/ff.c **** if (d == 'D' && (v & 0x80000000)) {
|
|
8146 .loc 1 4300 0 discriminator 2
|
|
8147 01a8 442A cmp r2, #68
|
|
8148 01aa 04D1 bne .L781
|
|
4300:../../../Source/third_party/fatfs/src/ff.c **** if (d == 'D' && (v & 0x80000000)) {
|
|
8149 .loc 1 4300 0 is_stmt 0 discriminator 4
|
|
8150 01ac 079A ldr r2, [sp, #28]
|
|
8151 .LVL1253:
|
|
8152 01ae 111D adds r1, r2, #4
|
|
8153 .LVL1254:
|
|
8154 01b0 0791 str r1, [sp, #28]
|
|
8155 01b2 1168 ldr r1, [r2]
|
|
8156 .LVL1255:
|
|
8157 01b4 04E0 b .L779
|
|
8158 .LVL1256:
|
|
8159 .L781:
|
|
4300:../../../Source/third_party/fatfs/src/ff.c **** if (d == 'D' && (v & 0x80000000)) {
|
|
8160 .loc 1 4300 0 discriminator 5
|
|
8161 01b6 079A ldr r2, [sp, #28]
|
|
8162 .LVL1257:
|
|
8163 01b8 111D adds r1, r2, #4
|
|
8164 .LVL1258:
|
|
8165 01ba 0791 str r1, [sp, #28]
|
|
8166 01bc 1168 ldr r1, [r2]
|
|
8167 .LVL1259:
|
|
8168 01be 04E0 b .L780
|
|
8169 .L779:
|
|
8170 .loc 1 4301 0 is_stmt 1 discriminator 1
|
|
8171 01c0 0029 cmp r1, #0
|
|
4302:../../../Source/third_party/fatfs/src/ff.c **** v = 0 - v;
|
|
8172 .loc 1 4302 0 discriminator 1
|
|
8173 01c2 BCBF itt lt
|
|
8174 01c4 4942 rsblt r1, r1, #0
|
|
8175 .LVL1260:
|
|
4303:../../../Source/third_party/fatfs/src/ff.c **** f |= 8;
|
|
8176 .loc 1 4303 0 discriminator 1
|
|
8177 01c6 4EF0080E orrlt lr, lr, #8
|
|
8178 .LVL1261:
|
|
8179 .L780:
|
|
8180 01ca 0DF10B0C add ip, sp, #11
|
|
4304:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4305:../../../Source/third_party/fatfs/src/ff.c **** i = 0;
|
|
8181 .loc 1 4305 0
|
|
8182 01ce 0024 movs r4, #0
|
|
8183 .LVL1262:
|
|
8184 .L785:
|
|
4306:../../../Source/third_party/fatfs/src/ff.c **** do {
|
|
4307:../../../Source/third_party/fatfs/src/ff.c **** d = (TCHAR)(v % r); v /= r;
|
|
8185 .loc 1 4307 0
|
|
8186 01d0 B1FBF5F0 udiv r0, r1, r5
|
|
8187 01d4 05FB1012 mls r2, r5, r0, r1
|
|
8188 01d8 D2B2 uxtb r2, r2
|
|
8189 .LVL1263:
|
|
8190 01da 0146 mov r1, r0
|
|
8191 .LVL1264:
|
|
4308:../../../Source/third_party/fatfs/src/ff.c **** if (d > 9) d += (c == 'x') ? 0x27 : 0x07;
|
|
8192 .loc 1 4308 0
|
|
8193 01dc 092A cmp r2, #9
|
|
8194 01de 07D9 bls .L782
|
|
8195 .loc 1 4308 0 is_stmt 0 discriminator 1
|
|
8196 01e0 782B cmp r3, #120
|
|
8197 01e2 0CBF ite eq
|
|
8198 01e4 4FF02708 moveq r8, #39
|
|
8199 01e8 4FF00708 movne r8, #7
|
|
8200 01ec 4244 add r2, r2, r8
|
|
8201 .LVL1265:
|
|
8202 01ee D2B2 uxtb r2, r2
|
|
8203 .LVL1266:
|
|
8204 .L782:
|
|
4309:../../../Source/third_party/fatfs/src/ff.c **** s[i++] = d + '0';
|
|
8205 .loc 1 4309 0 is_stmt 1
|
|
8206 01f0 0134 adds r4, r4, #1
|
|
8207 .LVL1267:
|
|
8208 01f2 3032 adds r2, r2, #48
|
|
8209 .LVL1268:
|
|
8210 01f4 0CF8012F strb r2, [ip, #1]!
|
|
4310:../../../Source/third_party/fatfs/src/ff.c **** } while (v && i < sizeof s / sizeof s[0]);
|
|
8211 .loc 1 4310 0
|
|
8212 01f8 08B1 cbz r0, .L784
|
|
8213 .loc 1 4310 0 is_stmt 0 discriminator 1
|
|
8214 01fa 102C cmp r4, #16
|
|
8215 01fc E8D1 bne .L785
|
|
8216 .L784:
|
|
4311:../../../Source/third_party/fatfs/src/ff.c **** if (f & 8) s[i++] = '-';
|
|
8217 .loc 1 4311 0 is_stmt 1
|
|
8218 01fe 1EF0080F tst lr, #8
|
|
8219 0202 05D0 beq .L786
|
|
8220 .LVL1269:
|
|
8221 .loc 1 4311 0 is_stmt 0 discriminator 1
|
|
8222 0204 08AB add r3, sp, #32
|
|
8223 .LVL1270:
|
|
8224 0206 2344 add r3, r3, r4
|
|
8225 0208 2D22 movs r2, #45
|
|
8226 020a 03F8142C strb r2, [r3, #-20]
|
|
8227 020e 0134 adds r4, r4, #1
|
|
8228 .LVL1271:
|
|
8229 .L786:
|
|
4312:../../../Source/third_party/fatfs/src/ff.c **** j = i; d = (f & 1) ? '0' : ' ';
|
|
8230 .loc 1 4312 0 is_stmt 1
|
|
8231 0210 0EF00103 and r3, lr, #1
|
|
8232 0214 002B cmp r3, #0
|
|
8233 0216 14BF ite ne
|
|
8234 0218 4FF03009 movne r9, #48
|
|
8235 021c 4FF02009 moveq r9, #32
|
|
8236 .LVL1272:
|
|
4313:../../../Source/third_party/fatfs/src/ff.c **** chc = 0;
|
|
4314:../../../Source/third_party/fatfs/src/ff.c **** while (!(f & 2) && j++ < w) chc += (cc = f_putc(d, fp));
|
|
8237 .loc 1 4314 0
|
|
8238 0220 1EF0020F tst lr, #2
|
|
8239 0224 0BD1 bne .L812
|
|
8240 0226 04F10108 add r8, r4, #1
|
|
8241 .LVL1273:
|
|
8242 022a B442 cmp r4, r6
|
|
4313:../../../Source/third_party/fatfs/src/ff.c **** chc = 0;
|
|
8243 .loc 1 4313 0
|
|
8244 022c 28BF it cs
|
|
8245 022e 0025 movcs r5, #0
|
|
8246 .loc 1 4314 0
|
|
8247 0230 07D2 bcs .L788
|
|
8248 0232 43E0 b .L789
|
|
8249 .LVL1274:
|
|
8250 .L800:
|
|
8251 .loc 1 4314 0 is_stmt 0 discriminator 2
|
|
8252 0234 D045 cmp r8, r10
|
|
8253 0236 39D1 bne .L790
|
|
8254 0238 06F10108 add r8, r6, #1
|
|
8255 .LVL1275:
|
|
8256 023c 01E0 b .L788
|
|
8257 .LVL1276:
|
|
8258 .L812:
|
|
4312:../../../Source/third_party/fatfs/src/ff.c **** j = i; d = (f & 1) ? '0' : ' ';
|
|
8259 .loc 1 4312 0 is_stmt 1
|
|
8260 023e A046 mov r8, r4
|
|
4313:../../../Source/third_party/fatfs/src/ff.c **** chc = 0;
|
|
8261 .loc 1 4313 0
|
|
8262 0240 0025 movs r5, #0
|
|
8263 .LVL1277:
|
|
8264 .L788:
|
|
8265 0242 03AB add r3, sp, #12
|
|
8266 0244 03EB0409 add r9, r3, r4
|
|
8267 .LVL1278:
|
|
8268 .L791:
|
|
4315:../../../Source/third_party/fatfs/src/ff.c **** do chc += (cc = f_putc(s[--i], fp)); while(i);
|
|
8269 .loc 1 4315 0 discriminator 1
|
|
8270 0248 013C subs r4, r4, #1
|
|
8271 .LVL1279:
|
|
8272 024a 19F8010D ldrb r0, [r9, #-1]! @ zero_extendqisi2
|
|
8273 024e 0199 ldr r1, [sp, #4]
|
|
8274 0250 FFF7FEFF bl f_putc
|
|
8275 .LVL1280:
|
|
8276 0254 0544 add r5, r5, r0
|
|
8277 .LVL1281:
|
|
8278 0256 002C cmp r4, #0
|
|
8279 0258 F6D1 bne .L791
|
|
8280 .LVL1282:
|
|
4316:../../../Source/third_party/fatfs/src/ff.c **** while (j++ < w) chc += (cc = f_putc(' ', fp));
|
|
8281 .loc 1 4316 0 discriminator 1
|
|
8282 025a B045 cmp r8, r6
|
|
8283 025c 09D2 bcs .L792
|
|
8284 .loc 1 4316 0 is_stmt 0
|
|
8285 025e 2024 movs r4, #32
|
|
8286 .LVL1283:
|
|
8287 .L793:
|
|
8288 .loc 1 4316 0 discriminator 2
|
|
8289 0260 2046 mov r0, r4
|
|
8290 .LVL1284:
|
|
8291 0262 0199 ldr r1, [sp, #4]
|
|
8292 0264 FFF7FEFF bl f_putc
|
|
8293 .LVL1285:
|
|
8294 0268 0544 add r5, r5, r0
|
|
8295 .LVL1286:
|
|
8296 026a 08F10108 add r8, r8, #1
|
|
8297 .LVL1287:
|
|
8298 026e B045 cmp r8, r6
|
|
8299 0270 F6D3 bcc .L793
|
|
8300 .LVL1288:
|
|
8301 .L792:
|
|
4317:../../../Source/third_party/fatfs/src/ff.c **** if (cc != EOF) cc = chc;
|
|
8302 .loc 1 4317 0 is_stmt 1
|
|
8303 0272 B0F1FF3F cmp r0, #-1
|
|
8304 0276 08D0 beq .L799
|
|
8305 .LVL1289:
|
|
8306 .L777:
|
|
4245:../../../Source/third_party/fatfs/src/ff.c **** c = *str++;
|
|
8307 .loc 1 4245 0 discriminator 2
|
|
8308 0278 AB44 add fp, fp, r5
|
|
8309 .LVL1290:
|
|
8310 027a B5F1FF3F cmp r5, #-1
|
|
8311 027e 7FF4D0AE bne .L794
|
|
8312 0282 02E0 b .L799
|
|
8313 .LVL1291:
|
|
8314 .L761:
|
|
4318:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
4319:../../../Source/third_party/fatfs/src/ff.c ****
|
|
4320:../../../Source/third_party/fatfs/src/ff.c **** va_end(arp);
|
|
4321:../../../Source/third_party/fatfs/src/ff.c **** return (cc == EOF) ? cc : res;
|
|
8315 .loc 1 4321 0
|
|
8316 0284 B5F1FF3F cmp r5, #-1
|
|
8317 0288 38D1 bne .L814
|
|
8318 .LVL1292:
|
|
8319 .L799:
|
|
8320 .loc 1 4321 0 is_stmt 0 discriminator 1
|
|
8321 028a 4FF0FF3B mov fp, #-1
|
|
8322 .LVL1293:
|
|
8323 028e 35E0 b .L814
|
|
8324 .LVL1294:
|
|
8325 .L770:
|
|
4300:../../../Source/third_party/fatfs/src/ff.c **** if (d == 'D' && (v & 0x80000000)) {
|
|
8326 .loc 1 4300 0 is_stmt 1
|
|
8327 0290 1EF0040F tst lr, #4
|
|
8328 0294 7FF47FAF bne .L813
|
|
4294:../../../Source/third_party/fatfs/src/ff.c **** default: /* Unknown type (pass-through) */
|
|
8329 .loc 1 4294 0
|
|
8330 0298 1025 movs r5, #16
|
|
8331 029a 8CE7 b .L781
|
|
8332 .LVL1295:
|
|
8333 .L753:
|
|
4245:../../../Source/third_party/fatfs/src/ff.c **** c = *str++;
|
|
8334 .loc 1 4245 0
|
|
8335 029c 0BF1010B add fp, fp, #1
|
|
8336 .LVL1296:
|
|
8337 02a0 2746 mov r7, r4
|
|
4250:../../../Source/third_party/fatfs/src/ff.c **** continue;
|
|
8338 .loc 1 4250 0
|
|
8339 02a2 0125 movs r5, #1
|
|
8340 02a4 BDE6 b .L794
|
|
8341 .LVL1297:
|
|
8342 .L803:
|
|
4245:../../../Source/third_party/fatfs/src/ff.c **** c = *str++;
|
|
8343 .loc 1 4245 0
|
|
8344 02a6 4FF0000B mov fp, #0
|
|
8345 02aa 27E0 b .L814
|
|
8346 .LVL1298:
|
|
8347 .L790:
|
|
4314:../../../Source/third_party/fatfs/src/ff.c **** do chc += (cc = f_putc(s[--i], fp)); while(i);
|
|
8348 .loc 1 4314 0
|
|
8349 02ac 4846 mov r0, r9
|
|
8350 02ae 0199 ldr r1, [sp, #4]
|
|
8351 02b0 FFF7FEFF bl f_putc
|
|
8352 .LVL1299:
|
|
8353 02b4 0544 add r5, r5, r0
|
|
8354 .LVL1300:
|
|
8355 02b6 08F10108 add r8, r8, #1
|
|
8356 .LVL1301:
|
|
8357 02ba BBE7 b .L800
|
|
8358 .LVL1302:
|
|
8359 .L789:
|
|
8360 02bc 4846 mov r0, r9
|
|
8361 .LVL1303:
|
|
8362 02be 0199 ldr r1, [sp, #4]
|
|
8363 .LVL1304:
|
|
8364 02c0 FFF7FEFF bl f_putc
|
|
8365 .LVL1305:
|
|
8366 02c4 0546 mov r5, r0
|
|
8367 .LVL1306:
|
|
8368 02c6 04F10208 add r8, r4, #2
|
|
8369 .LVL1307:
|
|
8370 02ca 06F1010A add r10, r6, #1
|
|
8371 02ce B1E7 b .L800
|
|
8372 .LVL1308:
|
|
8373 .L801:
|
|
4300:../../../Source/third_party/fatfs/src/ff.c **** if (d == 'D' && (v & 0x80000000)) {
|
|
8374 .loc 1 4300 0
|
|
8375 02d0 079A ldr r2, [sp, #28]
|
|
8376 .LVL1309:
|
|
8377 02d2 111D adds r1, r2, #4
|
|
8378 .LVL1310:
|
|
8379 02d4 0791 str r1, [sp, #28]
|
|
8380 02d6 1168 ldr r1, [r2]
|
|
8381 .LVL1311:
|
|
4287:../../../Source/third_party/fatfs/src/ff.c **** case 'O' : /* Octal */
|
|
8382 .loc 1 4287 0
|
|
8383 02d8 0225 movs r5, #2
|
|
8384 02da 76E7 b .L780
|
|
8385 .LVL1312:
|
|
8386 .L764:
|
|
4300:../../../Source/third_party/fatfs/src/ff.c **** if (d == 'D' && (v & 0x80000000)) {
|
|
8387 .loc 1 4300 0
|
|
8388 02dc 1EF0040F tst lr, #4
|
|
8389 02e0 F6D1 bne .L801
|
|
4287:../../../Source/third_party/fatfs/src/ff.c **** case 'O' : /* Octal */
|
|
8390 .loc 1 4287 0
|
|
8391 02e2 0225 movs r5, #2
|
|
8392 02e4 60E7 b .L778
|
|
8393 .LVL1313:
|
|
8394 .L802:
|
|
4300:../../../Source/third_party/fatfs/src/ff.c **** if (d == 'D' && (v & 0x80000000)) {
|
|
8395 .loc 1 4300 0
|
|
8396 02e6 079A ldr r2, [sp, #28]
|
|
8397 .LVL1314:
|
|
8398 02e8 111D adds r1, r2, #4
|
|
8399 .LVL1315:
|
|
8400 02ea 0791 str r1, [sp, #28]
|
|
8401 02ec 1168 ldr r1, [r2]
|
|
8402 .LVL1316:
|
|
4289:../../../Source/third_party/fatfs/src/ff.c **** case 'D' : /* Signed decimal */
|
|
8403 .loc 1 4289 0
|
|
8404 02ee 0825 movs r5, #8
|
|
8405 02f0 6BE7 b .L780
|
|
8406 .LVL1317:
|
|
8407 .L768:
|
|
4300:../../../Source/third_party/fatfs/src/ff.c **** if (d == 'D' && (v & 0x80000000)) {
|
|
8408 .loc 1 4300 0
|
|
8409 02f2 1EF0040F tst lr, #4
|
|
8410 02f6 F6D1 bne .L802
|
|
4289:../../../Source/third_party/fatfs/src/ff.c **** case 'D' : /* Signed decimal */
|
|
8411 .loc 1 4289 0
|
|
8412 02f8 0825 movs r5, #8
|
|
8413 02fa 5CE7 b .L781
|
|
8414 .LVL1318:
|
|
8415 .L814:
|
|
4322:../../../Source/third_party/fatfs/src/ff.c **** }
|
|
8416 .loc 1 4322 0
|
|
8417 02fc 5846 mov r0, fp
|
|
8418 02fe 08B0 add sp, sp, #32
|
|
8419 .cfi_def_cfa_offset 48
|
|
8420 @ sp needed
|
|
8421 0300 BDE8F04F pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
8422 .cfi_restore 14
|
|
8423 .cfi_restore 11
|
|
8424 .cfi_restore 10
|
|
8425 .cfi_restore 9
|
|
8426 .cfi_restore 8
|
|
8427 .cfi_restore 7
|
|
8428 .cfi_restore 6
|
|
8429 .cfi_restore 5
|
|
8430 .cfi_restore 4
|
|
8431 .cfi_def_cfa_offset 12
|
|
8432 0304 03B0 add sp, sp, #12
|
|
8433 .cfi_restore 3
|
|
8434 .cfi_restore 2
|
|
8435 .cfi_restore 1
|
|
8436 .cfi_def_cfa_offset 0
|
|
8437 0306 7047 bx lr
|
|
8438 .cfi_endproc
|
|
8439 .LFE52:
|
|
8441 .section .bss.LfnBuf,"aw",%nobits
|
|
8442 .align 2
|
|
8443 .set .LANCHOR4,. + 0
|
|
8446 LfnBuf:
|
|
8447 0000 00000000 .space 512
|
|
8447 00000000
|
|
8447 00000000
|
|
8447 00000000
|
|
8447 00000000
|
|
8448 .section .bss.Fsid,"aw",%nobits
|
|
8449 .align 1
|
|
8450 .set .LANCHOR1,. + 0
|
|
8453 Fsid:
|
|
8454 0000 0000 .space 2
|
|
8455 .section .rodata.str1.4,"aMS",%progbits,1
|
|
8456 .align 2
|
|
8457 .LC0:
|
|
8458 0000 222A3A3C .ascii "\"*:<>?|\177\000"
|
|
8458 3E3F7C7F
|
|
8458 00
|
|
8459 0009 000000 .space 3
|
|
8460 .LC1:
|
|
8461 000c 2B2C3B3D .ascii "+,;=[]\000"
|
|
8461 5B5D00
|
|
8462 0013 00 .section .rodata.ExCvt,"a",%progbits
|
|
8463 .align 2
|
|
8464 .set .LANCHOR3,. + 0
|
|
8467 ExCvt:
|
|
8468 0000 80 .byte -128
|
|
8469 0001 9A .byte -102
|
|
8470 0002 90 .byte -112
|
|
8471 0003 41 .byte 65
|
|
8472 0004 8E .byte -114
|
|
8473 0005 41 .byte 65
|
|
8474 0006 8F .byte -113
|
|
8475 0007 80 .byte -128
|
|
8476 0008 45 .byte 69
|
|
8477 0009 45 .byte 69
|
|
8478 000a 45 .byte 69
|
|
8479 000b 49 .byte 73
|
|
8480 000c 49 .byte 73
|
|
8481 000d 49 .byte 73
|
|
8482 000e 8E .byte -114
|
|
8483 000f 8F .byte -113
|
|
8484 0010 90 .byte -112
|
|
8485 0011 92 .byte -110
|
|
8486 0012 92 .byte -110
|
|
8487 0013 4F .byte 79
|
|
8488 0014 99 .byte -103
|
|
8489 0015 4F .byte 79
|
|
8490 0016 55 .byte 85
|
|
8491 0017 55 .byte 85
|
|
8492 0018 59 .byte 89
|
|
8493 0019 99 .byte -103
|
|
8494 001a 9A .byte -102
|
|
8495 001b 9B .byte -101
|
|
8496 001c 9C .byte -100
|
|
8497 001d 9D .byte -99
|
|
8498 001e 9E .byte -98
|
|
8499 001f 9F .byte -97
|
|
8500 0020 41 .byte 65
|
|
8501 0021 49 .byte 73
|
|
8502 0022 4F .byte 79
|
|
8503 0023 55 .byte 85
|
|
8504 0024 A5 .byte -91
|
|
8505 0025 A5 .byte -91
|
|
8506 0026 A6 .byte -90
|
|
8507 0027 A7 .byte -89
|
|
8508 0028 A8 .byte -88
|
|
8509 0029 A9 .byte -87
|
|
8510 002a AA .byte -86
|
|
8511 002b AB .byte -85
|
|
8512 002c AC .byte -84
|
|
8513 002d 21 .byte 33
|
|
8514 002e AE .byte -82
|
|
8515 002f AF .byte -81
|
|
8516 0030 B0 .byte -80
|
|
8517 0031 B1 .byte -79
|
|
8518 0032 B2 .byte -78
|
|
8519 0033 B3 .byte -77
|
|
8520 0034 B4 .byte -76
|
|
8521 0035 B5 .byte -75
|
|
8522 0036 B6 .byte -74
|
|
8523 0037 B7 .byte -73
|
|
8524 0038 B8 .byte -72
|
|
8525 0039 B9 .byte -71
|
|
8526 003a BA .byte -70
|
|
8527 003b BB .byte -69
|
|
8528 003c BC .byte -68
|
|
8529 003d BD .byte -67
|
|
8530 003e BE .byte -66
|
|
8531 003f BF .byte -65
|
|
8532 0040 C0 .byte -64
|
|
8533 0041 C1 .byte -63
|
|
8534 0042 C2 .byte -62
|
|
8535 0043 C3 .byte -61
|
|
8536 0044 C4 .byte -60
|
|
8537 0045 C5 .byte -59
|
|
8538 0046 C6 .byte -58
|
|
8539 0047 C7 .byte -57
|
|
8540 0048 C8 .byte -56
|
|
8541 0049 C9 .byte -55
|
|
8542 004a CA .byte -54
|
|
8543 004b CB .byte -53
|
|
8544 004c CC .byte -52
|
|
8545 004d CD .byte -51
|
|
8546 004e CE .byte -50
|
|
8547 004f CF .byte -49
|
|
8548 0050 D0 .byte -48
|
|
8549 0051 D1 .byte -47
|
|
8550 0052 D2 .byte -46
|
|
8551 0053 D3 .byte -45
|
|
8552 0054 D4 .byte -44
|
|
8553 0055 D5 .byte -43
|
|
8554 0056 D6 .byte -42
|
|
8555 0057 D7 .byte -41
|
|
8556 0058 D8 .byte -40
|
|
8557 0059 D9 .byte -39
|
|
8558 005a DA .byte -38
|
|
8559 005b DB .byte -37
|
|
8560 005c DC .byte -36
|
|
8561 005d DD .byte -35
|
|
8562 005e DE .byte -34
|
|
8563 005f DF .byte -33
|
|
8564 0060 E0 .byte -32
|
|
8565 0061 E1 .byte -31
|
|
8566 0062 E2 .byte -30
|
|
8567 0063 E3 .byte -29
|
|
8568 0064 E4 .byte -28
|
|
8569 0065 E5 .byte -27
|
|
8570 0066 E6 .byte -26
|
|
8571 0067 E7 .byte -25
|
|
8572 0068 E8 .byte -24
|
|
8573 0069 E9 .byte -23
|
|
8574 006a EA .byte -22
|
|
8575 006b EB .byte -21
|
|
8576 006c EC .byte -20
|
|
8577 006d ED .byte -19
|
|
8578 006e EE .byte -18
|
|
8579 006f EF .byte -17
|
|
8580 0070 F0 .byte -16
|
|
8581 0071 F1 .byte -15
|
|
8582 0072 F2 .byte -14
|
|
8583 0073 F3 .byte -13
|
|
8584 0074 F4 .byte -12
|
|
8585 0075 F5 .byte -11
|
|
8586 0076 F6 .byte -10
|
|
8587 0077 F7 .byte -9
|
|
8588 0078 F8 .byte -8
|
|
8589 0079 F9 .byte -7
|
|
8590 007a FA .byte -6
|
|
8591 007b FB .byte -5
|
|
8592 007c FC .byte -4
|
|
8593 007d FD .byte -3
|
|
8594 007e FE .byte -2
|
|
8595 007f FF .byte -1
|
|
8596 .section .rodata.LfnOfs,"a",%progbits
|
|
8597 .align 2
|
|
8598 .set .LANCHOR2,. + 0
|
|
8601 LfnOfs:
|
|
8602 0000 01 .byte 1
|
|
8603 0001 03 .byte 3
|
|
8604 0002 05 .byte 5
|
|
8605 0003 07 .byte 7
|
|
8606 0004 09 .byte 9
|
|
8607 0005 0E .byte 14
|
|
8608 0006 10 .byte 16
|
|
8609 0007 12 .byte 18
|
|
8610 0008 14 .byte 20
|
|
8611 0009 16 .byte 22
|
|
8612 000a 18 .byte 24
|
|
8613 000b 1C .byte 28
|
|
8614 000c 1E .byte 30
|
|
8615 000d 000000 .section .bss.FatFs,"aw",%nobits
|
|
8616 .align 2
|
|
8617 .set .LANCHOR0,. + 0
|
|
8620 FatFs:
|
|
8621 0000 00000000 .space 4
|
|
8622 .text
|
|
8623 .Letext0:
|
|
8624 .file 2 "../../../Source/third_party/fatfs/src/integer.h"
|
|
8625 .file 3 "../../../Source/third_party/fatfs/src/ff.h"
|
|
8626 .file 4 "../../../Source/third_party/fatfs/src/diskio.h"
|
|
8627 .file 5 "c:\\program files (x86)\\gnu tools arm embedded\\4.9 2015q1\\lib\\gcc\\arm-none-eabi\\4.9
|
|
8628 .file 6 "<built-in>"
|
|
DEFINED SYMBOLS
|
|
*ABS*:00000000 ff.c
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:19 .text.mem_cpy:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:23 .text.mem_cpy:00000000 mem_cpy
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:54 .text.ld_clust:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:58 .text.ld_clust:00000000 ld_clust
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:90 .text.sum_sfn:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:94 .text.sum_sfn:00000000 sum_sfn
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:126 .text.check_fs:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:130 .text.check_fs:00000000 check_fs
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:207 .text.check_fs:00000084 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:213 .text.sync_window:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:217 .text.sync_window:00000000 sync_window
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:332 .text.move_window:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:336 .text.move_window:00000000 move_window
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:393 .text.validate:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:397 .text.validate:00000000 validate
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:468 .text.chk_mounted:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:472 .text.chk_mounted:00000000 chk_mounted
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:1021 .text.chk_mounted:0000034c $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:1029 .text.chk_mounted:00000360 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:1067 .text.get_fileinfo:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:1071 .text.get_fileinfo:00000000 get_fileinfo
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:1347 .text.sync_fs:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:1351 .text.sync_fs:00000000 sync_fs
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:1469 .text.clust2sect:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:1474 .text.clust2sect:00000000 clust2sect
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:1503 .text.get_fat:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:1508 .text.get_fat:00000000 get_fat
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:1683 .text.dir_sdi:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:1687 .text.dir_sdi:00000000 dir_sdi
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:1837 .text.put_fat:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:1842 .text.put_fat:00000000 put_fat
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:2067 .text.create_chain:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:2071 .text.create_chain:00000000 create_chain
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:2250 .text.dir_next:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:2254 .text.dir_next:00000000 dir_next
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:2506 .text.dir_find:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:2510 .text.dir_find:00000000 dir_find
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:2806 .text.dir_find:00000168 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:2811 .text.follow_path:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:2815 .text.follow_path:00000000 follow_path
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:3409 .text.follow_path:000002f8 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:3416 .text.dir_read:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:3420 .text.dir_read:00000000 dir_read
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:3681 .text.dir_read:00000128 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:3686 .text.dir_remove:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:3690 .text.dir_remove:00000000 dir_remove
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:3771 .text.remove_chain:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:3775 .text.remove_chain:00000000 remove_chain
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:3878 .text.gen_numname:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:3883 .text.gen_numname:00000000 gen_numname
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:4024 .text.dir_register:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:4028 .text.dir_register:00000000 dir_register
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:4453 .text.dir_register:00000204 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:4459 .text.f_mount:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:4464 .text.f_mount:00000000 f_mount
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:4508 .text.f_mount:00000020 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:4513 .text.f_open:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:4518 .text.f_open:00000000 f_open
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:4825 .text.f_open:00000180 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:4830 .text.f_read:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:4835 .text.f_read:00000000 f_read
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:5132 .text.f_write:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:5137 .text.f_write:00000000 f_write
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:5461 .text.f_sync:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:5466 .text.f_sync:00000000 f_sync
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:5602 .text.f_close:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:5607 .text.f_close:00000000 f_close
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:5637 .text.f_lseek:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:5642 .text.f_lseek:00000000 f_lseek
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:5968 .text.f_opendir:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:5973 .text.f_opendir:00000000 f_opendir
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:6099 .text.f_opendir:00000080 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:6104 .text.f_readdir:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:6109 .text.f_readdir:00000000 f_readdir
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:6208 .text.f_readdir:00000060 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:6213 .text.f_stat:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:6218 .text.f_stat:00000000 f_stat
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:6286 .text.f_stat:00000044 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:6291 .text.f_getfree:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:6296 .text.f_getfree:00000000 f_getfree
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:6504 .text.f_truncate:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:6509 .text.f_truncate:00000000 f_truncate
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:6647 .text.f_unlink:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:6652 .text.f_unlink:00000000 f_unlink
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:6816 .text.f_unlink:000000b8 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:6821 .text.f_mkdir:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:6826 .text.f_mkdir:00000000 f_mkdir
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7170 .text.f_mkdir:000001c8 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7175 .text.f_chmod:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7180 .text.f_chmod:00000000 f_chmod
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7266 .text.f_chmod:0000005c $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7271 .text.f_utime:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7276 .text.f_utime:00000000 f_utime
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7363 .text.f_utime:0000005c $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7368 .text.f_rename:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7373 .text.f_rename:00000000 f_rename
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7595 .text.f_rename:00000120 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7600 .text.f_gets:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7605 .text.f_gets:00000000 f_gets
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7685 .text.f_putc:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7690 .text.f_putc:00000000 f_putc
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7740 .text.f_puts:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7745 .text.f_puts:00000000 f_puts
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7798 .text.f_printf:00000000 $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7803 .text.f_printf:00000000 f_printf
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7966 .text.f_printf:000000c0 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:7989 .text.f_printf:000000ee $t
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:8442 .bss.LfnBuf:00000000 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:8446 .bss.LfnBuf:00000000 LfnBuf
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:8449 .bss.Fsid:00000000 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:8453 .bss.Fsid:00000000 Fsid
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:8456 .rodata.str1.4:00000000 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:8463 .rodata.ExCvt:00000000 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:8467 .rodata.ExCvt:00000000 ExCvt
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:8597 .rodata.LfnOfs:00000000 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:8601 .rodata.LfnOfs:00000000 LfnOfs
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:8616 .bss.FatFs:00000000 $d
|
|
C:\Users\lwngim1\AppData\Local\Temp\ccTxfLYu.s:8620 .bss.FatFs:00000000 FatFs
|
|
.debug_frame:00000010 $d
|
|
|
|
UNDEFINED SYMBOLS
|
|
disk_read
|
|
disk_write
|
|
disk_status
|
|
disk_initialize
|
|
ff_convert
|
|
disk_ioctl
|
|
ff_wtoupper
|
|
get_fattime
|