openblt/Target/Demo/ARMCM3_STM32_Nucleo_STM32F1.../Boot/obj/ff.lst

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