Files
RadioPhotonic_PCB_software/build/sd_diskio.lst

743 lines
31 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

ARM GAS /tmp/ccYOHnte.s page 1
1 .cpu cortex-m7
2 .arch armv7e-m
3 .fpu fpv5-d16
4 .eabi_attribute 28, 1
5 .eabi_attribute 20, 1
6 .eabi_attribute 21, 1
7 .eabi_attribute 23, 3
8 .eabi_attribute 24, 1
9 .eabi_attribute 25, 1
10 .eabi_attribute 26, 1
11 .eabi_attribute 30, 1
12 .eabi_attribute 34, 1
13 .eabi_attribute 18, 4
14 .file "sd_diskio.c"
15 .text
16 .Ltext0:
17 .cfi_sections .debug_frame
18 .file 1 "Src/sd_diskio.c"
19 .section .text.SD_CheckStatus,"ax",%progbits
20 .align 1
21 .syntax unified
22 .thumb
23 .thumb_func
25 SD_CheckStatus:
26 .LVL0:
27 .LFB1183:
1:Src/sd_diskio.c **** /* USER CODE BEGIN Header */
2:Src/sd_diskio.c **** /**
3:Src/sd_diskio.c **** ******************************************************************************
4:Src/sd_diskio.c **** * @file sd_diskio.c
5:Src/sd_diskio.c **** * @brief SD Disk I/O driver
6:Src/sd_diskio.c **** ******************************************************************************
7:Src/sd_diskio.c **** * @attention
8:Src/sd_diskio.c **** *
9:Src/sd_diskio.c **** * Copyright (c) 2023 STMicroelectronics.
10:Src/sd_diskio.c **** * All rights reserved.
11:Src/sd_diskio.c **** *
12:Src/sd_diskio.c **** * This software is licensed under terms that can be found in the LICENSE file
13:Src/sd_diskio.c **** * in the root directory of this software component.
14:Src/sd_diskio.c **** * If no LICENSE file comes with this software, it is provided AS-IS.
15:Src/sd_diskio.c **** *
16:Src/sd_diskio.c **** ******************************************************************************
17:Src/sd_diskio.c **** */
18:Src/sd_diskio.c **** /* USER CODE END Header */
19:Src/sd_diskio.c ****
20:Src/sd_diskio.c **** /* Note: code generation based on sd_diskio_template_bspv1.c v2.1.4
21:Src/sd_diskio.c **** as "Use dma template" is disabled. */
22:Src/sd_diskio.c ****
23:Src/sd_diskio.c **** /* USER CODE BEGIN firstSection */
24:Src/sd_diskio.c **** /* can be used to modify / undefine following code or add new definitions */
25:Src/sd_diskio.c **** /* USER CODE END firstSection*/
26:Src/sd_diskio.c ****
27:Src/sd_diskio.c **** /* Includes ------------------------------------------------------------------*/
28:Src/sd_diskio.c **** #include "ff_gen_drv.h"
29:Src/sd_diskio.c **** #include "sd_diskio.h"
30:Src/sd_diskio.c ****
31:Src/sd_diskio.c **** /* Private typedef -----------------------------------------------------------*/
ARM GAS /tmp/ccYOHnte.s page 2
32:Src/sd_diskio.c **** /* Private define ------------------------------------------------------------*/
33:Src/sd_diskio.c **** /* use the default SD timout as defined in the platform BSP driver*/
34:Src/sd_diskio.c **** #if defined(SDMMC_DATATIMEOUT)
35:Src/sd_diskio.c **** #define SD_TIMEOUT SDMMC_DATATIMEOUT
36:Src/sd_diskio.c **** #elif defined(SD_DATATIMEOUT)
37:Src/sd_diskio.c **** #define SD_TIMEOUT SD_DATATIMEOUT
38:Src/sd_diskio.c **** #else
39:Src/sd_diskio.c **** #define SD_TIMEOUT 30 * 1000
40:Src/sd_diskio.c **** #endif
41:Src/sd_diskio.c ****
42:Src/sd_diskio.c **** #define SD_DEFAULT_BLOCK_SIZE 512
43:Src/sd_diskio.c ****
44:Src/sd_diskio.c **** /*
45:Src/sd_diskio.c **** * Depending on the use case, the SD card initialization could be done at the
46:Src/sd_diskio.c **** * application level: if it is the case define the flag below to disable
47:Src/sd_diskio.c **** * the BSP_SD_Init() call in the SD_Initialize() and add a call to
48:Src/sd_diskio.c **** * BSP_SD_Init() elsewhere in the application.
49:Src/sd_diskio.c **** */
50:Src/sd_diskio.c **** /* USER CODE BEGIN disableSDInit */
51:Src/sd_diskio.c **** /* #define DISABLE_SD_INIT */
52:Src/sd_diskio.c **** /* USER CODE END disableSDInit */
53:Src/sd_diskio.c ****
54:Src/sd_diskio.c **** /* Private variables ---------------------------------------------------------*/
55:Src/sd_diskio.c **** /* Disk status */
56:Src/sd_diskio.c **** static volatile DSTATUS Stat = STA_NOINIT;
57:Src/sd_diskio.c ****
58:Src/sd_diskio.c **** /* Private function prototypes -----------------------------------------------*/
59:Src/sd_diskio.c **** static DSTATUS SD_CheckStatus(BYTE lun);
60:Src/sd_diskio.c **** DSTATUS SD_initialize (BYTE);
61:Src/sd_diskio.c **** DSTATUS SD_status (BYTE);
62:Src/sd_diskio.c **** DRESULT SD_read (BYTE, BYTE*, DWORD, UINT);
63:Src/sd_diskio.c **** #if _USE_WRITE == 1
64:Src/sd_diskio.c **** DRESULT SD_write (BYTE, const BYTE*, DWORD, UINT);
65:Src/sd_diskio.c **** #endif /* _USE_WRITE == 1 */
66:Src/sd_diskio.c **** #if _USE_IOCTL == 1
67:Src/sd_diskio.c **** DRESULT SD_ioctl (BYTE, BYTE, void*);
68:Src/sd_diskio.c **** #endif /* _USE_IOCTL == 1 */
69:Src/sd_diskio.c ****
70:Src/sd_diskio.c **** const Diskio_drvTypeDef SD_Driver =
71:Src/sd_diskio.c **** {
72:Src/sd_diskio.c **** SD_initialize,
73:Src/sd_diskio.c **** SD_status,
74:Src/sd_diskio.c **** SD_read,
75:Src/sd_diskio.c **** #if _USE_WRITE == 1
76:Src/sd_diskio.c **** SD_write,
77:Src/sd_diskio.c **** #endif /* _USE_WRITE == 1 */
78:Src/sd_diskio.c ****
79:Src/sd_diskio.c **** #if _USE_IOCTL == 1
80:Src/sd_diskio.c **** SD_ioctl,
81:Src/sd_diskio.c **** #endif /* _USE_IOCTL == 1 */
82:Src/sd_diskio.c **** };
83:Src/sd_diskio.c ****
84:Src/sd_diskio.c **** /* USER CODE BEGIN beforeFunctionSection */
85:Src/sd_diskio.c **** /* can be used to modify / undefine following code or add new code */
86:Src/sd_diskio.c **** /* USER CODE END beforeFunctionSection */
87:Src/sd_diskio.c ****
88:Src/sd_diskio.c **** /* Private functions ---------------------------------------------------------*/
ARM GAS /tmp/ccYOHnte.s page 3
89:Src/sd_diskio.c ****
90:Src/sd_diskio.c **** static DSTATUS SD_CheckStatus(BYTE lun)
91:Src/sd_diskio.c **** {
28 .loc 1 91 1 view -0
29 .cfi_startproc
30 @ args = 0, pretend = 0, frame = 0
31 @ frame_needed = 0, uses_anonymous_args = 0
32 .loc 1 91 1 is_stmt 0 view .LVU1
33 0000 08B5 push {r3, lr}
34 .LCFI0:
35 .cfi_def_cfa_offset 8
36 .cfi_offset 3, -8
37 .cfi_offset 14, -4
92:Src/sd_diskio.c **** Stat = STA_NOINIT;
38 .loc 1 92 3 is_stmt 1 view .LVU2
39 .loc 1 92 8 is_stmt 0 view .LVU3
40 0002 074B ldr r3, .L4
41 0004 0122 movs r2, #1
42 0006 1A70 strb r2, [r3]
93:Src/sd_diskio.c ****
94:Src/sd_diskio.c **** if(BSP_SD_GetCardState() == MSD_OK)
43 .loc 1 94 3 is_stmt 1 view .LVU4
44 .loc 1 94 6 is_stmt 0 view .LVU5
45 0008 FFF7FEFF bl BSP_SD_GetCardState
46 .LVL1:
47 .loc 1 94 5 discriminator 1 view .LVU6
48 000c 20B9 cbnz r0, .L2
95:Src/sd_diskio.c **** {
96:Src/sd_diskio.c **** Stat &= ~STA_NOINIT;
49 .loc 1 96 5 is_stmt 1 view .LVU7
50 .loc 1 96 10 is_stmt 0 view .LVU8
51 000e 044A ldr r2, .L4
52 0010 1378 ldrb r3, [r2] @ zero_extendqisi2
53 0012 03F0FE03 and r3, r3, #254
54 0016 1370 strb r3, [r2]
55 .L2:
97:Src/sd_diskio.c **** }
98:Src/sd_diskio.c ****
99:Src/sd_diskio.c **** return Stat;
56 .loc 1 99 3 is_stmt 1 view .LVU9
57 .loc 1 99 10 is_stmt 0 view .LVU10
58 0018 014B ldr r3, .L4
59 001a 1878 ldrb r0, [r3] @ zero_extendqisi2
100:Src/sd_diskio.c **** }
60 .loc 1 100 1 view .LVU11
61 001c 08BD pop {r3, pc}
62 .L5:
63 001e 00BF .align 2
64 .L4:
65 0020 00000000 .word Stat
66 .cfi_endproc
67 .LFE1183:
69 .section .text.SD_initialize,"ax",%progbits
70 .align 1
71 .global SD_initialize
72 .syntax unified
73 .thumb
ARM GAS /tmp/ccYOHnte.s page 4
74 .thumb_func
76 SD_initialize:
77 .LVL2:
78 .LFB1184:
101:Src/sd_diskio.c ****
102:Src/sd_diskio.c **** /**
103:Src/sd_diskio.c **** * @brief Initializes a Drive
104:Src/sd_diskio.c **** * @param lun : not used
105:Src/sd_diskio.c **** * @retval DSTATUS: Operation status
106:Src/sd_diskio.c **** */
107:Src/sd_diskio.c **** DSTATUS SD_initialize(BYTE lun)
108:Src/sd_diskio.c **** {
79 .loc 1 108 1 is_stmt 1 view -0
80 .cfi_startproc
81 @ args = 0, pretend = 0, frame = 0
82 @ frame_needed = 0, uses_anonymous_args = 0
83 .loc 1 108 1 is_stmt 0 view .LVU13
84 0000 10B5 push {r4, lr}
85 .LCFI1:
86 .cfi_def_cfa_offset 8
87 .cfi_offset 4, -8
88 .cfi_offset 14, -4
89 0002 0446 mov r4, r0
109:Src/sd_diskio.c **** Stat = STA_NOINIT;
90 .loc 1 109 1 is_stmt 1 view .LVU14
91 .loc 1 109 6 is_stmt 0 view .LVU15
92 0004 074B ldr r3, .L10
93 0006 0122 movs r2, #1
94 0008 1A70 strb r2, [r3]
110:Src/sd_diskio.c ****
111:Src/sd_diskio.c **** #if !defined(DISABLE_SD_INIT)
112:Src/sd_diskio.c ****
113:Src/sd_diskio.c **** if(BSP_SD_Init() == MSD_OK)
95 .loc 1 113 3 is_stmt 1 view .LVU16
96 .loc 1 113 6 is_stmt 0 view .LVU17
97 000a FFF7FEFF bl BSP_SD_Init
98 .LVL3:
99 .loc 1 113 5 discriminator 1 view .LVU18
100 000e 10B1 cbz r0, .L9
101 .L7:
114:Src/sd_diskio.c **** {
115:Src/sd_diskio.c **** Stat = SD_CheckStatus(lun);
116:Src/sd_diskio.c **** }
117:Src/sd_diskio.c ****
118:Src/sd_diskio.c **** #else
119:Src/sd_diskio.c **** Stat = SD_CheckStatus(lun);
120:Src/sd_diskio.c **** #endif
121:Src/sd_diskio.c ****
122:Src/sd_diskio.c **** return Stat;
102 .loc 1 122 3 is_stmt 1 view .LVU19
103 .loc 1 122 10 is_stmt 0 view .LVU20
104 0010 044B ldr r3, .L10
105 0012 1878 ldrb r0, [r3] @ zero_extendqisi2
123:Src/sd_diskio.c **** }
106 .loc 1 123 1 view .LVU21
107 0014 10BD pop {r4, pc}
108 .LVL4:
ARM GAS /tmp/ccYOHnte.s page 5
109 .L9:
115:Src/sd_diskio.c **** }
110 .loc 1 115 5 is_stmt 1 view .LVU22
115:Src/sd_diskio.c **** }
111 .loc 1 115 12 is_stmt 0 view .LVU23
112 0016 2046 mov r0, r4
113 0018 FFF7FEFF bl SD_CheckStatus
114 .LVL5:
115:Src/sd_diskio.c **** }
115 .loc 1 115 10 discriminator 1 view .LVU24
116 001c 014B ldr r3, .L10
117 001e 1870 strb r0, [r3]
118 0020 F6E7 b .L7
119 .L11:
120 0022 00BF .align 2
121 .L10:
122 0024 00000000 .word Stat
123 .cfi_endproc
124 .LFE1184:
126 .section .text.SD_status,"ax",%progbits
127 .align 1
128 .global SD_status
129 .syntax unified
130 .thumb
131 .thumb_func
133 SD_status:
134 .LVL6:
135 .LFB1185:
124:Src/sd_diskio.c ****
125:Src/sd_diskio.c **** /**
126:Src/sd_diskio.c **** * @brief Gets Disk Status
127:Src/sd_diskio.c **** * @param lun : not used
128:Src/sd_diskio.c **** * @retval DSTATUS: Operation status
129:Src/sd_diskio.c **** */
130:Src/sd_diskio.c **** DSTATUS SD_status(BYTE lun)
131:Src/sd_diskio.c **** {
136 .loc 1 131 1 is_stmt 1 view -0
137 .cfi_startproc
138 @ args = 0, pretend = 0, frame = 0
139 @ frame_needed = 0, uses_anonymous_args = 0
140 .loc 1 131 1 is_stmt 0 view .LVU26
141 0000 08B5 push {r3, lr}
142 .LCFI2:
143 .cfi_def_cfa_offset 8
144 .cfi_offset 3, -8
145 .cfi_offset 14, -4
132:Src/sd_diskio.c **** return SD_CheckStatus(lun);
146 .loc 1 132 3 is_stmt 1 view .LVU27
147 .loc 1 132 10 is_stmt 0 view .LVU28
148 0002 FFF7FEFF bl SD_CheckStatus
149 .LVL7:
133:Src/sd_diskio.c **** }
150 .loc 1 133 1 view .LVU29
151 0006 08BD pop {r3, pc}
152 .cfi_endproc
153 .LFE1185:
155 .section .text.SD_read,"ax",%progbits
ARM GAS /tmp/ccYOHnte.s page 6
156 .align 1
157 .global SD_read
158 .syntax unified
159 .thumb
160 .thumb_func
162 SD_read:
163 .LVL8:
164 .LFB1186:
134:Src/sd_diskio.c ****
135:Src/sd_diskio.c **** /* USER CODE BEGIN beforeReadSection */
136:Src/sd_diskio.c **** /* can be used to modify previous code / undefine following code / add new code */
137:Src/sd_diskio.c **** /* USER CODE END beforeReadSection */
138:Src/sd_diskio.c **** /**
139:Src/sd_diskio.c **** * @brief Reads Sector(s)
140:Src/sd_diskio.c **** * @param lun : not used
141:Src/sd_diskio.c **** * @param *buff: Data buffer to store read data
142:Src/sd_diskio.c **** * @param sector: Sector address (LBA)
143:Src/sd_diskio.c **** * @param count: Number of sectors to read (1..128)
144:Src/sd_diskio.c **** * @retval DRESULT: Operation result
145:Src/sd_diskio.c **** */
146:Src/sd_diskio.c ****
147:Src/sd_diskio.c **** DRESULT SD_read(BYTE lun, BYTE *buff, DWORD sector, UINT count)
148:Src/sd_diskio.c **** {
165 .loc 1 148 1 is_stmt 1 view -0
166 .cfi_startproc
167 @ args = 0, pretend = 0, frame = 0
168 @ frame_needed = 0, uses_anonymous_args = 0
169 .loc 1 148 1 is_stmt 0 view .LVU31
170 0000 08B5 push {r3, lr}
171 .LCFI3:
172 .cfi_def_cfa_offset 8
173 .cfi_offset 3, -8
174 .cfi_offset 14, -4
175 0002 0846 mov r0, r1
176 .LVL9:
177 .loc 1 148 1 view .LVU32
178 0004 1146 mov r1, r2
179 .LVL10:
180 .loc 1 148 1 view .LVU33
181 0006 1A46 mov r2, r3
182 .LVL11:
149:Src/sd_diskio.c **** DRESULT res = RES_ERROR;
183 .loc 1 149 3 is_stmt 1 view .LVU34
150:Src/sd_diskio.c ****
151:Src/sd_diskio.c **** if(BSP_SD_ReadBlocks((uint32_t*)buff,
184 .loc 1 151 3 view .LVU35
185 .loc 1 151 6 is_stmt 0 view .LVU36
186 0008 4FF0FF33 mov r3, #-1
187 .LVL12:
188 .loc 1 151 6 view .LVU37
189 000c FFF7FEFF bl BSP_SD_ReadBlocks
190 .LVL13:
191 .loc 1 151 5 discriminator 1 view .LVU38
192 0010 30B9 cbnz r0, .L17
193 .L16:
152:Src/sd_diskio.c **** (uint32_t) (sector),
153:Src/sd_diskio.c **** count, SD_TIMEOUT) == MSD_OK)
ARM GAS /tmp/ccYOHnte.s page 7
154:Src/sd_diskio.c **** {
155:Src/sd_diskio.c **** /* wait until the read operation is finished */
156:Src/sd_diskio.c **** while(BSP_SD_GetCardState()!= MSD_OK)
157:Src/sd_diskio.c **** {
158:Src/sd_diskio.c **** }
194 .loc 1 158 5 is_stmt 1 view .LVU39
156:Src/sd_diskio.c **** {
195 .loc 1 156 32 discriminator 1 view .LVU40
156:Src/sd_diskio.c **** {
196 .loc 1 156 11 is_stmt 0 discriminator 1 view .LVU41
197 0012 FFF7FEFF bl BSP_SD_GetCardState
198 .LVL14:
156:Src/sd_diskio.c **** {
199 .loc 1 156 32 discriminator 1 view .LVU42
200 0016 0346 mov r3, r0
201 0018 0028 cmp r0, #0
202 001a FAD1 bne .L16
203 .L15:
204 .LVL15:
159:Src/sd_diskio.c **** res = RES_OK;
160:Src/sd_diskio.c **** }
161:Src/sd_diskio.c ****
162:Src/sd_diskio.c **** return res;
205 .loc 1 162 3 is_stmt 1 view .LVU43
163:Src/sd_diskio.c **** }
206 .loc 1 163 1 is_stmt 0 view .LVU44
207 001c 1846 mov r0, r3
208 001e 08BD pop {r3, pc}
209 .LVL16:
210 .L17:
149:Src/sd_diskio.c ****
211 .loc 1 149 11 view .LVU45
212 0020 0123 movs r3, #1
213 0022 FBE7 b .L15
214 .cfi_endproc
215 .LFE1186:
217 .section .text.SD_write,"ax",%progbits
218 .align 1
219 .global SD_write
220 .syntax unified
221 .thumb
222 .thumb_func
224 SD_write:
225 .LVL17:
226 .LFB1187:
164:Src/sd_diskio.c ****
165:Src/sd_diskio.c **** /* USER CODE BEGIN beforeWriteSection */
166:Src/sd_diskio.c **** /* can be used to modify previous code / undefine following code / add new code */
167:Src/sd_diskio.c **** /* USER CODE END beforeWriteSection */
168:Src/sd_diskio.c **** /**
169:Src/sd_diskio.c **** * @brief Writes Sector(s)
170:Src/sd_diskio.c **** * @param lun : not used
171:Src/sd_diskio.c **** * @param *buff: Data to be written
172:Src/sd_diskio.c **** * @param sector: Sector address (LBA)
173:Src/sd_diskio.c **** * @param count: Number of sectors to write (1..128)
174:Src/sd_diskio.c **** * @retval DRESULT: Operation result
175:Src/sd_diskio.c **** */
ARM GAS /tmp/ccYOHnte.s page 8
176:Src/sd_diskio.c **** #if _USE_WRITE == 1
177:Src/sd_diskio.c ****
178:Src/sd_diskio.c **** DRESULT SD_write(BYTE lun, const BYTE *buff, DWORD sector, UINT count)
179:Src/sd_diskio.c **** {
227 .loc 1 179 1 is_stmt 1 view -0
228 .cfi_startproc
229 @ args = 0, pretend = 0, frame = 0
230 @ frame_needed = 0, uses_anonymous_args = 0
231 .loc 1 179 1 is_stmt 0 view .LVU47
232 0000 08B5 push {r3, lr}
233 .LCFI4:
234 .cfi_def_cfa_offset 8
235 .cfi_offset 3, -8
236 .cfi_offset 14, -4
237 0002 0846 mov r0, r1
238 .LVL18:
239 .loc 1 179 1 view .LVU48
240 0004 1146 mov r1, r2
241 .LVL19:
242 .loc 1 179 1 view .LVU49
243 0006 1A46 mov r2, r3
244 .LVL20:
180:Src/sd_diskio.c **** DRESULT res = RES_ERROR;
245 .loc 1 180 3 is_stmt 1 view .LVU50
181:Src/sd_diskio.c ****
182:Src/sd_diskio.c **** if(BSP_SD_WriteBlocks((uint32_t*)buff,
246 .loc 1 182 3 view .LVU51
247 .loc 1 182 6 is_stmt 0 view .LVU52
248 0008 4FF0FF33 mov r3, #-1
249 .LVL21:
250 .loc 1 182 6 view .LVU53
251 000c FFF7FEFF bl BSP_SD_WriteBlocks
252 .LVL22:
253 .loc 1 182 5 discriminator 1 view .LVU54
254 0010 30B9 cbnz r0, .L22
255 .L21:
183:Src/sd_diskio.c **** (uint32_t)(sector),
184:Src/sd_diskio.c **** count, SD_TIMEOUT) == MSD_OK)
185:Src/sd_diskio.c **** {
186:Src/sd_diskio.c **** /* wait until the Write operation is finished */
187:Src/sd_diskio.c **** while(BSP_SD_GetCardState() != MSD_OK)
188:Src/sd_diskio.c **** {
189:Src/sd_diskio.c **** }
256 .loc 1 189 5 is_stmt 1 view .LVU55
187:Src/sd_diskio.c **** {
257 .loc 1 187 33 discriminator 1 view .LVU56
187:Src/sd_diskio.c **** {
258 .loc 1 187 11 is_stmt 0 discriminator 1 view .LVU57
259 0012 FFF7FEFF bl BSP_SD_GetCardState
260 .LVL23:
187:Src/sd_diskio.c **** {
261 .loc 1 187 33 discriminator 1 view .LVU58
262 0016 0346 mov r3, r0
263 0018 0028 cmp r0, #0
264 001a FAD1 bne .L21
265 .L20:
266 .LVL24:
ARM GAS /tmp/ccYOHnte.s page 9
190:Src/sd_diskio.c **** res = RES_OK;
191:Src/sd_diskio.c **** }
192:Src/sd_diskio.c ****
193:Src/sd_diskio.c **** return res;
267 .loc 1 193 3 is_stmt 1 view .LVU59
194:Src/sd_diskio.c **** }
268 .loc 1 194 1 is_stmt 0 view .LVU60
269 001c 1846 mov r0, r3
270 001e 08BD pop {r3, pc}
271 .LVL25:
272 .L22:
180:Src/sd_diskio.c ****
273 .loc 1 180 11 view .LVU61
274 0020 0123 movs r3, #1
275 0022 FBE7 b .L20
276 .cfi_endproc
277 .LFE1187:
279 .section .text.SD_ioctl,"ax",%progbits
280 .align 1
281 .global SD_ioctl
282 .syntax unified
283 .thumb
284 .thumb_func
286 SD_ioctl:
287 .LVL26:
288 .LFB1188:
195:Src/sd_diskio.c **** #endif /* _USE_WRITE == 1 */
196:Src/sd_diskio.c ****
197:Src/sd_diskio.c **** /* USER CODE BEGIN beforeIoctlSection */
198:Src/sd_diskio.c **** /* can be used to modify previous code / undefine following code / add new code */
199:Src/sd_diskio.c **** /* USER CODE END beforeIoctlSection */
200:Src/sd_diskio.c **** /**
201:Src/sd_diskio.c **** * @brief I/O control operation
202:Src/sd_diskio.c **** * @param lun : not used
203:Src/sd_diskio.c **** * @param cmd: Control code
204:Src/sd_diskio.c **** * @param *buff: Buffer to send/receive control data
205:Src/sd_diskio.c **** * @retval DRESULT: Operation result
206:Src/sd_diskio.c **** */
207:Src/sd_diskio.c **** #if _USE_IOCTL == 1
208:Src/sd_diskio.c **** DRESULT SD_ioctl(BYTE lun, BYTE cmd, void *buff)
209:Src/sd_diskio.c **** {
289 .loc 1 209 1 is_stmt 1 view -0
290 .cfi_startproc
291 @ args = 0, pretend = 0, frame = 32
292 @ frame_needed = 0, uses_anonymous_args = 0
293 .loc 1 209 1 is_stmt 0 view .LVU63
294 0000 30B5 push {r4, r5, lr}
295 .LCFI5:
296 .cfi_def_cfa_offset 12
297 .cfi_offset 4, -12
298 .cfi_offset 5, -8
299 .cfi_offset 14, -4
300 0002 89B0 sub sp, sp, #36
301 .LCFI6:
302 .cfi_def_cfa_offset 48
210:Src/sd_diskio.c **** DRESULT res = RES_ERROR;
303 .loc 1 210 3 is_stmt 1 view .LVU64
ARM GAS /tmp/ccYOHnte.s page 10
304 .LVL27:
211:Src/sd_diskio.c **** BSP_SD_CardInfo CardInfo;
305 .loc 1 211 3 view .LVU65
212:Src/sd_diskio.c ****
213:Src/sd_diskio.c **** if (Stat & STA_NOINIT) return RES_NOTRDY;
306 .loc 1 213 3 view .LVU66
307 .loc 1 213 12 is_stmt 0 view .LVU67
308 0004 134B ldr r3, .L34
309 0006 1878 ldrb r0, [r3] @ zero_extendqisi2
310 .LVL28:
311 .loc 1 213 6 view .LVU68
312 0008 10F00104 ands r4, r0, #1
313 000c 1BD1 bne .L31
314 000e 1546 mov r5, r2
214:Src/sd_diskio.c ****
215:Src/sd_diskio.c **** switch (cmd)
315 .loc 1 215 3 is_stmt 1 view .LVU69
316 0010 0329 cmp r1, #3
317 0012 1CD8 bhi .L32
318 0014 DFE801F0 tbb [pc, r1]
319 .L27:
320 0018 02 .byte (.L30-.L27)/2
321 0019 04 .byte (.L29-.L27)/2
322 001a 0A .byte (.L28-.L27)/2
323 001b 10 .byte (.L26-.L27)/2
324 .p2align 1
325 .L30:
326 001c 0C46 mov r4, r1
327 001e 13E0 b .L25
328 .L29:
216:Src/sd_diskio.c **** {
217:Src/sd_diskio.c **** /* Make sure that no pending write process */
218:Src/sd_diskio.c **** case CTRL_SYNC :
219:Src/sd_diskio.c **** res = RES_OK;
220:Src/sd_diskio.c **** break;
221:Src/sd_diskio.c ****
222:Src/sd_diskio.c **** /* Get number of sectors on the disk (DWORD) */
223:Src/sd_diskio.c **** case GET_SECTOR_COUNT :
224:Src/sd_diskio.c **** BSP_SD_GetCardInfo(&CardInfo);
329 .loc 1 224 5 view .LVU70
330 0020 6846 mov r0, sp
331 0022 FFF7FEFF bl BSP_SD_GetCardInfo
332 .LVL29:
225:Src/sd_diskio.c **** *(DWORD*)buff = CardInfo.LogBlockNbr;
333 .loc 1 225 5 view .LVU71
334 .loc 1 225 29 is_stmt 0 view .LVU72
335 0026 069B ldr r3, [sp, #24]
336 .loc 1 225 19 view .LVU73
337 0028 2B60 str r3, [r5]
226:Src/sd_diskio.c **** res = RES_OK;
338 .loc 1 226 5 is_stmt 1 view .LVU74
339 .LVL30:
227:Src/sd_diskio.c **** break;
340 .loc 1 227 5 view .LVU75
341 002a 0DE0 b .L25
342 .LVL31:
343 .L28:
ARM GAS /tmp/ccYOHnte.s page 11
228:Src/sd_diskio.c ****
229:Src/sd_diskio.c **** /* Get R/W sector size (WORD) */
230:Src/sd_diskio.c **** case GET_SECTOR_SIZE :
231:Src/sd_diskio.c **** BSP_SD_GetCardInfo(&CardInfo);
344 .loc 1 231 5 view .LVU76
345 002c 6846 mov r0, sp
346 002e FFF7FEFF bl BSP_SD_GetCardInfo
347 .LVL32:
232:Src/sd_diskio.c **** *(WORD*)buff = CardInfo.LogBlockSize;
348 .loc 1 232 5 view .LVU77
349 .loc 1 232 28 is_stmt 0 view .LVU78
350 0032 079B ldr r3, [sp, #28]
351 .loc 1 232 18 view .LVU79
352 0034 2B80 strh r3, [r5] @ movhi
233:Src/sd_diskio.c **** res = RES_OK;
353 .loc 1 233 5 is_stmt 1 view .LVU80
354 .LVL33:
234:Src/sd_diskio.c **** break;
355 .loc 1 234 5 view .LVU81
356 0036 07E0 b .L25
357 .LVL34:
358 .L26:
235:Src/sd_diskio.c ****
236:Src/sd_diskio.c **** /* Get erase block size in unit of sector (DWORD) */
237:Src/sd_diskio.c **** case GET_BLOCK_SIZE :
238:Src/sd_diskio.c **** BSP_SD_GetCardInfo(&CardInfo);
359 .loc 1 238 5 view .LVU82
360 0038 6846 mov r0, sp
361 003a FFF7FEFF bl BSP_SD_GetCardInfo
362 .LVL35:
239:Src/sd_diskio.c **** *(DWORD*)buff = CardInfo.LogBlockSize / SD_DEFAULT_BLOCK_SIZE;
363 .loc 1 239 5 view .LVU83
364 .loc 1 239 29 is_stmt 0 view .LVU84
365 003e 079B ldr r3, [sp, #28]
366 .loc 1 239 43 view .LVU85
367 0040 5B0A lsrs r3, r3, #9
368 .loc 1 239 19 view .LVU86
369 0042 2B60 str r3, [r5]
240:Src/sd_diskio.c **** res = RES_OK;
370 .loc 1 240 5 is_stmt 1 view .LVU87
371 .LVL36:
241:Src/sd_diskio.c **** break;
372 .loc 1 241 5 view .LVU88
373 0044 00E0 b .L25
374 .LVL37:
375 .L31:
213:Src/sd_diskio.c ****
376 .loc 1 213 33 is_stmt 0 discriminator 1 view .LVU89
377 0046 0324 movs r4, #3
378 .LVL38:
379 .L25:
242:Src/sd_diskio.c ****
243:Src/sd_diskio.c **** default:
244:Src/sd_diskio.c **** res = RES_PARERR;
245:Src/sd_diskio.c **** }
246:Src/sd_diskio.c ****
247:Src/sd_diskio.c **** return res;
ARM GAS /tmp/ccYOHnte.s page 12
248:Src/sd_diskio.c **** }
380 .loc 1 248 1 view .LVU90
381 0048 2046 mov r0, r4
382 004a 09B0 add sp, sp, #36
383 .LCFI7:
384 .cfi_remember_state
385 .cfi_def_cfa_offset 12
386 @ sp needed
387 004c 30BD pop {r4, r5, pc}
388 .LVL39:
389 .L32:
390 .LCFI8:
391 .cfi_restore_state
244:Src/sd_diskio.c **** }
392 .loc 1 244 9 view .LVU91
393 004e 0424 movs r4, #4
394 0050 FAE7 b .L25
395 .L35:
396 0052 00BF .align 2
397 .L34:
398 0054 00000000 .word Stat
399 .cfi_endproc
400 .LFE1188:
402 .global SD_Driver
403 .section .rodata.SD_Driver,"a"
404 .align 2
407 SD_Driver:
408 0000 00000000 .word SD_initialize
409 0004 00000000 .word SD_status
410 0008 00000000 .word SD_read
411 000c 00000000 .word SD_write
412 0010 00000000 .word SD_ioctl
413 .section .data.Stat,"aw"
416 Stat:
417 0000 01 .byte 1
418 .text
419 .Letext0:
420 .file 2 "Middlewares/Third_Party/FatFs/src/integer.h"
421 .file 3 "Middlewares/Third_Party/FatFs/src/diskio.h"
422 .file 4 "/usr/lib/gcc/arm-none-eabi/13.2.1/include/stdint.h"
423 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h"
424 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h"
425 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h"
426 .file 8 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h"
427 .file 9 "Middlewares/Third_Party/FatFs/src/ff_gen_drv.h"
428 .file 10 "Inc/bsp_driver_sd.h"
429 .file 11 "Inc/sd_diskio.h"
ARM GAS /tmp/ccYOHnte.s page 13
DEFINED SYMBOLS
*ABS*:00000000 sd_diskio.c
/tmp/ccYOHnte.s:20 .text.SD_CheckStatus:00000000 $t
/tmp/ccYOHnte.s:25 .text.SD_CheckStatus:00000000 SD_CheckStatus
/tmp/ccYOHnte.s:65 .text.SD_CheckStatus:00000020 $d
/tmp/ccYOHnte.s:416 .data.Stat:00000000 Stat
/tmp/ccYOHnte.s:70 .text.SD_initialize:00000000 $t
/tmp/ccYOHnte.s:76 .text.SD_initialize:00000000 SD_initialize
/tmp/ccYOHnte.s:122 .text.SD_initialize:00000024 $d
/tmp/ccYOHnte.s:127 .text.SD_status:00000000 $t
/tmp/ccYOHnte.s:133 .text.SD_status:00000000 SD_status
/tmp/ccYOHnte.s:156 .text.SD_read:00000000 $t
/tmp/ccYOHnte.s:162 .text.SD_read:00000000 SD_read
/tmp/ccYOHnte.s:218 .text.SD_write:00000000 $t
/tmp/ccYOHnte.s:224 .text.SD_write:00000000 SD_write
/tmp/ccYOHnte.s:280 .text.SD_ioctl:00000000 $t
/tmp/ccYOHnte.s:286 .text.SD_ioctl:00000000 SD_ioctl
/tmp/ccYOHnte.s:320 .text.SD_ioctl:00000018 $d
/tmp/ccYOHnte.s:324 .text.SD_ioctl:0000001c $t
/tmp/ccYOHnte.s:398 .text.SD_ioctl:00000054 $d
/tmp/ccYOHnte.s:407 .rodata.SD_Driver:00000000 SD_Driver
/tmp/ccYOHnte.s:404 .rodata.SD_Driver:00000000 $d
UNDEFINED SYMBOLS
BSP_SD_GetCardState
BSP_SD_Init
BSP_SD_ReadBlocks
BSP_SD_WriteBlocks
BSP_SD_GetCardInfo