1140 lines
49 KiB
Plaintext
1140 lines
49 KiB
Plaintext
ARM GAS /tmp/ccI3jx5x.s page 1
|
||
|
||
|
||
1 .cpu cortex-m4
|
||
2 .arch armv7e-m
|
||
3 .fpu fpv4-sp-d16
|
||
4 .eabi_attribute 27, 1
|
||
5 .eabi_attribute 28, 1
|
||
6 .eabi_attribute 20, 1
|
||
7 .eabi_attribute 21, 1
|
||
8 .eabi_attribute 23, 3
|
||
9 .eabi_attribute 24, 1
|
||
10 .eabi_attribute 25, 1
|
||
11 .eabi_attribute 26, 1
|
||
12 .eabi_attribute 30, 6
|
||
13 .eabi_attribute 34, 1
|
||
14 .eabi_attribute 18, 4
|
||
15 .file "can-halal.c"
|
||
16 .text
|
||
17 .Ltext0:
|
||
18 .cfi_sections .debug_frame
|
||
19 .file 1 "Core/Lib/can-halal/can-halal.c"
|
||
20 .section .bss.hcan,"aw",%nobits
|
||
21 .align 2
|
||
24 hcan:
|
||
25 0000 00000000 .space 4
|
||
26 .section .text.ftcan_init,"ax",%progbits
|
||
27 .align 1
|
||
28 .global ftcan_init
|
||
29 .syntax unified
|
||
30 .thumb
|
||
31 .thumb_func
|
||
33 ftcan_init:
|
||
34 .LFB130:
|
||
1:Core/Lib/can-halal/can-halal.c **** #include "can-halal.h"
|
||
2:Core/Lib/can-halal/can-halal.c ****
|
||
3:Core/Lib/can-halal/can-halal.c **** #include <string.h>
|
||
4:Core/Lib/can-halal/can-halal.c ****
|
||
5:Core/Lib/can-halal/can-halal.c **** #if defined(FTCAN_IS_BXCAN)
|
||
6:Core/Lib/can-halal/can-halal.c **** static CAN_HandleTypeDef *hcan;
|
||
7:Core/Lib/can-halal/can-halal.c ****
|
||
8:Core/Lib/can-halal/can-halal.c **** HAL_StatusTypeDef ftcan_init(CAN_HandleTypeDef *handle) {
|
||
35 .loc 1 8 57
|
||
36 .cfi_startproc
|
||
37 @ args = 0, pretend = 0, frame = 16
|
||
38 @ frame_needed = 1, uses_anonymous_args = 0
|
||
39 0000 80B5 push {r7, lr}
|
||
40 .cfi_def_cfa_offset 8
|
||
41 .cfi_offset 7, -8
|
||
42 .cfi_offset 14, -4
|
||
43 0002 84B0 sub sp, sp, #16
|
||
44 .cfi_def_cfa_offset 24
|
||
45 0004 00AF add r7, sp, #0
|
||
46 .cfi_def_cfa_register 7
|
||
47 0006 7860 str r0, [r7, #4]
|
||
9:Core/Lib/can-halal/can-halal.c **** hcan = handle;
|
||
48 .loc 1 9 8
|
||
49 0008 0C4A ldr r2, .L4
|
||
50 000a 7B68 ldr r3, [r7, #4]
|
||
51 000c 1360 str r3, [r2]
|
||
ARM GAS /tmp/ccI3jx5x.s page 2
|
||
|
||
|
||
10:Core/Lib/can-halal/can-halal.c ****
|
||
11:Core/Lib/can-halal/can-halal.c **** HAL_StatusTypeDef status =
|
||
12:Core/Lib/can-halal/can-halal.c **** HAL_CAN_ActivateNotification(hcan, CAN_IT_RX_FIFO0_MSG_PENDING);
|
||
52 .loc 1 12 7
|
||
53 000e 0B4B ldr r3, .L4
|
||
54 0010 1B68 ldr r3, [r3]
|
||
55 0012 0221 movs r1, #2
|
||
56 0014 1846 mov r0, r3
|
||
57 0016 FFF7FEFF bl HAL_CAN_ActivateNotification
|
||
58 001a 0346 mov r3, r0
|
||
59 001c FB73 strb r3, [r7, #15]
|
||
13:Core/Lib/can-halal/can-halal.c **** if (status != HAL_OK) {
|
||
60 .loc 1 13 6
|
||
61 001e FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
|
||
62 0020 002B cmp r3, #0
|
||
63 0022 01D0 beq .L2
|
||
14:Core/Lib/can-halal/can-halal.c **** return status;
|
||
64 .loc 1 14 12
|
||
65 0024 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
|
||
66 0026 05E0 b .L3
|
||
67 .L2:
|
||
15:Core/Lib/can-halal/can-halal.c **** }
|
||
16:Core/Lib/can-halal/can-halal.c ****
|
||
17:Core/Lib/can-halal/can-halal.c **** return HAL_CAN_Start(hcan);
|
||
68 .loc 1 17 10
|
||
69 0028 044B ldr r3, .L4
|
||
70 002a 1B68 ldr r3, [r3]
|
||
71 002c 1846 mov r0, r3
|
||
72 002e FFF7FEFF bl HAL_CAN_Start
|
||
73 0032 0346 mov r3, r0
|
||
74 .L3:
|
||
18:Core/Lib/can-halal/can-halal.c **** }
|
||
75 .loc 1 18 1
|
||
76 0034 1846 mov r0, r3
|
||
77 0036 1037 adds r7, r7, #16
|
||
78 .cfi_def_cfa_offset 8
|
||
79 0038 BD46 mov sp, r7
|
||
80 .cfi_def_cfa_register 13
|
||
81 @ sp needed
|
||
82 003a 80BD pop {r7, pc}
|
||
83 .L5:
|
||
84 .align 2
|
||
85 .L4:
|
||
86 003c 00000000 .word hcan
|
||
87 .cfi_endproc
|
||
88 .LFE130:
|
||
90 .section .text.ftcan_transmit,"ax",%progbits
|
||
91 .align 1
|
||
92 .global ftcan_transmit
|
||
93 .syntax unified
|
||
94 .thumb
|
||
95 .thumb_func
|
||
97 ftcan_transmit:
|
||
98 .LFB131:
|
||
19:Core/Lib/can-halal/can-halal.c ****
|
||
20:Core/Lib/can-halal/can-halal.c **** HAL_StatusTypeDef ftcan_transmit(uint16_t id, const uint8_t *data,
|
||
21:Core/Lib/can-halal/can-halal.c **** size_t datalen) {
|
||
ARM GAS /tmp/ccI3jx5x.s page 3
|
||
|
||
|
||
99 .loc 1 21 50
|
||
100 .cfi_startproc
|
||
101 @ args = 0, pretend = 0, frame = 24
|
||
102 @ frame_needed = 1, uses_anonymous_args = 0
|
||
103 0000 80B5 push {r7, lr}
|
||
104 .cfi_def_cfa_offset 8
|
||
105 .cfi_offset 7, -8
|
||
106 .cfi_offset 14, -4
|
||
107 0002 86B0 sub sp, sp, #24
|
||
108 .cfi_def_cfa_offset 32
|
||
109 0004 00AF add r7, sp, #0
|
||
110 .cfi_def_cfa_register 7
|
||
111 0006 0346 mov r3, r0
|
||
112 0008 B960 str r1, [r7, #8]
|
||
113 000a 7A60 str r2, [r7, #4]
|
||
114 000c FB81 strh r3, [r7, #14] @ movhi
|
||
22:Core/Lib/can-halal/can-halal.c **** static CAN_TxHeaderTypeDef header;
|
||
23:Core/Lib/can-halal/can-halal.c **** header.StdId = id;
|
||
115 .loc 1 23 16
|
||
116 000e FB89 ldrh r3, [r7, #14]
|
||
117 0010 0B4A ldr r2, .L8
|
||
118 0012 1360 str r3, [r2]
|
||
24:Core/Lib/can-halal/can-halal.c **** header.IDE = CAN_ID_STD;
|
||
119 .loc 1 24 14
|
||
120 0014 0A4B ldr r3, .L8
|
||
121 0016 0022 movs r2, #0
|
||
122 0018 9A60 str r2, [r3, #8]
|
||
25:Core/Lib/can-halal/can-halal.c **** header.RTR = CAN_RTR_DATA;
|
||
123 .loc 1 25 14
|
||
124 001a 094B ldr r3, .L8
|
||
125 001c 0022 movs r2, #0
|
||
126 001e DA60 str r2, [r3, #12]
|
||
26:Core/Lib/can-halal/can-halal.c **** header.DLC = datalen;
|
||
127 .loc 1 26 14
|
||
128 0020 074A ldr r2, .L8
|
||
129 0022 7B68 ldr r3, [r7, #4]
|
||
130 0024 1361 str r3, [r2, #16]
|
||
27:Core/Lib/can-halal/can-halal.c **** uint32_t mailbox;
|
||
28:Core/Lib/can-halal/can-halal.c **** return HAL_CAN_AddTxMessage(hcan, &header, data, &mailbox);
|
||
131 .loc 1 28 10
|
||
132 0026 074B ldr r3, .L8+4
|
||
133 0028 1868 ldr r0, [r3]
|
||
134 002a 07F11403 add r3, r7, #20
|
||
135 002e BA68 ldr r2, [r7, #8]
|
||
136 0030 0349 ldr r1, .L8
|
||
137 0032 FFF7FEFF bl HAL_CAN_AddTxMessage
|
||
138 0036 0346 mov r3, r0
|
||
29:Core/Lib/can-halal/can-halal.c **** }
|
||
139 .loc 1 29 1
|
||
140 0038 1846 mov r0, r3
|
||
141 003a 1837 adds r7, r7, #24
|
||
142 .cfi_def_cfa_offset 8
|
||
143 003c BD46 mov sp, r7
|
||
144 .cfi_def_cfa_register 13
|
||
145 @ sp needed
|
||
146 003e 80BD pop {r7, pc}
|
||
147 .L9:
|
||
ARM GAS /tmp/ccI3jx5x.s page 4
|
||
|
||
|
||
148 .align 2
|
||
149 .L8:
|
||
150 0040 00000000 .word header.2
|
||
151 0044 00000000 .word hcan
|
||
152 .cfi_endproc
|
||
153 .LFE131:
|
||
155 .section .text.ftcan_add_filter,"ax",%progbits
|
||
156 .align 1
|
||
157 .global ftcan_add_filter
|
||
158 .syntax unified
|
||
159 .thumb
|
||
160 .thumb_func
|
||
162 ftcan_add_filter:
|
||
163 .LFB132:
|
||
30:Core/Lib/can-halal/can-halal.c ****
|
||
31:Core/Lib/can-halal/can-halal.c **** HAL_StatusTypeDef ftcan_add_filter(uint16_t id, uint16_t mask) {
|
||
164 .loc 1 31 64
|
||
165 .cfi_startproc
|
||
166 @ args = 0, pretend = 0, frame = 16
|
||
167 @ frame_needed = 1, uses_anonymous_args = 0
|
||
168 0000 80B5 push {r7, lr}
|
||
169 .cfi_def_cfa_offset 8
|
||
170 .cfi_offset 7, -8
|
||
171 .cfi_offset 14, -4
|
||
172 0002 84B0 sub sp, sp, #16
|
||
173 .cfi_def_cfa_offset 24
|
||
174 0004 00AF add r7, sp, #0
|
||
175 .cfi_def_cfa_register 7
|
||
176 0006 0346 mov r3, r0
|
||
177 0008 0A46 mov r2, r1
|
||
178 000a FB80 strh r3, [r7, #6] @ movhi
|
||
179 000c 1346 mov r3, r2 @ movhi
|
||
180 000e BB80 strh r3, [r7, #4] @ movhi
|
||
32:Core/Lib/can-halal/can-halal.c **** static uint32_t next_filter_no = 0;
|
||
33:Core/Lib/can-halal/can-halal.c **** static CAN_FilterTypeDef filter;
|
||
34:Core/Lib/can-halal/can-halal.c **** if (next_filter_no % 2 == 0) {
|
||
181 .loc 1 34 22
|
||
182 0010 264B ldr r3, .L16
|
||
183 0012 1B68 ldr r3, [r3]
|
||
184 0014 03F00103 and r3, r3, #1
|
||
185 .loc 1 34 6
|
||
186 0018 002B cmp r3, #0
|
||
187 001a 10D1 bne .L11
|
||
35:Core/Lib/can-halal/can-halal.c **** filter.FilterIdHigh = id << 5;
|
||
188 .loc 1 35 30
|
||
189 001c FB88 ldrh r3, [r7, #6]
|
||
190 001e 5B01 lsls r3, r3, #5
|
||
191 .loc 1 35 25
|
||
192 0020 234A ldr r2, .L16+4
|
||
193 0022 1360 str r3, [r2]
|
||
36:Core/Lib/can-halal/can-halal.c **** filter.FilterMaskIdHigh = mask << 5;
|
||
194 .loc 1 36 36
|
||
195 0024 BB88 ldrh r3, [r7, #4]
|
||
196 0026 5B01 lsls r3, r3, #5
|
||
197 .loc 1 36 29
|
||
198 0028 214A ldr r2, .L16+4
|
||
199 002a 9360 str r3, [r2, #8]
|
||
ARM GAS /tmp/ccI3jx5x.s page 5
|
||
|
||
|
||
37:Core/Lib/can-halal/can-halal.c **** filter.FilterIdLow = id << 5;
|
||
200 .loc 1 37 29
|
||
201 002c FB88 ldrh r3, [r7, #6]
|
||
202 002e 5B01 lsls r3, r3, #5
|
||
203 .loc 1 37 24
|
||
204 0030 1F4A ldr r2, .L16+4
|
||
205 0032 5360 str r3, [r2, #4]
|
||
38:Core/Lib/can-halal/can-halal.c **** filter.FilterMaskIdLow = mask << 5;
|
||
206 .loc 1 38 35
|
||
207 0034 BB88 ldrh r3, [r7, #4]
|
||
208 0036 5B01 lsls r3, r3, #5
|
||
209 .loc 1 38 28
|
||
210 0038 1D4A ldr r2, .L16+4
|
||
211 003a D360 str r3, [r2, #12]
|
||
212 003c 07E0 b .L12
|
||
213 .L11:
|
||
39:Core/Lib/can-halal/can-halal.c **** } else {
|
||
40:Core/Lib/can-halal/can-halal.c **** // Leave high filter untouched from the last configuration
|
||
41:Core/Lib/can-halal/can-halal.c **** filter.FilterIdLow = id << 5;
|
||
214 .loc 1 41 29
|
||
215 003e FB88 ldrh r3, [r7, #6]
|
||
216 0040 5B01 lsls r3, r3, #5
|
||
217 .loc 1 41 24
|
||
218 0042 1B4A ldr r2, .L16+4
|
||
219 0044 5360 str r3, [r2, #4]
|
||
42:Core/Lib/can-halal/can-halal.c **** filter.FilterMaskIdLow = mask << 5;
|
||
220 .loc 1 42 35
|
||
221 0046 BB88 ldrh r3, [r7, #4]
|
||
222 0048 5B01 lsls r3, r3, #5
|
||
223 .loc 1 42 28
|
||
224 004a 194A ldr r2, .L16+4
|
||
225 004c D360 str r3, [r2, #12]
|
||
226 .L12:
|
||
43:Core/Lib/can-halal/can-halal.c **** }
|
||
44:Core/Lib/can-halal/can-halal.c **** filter.FilterFIFOAssignment = CAN_FILTER_FIFO0;
|
||
227 .loc 1 44 31
|
||
228 004e 184B ldr r3, .L16+4
|
||
229 0050 0022 movs r2, #0
|
||
230 0052 1A61 str r2, [r3, #16]
|
||
45:Core/Lib/can-halal/can-halal.c **** filter.FilterBank = next_filter_no / 2;
|
||
231 .loc 1 45 38
|
||
232 0054 154B ldr r3, .L16
|
||
233 0056 1B68 ldr r3, [r3]
|
||
234 0058 5B08 lsrs r3, r3, #1
|
||
235 .loc 1 45 21
|
||
236 005a 154A ldr r2, .L16+4
|
||
237 005c 5361 str r3, [r2, #20]
|
||
46:Core/Lib/can-halal/can-halal.c **** if (filter.FilterBank > FTCAN_NUM_FILTERS + 1) {
|
||
238 .loc 1 46 13
|
||
239 005e 144B ldr r3, .L16+4
|
||
240 0060 5B69 ldr r3, [r3, #20]
|
||
241 .loc 1 46 6
|
||
242 0062 0E2B cmp r3, #14
|
||
243 0064 01D9 bls .L13
|
||
47:Core/Lib/can-halal/can-halal.c **** return HAL_ERROR;
|
||
244 .loc 1 47 12
|
||
245 0066 0123 movs r3, #1
|
||
ARM GAS /tmp/ccI3jx5x.s page 6
|
||
|
||
|
||
246 0068 1CE0 b .L14
|
||
247 .L13:
|
||
48:Core/Lib/can-halal/can-halal.c **** }
|
||
49:Core/Lib/can-halal/can-halal.c **** filter.FilterMode = CAN_FILTERMODE_IDMASK;
|
||
248 .loc 1 49 21
|
||
249 006a 114B ldr r3, .L16+4
|
||
250 006c 0022 movs r2, #0
|
||
251 006e 9A61 str r2, [r3, #24]
|
||
50:Core/Lib/can-halal/can-halal.c **** filter.FilterScale = CAN_FILTERSCALE_16BIT;
|
||
252 .loc 1 50 22
|
||
253 0070 0F4B ldr r3, .L16+4
|
||
254 0072 0022 movs r2, #0
|
||
255 0074 DA61 str r2, [r3, #28]
|
||
51:Core/Lib/can-halal/can-halal.c **** filter.FilterActivation = CAN_FILTER_ENABLE;
|
||
256 .loc 1 51 27
|
||
257 0076 0E4B ldr r3, .L16+4
|
||
258 0078 0122 movs r2, #1
|
||
259 007a 1A62 str r2, [r3, #32]
|
||
52:Core/Lib/can-halal/can-halal.c ****
|
||
53:Core/Lib/can-halal/can-halal.c **** // Disable slave filters
|
||
54:Core/Lib/can-halal/can-halal.c **** // TODO: Some STM32 have multiple CAN peripherals, and one uses the slave
|
||
55:Core/Lib/can-halal/can-halal.c **** // filter bank
|
||
56:Core/Lib/can-halal/can-halal.c **** filter.SlaveStartFilterBank = FTCAN_NUM_FILTERS;
|
||
260 .loc 1 56 31
|
||
261 007c 0C4B ldr r3, .L16+4
|
||
262 007e 0D22 movs r2, #13
|
||
263 0080 5A62 str r2, [r3, #36]
|
||
57:Core/Lib/can-halal/can-halal.c ****
|
||
58:Core/Lib/can-halal/can-halal.c **** HAL_StatusTypeDef status = HAL_CAN_ConfigFilter(hcan, &filter);
|
||
264 .loc 1 58 30
|
||
265 0082 0C4B ldr r3, .L16+8
|
||
266 0084 1B68 ldr r3, [r3]
|
||
267 0086 0A49 ldr r1, .L16+4
|
||
268 0088 1846 mov r0, r3
|
||
269 008a FFF7FEFF bl HAL_CAN_ConfigFilter
|
||
270 008e 0346 mov r3, r0
|
||
271 0090 FB73 strb r3, [r7, #15]
|
||
59:Core/Lib/can-halal/can-halal.c **** if (status == HAL_OK) {
|
||
272 .loc 1 59 6
|
||
273 0092 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
|
||
274 0094 002B cmp r3, #0
|
||
275 0096 04D1 bne .L15
|
||
60:Core/Lib/can-halal/can-halal.c **** next_filter_no++;
|
||
276 .loc 1 60 19
|
||
277 0098 044B ldr r3, .L16
|
||
278 009a 1B68 ldr r3, [r3]
|
||
279 009c 0133 adds r3, r3, #1
|
||
280 009e 034A ldr r2, .L16
|
||
281 00a0 1360 str r3, [r2]
|
||
282 .L15:
|
||
61:Core/Lib/can-halal/can-halal.c **** }
|
||
62:Core/Lib/can-halal/can-halal.c **** return status;
|
||
283 .loc 1 62 10
|
||
284 00a2 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2
|
||
285 .L14:
|
||
63:Core/Lib/can-halal/can-halal.c **** }
|
||
286 .loc 1 63 1
|
||
ARM GAS /tmp/ccI3jx5x.s page 7
|
||
|
||
|
||
287 00a4 1846 mov r0, r3
|
||
288 00a6 1037 adds r7, r7, #16
|
||
289 .cfi_def_cfa_offset 8
|
||
290 00a8 BD46 mov sp, r7
|
||
291 .cfi_def_cfa_register 13
|
||
292 @ sp needed
|
||
293 00aa 80BD pop {r7, pc}
|
||
294 .L17:
|
||
295 .align 2
|
||
296 .L16:
|
||
297 00ac 00000000 .word next_filter_no.1
|
||
298 00b0 00000000 .word filter.0
|
||
299 00b4 00000000 .word hcan
|
||
300 .cfi_endproc
|
||
301 .LFE132:
|
||
303 .section .text.HAL_CAN_RxFifo0MsgPendingCallback,"ax",%progbits
|
||
304 .align 1
|
||
305 .global HAL_CAN_RxFifo0MsgPendingCallback
|
||
306 .syntax unified
|
||
307 .thumb
|
||
308 .thumb_func
|
||
310 HAL_CAN_RxFifo0MsgPendingCallback:
|
||
311 .LFB133:
|
||
64:Core/Lib/can-halal/can-halal.c ****
|
||
65:Core/Lib/can-halal/can-halal.c **** void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *handle) {
|
||
312 .loc 1 65 67
|
||
313 .cfi_startproc
|
||
314 @ args = 0, pretend = 0, frame = 48
|
||
315 @ frame_needed = 1, uses_anonymous_args = 0
|
||
316 0000 80B5 push {r7, lr}
|
||
317 .cfi_def_cfa_offset 8
|
||
318 .cfi_offset 7, -8
|
||
319 .cfi_offset 14, -4
|
||
320 0002 8CB0 sub sp, sp, #48
|
||
321 .cfi_def_cfa_offset 56
|
||
322 0004 00AF add r7, sp, #0
|
||
323 .cfi_def_cfa_register 7
|
||
324 0006 7860 str r0, [r7, #4]
|
||
66:Core/Lib/can-halal/can-halal.c **** if (handle != hcan) {
|
||
325 .loc 1 66 14
|
||
326 0008 124B ldr r3, .L27
|
||
327 000a 1B68 ldr r3, [r3]
|
||
328 .loc 1 66 6
|
||
329 000c 7A68 ldr r2, [r7, #4]
|
||
330 000e 9A42 cmp r2, r3
|
||
331 0010 17D1 bne .L24
|
||
67:Core/Lib/can-halal/can-halal.c **** return;
|
||
68:Core/Lib/can-halal/can-halal.c **** }
|
||
69:Core/Lib/can-halal/can-halal.c **** CAN_RxHeaderTypeDef header;
|
||
70:Core/Lib/can-halal/can-halal.c **** uint8_t data[8];
|
||
71:Core/Lib/can-halal/can-halal.c **** if (HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO0, &header, data) != HAL_OK) {
|
||
332 .loc 1 71 7
|
||
333 0012 104B ldr r3, .L27
|
||
334 0014 1868 ldr r0, [r3]
|
||
335 0016 07F10C03 add r3, r7, #12
|
||
336 001a 07F11402 add r2, r7, #20
|
||
337 001e 0021 movs r1, #0
|
||
ARM GAS /tmp/ccI3jx5x.s page 8
|
||
|
||
|
||
338 0020 FFF7FEFF bl HAL_CAN_GetRxMessage
|
||
339 0024 0346 mov r3, r0
|
||
340 .loc 1 71 6 discriminator 1
|
||
341 0026 002B cmp r3, #0
|
||
342 0028 0DD1 bne .L25
|
||
72:Core/Lib/can-halal/can-halal.c **** return;
|
||
73:Core/Lib/can-halal/can-halal.c **** }
|
||
74:Core/Lib/can-halal/can-halal.c ****
|
||
75:Core/Lib/can-halal/can-halal.c **** if (header.IDE != CAN_ID_STD) {
|
||
343 .loc 1 75 13
|
||
344 002a FB69 ldr r3, [r7, #28]
|
||
345 .loc 1 75 6
|
||
346 002c 002B cmp r3, #0
|
||
347 002e 0CD1 bne .L26
|
||
76:Core/Lib/can-halal/can-halal.c **** return;
|
||
77:Core/Lib/can-halal/can-halal.c **** }
|
||
78:Core/Lib/can-halal/can-halal.c ****
|
||
79:Core/Lib/can-halal/can-halal.c **** ftcan_msg_received_cb(header.StdId, header.DLC, data);
|
||
348 .loc 1 79 31
|
||
349 0030 7B69 ldr r3, [r7, #20]
|
||
350 .loc 1 79 3
|
||
351 0032 9BB2 uxth r3, r3
|
||
352 .loc 1 79 45
|
||
353 0034 796A ldr r1, [r7, #36]
|
||
354 .loc 1 79 3
|
||
355 0036 07F10C02 add r2, r7, #12
|
||
356 003a 1846 mov r0, r3
|
||
357 003c FFF7FEFF bl ftcan_msg_received_cb
|
||
358 0040 04E0 b .L18
|
||
359 .L24:
|
||
67:Core/Lib/can-halal/can-halal.c **** }
|
||
360 .loc 1 67 5
|
||
361 0042 00BF nop
|
||
362 0044 02E0 b .L18
|
||
363 .L25:
|
||
72:Core/Lib/can-halal/can-halal.c **** return;
|
||
364 .loc 1 72 5
|
||
365 0046 00BF nop
|
||
366 0048 00E0 b .L18
|
||
367 .L26:
|
||
76:Core/Lib/can-halal/can-halal.c **** return;
|
||
368 .loc 1 76 5
|
||
369 004a 00BF nop
|
||
370 .L18:
|
||
80:Core/Lib/can-halal/can-halal.c **** }
|
||
371 .loc 1 80 1
|
||
372 004c 3037 adds r7, r7, #48
|
||
373 .cfi_def_cfa_offset 8
|
||
374 004e BD46 mov sp, r7
|
||
375 .cfi_def_cfa_register 13
|
||
376 @ sp needed
|
||
377 0050 80BD pop {r7, pc}
|
||
378 .L28:
|
||
379 0052 00BF .align 2
|
||
380 .L27:
|
||
381 0054 00000000 .word hcan
|
||
382 .cfi_endproc
|
||
ARM GAS /tmp/ccI3jx5x.s page 9
|
||
|
||
|
||
383 .LFE133:
|
||
385 .section .text.ftcan_msg_received_cb,"ax",%progbits
|
||
386 .align 1
|
||
387 .weak ftcan_msg_received_cb
|
||
388 .syntax unified
|
||
389 .thumb
|
||
390 .thumb_func
|
||
392 ftcan_msg_received_cb:
|
||
393 .LFB134:
|
||
81:Core/Lib/can-halal/can-halal.c **** #elif defined(FTCAN_IS_FDCAN)
|
||
82:Core/Lib/can-halal/can-halal.c **** static FDCAN_HandleTypeDef *hcan;
|
||
83:Core/Lib/can-halal/can-halal.c ****
|
||
84:Core/Lib/can-halal/can-halal.c **** HAL_StatusTypeDef ftcan_init(FDCAN_HandleTypeDef *handle) {
|
||
85:Core/Lib/can-halal/can-halal.c **** hcan = handle;
|
||
86:Core/Lib/can-halal/can-halal.c ****
|
||
87:Core/Lib/can-halal/can-halal.c **** HAL_StatusTypeDef status =
|
||
88:Core/Lib/can-halal/can-halal.c **** HAL_FDCAN_ActivateNotification(hcan, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0);
|
||
89:Core/Lib/can-halal/can-halal.c **** if (status != HAL_OK) {
|
||
90:Core/Lib/can-halal/can-halal.c **** return status;
|
||
91:Core/Lib/can-halal/can-halal.c **** }
|
||
92:Core/Lib/can-halal/can-halal.c **** // Reject non-matching messages
|
||
93:Core/Lib/can-halal/can-halal.c **** status =
|
||
94:Core/Lib/can-halal/can-halal.c **** HAL_FDCAN_ConfigGlobalFilter(hcan, FDCAN_REJECT, FDCAN_REJECT,
|
||
95:Core/Lib/can-halal/can-halal.c **** FDCAN_REJECT_REMOTE, FDCAN_REJECT_REMOTE);
|
||
96:Core/Lib/can-halal/can-halal.c **** if (status != HAL_OK) {
|
||
97:Core/Lib/can-halal/can-halal.c **** return status;
|
||
98:Core/Lib/can-halal/can-halal.c **** }
|
||
99:Core/Lib/can-halal/can-halal.c ****
|
||
100:Core/Lib/can-halal/can-halal.c **** return HAL_FDCAN_Start(hcan);
|
||
101:Core/Lib/can-halal/can-halal.c **** }
|
||
102:Core/Lib/can-halal/can-halal.c ****
|
||
103:Core/Lib/can-halal/can-halal.c **** HAL_StatusTypeDef ftcan_transmit(uint16_t id, const uint8_t *data,
|
||
104:Core/Lib/can-halal/can-halal.c **** size_t datalen) {
|
||
105:Core/Lib/can-halal/can-halal.c **** static FDCAN_TxHeaderTypeDef header;
|
||
106:Core/Lib/can-halal/can-halal.c **** header.Identifier = id;
|
||
107:Core/Lib/can-halal/can-halal.c **** header.IdType = FDCAN_STANDARD_ID;
|
||
108:Core/Lib/can-halal/can-halal.c **** header.TxFrameType = FDCAN_DATA_FRAME;
|
||
109:Core/Lib/can-halal/can-halal.c **** switch (datalen) {
|
||
110:Core/Lib/can-halal/can-halal.c **** case 0:
|
||
111:Core/Lib/can-halal/can-halal.c **** header.DataLength = FDCAN_DLC_BYTES_0;
|
||
112:Core/Lib/can-halal/can-halal.c **** break;
|
||
113:Core/Lib/can-halal/can-halal.c **** case 1:
|
||
114:Core/Lib/can-halal/can-halal.c **** header.DataLength = FDCAN_DLC_BYTES_1;
|
||
115:Core/Lib/can-halal/can-halal.c **** break;
|
||
116:Core/Lib/can-halal/can-halal.c **** case 2:
|
||
117:Core/Lib/can-halal/can-halal.c **** header.DataLength = FDCAN_DLC_BYTES_2;
|
||
118:Core/Lib/can-halal/can-halal.c **** break;
|
||
119:Core/Lib/can-halal/can-halal.c **** case 3:
|
||
120:Core/Lib/can-halal/can-halal.c **** header.DataLength = FDCAN_DLC_BYTES_3;
|
||
121:Core/Lib/can-halal/can-halal.c **** break;
|
||
122:Core/Lib/can-halal/can-halal.c **** case 4:
|
||
123:Core/Lib/can-halal/can-halal.c **** header.DataLength = FDCAN_DLC_BYTES_4;
|
||
124:Core/Lib/can-halal/can-halal.c **** break;
|
||
125:Core/Lib/can-halal/can-halal.c **** case 5:
|
||
126:Core/Lib/can-halal/can-halal.c **** header.DataLength = FDCAN_DLC_BYTES_5;
|
||
127:Core/Lib/can-halal/can-halal.c **** break;
|
||
128:Core/Lib/can-halal/can-halal.c **** case 6:
|
||
ARM GAS /tmp/ccI3jx5x.s page 10
|
||
|
||
|
||
129:Core/Lib/can-halal/can-halal.c **** header.DataLength = FDCAN_DLC_BYTES_6;
|
||
130:Core/Lib/can-halal/can-halal.c **** break;
|
||
131:Core/Lib/can-halal/can-halal.c **** case 7:
|
||
132:Core/Lib/can-halal/can-halal.c **** header.DataLength = FDCAN_DLC_BYTES_7;
|
||
133:Core/Lib/can-halal/can-halal.c **** break;
|
||
134:Core/Lib/can-halal/can-halal.c **** case 8:
|
||
135:Core/Lib/can-halal/can-halal.c **** default:
|
||
136:Core/Lib/can-halal/can-halal.c **** header.DataLength = FDCAN_DLC_BYTES_8;
|
||
137:Core/Lib/can-halal/can-halal.c **** break;
|
||
138:Core/Lib/can-halal/can-halal.c **** }
|
||
139:Core/Lib/can-halal/can-halal.c **** header.ErrorStateIndicator = FDCAN_ESI_PASSIVE;
|
||
140:Core/Lib/can-halal/can-halal.c **** header.BitRateSwitch = FDCAN_BRS_OFF;
|
||
141:Core/Lib/can-halal/can-halal.c **** header.FDFormat = FDCAN_CLASSIC_CAN;
|
||
142:Core/Lib/can-halal/can-halal.c **** header.TxEventFifoControl = FDCAN_NO_TX_EVENTS;
|
||
143:Core/Lib/can-halal/can-halal.c ****
|
||
144:Core/Lib/can-halal/can-halal.c **** // HAL_FDCAN_AddMessageToTxFifoQ doesn't modify the data, but it's not marked
|
||
145:Core/Lib/can-halal/can-halal.c **** // as const for some reason.
|
||
146:Core/Lib/can-halal/can-halal.c **** uint8_t *data_nonconst = (uint8_t *)data;
|
||
147:Core/Lib/can-halal/can-halal.c **** return HAL_FDCAN_AddMessageToTxFifoQ(hcan, &header, data_nonconst);
|
||
148:Core/Lib/can-halal/can-halal.c **** }
|
||
149:Core/Lib/can-halal/can-halal.c ****
|
||
150:Core/Lib/can-halal/can-halal.c **** HAL_StatusTypeDef ftcan_add_filter(uint16_t id, uint16_t mask) {
|
||
151:Core/Lib/can-halal/can-halal.c **** static uint32_t next_filter_no = 0;
|
||
152:Core/Lib/can-halal/can-halal.c **** static FDCAN_FilterTypeDef filter;
|
||
153:Core/Lib/can-halal/can-halal.c **** filter.IdType = FDCAN_STANDARD_ID;
|
||
154:Core/Lib/can-halal/can-halal.c **** filter.FilterIndex = next_filter_no;
|
||
155:Core/Lib/can-halal/can-halal.c **** if (filter.FilterIndex > FTCAN_NUM_FILTERS + 1) {
|
||
156:Core/Lib/can-halal/can-halal.c **** return HAL_ERROR;
|
||
157:Core/Lib/can-halal/can-halal.c **** }
|
||
158:Core/Lib/can-halal/can-halal.c **** filter.FilterType = FDCAN_FILTER_MASK;
|
||
159:Core/Lib/can-halal/can-halal.c **** filter.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
|
||
160:Core/Lib/can-halal/can-halal.c **** filter.FilterID1 = id;
|
||
161:Core/Lib/can-halal/can-halal.c **** filter.FilterID2 = mask;
|
||
162:Core/Lib/can-halal/can-halal.c ****
|
||
163:Core/Lib/can-halal/can-halal.c **** HAL_StatusTypeDef status = HAL_FDCAN_ConfigFilter(hcan, &filter);
|
||
164:Core/Lib/can-halal/can-halal.c **** if (status == HAL_OK) {
|
||
165:Core/Lib/can-halal/can-halal.c **** next_filter_no++;
|
||
166:Core/Lib/can-halal/can-halal.c **** }
|
||
167:Core/Lib/can-halal/can-halal.c **** return status;
|
||
168:Core/Lib/can-halal/can-halal.c **** }
|
||
169:Core/Lib/can-halal/can-halal.c ****
|
||
170:Core/Lib/can-halal/can-halal.c **** void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *handle,
|
||
171:Core/Lib/can-halal/can-halal.c **** uint32_t RxFifo0ITs) {
|
||
172:Core/Lib/can-halal/can-halal.c **** if (handle != hcan || (RxFifo0ITs & FDCAN_IT_RX_FIFO0_NEW_MESSAGE) == RESET) {
|
||
173:Core/Lib/can-halal/can-halal.c **** return;
|
||
174:Core/Lib/can-halal/can-halal.c **** }
|
||
175:Core/Lib/can-halal/can-halal.c ****
|
||
176:Core/Lib/can-halal/can-halal.c **** static FDCAN_RxHeaderTypeDef header;
|
||
177:Core/Lib/can-halal/can-halal.c **** static uint8_t data[8];
|
||
178:Core/Lib/can-halal/can-halal.c **** if (HAL_FDCAN_GetRxMessage(hcan, FDCAN_RX_FIFO0, &header, data) != HAL_OK) {
|
||
179:Core/Lib/can-halal/can-halal.c **** return;
|
||
180:Core/Lib/can-halal/can-halal.c **** }
|
||
181:Core/Lib/can-halal/can-halal.c ****
|
||
182:Core/Lib/can-halal/can-halal.c **** if (header.FDFormat != FDCAN_CLASSIC_CAN ||
|
||
183:Core/Lib/can-halal/can-halal.c **** header.RxFrameType != FDCAN_DATA_FRAME ||
|
||
184:Core/Lib/can-halal/can-halal.c **** header.IdType != FDCAN_STANDARD_ID) {
|
||
185:Core/Lib/can-halal/can-halal.c **** return;
|
||
ARM GAS /tmp/ccI3jx5x.s page 11
|
||
|
||
|
||
186:Core/Lib/can-halal/can-halal.c **** }
|
||
187:Core/Lib/can-halal/can-halal.c ****
|
||
188:Core/Lib/can-halal/can-halal.c **** size_t datalen;
|
||
189:Core/Lib/can-halal/can-halal.c **** switch (header.DataLength) {
|
||
190:Core/Lib/can-halal/can-halal.c **** case FDCAN_DLC_BYTES_0:
|
||
191:Core/Lib/can-halal/can-halal.c **** datalen = 0;
|
||
192:Core/Lib/can-halal/can-halal.c **** break;
|
||
193:Core/Lib/can-halal/can-halal.c **** case FDCAN_DLC_BYTES_1:
|
||
194:Core/Lib/can-halal/can-halal.c **** datalen = 1;
|
||
195:Core/Lib/can-halal/can-halal.c **** break;
|
||
196:Core/Lib/can-halal/can-halal.c **** case FDCAN_DLC_BYTES_2:
|
||
197:Core/Lib/can-halal/can-halal.c **** datalen = 2;
|
||
198:Core/Lib/can-halal/can-halal.c **** break;
|
||
199:Core/Lib/can-halal/can-halal.c **** case FDCAN_DLC_BYTES_3:
|
||
200:Core/Lib/can-halal/can-halal.c **** datalen = 3;
|
||
201:Core/Lib/can-halal/can-halal.c **** break;
|
||
202:Core/Lib/can-halal/can-halal.c **** case FDCAN_DLC_BYTES_4:
|
||
203:Core/Lib/can-halal/can-halal.c **** datalen = 4;
|
||
204:Core/Lib/can-halal/can-halal.c **** break;
|
||
205:Core/Lib/can-halal/can-halal.c **** case FDCAN_DLC_BYTES_5:
|
||
206:Core/Lib/can-halal/can-halal.c **** datalen = 5;
|
||
207:Core/Lib/can-halal/can-halal.c **** break;
|
||
208:Core/Lib/can-halal/can-halal.c **** case FDCAN_DLC_BYTES_6:
|
||
209:Core/Lib/can-halal/can-halal.c **** datalen = 6;
|
||
210:Core/Lib/can-halal/can-halal.c **** break;
|
||
211:Core/Lib/can-halal/can-halal.c **** case FDCAN_DLC_BYTES_7:
|
||
212:Core/Lib/can-halal/can-halal.c **** datalen = 7;
|
||
213:Core/Lib/can-halal/can-halal.c **** break;
|
||
214:Core/Lib/can-halal/can-halal.c **** case FDCAN_DLC_BYTES_8:
|
||
215:Core/Lib/can-halal/can-halal.c **** datalen = 8;
|
||
216:Core/Lib/can-halal/can-halal.c **** break;
|
||
217:Core/Lib/can-halal/can-halal.c **** default:
|
||
218:Core/Lib/can-halal/can-halal.c **** return;
|
||
219:Core/Lib/can-halal/can-halal.c **** }
|
||
220:Core/Lib/can-halal/can-halal.c ****
|
||
221:Core/Lib/can-halal/can-halal.c **** ftcan_msg_received_cb(header.Identifier, datalen, data);
|
||
222:Core/Lib/can-halal/can-halal.c **** }
|
||
223:Core/Lib/can-halal/can-halal.c **** #endif
|
||
224:Core/Lib/can-halal/can-halal.c ****
|
||
225:Core/Lib/can-halal/can-halal.c **** __weak void ftcan_msg_received_cb(uint16_t id, size_t datalen,
|
||
226:Core/Lib/can-halal/can-halal.c **** const uint8_t *data) {}
|
||
394 .loc 1 226 56
|
||
395 .cfi_startproc
|
||
396 @ args = 0, pretend = 0, frame = 16
|
||
397 @ frame_needed = 1, uses_anonymous_args = 0
|
||
398 @ link register save eliminated.
|
||
399 0000 80B4 push {r7}
|
||
400 .cfi_def_cfa_offset 4
|
||
401 .cfi_offset 7, -4
|
||
402 0002 85B0 sub sp, sp, #20
|
||
403 .cfi_def_cfa_offset 24
|
||
404 0004 00AF add r7, sp, #0
|
||
405 .cfi_def_cfa_register 7
|
||
406 0006 0346 mov r3, r0
|
||
407 0008 B960 str r1, [r7, #8]
|
||
408 000a 7A60 str r2, [r7, #4]
|
||
409 000c FB81 strh r3, [r7, #14] @ movhi
|
||
ARM GAS /tmp/ccI3jx5x.s page 12
|
||
|
||
|
||
410 .loc 1 226 57
|
||
411 000e 00BF nop
|
||
412 0010 1437 adds r7, r7, #20
|
||
413 .cfi_def_cfa_offset 4
|
||
414 0012 BD46 mov sp, r7
|
||
415 .cfi_def_cfa_register 13
|
||
416 @ sp needed
|
||
417 0014 5DF8047B ldr r7, [sp], #4
|
||
418 .cfi_restore 7
|
||
419 .cfi_def_cfa_offset 0
|
||
420 0018 7047 bx lr
|
||
421 .cfi_endproc
|
||
422 .LFE134:
|
||
424 .section .text.ftcan_unmarshal_unsigned,"ax",%progbits
|
||
425 .align 1
|
||
426 .global ftcan_unmarshal_unsigned
|
||
427 .syntax unified
|
||
428 .thumb
|
||
429 .thumb_func
|
||
431 ftcan_unmarshal_unsigned:
|
||
432 .LFB135:
|
||
227:Core/Lib/can-halal/can-halal.c ****
|
||
228:Core/Lib/can-halal/can-halal.c **** uint64_t ftcan_unmarshal_unsigned(const uint8_t **data_ptr, size_t num_bytes) {
|
||
433 .loc 1 228 79
|
||
434 .cfi_startproc
|
||
435 @ args = 0, pretend = 0, frame = 24
|
||
436 @ frame_needed = 1, uses_anonymous_args = 0
|
||
437 @ link register save eliminated.
|
||
438 0000 2DE9B003 push {r4, r5, r7, r8, r9}
|
||
439 .cfi_def_cfa_offset 20
|
||
440 .cfi_offset 4, -20
|
||
441 .cfi_offset 5, -16
|
||
442 .cfi_offset 7, -12
|
||
443 .cfi_offset 8, -8
|
||
444 .cfi_offset 9, -4
|
||
445 0004 87B0 sub sp, sp, #28
|
||
446 .cfi_def_cfa_offset 48
|
||
447 0006 00AF add r7, sp, #0
|
||
448 .cfi_def_cfa_register 7
|
||
449 0008 7860 str r0, [r7, #4]
|
||
450 000a 3960 str r1, [r7]
|
||
229:Core/Lib/can-halal/can-halal.c **** if (num_bytes > 8) {
|
||
451 .loc 1 229 6
|
||
452 000c 3B68 ldr r3, [r7]
|
||
453 000e 082B cmp r3, #8
|
||
454 0010 01D9 bls .L31
|
||
230:Core/Lib/can-halal/can-halal.c **** num_bytes = 8;
|
||
455 .loc 1 230 15
|
||
456 0012 0823 movs r3, #8
|
||
457 0014 3B60 str r3, [r7]
|
||
458 .L31:
|
||
231:Core/Lib/can-halal/can-halal.c **** }
|
||
232:Core/Lib/can-halal/can-halal.c ****
|
||
233:Core/Lib/can-halal/can-halal.c **** const uint8_t *data = *data_ptr;
|
||
459 .loc 1 233 18
|
||
460 0016 7B68 ldr r3, [r7, #4]
|
||
461 0018 1B68 ldr r3, [r3]
|
||
ARM GAS /tmp/ccI3jx5x.s page 13
|
||
|
||
|
||
462 001a BB60 str r3, [r7, #8]
|
||
234:Core/Lib/can-halal/can-halal.c **** uint64_t result = 0;
|
||
463 .loc 1 234 12
|
||
464 001c 4FF00002 mov r2, #0
|
||
465 0020 4FF00003 mov r3, #0
|
||
466 0024 C7E90423 strd r2, [r7, #16]
|
||
467 .LBB2:
|
||
235:Core/Lib/can-halal/can-halal.c **** for (size_t i = 0; i < num_bytes; i++) {
|
||
468 .loc 1 235 15
|
||
469 0028 0023 movs r3, #0
|
||
470 002a FB60 str r3, [r7, #12]
|
||
471 .loc 1 235 3
|
||
472 002c 1EE0 b .L32
|
||
473 .L33:
|
||
236:Core/Lib/can-halal/can-halal.c **** result <<= 8;
|
||
474 .loc 1 236 12
|
||
475 002e D7E90401 ldrd r0, [r7, #16]
|
||
476 0032 4FF00002 mov r2, #0
|
||
477 0036 4FF00003 mov r3, #0
|
||
478 003a 0B02 lsls r3, r1, #8
|
||
479 003c 43EA1063 orr r3, r3, r0, lsr #24
|
||
480 0040 0202 lsls r2, r0, #8
|
||
481 0042 C7E90423 strd r2, [r7, #16]
|
||
237:Core/Lib/can-halal/can-halal.c **** result |= data[i];
|
||
482 .loc 1 237 19
|
||
483 0046 BA68 ldr r2, [r7, #8]
|
||
484 0048 FB68 ldr r3, [r7, #12]
|
||
485 004a 1344 add r3, r3, r2
|
||
486 004c 1B78 ldrb r3, [r3] @ zero_extendqisi2
|
||
487 004e DBB2 uxtb r3, r3
|
||
488 0050 0022 movs r2, #0
|
||
489 0052 1C46 mov r4, r3
|
||
490 0054 1546 mov r5, r2
|
||
491 .loc 1 237 12
|
||
492 0056 D7E90423 ldrd r2, [r7, #16]
|
||
493 005a 42EA0408 orr r8, r2, r4
|
||
494 005e 43EA0509 orr r9, r3, r5
|
||
495 0062 C7E90489 strd r8, [r7, #16]
|
||
235:Core/Lib/can-halal/can-halal.c **** for (size_t i = 0; i < num_bytes; i++) {
|
||
496 .loc 1 235 38 discriminator 3
|
||
497 0066 FB68 ldr r3, [r7, #12]
|
||
498 0068 0133 adds r3, r3, #1
|
||
499 006a FB60 str r3, [r7, #12]
|
||
500 .L32:
|
||
235:Core/Lib/can-halal/can-halal.c **** for (size_t i = 0; i < num_bytes; i++) {
|
||
501 .loc 1 235 24 discriminator 1
|
||
502 006c FA68 ldr r2, [r7, #12]
|
||
503 006e 3B68 ldr r3, [r7]
|
||
504 0070 9A42 cmp r2, r3
|
||
505 0072 DCD3 bcc .L33
|
||
506 .LBE2:
|
||
238:Core/Lib/can-halal/can-halal.c **** }
|
||
239:Core/Lib/can-halal/can-halal.c **** *data_ptr += num_bytes;
|
||
507 .loc 1 239 3
|
||
508 0074 7B68 ldr r3, [r7, #4]
|
||
509 0076 1A68 ldr r2, [r3]
|
||
510 .loc 1 239 13
|
||
ARM GAS /tmp/ccI3jx5x.s page 14
|
||
|
||
|
||
511 0078 3B68 ldr r3, [r7]
|
||
512 007a 1A44 add r2, r2, r3
|
||
513 007c 7B68 ldr r3, [r7, #4]
|
||
514 007e 1A60 str r2, [r3]
|
||
240:Core/Lib/can-halal/can-halal.c **** return result;
|
||
515 .loc 1 240 10
|
||
516 0080 D7E90423 ldrd r2, [r7, #16]
|
||
241:Core/Lib/can-halal/can-halal.c **** }
|
||
517 .loc 1 241 1
|
||
518 0084 1046 mov r0, r2
|
||
519 0086 1946 mov r1, r3
|
||
520 0088 1C37 adds r7, r7, #28
|
||
521 .cfi_def_cfa_offset 20
|
||
522 008a BD46 mov sp, r7
|
||
523 .cfi_def_cfa_register 13
|
||
524 @ sp needed
|
||
525 008c BDE8B003 pop {r4, r5, r7, r8, r9}
|
||
526 .cfi_restore 9
|
||
527 .cfi_restore 8
|
||
528 .cfi_restore 7
|
||
529 .cfi_restore 5
|
||
530 .cfi_restore 4
|
||
531 .cfi_def_cfa_offset 0
|
||
532 0090 7047 bx lr
|
||
533 .cfi_endproc
|
||
534 .LFE135:
|
||
536 .section .text.ftcan_unmarshal_signed,"ax",%progbits
|
||
537 .align 1
|
||
538 .global ftcan_unmarshal_signed
|
||
539 .syntax unified
|
||
540 .thumb
|
||
541 .thumb_func
|
||
543 ftcan_unmarshal_signed:
|
||
544 .LFB136:
|
||
242:Core/Lib/can-halal/can-halal.c ****
|
||
243:Core/Lib/can-halal/can-halal.c **** int64_t ftcan_unmarshal_signed(const uint8_t **data_ptr, size_t num_bytes) {
|
||
545 .loc 1 243 76
|
||
546 .cfi_startproc
|
||
547 @ args = 0, pretend = 0, frame = 32
|
||
548 @ frame_needed = 1, uses_anonymous_args = 0
|
||
549 0000 2DE9F043 push {r4, r5, r6, r7, r8, r9, lr}
|
||
550 .cfi_def_cfa_offset 28
|
||
551 .cfi_offset 4, -28
|
||
552 .cfi_offset 5, -24
|
||
553 .cfi_offset 6, -20
|
||
554 .cfi_offset 7, -16
|
||
555 .cfi_offset 8, -12
|
||
556 .cfi_offset 9, -8
|
||
557 .cfi_offset 14, -4
|
||
558 0004 89B0 sub sp, sp, #36
|
||
559 .cfi_def_cfa_offset 64
|
||
560 0006 00AF add r7, sp, #0
|
||
561 .cfi_def_cfa_register 7
|
||
562 0008 7860 str r0, [r7, #4]
|
||
563 000a 3960 str r1, [r7]
|
||
244:Core/Lib/can-halal/can-halal.c **** if (num_bytes > 8) {
|
||
564 .loc 1 244 6
|
||
ARM GAS /tmp/ccI3jx5x.s page 15
|
||
|
||
|
||
565 000c 3B68 ldr r3, [r7]
|
||
566 000e 082B cmp r3, #8
|
||
567 0010 01D9 bls .L36
|
||
245:Core/Lib/can-halal/can-halal.c **** num_bytes = 8;
|
||
568 .loc 1 245 15
|
||
569 0012 0823 movs r3, #8
|
||
570 0014 3B60 str r3, [r7]
|
||
571 .L36:
|
||
246:Core/Lib/can-halal/can-halal.c **** }
|
||
247:Core/Lib/can-halal/can-halal.c ****
|
||
248:Core/Lib/can-halal/can-halal.c **** uint64_t result_unsigned = ftcan_unmarshal_unsigned(data_ptr, num_bytes);
|
||
572 .loc 1 248 30
|
||
573 0016 3968 ldr r1, [r7]
|
||
574 0018 7868 ldr r0, [r7, #4]
|
||
575 001a FFF7FEFF bl ftcan_unmarshal_unsigned
|
||
576 001e 0246 mov r2, r0
|
||
577 0020 0B46 mov r3, r1
|
||
578 .loc 1 248 12 discriminator 1
|
||
579 0022 C7E90423 strd r2, [r7, #16]
|
||
249:Core/Lib/can-halal/can-halal.c **** // Sign extend by shifting left, then copying to a signed int and shifting
|
||
250:Core/Lib/can-halal/can-halal.c **** // back to the right
|
||
251:Core/Lib/can-halal/can-halal.c **** size_t diff_to_64 = 64 - num_bytes * 8;
|
||
580 .loc 1 251 26
|
||
581 0026 3B68 ldr r3, [r7]
|
||
582 0028 C3F10803 rsb r3, r3, #8
|
||
583 .loc 1 251 10
|
||
584 002c DB00 lsls r3, r3, #3
|
||
585 002e FB61 str r3, [r7, #28]
|
||
252:Core/Lib/can-halal/can-halal.c **** result_unsigned <<= diff_to_64;
|
||
586 .loc 1 252 19
|
||
587 0030 D7E90423 ldrd r2, [r7, #16]
|
||
588 0034 F969 ldr r1, [r7, #28]
|
||
589 0036 A1F12006 sub r6, r1, #32
|
||
590 003a C1F12000 rsb r0, r1, #32
|
||
591 003e 03FA01F5 lsl r5, r3, r1
|
||
592 0042 02FA06F6 lsl r6, r2, r6
|
||
593 0046 3543 orrs r5, r5, r6
|
||
594 0048 22FA00F0 lsr r0, r2, r0
|
||
595 004c 0543 orrs r5, r5, r0
|
||
596 004e 02FA01F4 lsl r4, r2, r1
|
||
597 0052 C7E90445 strd r4, [r7, #16]
|
||
253:Core/Lib/can-halal/can-halal.c **** int64_t result;
|
||
254:Core/Lib/can-halal/can-halal.c **** memcpy(&result, &result_unsigned, 8);
|
||
598 .loc 1 254 3
|
||
599 0056 D7E90423 ldrd r2, [r7, #16]
|
||
600 005a C7E90223 strd r2, [r7, #8]
|
||
255:Core/Lib/can-halal/can-halal.c **** return result >> diff_to_64;
|
||
601 .loc 1 255 17
|
||
602 005e D7E90223 ldrd r2, [r7, #8]
|
||
603 0062 F969 ldr r1, [r7, #28]
|
||
604 0064 C1F12004 rsb r4, r1, #32
|
||
605 0068 B1F12000 subs r0, r1, #32
|
||
606 006c 22FA01F8 lsr r8, r2, r1
|
||
607 0070 03FA04F4 lsl r4, r3, r4
|
||
608 0074 48EA0408 orr r8, r8, r4
|
||
609 0078 03D4 bmi .L37
|
||
610 007a 43FA00F0 asr r0, r3, r0
|
||
ARM GAS /tmp/ccI3jx5x.s page 16
|
||
|
||
|
||
611 007e 48EA0008 orr r8, r8, r0
|
||
612 .L37:
|
||
613 0082 43FA01F9 asr r9, r3, r1
|
||
614 0086 4246 mov r2, r8
|
||
615 0088 4B46 mov r3, r9
|
||
256:Core/Lib/can-halal/can-halal.c **** }
|
||
616 .loc 1 256 1
|
||
617 008a 1046 mov r0, r2
|
||
618 008c 1946 mov r1, r3
|
||
619 008e 2437 adds r7, r7, #36
|
||
620 .cfi_def_cfa_offset 28
|
||
621 0090 BD46 mov sp, r7
|
||
622 .cfi_def_cfa_register 13
|
||
623 @ sp needed
|
||
624 0092 BDE8F083 pop {r4, r5, r6, r7, r8, r9, pc}
|
||
625 .cfi_endproc
|
||
626 .LFE136:
|
||
628 .section .text.ftcan_marshal_unsigned,"ax",%progbits
|
||
629 .align 1
|
||
630 .global ftcan_marshal_unsigned
|
||
631 .syntax unified
|
||
632 .thumb
|
||
633 .thumb_func
|
||
635 ftcan_marshal_unsigned:
|
||
636 .LFB137:
|
||
257:Core/Lib/can-halal/can-halal.c ****
|
||
258:Core/Lib/can-halal/can-halal.c **** uint8_t *ftcan_marshal_unsigned(uint8_t *data, uint64_t val, size_t num_bytes) {
|
||
637 .loc 1 258 80
|
||
638 .cfi_startproc
|
||
639 @ args = 4, pretend = 0, frame = 24
|
||
640 @ frame_needed = 1, uses_anonymous_args = 0
|
||
641 @ link register save eliminated.
|
||
642 0000 80B4 push {r7}
|
||
643 .cfi_def_cfa_offset 4
|
||
644 .cfi_offset 7, -4
|
||
645 0002 87B0 sub sp, sp, #28
|
||
646 .cfi_def_cfa_offset 32
|
||
647 0004 00AF add r7, sp, #0
|
||
648 .cfi_def_cfa_register 7
|
||
649 0006 F860 str r0, [r7, #12]
|
||
650 0008 C7E90023 strd r2, [r7]
|
||
259:Core/Lib/can-halal/can-halal.c **** if (num_bytes > 8) {
|
||
651 .loc 1 259 6
|
||
652 000c 3B6A ldr r3, [r7, #32]
|
||
653 000e 082B cmp r3, #8
|
||
654 0010 01D9 bls .L40
|
||
260:Core/Lib/can-halal/can-halal.c **** num_bytes = 8;
|
||
655 .loc 1 260 15
|
||
656 0012 0823 movs r3, #8
|
||
657 0014 3B62 str r3, [r7, #32]
|
||
658 .L40:
|
||
659 .LBB3:
|
||
261:Core/Lib/can-halal/can-halal.c **** }
|
||
262:Core/Lib/can-halal/can-halal.c ****
|
||
263:Core/Lib/can-halal/can-halal.c **** for (int i = num_bytes - 1; i >= 0; i--) {
|
||
660 .loc 1 263 26
|
||
661 0016 3B6A ldr r3, [r7, #32]
|
||
ARM GAS /tmp/ccI3jx5x.s page 17
|
||
|
||
|
||
662 0018 013B subs r3, r3, #1
|
||
663 .loc 1 263 12
|
||
664 001a 7B61 str r3, [r7, #20]
|
||
665 .loc 1 263 3
|
||
666 001c 13E0 b .L41
|
||
667 .L42:
|
||
264:Core/Lib/can-halal/can-halal.c **** data[i] = val & 0xFF;
|
||
668 .loc 1 264 9
|
||
669 001e 7B69 ldr r3, [r7, #20]
|
||
670 0020 FA68 ldr r2, [r7, #12]
|
||
671 0022 1344 add r3, r3, r2
|
||
672 .loc 1 264 13
|
||
673 0024 3A78 ldrb r2, [r7] @ zero_extendqisi2
|
||
674 0026 1A70 strb r2, [r3]
|
||
265:Core/Lib/can-halal/can-halal.c **** val >>= 8;
|
||
675 .loc 1 265 9
|
||
676 0028 D7E90001 ldrd r0, [r7]
|
||
677 002c 4FF00002 mov r2, #0
|
||
678 0030 4FF00003 mov r3, #0
|
||
679 0034 020A lsrs r2, r0, #8
|
||
680 0036 42EA0162 orr r2, r2, r1, lsl #24
|
||
681 003a 0B0A lsrs r3, r1, #8
|
||
682 003c C7E90023 strd r2, [r7]
|
||
263:Core/Lib/can-halal/can-halal.c **** data[i] = val & 0xFF;
|
||
683 .loc 1 263 40 discriminator 3
|
||
684 0040 7B69 ldr r3, [r7, #20]
|
||
685 0042 013B subs r3, r3, #1
|
||
686 0044 7B61 str r3, [r7, #20]
|
||
687 .L41:
|
||
263:Core/Lib/can-halal/can-halal.c **** data[i] = val & 0xFF;
|
||
688 .loc 1 263 33 discriminator 1
|
||
689 0046 7B69 ldr r3, [r7, #20]
|
||
690 0048 002B cmp r3, #0
|
||
691 004a E8DA bge .L42
|
||
692 .LBE3:
|
||
266:Core/Lib/can-halal/can-halal.c **** }
|
||
267:Core/Lib/can-halal/can-halal.c ****
|
||
268:Core/Lib/can-halal/can-halal.c **** return data + num_bytes;
|
||
693 .loc 1 268 15
|
||
694 004c FA68 ldr r2, [r7, #12]
|
||
695 004e 3B6A ldr r3, [r7, #32]
|
||
696 0050 1344 add r3, r3, r2
|
||
269:Core/Lib/can-halal/can-halal.c **** }
|
||
697 .loc 1 269 1
|
||
698 0052 1846 mov r0, r3
|
||
699 0054 1C37 adds r7, r7, #28
|
||
700 .cfi_def_cfa_offset 4
|
||
701 0056 BD46 mov sp, r7
|
||
702 .cfi_def_cfa_register 13
|
||
703 @ sp needed
|
||
704 0058 5DF8047B ldr r7, [sp], #4
|
||
705 .cfi_restore 7
|
||
706 .cfi_def_cfa_offset 0
|
||
707 005c 7047 bx lr
|
||
708 .cfi_endproc
|
||
709 .LFE137:
|
||
711 .section .text.ftcan_marshal_signed,"ax",%progbits
|
||
ARM GAS /tmp/ccI3jx5x.s page 18
|
||
|
||
|
||
712 .align 1
|
||
713 .global ftcan_marshal_signed
|
||
714 .syntax unified
|
||
715 .thumb
|
||
716 .thumb_func
|
||
718 ftcan_marshal_signed:
|
||
719 .LFB138:
|
||
270:Core/Lib/can-halal/can-halal.c ****
|
||
271:Core/Lib/can-halal/can-halal.c **** uint8_t *ftcan_marshal_signed(uint8_t *data, int64_t val, size_t num_bytes) {
|
||
720 .loc 1 271 77
|
||
721 .cfi_startproc
|
||
722 @ args = 4, pretend = 0, frame = 16
|
||
723 @ frame_needed = 1, uses_anonymous_args = 0
|
||
724 0000 80B5 push {r7, lr}
|
||
725 .cfi_def_cfa_offset 8
|
||
726 .cfi_offset 7, -8
|
||
727 .cfi_offset 14, -4
|
||
728 0002 86B0 sub sp, sp, #24
|
||
729 .cfi_def_cfa_offset 32
|
||
730 0004 02AF add r7, sp, #8
|
||
731 .cfi_def_cfa 7, 24
|
||
732 0006 F860 str r0, [r7, #12]
|
||
733 0008 C7E90023 strd r2, [r7]
|
||
272:Core/Lib/can-halal/can-halal.c **** return ftcan_marshal_unsigned(data, val, num_bytes);
|
||
734 .loc 1 272 10
|
||
735 000c D7E90023 ldrd r2, [r7]
|
||
736 0010 B969 ldr r1, [r7, #24]
|
||
737 0012 0091 str r1, [sp]
|
||
738 0014 F868 ldr r0, [r7, #12]
|
||
739 0016 FFF7FEFF bl ftcan_marshal_unsigned
|
||
740 001a 0346 mov r3, r0
|
||
273:Core/Lib/can-halal/can-halal.c **** }
|
||
741 .loc 1 273 1
|
||
742 001c 1846 mov r0, r3
|
||
743 001e 1037 adds r7, r7, #16
|
||
744 .cfi_def_cfa_offset 8
|
||
745 0020 BD46 mov sp, r7
|
||
746 .cfi_def_cfa_register 13
|
||
747 @ sp needed
|
||
748 0022 80BD pop {r7, pc}
|
||
749 .cfi_endproc
|
||
750 .LFE138:
|
||
752 .section .bss.header.2,"aw",%nobits
|
||
753 .align 2
|
||
756 header.2:
|
||
757 0000 00000000 .space 24
|
||
757 00000000
|
||
757 00000000
|
||
757 00000000
|
||
757 00000000
|
||
758 .section .bss.next_filter_no.1,"aw",%nobits
|
||
759 .align 2
|
||
762 next_filter_no.1:
|
||
763 0000 00000000 .space 4
|
||
764 .section .bss.filter.0,"aw",%nobits
|
||
765 .align 2
|
||
768 filter.0:
|
||
ARM GAS /tmp/ccI3jx5x.s page 19
|
||
|
||
|
||
769 0000 00000000 .space 40
|
||
769 00000000
|
||
769 00000000
|
||
769 00000000
|
||
769 00000000
|
||
770 .text
|
||
771 .Letext0:
|
||
772 .file 2 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl
|
||
773 .file 3 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl
|
||
774 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h"
|
||
775 .file 5 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f3xx.h"
|
||
776 .file 6 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/lib/gcc/arm-none-e
|
||
777 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h"
|
||
778 .file 8 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_can.h"
|
||
ARM GAS /tmp/ccI3jx5x.s page 20
|
||
|
||
|
||
DEFINED SYMBOLS
|
||
*ABS*:00000000 can-halal.c
|
||
/tmp/ccI3jx5x.s:21 .bss.hcan:00000000 $d
|
||
/tmp/ccI3jx5x.s:24 .bss.hcan:00000000 hcan
|
||
/tmp/ccI3jx5x.s:27 .text.ftcan_init:00000000 $t
|
||
/tmp/ccI3jx5x.s:33 .text.ftcan_init:00000000 ftcan_init
|
||
/tmp/ccI3jx5x.s:86 .text.ftcan_init:0000003c $d
|
||
/tmp/ccI3jx5x.s:91 .text.ftcan_transmit:00000000 $t
|
||
/tmp/ccI3jx5x.s:97 .text.ftcan_transmit:00000000 ftcan_transmit
|
||
/tmp/ccI3jx5x.s:150 .text.ftcan_transmit:00000040 $d
|
||
/tmp/ccI3jx5x.s:756 .bss.header.2:00000000 header.2
|
||
/tmp/ccI3jx5x.s:156 .text.ftcan_add_filter:00000000 $t
|
||
/tmp/ccI3jx5x.s:162 .text.ftcan_add_filter:00000000 ftcan_add_filter
|
||
/tmp/ccI3jx5x.s:297 .text.ftcan_add_filter:000000ac $d
|
||
/tmp/ccI3jx5x.s:762 .bss.next_filter_no.1:00000000 next_filter_no.1
|
||
/tmp/ccI3jx5x.s:768 .bss.filter.0:00000000 filter.0
|
||
/tmp/ccI3jx5x.s:304 .text.HAL_CAN_RxFifo0MsgPendingCallback:00000000 $t
|
||
/tmp/ccI3jx5x.s:310 .text.HAL_CAN_RxFifo0MsgPendingCallback:00000000 HAL_CAN_RxFifo0MsgPendingCallback
|
||
/tmp/ccI3jx5x.s:392 .text.ftcan_msg_received_cb:00000000 ftcan_msg_received_cb
|
||
/tmp/ccI3jx5x.s:381 .text.HAL_CAN_RxFifo0MsgPendingCallback:00000054 $d
|
||
/tmp/ccI3jx5x.s:386 .text.ftcan_msg_received_cb:00000000 $t
|
||
/tmp/ccI3jx5x.s:425 .text.ftcan_unmarshal_unsigned:00000000 $t
|
||
/tmp/ccI3jx5x.s:431 .text.ftcan_unmarshal_unsigned:00000000 ftcan_unmarshal_unsigned
|
||
/tmp/ccI3jx5x.s:537 .text.ftcan_unmarshal_signed:00000000 $t
|
||
/tmp/ccI3jx5x.s:543 .text.ftcan_unmarshal_signed:00000000 ftcan_unmarshal_signed
|
||
/tmp/ccI3jx5x.s:629 .text.ftcan_marshal_unsigned:00000000 $t
|
||
/tmp/ccI3jx5x.s:635 .text.ftcan_marshal_unsigned:00000000 ftcan_marshal_unsigned
|
||
/tmp/ccI3jx5x.s:712 .text.ftcan_marshal_signed:00000000 $t
|
||
/tmp/ccI3jx5x.s:718 .text.ftcan_marshal_signed:00000000 ftcan_marshal_signed
|
||
/tmp/ccI3jx5x.s:753 .bss.header.2:00000000 $d
|
||
/tmp/ccI3jx5x.s:759 .bss.next_filter_no.1:00000000 $d
|
||
/tmp/ccI3jx5x.s:765 .bss.filter.0:00000000 $d
|
||
|
||
UNDEFINED SYMBOLS
|
||
HAL_CAN_ActivateNotification
|
||
HAL_CAN_Start
|
||
HAL_CAN_AddTxMessage
|
||
HAL_CAN_ConfigFilter
|
||
HAL_CAN_GetRxMessage
|