Files
squeow/squeow_sw/build/si5351.lst

1160 lines
47 KiB
Plaintext
Raw Normal View History

2025-06-28 00:58:29 +02:00
ARM GAS /tmp/cccZCQn9.s page 1
2023-07-02 17:09:41 +02:00
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, 1
13 .eabi_attribute 34, 1
14 .eabi_attribute 18, 4
15 .file "si5351.c"
16 .text
17 .Ltext0:
18 .cfi_sections .debug_frame
19 .file 1 "Src/si5351.c"
2025-06-28 00:58:29 +02:00
20 .section .text.CalcRegisters,"ax",%progbits
2023-07-02 17:09:41 +02:00
21 .align 1
2025-06-28 00:58:29 +02:00
22 .global CalcRegisters
2023-07-02 17:09:41 +02:00
23 .syntax unified
24 .thumb
25 .thumb_func
2025-06-28 00:58:29 +02:00
27 CalcRegisters:
2023-07-02 17:09:41 +02:00
28 .LVL0:
29 .LFB329:
1:Src/si5351.c **** #include "main.h"
2025-06-28 00:58:29 +02:00
2:Src/si5351.c **** #include <math.h>
3:Src/si5351.c **** #include "si5351.h"
4:Src/si5351.c **** #include "si5351_cfg.h"
2023-07-02 17:09:41 +02:00
5:Src/si5351.c ****
6:Src/si5351.c **** uint8_t oeb;
7:Src/si5351.c ****
2025-06-28 00:58:29 +02:00
8:Src/si5351.c **** void CalcRegisters(uint32_t fout, uint8_t *regs){
30 .loc 1 8 49 view -0
2023-07-02 17:09:41 +02:00
31 .cfi_startproc
2025-06-28 00:58:29 +02:00
32 @ args = 0, pretend = 0, frame = 0
2023-07-02 17:09:41 +02:00
33 @ frame_needed = 0, uses_anonymous_args = 0
2025-06-28 00:58:29 +02:00
34 .loc 1 8 49 is_stmt 0 view .LVU1
35 0000 2DE9F84F push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
2023-07-02 17:09:41 +02:00
36 .LCFI0:
2025-06-28 00:58:29 +02:00
37 .cfi_def_cfa_offset 40
38 .cfi_offset 3, -40
39 .cfi_offset 4, -36
40 .cfi_offset 5, -32
41 .cfi_offset 6, -28
42 .cfi_offset 7, -24
43 .cfi_offset 8, -20
44 .cfi_offset 9, -16
45 .cfi_offset 10, -12
46 .cfi_offset 11, -8
47 .cfi_offset 14, -4
48 0004 8046 mov r8, r0
49 0006 0C46 mov r4, r1
9:Src/si5351.c **** // uint32_t fref = SI5351_CRYSTAL_FREQ; // The reference frequency
ARM GAS /tmp/cccZCQn9.s page 2
2023-07-02 17:09:41 +02:00
2025-06-28 00:58:29 +02:00
10:Src/si5351.c ****
11:Src/si5351.c **** // Calc Output Multisynth Divider and R with e = 0 and f = 1 => msx_p2 = 0 and msx_p3 = 1
12:Src/si5351.c **** uint32_t d = 4;
50 .loc 1 12 5 is_stmt 1 view .LVU2
51 .LVL1:
13:Src/si5351.c **** uint32_t msx_p1 = 0; // If fout > 150 MHz then MSx_P1 = 0 and MSx_DIVBY
52 .loc 1 13 5 view .LVU3
14:Src/si5351.c **** int msx_divby4 = 0;
53 .loc 1 14 5 view .LVU4
15:Src/si5351.c **** int rx_div = 0;
54 .loc 1 15 5 view .LVU5
16:Src/si5351.c **** int r = 1;
55 .loc 1 16 5 view .LVU6
17:Src/si5351.c ****
18:Src/si5351.c **** if (fout > 150e6)
56 .loc 1 18 5 view .LVU7
57 .loc 1 18 8 is_stmt 0 view .LVU8
58 0008 674B ldr r3, .L19+24
59 000a 9842 cmp r0, r3
60 000c 49D8 bhi .L10
19:Src/si5351.c **** msx_divby4 = 0x0C; // MSx_DIVBY4[1:0] = 0b11, see datasheet 4.1.3
20:Src/si5351.c **** else if (fout < 292969UL) // If fout < 500 kHz then use R divider, see datas
61 .loc 1 20 10 is_stmt 1 view .LVU9
62 .loc 1 20 13 is_stmt 0 view .LVU10
63 000e 674B ldr r3, .L19+28
64 0010 9842 cmp r0, r3
65 0012 38D9 bls .L11
21:Src/si5351.c **** {
22:Src/si5351.c **** int rd = 0;
23:Src/si5351.c **** while ((r < 128) && (r * fout < 292969UL))
24:Src/si5351.c **** {
25:Src/si5351.c **** r <<= 1;
26:Src/si5351.c **** rd++;
27:Src/si5351.c **** }
28:Src/si5351.c **** rx_div = rd << 4;
29:Src/si5351.c ****
30:Src/si5351.c **** d = 600e6 / (r * fout); // Use lowest VCO frequency but handle d minimum
31:Src/si5351.c **** if (d % 2) // Make d even to reduce spurious and phase noise/
32:Src/si5351.c **** d++;
33:Src/si5351.c ****
34:Src/si5351.c **** if (d * r * fout < 600e6) // VCO frequency to low check and maintain an even
35:Src/si5351.c **** d += 2;
36:Src/si5351.c **** }
37:Src/si5351.c **** else // 292968 Hz <= fout <= 150 MHz
38:Src/si5351.c **** {
39:Src/si5351.c **** d = 600e6 / fout; // Use lowest VCO frequency but handle d minimum
66 .loc 1 39 9 is_stmt 1 view .LVU11
67 .loc 1 39 19 is_stmt 0 view .LVU12
68 0014 FFF7FEFF bl __aeabi_ui2d
69 .LVL2:
70 .loc 1 39 19 view .LVU13
71 0018 0246 mov r2, r0
72 001a 0B46 mov r3, r1
73 001c 5CA1 adr r1, .L19
74 001e D1E90001 ldrd r0, [r1]
75 0022 FFF7FEFF bl __aeabi_ddiv
76 .LVL3:
ARM GAS /tmp/cccZCQn9.s page 3
2023-07-02 17:09:41 +02:00
2025-06-28 00:58:29 +02:00
77 .loc 1 39 11 view .LVU14
78 0026 FFF7FEFF bl __aeabi_d2uiz
79 .LVL4:
40:Src/si5351.c **** if (d < 6)
80 .loc 1 40 9 is_stmt 1 view .LVU15
81 .loc 1 40 12 is_stmt 0 view .LVU16
82 002a 0528 cmp r0, #5
83 002c 2ED9 bls .L13
41:Src/si5351.c **** d = 6;
42:Src/si5351.c **** else if (d % 2) // Make d even to reduce phase noise/jitter, see d
84 .loc 1 42 14 is_stmt 1 view .LVU17
85 .loc 1 42 17 is_stmt 0 view .LVU18
86 002e 10F0010F tst r0, #1
87 0032 2CD0 beq .L8
43:Src/si5351.c **** d++;
88 .loc 1 43 12 is_stmt 1 view .LVU19
89 .loc 1 43 13 is_stmt 0 view .LVU20
90 0034 0130 adds r0, r0, #1
91 .LVL5:
92 .loc 1 43 13 view .LVU21
93 0036 2AE0 b .L8
94 .LVL6:
95 .L6:
96 .LBB2:
25:Src/si5351.c **** rd++;
97 .loc 1 25 13 is_stmt 1 view .LVU22
25:Src/si5351.c **** rd++;
98 .loc 1 25 15 is_stmt 0 view .LVU23
99 0038 7600 lsls r6, r6, #1
100 .LVL7:
26:Src/si5351.c **** }
101 .loc 1 26 13 is_stmt 1 view .LVU24
26:Src/si5351.c **** }
102 .loc 1 26 15 is_stmt 0 view .LVU25
103 003a 0135 adds r5, r5, #1
104 .LVL8:
105 .L3:
23:Src/si5351.c **** {
106 .loc 1 23 26 is_stmt 1 view .LVU26
107 003c 7F2E cmp r6, #127
108 003e 04DC bgt .L5
23:Src/si5351.c **** {
109 .loc 1 23 32 is_stmt 0 discriminator 1 view .LVU27
110 0040 08FB06F2 mul r2, r8, r6
23:Src/si5351.c **** {
111 .loc 1 23 26 discriminator 1 view .LVU28
112 0044 594B ldr r3, .L19+28
113 0046 9A42 cmp r2, r3
114 0048 F6D9 bls .L6
115 .L5:
28:Src/si5351.c ****
116 .loc 1 28 9 is_stmt 1 view .LVU29
28:Src/si5351.c ****
117 .loc 1 28 16 is_stmt 0 view .LVU30
118 004a 2D01 lsls r5, r5, #4
119 .LVL9:
30:Src/si5351.c **** if (d % 2) // Make d even to reduce spurious and phase noise/
ARM GAS /tmp/cccZCQn9.s page 4
2023-07-02 17:09:41 +02:00
2025-06-28 00:58:29 +02:00
120 .loc 1 30 9 is_stmt 1 view .LVU31
30:Src/si5351.c **** if (d % 2) // Make d even to reduce spurious and phase noise/
121 .loc 1 30 24 is_stmt 0 view .LVU32
122 004c 3746 mov r7, r6
30:Src/si5351.c **** if (d % 2) // Make d even to reduce spurious and phase noise/
123 .loc 1 30 19 view .LVU33
124 004e 08FB06F0 mul r0, r8, r6
125 .LVL10:
30:Src/si5351.c **** if (d % 2) // Make d even to reduce spurious and phase noise/
126 .loc 1 30 19 view .LVU34
127 0052 FFF7FEFF bl __aeabi_ui2d
128 .LVL11:
30:Src/si5351.c **** if (d % 2) // Make d even to reduce spurious and phase noise/
129 .loc 1 30 19 view .LVU35
130 0056 0246 mov r2, r0
131 0058 0B46 mov r3, r1
132 005a 4DA1 adr r1, .L19
133 005c D1E90001 ldrd r0, [r1]
134 0060 FFF7FEFF bl __aeabi_ddiv
135 .LVL12:
30:Src/si5351.c **** if (d % 2) // Make d even to reduce spurious and phase noise/
136 .loc 1 30 11 view .LVU36
137 0064 FFF7FEFF bl __aeabi_d2uiz
138 .LVL13:
31:Src/si5351.c **** d++;
139 .loc 1 31 9 is_stmt 1 view .LVU37
31:Src/si5351.c **** d++;
140 .loc 1 31 12 is_stmt 0 view .LVU38
141 0068 10F0010F tst r0, #1
142 006c 00D0 beq .L7
32:Src/si5351.c ****
143 .loc 1 32 13 is_stmt 1 view .LVU39
32:Src/si5351.c ****
144 .loc 1 32 14 is_stmt 0 view .LVU40
145 006e 0130 adds r0, r0, #1
146 .LVL14:
147 .L7:
34:Src/si5351.c **** d += 2;
148 .loc 1 34 9 is_stmt 1 view .LVU41
34:Src/si5351.c **** d += 2;
149 .loc 1 34 15 is_stmt 0 view .LVU42
150 0070 00FB07F7 mul r7, r0, r7
34:Src/si5351.c **** d += 2;
151 .loc 1 34 19 view .LVU43
152 0074 08FB07F7 mul r7, r8, r7
34:Src/si5351.c **** d += 2;
153 .loc 1 34 12 view .LVU44
154 0078 4D4B ldr r3, .L19+32
155 007a 9F42 cmp r7, r3
156 007c 4ED8 bhi .L12
35:Src/si5351.c **** }
157 .loc 1 35 13 is_stmt 1 view .LVU45
35:Src/si5351.c **** }
158 .loc 1 35 15 is_stmt 0 view .LVU46
159 007e 0230 adds r0, r0, #2
160 .LVL15:
35:Src/si5351.c **** }
ARM GAS /tmp/cccZCQn9.s page 5
2023-07-02 17:09:41 +02:00
2025-06-28 00:58:29 +02:00
161 .loc 1 35 15 view .LVU47
162 .LBE2:
14:Src/si5351.c **** int rx_div = 0;
163 .loc 1 14 9 view .LVU48
164 0080 4FF0000A mov r10, #0
165 0084 12E0 b .L2
166 .LVL16:
167 .L11:
168 .LBB3:
22:Src/si5351.c **** while ((r < 128) && (r * fout < 292969UL))
169 .loc 1 22 13 view .LVU49
170 0086 0025 movs r5, #0
171 .LBE3:
16:Src/si5351.c ****
172 .loc 1 16 9 view .LVU50
173 0088 0126 movs r6, #1
174 008a D7E7 b .L3
175 .LVL17:
176 .L13:
41:Src/si5351.c **** else if (d % 2) // Make d even to reduce phase noise/jitter, see d
177 .loc 1 41 15 view .LVU51
178 008c 0620 movs r0, #6
179 .LVL18:
180 .L8:
44:Src/si5351.c ****
45:Src/si5351.c **** if (d * fout < 600e6) // VCO frequency to low check and maintain an even
181 .loc 1 45 9 is_stmt 1 view .LVU52
182 .loc 1 45 15 is_stmt 0 view .LVU53
183 008e 08FB00F2 mul r2, r8, r0
184 .loc 1 45 12 view .LVU54
185 0092 474B ldr r3, .L19+32
186 0094 9A42 cmp r2, r3
187 0096 44D8 bhi .L14
46:Src/si5351.c **** d += 2;
188 .loc 1 46 13 is_stmt 1 view .LVU55
189 .loc 1 46 15 is_stmt 0 view .LVU56
190 0098 0230 adds r0, r0, #2
191 .LVL19:
16:Src/si5351.c ****
192 .loc 1 16 9 view .LVU57
193 009a 0126 movs r6, #1
15:Src/si5351.c **** int r = 1;
194 .loc 1 15 9 view .LVU58
195 009c 0025 movs r5, #0
14:Src/si5351.c **** int rx_div = 0;
196 .loc 1 14 9 view .LVU59
197 009e AA46 mov r10, r5
198 00a0 04E0 b .L2
199 .LVL20:
200 .L10:
16:Src/si5351.c ****
201 .loc 1 16 9 view .LVU60
202 00a2 0126 movs r6, #1
15:Src/si5351.c **** int r = 1;
203 .loc 1 15 9 view .LVU61
204 00a4 0025 movs r5, #0
19:Src/si5351.c **** else if (fout < 292969UL) // If fout < 500 kHz then use R divider, see datas
ARM GAS /tmp/cccZCQn9.s page 6
2023-07-02 17:09:41 +02:00
2025-06-28 00:58:29 +02:00
205 .loc 1 19 20 view .LVU62
206 00a6 4FF00C0A mov r10, #12
12:Src/si5351.c **** uint32_t msx_p1 = 0; // If fout > 150 MHz then MSx_P1 = 0 and MSx_DIVBY
207 .loc 1 12 14 view .LVU63
208 00aa 0420 movs r0, #4
209 .LVL21:
210 .L2:
47:Src/si5351.c **** }
48:Src/si5351.c **** msx_p1 = 128 * d - 512;
211 .loc 1 48 5 is_stmt 1 view .LVU64
212 .loc 1 48 22 is_stmt 0 view .LVU65
213 00ac 00F10077 add r7, r0, #33554432
214 00b0 043F subs r7, r7, #4
215 .loc 1 48 12 view .LVU66
216 00b2 FF01 lsls r7, r7, #7
217 .LVL22:
49:Src/si5351.c ****
50:Src/si5351.c **** uint32_t fvco = (uint32_t) d * r * fout;
218 .loc 1 50 5 is_stmt 1 view .LVU67
219 .loc 1 50 34 is_stmt 0 view .LVU68
220 00b4 06FB00F0 mul r0, r6, r0
221 .LVL23:
51:Src/si5351.c ****
52:Src/si5351.c **** // Calc Feedback Multisynth Divider
53:Src/si5351.c **** double fmd = (double)fvco / SI5351_CRYSTAL_FREQ; // The FMD value has been found
222 .loc 1 53 5 is_stmt 1 view .LVU69
223 .loc 1 53 18 is_stmt 0 view .LVU70
224 00b8 08FB00F0 mul r0, r8, r0
225 .LVL24:
226 .loc 1 53 18 view .LVU71
227 00bc FFF7FEFF bl __aeabi_ui2d
228 .LVL25:
229 .loc 1 53 12 view .LVU72
230 00c0 35A3 adr r3, .L19+8
231 00c2 D3E90023 ldrd r2, [r3]
232 00c6 FFF7FEFF bl __aeabi_ddiv
233 .LVL26:
234 00ca 8046 mov r8, r0
235 .LVL27:
236 .loc 1 53 12 view .LVU73
237 00cc 8946 mov r9, r1
238 .LVL28:
54:Src/si5351.c **** int a = fmd; // a is the integer part of the FMD value
239 .loc 1 54 5 is_stmt 1 view .LVU74
240 .loc 1 54 9 is_stmt 0 view .LVU75
241 00ce FFF7FEFF bl __aeabi_d2iz
242 .LVL29:
243 00d2 0646 mov r6, r0
244 .LVL30:
55:Src/si5351.c ****
56:Src/si5351.c **** double b_c = (double)fmd - a; // Get b/c
245 .loc 1 56 5 is_stmt 1 view .LVU76
246 .loc 1 56 30 is_stmt 0 view .LVU77
247 00d4 FFF7FEFF bl __aeabi_i2d
248 .LVL31:
249 .loc 1 56 30 view .LVU78
250 00d8 0246 mov r2, r0
ARM GAS /tmp/cccZCQn9.s page 7
2023-07-02 17:09:41 +02:00
2025-06-28 00:58:29 +02:00
251 00da 0B46 mov r3, r1
252 .loc 1 56 12 view .LVU79
253 00dc 4046 mov r0, r8
254 00de 4946 mov r1, r9
255 00e0 FFF7FEFF bl __aeabi_dsub
256 .LVL32:
257 00e4 8046 mov r8, r0
258 .LVL33:
259 .loc 1 56 12 view .LVU80
260 00e6 8946 mov r9, r1
261 .LVL34:
57:Src/si5351.c **** uint32_t c = 1048575UL;
262 .loc 1 57 5 is_stmt 1 view .LVU81
58:Src/si5351.c **** uint32_t b = (double)b_c * c;
263 .loc 1 58 5 view .LVU82
264 .loc 1 58 30 is_stmt 0 view .LVU83
265 00e8 2DA3 adr r3, .L19+16
266 00ea D3E90023 ldrd r2, [r3]
267 00ee FFF7FEFF bl __aeabi_dmul
268 .LVL35:
269 .loc 1 58 14 view .LVU84
270 00f2 FFF7FEFF bl __aeabi_d2uiz
271 .LVL36:
59:Src/si5351.c **** if (b > 0)
272 .loc 1 59 5 is_stmt 1 view .LVU85
273 .loc 1 59 8 is_stmt 0 view .LVU86
274 00f6 8346 mov fp, r0
275 00f8 B8B1 cbz r0, .L15
60:Src/si5351.c **** {
61:Src/si5351.c **** c = (double)b / b_c + 0.5; // Improves frequency precision in some cases
276 .loc 1 61 9 is_stmt 1 view .LVU87
277 .loc 1 61 13 is_stmt 0 view .LVU88
278 00fa FFF7FEFF bl __aeabi_ui2d
279 .LVL37:
280 .loc 1 61 23 view .LVU89
281 00fe 4246 mov r2, r8
282 0100 4B46 mov r3, r9
283 0102 FFF7FEFF bl __aeabi_ddiv
284 .LVL38:
285 .loc 1 61 29 view .LVU90
286 0106 0022 movs r2, #0
287 0108 2A4B ldr r3, .L19+36
288 010a FFF7FEFF bl __aeabi_dadd
289 .LVL39:
290 .loc 1 61 11 view .LVU91
291 010e FFF7FEFF bl __aeabi_d2uiz
292 .LVL40:
62:Src/si5351.c **** if (c > 1048575UL)
293 .loc 1 62 9 is_stmt 1 view .LVU92
294 .loc 1 62 12 is_stmt 0 view .LVU93
295 0112 B0F5801F cmp r0, #1048576
296 0116 09D3 bcc .L9
63:Src/si5351.c **** c = 1048575UL;
297 .loc 1 63 15 view .LVU94
298 0118 2748 ldr r0, .L19+40
299 .LVL41:
300 .loc 1 63 15 view .LVU95
ARM GAS /tmp/cccZCQn9.s page 8
2023-07-02 17:09:41 +02:00
2025-06-28 00:58:29 +02:00
301 011a 07E0 b .L9
302 .LVL42:
303 .L12:
14:Src/si5351.c **** int rx_div = 0;
304 .loc 1 14 9 view .LVU96
305 011c 4FF0000A mov r10, #0
306 0120 C4E7 b .L2
307 .LVL43:
308 .L14:
16:Src/si5351.c ****
309 .loc 1 16 9 view .LVU97
310 0122 0126 movs r6, #1
15:Src/si5351.c **** int r = 1;
311 .loc 1 15 9 view .LVU98
312 0124 0025 movs r5, #0
14:Src/si5351.c **** int rx_div = 0;
313 .loc 1 14 9 view .LVU99
314 0126 AA46 mov r10, r5
315 0128 C0E7 b .L2
316 .LVL44:
317 .L15:
57:Src/si5351.c **** uint32_t b = (double)b_c * c;
318 .loc 1 57 14 view .LVU100
319 012a 2348 ldr r0, .L19+40
320 .LVL45:
321 .L9:
64:Src/si5351.c **** }
65:Src/si5351.c ****
66:Src/si5351.c **** uint32_t msnx_p1 = 128 * a + 128 * b / c - 512; // See datasheet 3.2
322 .loc 1 66 5 is_stmt 1 view .LVU101
323 .loc 1 66 38 is_stmt 0 view .LVU102
324 012c 4FEACB1B lsl fp, fp, #7
325 .LVL46:
326 .loc 1 66 42 view .LVU103
327 0130 BBFBF0F3 udiv r3, fp, r0
328 .loc 1 66 32 view .LVU104
329 0134 03EBC616 add r6, r3, r6, lsl #7
330 .LVL47:
331 .loc 1 66 14 view .LVU105
332 0138 A6F50076 sub r6, r6, #512
333 .LVL48:
67:Src/si5351.c **** uint32_t msnx_p2 = 128 * b - c * (128 * b / c);
334 .loc 1 67 5 is_stmt 1 view .LVU106
335 .loc 1 67 14 is_stmt 0 view .LVU107
336 013c 00FB13BB mls fp, r0, r3, fp
337 .LVL49:
68:Src/si5351.c **** uint32_t msnx_p3 = c;
338 .loc 1 68 5 is_stmt 1 view .LVU108
69:Src/si5351.c ****
70:Src/si5351.c **** // Feedback Multisynth Divider registers
71:Src/si5351.c **** regs[0] = (msnx_p3 >> 8) & 0xFF;
339 .loc 1 71 5 view .LVU109
340 .loc 1 71 24 is_stmt 0 view .LVU110
341 0140 030A lsrs r3, r0, #8
342 .loc 1 71 13 view .LVU111
343 0142 2370 strb r3, [r4]
72:Src/si5351.c **** regs[1] = msnx_p3 & 0xFF;
ARM GAS /tmp/cccZCQn9.s page 9
2023-07-02 17:09:41 +02:00
2025-06-28 00:58:29 +02:00
344 .loc 1 72 5 is_stmt 1 view .LVU112
345 .loc 1 72 13 is_stmt 0 view .LVU113
346 0144 6070 strb r0, [r4, #1]
73:Src/si5351.c **** regs[2] = (msnx_p1 >> 16) & 0x03;
347 .loc 1 73 5 is_stmt 1 view .LVU114
348 .loc 1 73 31 is_stmt 0 view .LVU115
349 0146 C6F30143 ubfx r3, r6, #16, #2
350 .loc 1 73 13 view .LVU116
351 014a A370 strb r3, [r4, #2]
74:Src/si5351.c **** regs[3] = (msnx_p1 >> 8) & 0xFF;
352 .loc 1 74 5 is_stmt 1 view .LVU117
353 .loc 1 74 24 is_stmt 0 view .LVU118
354 014c 330A lsrs r3, r6, #8
355 .loc 1 74 13 view .LVU119
356 014e E370 strb r3, [r4, #3]
75:Src/si5351.c **** regs[4] = msnx_p1 & 0xFF;
357 .loc 1 75 5 is_stmt 1 view .LVU120
358 .loc 1 75 13 is_stmt 0 view .LVU121
359 0150 2671 strb r6, [r4, #4]
76:Src/si5351.c **** regs[5] = ((msnx_p3 >> 12) & 0xF0) + ((msnx_p2 >> 16) & 0x0F);
360 .loc 1 76 5 is_stmt 1 view .LVU122
361 .loc 1 76 25 is_stmt 0 view .LVU123
362 0152 000B lsrs r0, r0, #12
363 .LVL50:
364 .loc 1 76 32 view .LVU124
365 0154 00F0F000 and r0, r0, #240
366 .loc 1 76 59 view .LVU125
367 0158 CBF30343 ubfx r3, fp, #16, #4
368 .loc 1 76 40 view .LVU126
369 015c 1843 orrs r0, r0, r3
370 .loc 1 76 13 view .LVU127
371 015e 6071 strb r0, [r4, #5]
77:Src/si5351.c **** regs[6] = (msnx_p2 >> 8) & 0xFF;
372 .loc 1 77 5 is_stmt 1 view .LVU128
373 .loc 1 77 24 is_stmt 0 view .LVU129
374 0160 4FEA1B23 lsr r3, fp, #8
375 .loc 1 77 13 view .LVU130
376 0164 A371 strb r3, [r4, #6]
78:Src/si5351.c **** regs[7] = msnx_p2 & 0xFF;
377 .loc 1 78 5 is_stmt 1 view .LVU131
378 .loc 1 78 13 is_stmt 0 view .LVU132
379 0166 84F807B0 strb fp, [r4, #7]
79:Src/si5351.c ****
80:Src/si5351.c **** // Output Multisynth Divider registers
81:Src/si5351.c **** regs[8] = 0; // (msx_p3 >> 8) & 0xFF
380 .loc 1 81 5 is_stmt 1 view .LVU133
381 .loc 1 81 13 is_stmt 0 view .LVU134
382 016a 0023 movs r3, #0
383 016c 2372 strb r3, [r4, #8]
82:Src/si5351.c **** regs[9] = 1; // msx_p3 & 0xFF
384 .loc 1 82 5 is_stmt 1 view .LVU135
385 .loc 1 82 13 is_stmt 0 view .LVU136
386 016e 0122 movs r2, #1
387 0170 6272 strb r2, [r4, #9]
83:Src/si5351.c **** regs[10] = rx_div + msx_divby4 + ((msx_p1 >> 16) & 0x03);
388 .loc 1 83 5 is_stmt 1 view .LVU137
389 .loc 1 83 23 is_stmt 0 view .LVU138
ARM GAS /tmp/cccZCQn9.s page 10
2023-07-02 17:09:41 +02:00
2025-06-28 00:58:29 +02:00
390 0172 5544 add r5, r5, r10
391 .LVL51:
392 .loc 1 83 23 view .LVU139
393 0174 EDB2 uxtb r5, r5
394 .loc 1 83 54 view .LVU140
395 0176 C7F30142 ubfx r2, r7, #16, #2
396 .loc 1 83 36 view .LVU141
397 017a 1544 add r5, r5, r2
398 .loc 1 83 14 view .LVU142
399 017c A572 strb r5, [r4, #10]
84:Src/si5351.c **** regs[11] = (msx_p1 >> 8) & 0xFF;
400 .loc 1 84 5 is_stmt 1 view .LVU143
401 .loc 1 84 24 is_stmt 0 view .LVU144
402 017e 3A0A lsrs r2, r7, #8
403 .loc 1 84 14 view .LVU145
404 0180 E272 strb r2, [r4, #11]
85:Src/si5351.c **** regs[12] = msx_p1 & 0xFF;
405 .loc 1 85 5 is_stmt 1 view .LVU146
406 .loc 1 85 14 is_stmt 0 view .LVU147
407 0182 2773 strb r7, [r4, #12]
86:Src/si5351.c **** regs[13] = 0; // ((msx_p3 >> 12) & 0xF0) + (msx_p2 >> 16) & 0x0
408 .loc 1 86 5 is_stmt 1 view .LVU148
409 .loc 1 86 14 is_stmt 0 view .LVU149
410 0184 6373 strb r3, [r4, #13]
87:Src/si5351.c **** regs[14] = 0; // (msx_p2 >> 8) & 0xFF
411 .loc 1 87 5 is_stmt 1 view .LVU150
412 .loc 1 87 14 is_stmt 0 view .LVU151
413 0186 A373 strb r3, [r4, #14]
88:Src/si5351.c **** regs[15] = 0; // msx_p2 & 0xFF
414 .loc 1 88 5 is_stmt 1 view .LVU152
415 .loc 1 88 14 is_stmt 0 view .LVU153
416 0188 E373 strb r3, [r4, #15]
89:Src/si5351.c ****
90:Src/si5351.c **** // HAL_I2C_Master_Transmit(&hi2c2, Si5351_ConfigStruct->HW_I2C_Address, reg_data, sizeof(reg_data),
91:Src/si5351.c **** return;
417 .loc 1 91 5 is_stmt 1 view .LVU154
92:Src/si5351.c **** }
418 .loc 1 92 1 is_stmt 0 view .LVU155
419 018a BDE8F88F pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
420 .LVL52:
421 .L20:
422 .loc 1 92 1 view .LVU156
423 018e 00BF .align 3
424 .L19:
425 0190 00000000 .word 0
426 0194 A3E1C141 .word 1103225251
427 0198 00000000 .word 0
428 019c 60E37641 .word 1098310496
429 01a0 00000000 .word 0
430 01a4 FEFF2F41 .word 1093664766
431 01a8 80D1F008 .word 150000000
432 01ac 68780400 .word 292968
433 01b0 FF45C323 .word 599999999
434 01b4 0000E03F .word 1071644672
435 01b8 FFFF0F00 .word 1048575
436 .cfi_endproc
437 .LFE329:
ARM GAS /tmp/cccZCQn9.s page 11
2023-07-02 17:09:41 +02:00
2025-06-28 00:58:29 +02:00
439 .section .text.si5351_initialize,"ax",%progbits
440 .align 1
441 .global si5351_initialize
442 .syntax unified
443 .thumb
444 .thumb_func
446 si5351_initialize:
447 .LFB330:
93:Src/si5351.c ****
94:Src/si5351.c **** void si5351_initialize(){
448 .loc 1 94 25 is_stmt 1 view -0
449 .cfi_startproc
450 @ args = 0, pretend = 0, frame = 8
451 @ frame_needed = 0, uses_anonymous_args = 0
452 0000 00B5 push {lr}
453 .LCFI1:
454 .cfi_def_cfa_offset 4
455 .cfi_offset 14, -4
456 0002 83B0 sub sp, sp, #12
457 .LCFI2:
458 .cfi_def_cfa_offset 16
459 .L22:
95:Src/si5351.c **** uint8_t dummy;
96:Src/si5351.c **** // Initialize Si5351A
97:Src/si5351.c **** while (si5351_read8(0,&dummy) & 0x80); // Wait for Si5351A to initialize
460 .loc 1 97 9 discriminator 1 view .LVU158
461 0004 0DF10701 add r1, sp, #7
462 0008 0020 movs r0, #0
463 000a FFF7FEFF bl si5351_read8
464 .LVL53:
465 000e 10F0800F tst r0, #128
466 0012 F7D1 bne .L22
98:Src/si5351.c **** oeb = 0xFF;
467 .loc 1 98 2 view .LVU159
468 .loc 1 98 6 is_stmt 0 view .LVU160
469 0014 FF21 movs r1, #255
470 0016 2E4B ldr r3, .L24
471 0018 1970 strb r1, [r3]
99:Src/si5351.c ****
100:Src/si5351.c **** si5351_write8(SI5351_OUT_ENABLE, oeb); // Output Enable Control, disable all
472 .loc 1 100 5 is_stmt 1 view .LVU161
473 001a 0320 movs r0, #3
474 001c FFF7FEFF bl si5351_write8
475 .LVL54:
101:Src/si5351.c ****
102:Src/si5351.c **** si5351_write8(SI5351_INPUT_SOURCE, 0x00); // PLL Input Source, select the XTAL input
476 .loc 1 102 5 view .LVU162
477 0020 0021 movs r1, #0
478 0022 0F20 movs r0, #15
479 0024 FFF7FEFF bl si5351_write8
480 .LVL55:
103:Src/si5351.c **** si5351_write8(SI5351_OUT_DIS_STATE, 0x00); // stato bassa Z giu se disabilitati
481 .loc 1 103 5 view .LVU163
482 0028 0021 movs r1, #0
483 002a 1820 movs r0, #24
484 002c FFF7FEFF bl si5351_write8
485 .LVL56:
ARM GAS /tmp/cccZCQn9.s page 12
2023-07-02 17:09:41 +02:00
2025-06-28 00:58:29 +02:00
104:Src/si5351.c ****
105:Src/si5351.c **** // Output MultisynthN, e = 0, f = 1, MS0_P2 and MSO_P3
106:Src/si5351.c **** si5351_write8(SI5351_MULTISYNTH0, 0x00);
486 .loc 1 106 5 view .LVU164
487 0030 0021 movs r1, #0
488 0032 2A20 movs r0, #42
489 0034 FFF7FEFF bl si5351_write8
490 .LVL57:
107:Src/si5351.c **** si5351_write8(SI5351_MULTISYNTH0+1, 0x01);
491 .loc 1 107 5 view .LVU165
492 0038 0121 movs r1, #1
493 003a 2B20 movs r0, #43
494 003c FFF7FEFF bl si5351_write8
495 .LVL58:
108:Src/si5351.c **** si5351_write8(SI5351_MULTISYNTH0+5, 0x00);
496 .loc 1 108 5 view .LVU166
497 0040 0021 movs r1, #0
498 0042 2F20 movs r0, #47
499 0044 FFF7FEFF bl si5351_write8
500 .LVL59:
109:Src/si5351.c **** si5351_write8(SI5351_MULTISYNTH0+6, 0x00);
501 .loc 1 109 5 view .LVU167
502 0048 0021 movs r1, #0
503 004a 3020 movs r0, #48
504 004c FFF7FEFF bl si5351_write8
505 .LVL60:
110:Src/si5351.c **** si5351_write8(SI5351_MULTISYNTH0+7, 0x00);
506 .loc 1 110 5 view .LVU168
507 0050 0021 movs r1, #0
508 0052 3120 movs r0, #49
509 0054 FFF7FEFF bl si5351_write8
510 .LVL61:
111:Src/si5351.c ****
112:Src/si5351.c **** si5351_write8(SI5351_MULTISYNTH1, 0x00);
511 .loc 1 112 5 view .LVU169
512 0058 0021 movs r1, #0
513 005a 3220 movs r0, #50
514 005c FFF7FEFF bl si5351_write8
515 .LVL62:
113:Src/si5351.c **** si5351_write8(SI5351_MULTISYNTH1+1, 0x01);
516 .loc 1 113 5 view .LVU170
517 0060 0121 movs r1, #1
518 0062 3320 movs r0, #51
519 0064 FFF7FEFF bl si5351_write8
520 .LVL63:
114:Src/si5351.c **** si5351_write8(SI5351_MULTISYNTH1+5, 0x00);
521 .loc 1 114 5 view .LVU171
522 0068 0021 movs r1, #0
523 006a 3720 movs r0, #55
524 006c FFF7FEFF bl si5351_write8
525 .LVL64:
115:Src/si5351.c **** si5351_write8(SI5351_MULTISYNTH1+6, 0x00);
526 .loc 1 115 5 view .LVU172
527 0070 0021 movs r1, #0
528 0072 3820 movs r0, #56
529 0074 FFF7FEFF bl si5351_write8
530 .LVL65:
ARM GAS /tmp/cccZCQn9.s page 13
2023-07-02 17:09:41 +02:00
2025-06-28 00:58:29 +02:00
116:Src/si5351.c **** si5351_write8(SI5351_MULTISYNTH1+7, 0x00);
531 .loc 1 116 5 view .LVU173
532 0078 0021 movs r1, #0
533 007a 3920 movs r0, #57
534 007c FFF7FEFF bl si5351_write8
535 .LVL66:
117:Src/si5351.c ****
118:Src/si5351.c **** si5351_write8(SI5351_MULTISYNTH2, 0x00);
536 .loc 1 118 5 view .LVU174
537 0080 0021 movs r1, #0
538 0082 3A20 movs r0, #58
539 0084 FFF7FEFF bl si5351_write8
540 .LVL67:
119:Src/si5351.c **** si5351_write8(SI5351_MULTISYNTH2+1, 0x01);
541 .loc 1 119 5 view .LVU175
542 0088 0121 movs r1, #1
543 008a 3B20 movs r0, #59
544 008c FFF7FEFF bl si5351_write8
545 .LVL68:
120:Src/si5351.c **** si5351_write8(SI5351_MULTISYNTH2+5, 0x00);
546 .loc 1 120 5 view .LVU176
547 0090 0021 movs r1, #0
548 0092 3F20 movs r0, #63
549 0094 FFF7FEFF bl si5351_write8
550 .LVL69:
121:Src/si5351.c **** si5351_write8(SI5351_MULTISYNTH2+6, 0x00);
551 .loc 1 121 5 view .LVU177
552 0098 0021 movs r1, #0
553 009a 4020 movs r0, #64
554 009c FFF7FEFF bl si5351_write8
555 .LVL70:
122:Src/si5351.c **** si5351_write8(SI5351_MULTISYNTH2+7, 0x00);
556 .loc 1 122 5 view .LVU178
557 00a0 0021 movs r1, #0
558 00a2 4120 movs r0, #65
559 00a4 FFF7FEFF bl si5351_write8
560 .LVL71:
123:Src/si5351.c ****
124:Src/si5351.c **** si5351_write8(SI5351_CLK0_CONTROL, 0x4F); // Power up CLK0, PLLA, MS0 operates in integer mod
561 .loc 1 124 5 view .LVU179
562 00a8 4F21 movs r1, #79
563 00aa 1020 movs r0, #16
564 00ac FFF7FEFF bl si5351_write8
565 .LVL72:
125:Src/si5351.c **** si5351_write8(SI5351_CLK1_CONTROL, 0x5F); // Power up CLK1, PLLA, MS0 operates in integer mod
566 .loc 1 125 5 view .LVU180
567 00b0 5F21 movs r1, #95
568 00b2 1120 movs r0, #17
569 00b4 FFF7FEFF bl si5351_write8
570 .LVL73:
126:Src/si5351.c **** si5351_write8(SI5351_CLK2_CONTROL, 0x6F); // Power up CLK2, PLLB, int, non inv, multisynth 2,
571 .loc 1 126 5 view .LVU181
572 00b8 6F21 movs r1, #111
573 00ba 1220 movs r0, #18
574 00bc FFF7FEFF bl si5351_write8
575 .LVL74:
127:Src/si5351.c ****
ARM GAS /tmp/cccZCQn9.s page 14
2023-07-02 17:09:41 +02:00
2025-06-28 00:58:29 +02:00
128:Src/si5351.c **** // Reference load configuration
129:Src/si5351.c **** si5351_write8(SI5351_CRYSTAL_LOAD, SI5351_CRYSTAL_LOAD_VALUE); // Set reference load C
576 .loc 1 129 5 view .LVU182
577 00c0 1221 movs r1, #18
578 00c2 B720 movs r0, #183
579 00c4 FFF7FEFF bl si5351_write8
580 .LVL75:
130:Src/si5351.c **** }
581 .loc 1 130 1 is_stmt 0 view .LVU183
582 00c8 03B0 add sp, sp, #12
583 .LCFI3:
584 .cfi_def_cfa_offset 4
585 @ sp needed
586 00ca 5DF804FB ldr pc, [sp], #4
587 .L25:
588 00ce 00BF .align 2
589 .L24:
590 00d0 00000000 .word oeb
591 .cfi_endproc
592 .LFE330:
594 .section .text.si5351_set_frequency,"ax",%progbits
595 .align 1
596 .global si5351_set_frequency
597 .syntax unified
598 .thumb
599 .thumb_func
601 si5351_set_frequency:
602 .LVL76:
603 .LFB331:
2023-07-02 17:09:41 +02:00
131:Src/si5351.c ****
2025-06-28 00:58:29 +02:00
132:Src/si5351.c **** void si5351_set_frequency(uint32_t freq, uint8_t pll){
604 .loc 1 132 54 is_stmt 1 view -0
605 .cfi_startproc
606 @ args = 0, pretend = 0, frame = 16
607 @ frame_needed = 0, uses_anonymous_args = 0
608 .loc 1 132 54 is_stmt 0 view .LVU185
609 0000 10B5 push {r4, lr}
610 .LCFI4:
611 .cfi_def_cfa_offset 8
612 .cfi_offset 4, -8
613 .cfi_offset 14, -4
614 0002 84B0 sub sp, sp, #16
615 .LCFI5:
616 .cfi_def_cfa_offset 24
617 0004 0C46 mov r4, r1
133:Src/si5351.c **** uint8_t regs[16];
618 .loc 1 133 2 is_stmt 1 view .LVU186
134:Src/si5351.c **** CalcRegisters(freq, regs);
619 .loc 1 134 2 view .LVU187
620 0006 6946 mov r1, sp
621 .LVL77:
622 .loc 1 134 2 is_stmt 0 view .LVU188
623 0008 FFF7FEFF bl CalcRegisters
624 .LVL78:
135:Src/si5351.c ****
136:Src/si5351.c **** // Load Output Multisynth0 with d (e and f already set during init. and never changed)
137:Src/si5351.c **** if(pll == 0){
ARM GAS /tmp/cccZCQn9.s page 15
2023-07-02 17:09:41 +02:00
2025-06-28 00:58:29 +02:00
625 .loc 1 137 2 is_stmt 1 view .LVU189
626 .loc 1 137 4 is_stmt 0 view .LVU190
627 000c 94B1 cbz r4, .L37
138:Src/si5351.c **** for (int i = 0; i < 8; i++)
139:Src/si5351.c **** si5351_write8(SI5351_PLLA + i, regs[i]);
140:Src/si5351.c **** for (int i = 10; i < 13; i++)
141:Src/si5351.c **** si5351_write8(34 + i, regs[i]);
142:Src/si5351.c **** } else if(pll == 1){
628 .loc 1 142 9 is_stmt 1 view .LVU191
629 .loc 1 142 11 is_stmt 0 view .LVU192
630 000e 012C cmp r4, #1
631 0010 1FD1 bne .L32
632 .LBB4:
143:Src/si5351.c **** for (int i = 0; i < 8; i++)
633 .loc 1 143 12 view .LVU193
634 0012 0024 movs r4, #0
635 .LVL79:
636 .loc 1 143 12 view .LVU194
637 0014 2EE0 b .L33
638 .LVL80:
639 .L29:
640 .loc 1 143 12 view .LVU195
641 .LBE4:
642 .LBB5:
139:Src/si5351.c **** for (int i = 10; i < 13; i++)
643 .loc 1 139 4 is_stmt 1 view .LVU196
644 0016 04F11003 add r3, r4, #16
645 001a 6B44 add r3, sp, r3
646 001c 04F11A00 add r0, r4, #26
647 0020 13F8101C ldrb r1, [r3, #-16] @ zero_extendqisi2
648 0024 C0B2 uxtb r0, r0
649 0026 FFF7FEFF bl si5351_write8
650 .LVL81:
138:Src/si5351.c **** for (int i = 0; i < 8; i++)
651 .loc 1 138 27 discriminator 3 view .LVU197
652 002a 0134 adds r4, r4, #1
653 .LVL82:
654 .L27:
138:Src/si5351.c **** for (int i = 0; i < 8; i++)
655 .loc 1 138 21 discriminator 1 view .LVU198
656 002c 072C cmp r4, #7
657 002e F2DD ble .L29
658 .LBE5:
659 .LBB6:
140:Src/si5351.c **** si5351_write8(34 + i, regs[i]);
660 .loc 1 140 12 is_stmt 0 view .LVU199
661 0030 0A24 movs r4, #10
662 .LVL83:
140:Src/si5351.c **** si5351_write8(34 + i, regs[i]);
663 .loc 1 140 12 view .LVU200
664 0032 0CE0 b .L30
665 .LVL84:
666 .L37:
140:Src/si5351.c **** si5351_write8(34 + i, regs[i]);
667 .loc 1 140 12 view .LVU201
668 .LBE6:
669 .LBB7:
ARM GAS /tmp/cccZCQn9.s page 16
2023-07-02 17:09:41 +02:00
2025-06-28 00:58:29 +02:00
138:Src/si5351.c **** si5351_write8(SI5351_PLLA + i, regs[i]);
670 .loc 1 138 12 view .LVU202
671 0034 0024 movs r4, #0
672 0036 F9E7 b .L27
673 .LVL85:
674 .L31:
138:Src/si5351.c **** si5351_write8(SI5351_PLLA + i, regs[i]);
675 .loc 1 138 12 view .LVU203
676 .LBE7:
677 .LBB8:
141:Src/si5351.c **** } else if(pll == 1){
678 .loc 1 141 11 is_stmt 1 view .LVU204
679 0038 04F11003 add r3, r4, #16
680 003c 6B44 add r3, sp, r3
681 003e 04F12200 add r0, r4, #34
682 0042 13F8101C ldrb r1, [r3, #-16] @ zero_extendqisi2
683 0046 C0B2 uxtb r0, r0
684 0048 FFF7FEFF bl si5351_write8
685 .LVL86:
140:Src/si5351.c **** si5351_write8(34 + i, regs[i]);
686 .loc 1 140 29 discriminator 3 view .LVU205
687 004c 0134 adds r4, r4, #1
688 .LVL87:
689 .L30:
140:Src/si5351.c **** si5351_write8(34 + i, regs[i]);
690 .loc 1 140 22 discriminator 1 view .LVU206
691 004e 0C2C cmp r4, #12
692 0050 F2DD ble .L31
693 .LVL88:
694 .L32:
140:Src/si5351.c **** si5351_write8(34 + i, regs[i]);
695 .loc 1 140 22 is_stmt 0 discriminator 1 view .LVU207
696 .LBE8:
144:Src/si5351.c **** si5351_write8(SI5351_PLLB + i, regs[i]);
145:Src/si5351.c **** for (int i = 10; i < 13; i++)
146:Src/si5351.c **** si5351_write8(42 + i, regs[i]);
147:Src/si5351.c **** }
148:Src/si5351.c ****
149:Src/si5351.c **** // Reset PLLA - fa un glitch, pero se non lo fai fa overflow
150:Src/si5351.c **** // HAL_Delay(1); // Allow registers to settle before resetting the PLL
151:Src/si5351.c **** si5351_write8(SI5351_RESET, 0x20);
697 .loc 1 151 5 is_stmt 1 view .LVU208
698 0052 2021 movs r1, #32
699 0054 B120 movs r0, #177
700 0056 FFF7FEFF bl si5351_write8
701 .LVL89:
152:Src/si5351.c **** }
702 .loc 1 152 1 is_stmt 0 view .LVU209
703 005a 04B0 add sp, sp, #16
704 .LCFI6:
705 .cfi_remember_state
706 .cfi_def_cfa_offset 8
707 @ sp needed
708 005c 10BD pop {r4, pc}
709 .LVL90:
710 .L34:
711 .LCFI7:
ARM GAS /tmp/cccZCQn9.s page 17
2023-07-02 17:09:41 +02:00
2025-06-28 00:58:29 +02:00
712 .cfi_restore_state
713 .LBB9:
144:Src/si5351.c **** si5351_write8(SI5351_PLLB + i, regs[i]);
714 .loc 1 144 4 is_stmt 1 view .LVU210
715 005e 04F11003 add r3, r4, #16
716 0062 6B44 add r3, sp, r3
717 0064 04F12200 add r0, r4, #34
718 0068 13F8101C ldrb r1, [r3, #-16] @ zero_extendqisi2
719 006c C0B2 uxtb r0, r0
720 006e FFF7FEFF bl si5351_write8
721 .LVL91:
143:Src/si5351.c **** si5351_write8(SI5351_PLLB + i, regs[i]);
722 .loc 1 143 27 discriminator 3 view .LVU211
723 0072 0134 adds r4, r4, #1
724 .LVL92:
725 .L33:
143:Src/si5351.c **** si5351_write8(SI5351_PLLB + i, regs[i]);
726 .loc 1 143 21 discriminator 1 view .LVU212
727 0074 072C cmp r4, #7
728 0076 F2DD ble .L34
729 .LBE9:
730 .LBB10:
145:Src/si5351.c **** si5351_write8(42 + i, regs[i]);
731 .loc 1 145 12 is_stmt 0 view .LVU213
732 0078 0A24 movs r4, #10
733 .LVL93:
145:Src/si5351.c **** si5351_write8(42 + i, regs[i]);
734 .loc 1 145 12 view .LVU214
735 007a 0AE0 b .L35
736 .LVL94:
737 .L36:
146:Src/si5351.c **** }
738 .loc 1 146 11 is_stmt 1 view .LVU215
739 007c 04F11003 add r3, r4, #16
740 0080 6B44 add r3, sp, r3
741 0082 04F12A00 add r0, r4, #42
742 0086 13F8101C ldrb r1, [r3, #-16] @ zero_extendqisi2
743 008a C0B2 uxtb r0, r0
744 008c FFF7FEFF bl si5351_write8
745 .LVL95:
145:Src/si5351.c **** si5351_write8(42 + i, regs[i]);
746 .loc 1 145 29 discriminator 3 view .LVU216
747 0090 0134 adds r4, r4, #1
748 .LVL96:
749 .L35:
145:Src/si5351.c **** si5351_write8(42 + i, regs[i]);
750 .loc 1 145 22 discriminator 1 view .LVU217
751 0092 0C2C cmp r4, #12
752 0094 F2DD ble .L36
753 0096 DCE7 b .L32
754 .LBE10:
755 .cfi_endproc
756 .LFE331:
758 .section .text.si5351_off_clk,"ax",%progbits
759 .align 1
760 .global si5351_off_clk
761 .syntax unified
ARM GAS /tmp/cccZCQn9.s page 18
2023-07-02 17:09:41 +02:00
2025-06-28 00:58:29 +02:00
762 .thumb
763 .thumb_func
765 si5351_off_clk:
766 .LVL97:
767 .LFB332:
153:Src/si5351.c ****
154:Src/si5351.c **** void si5351_off_clk(uint8_t clk){
768 .loc 1 154 33 view -0
769 .cfi_startproc
770 @ args = 0, pretend = 0, frame = 0
771 @ frame_needed = 0, uses_anonymous_args = 0
772 .loc 1 154 33 is_stmt 0 view .LVU219
773 0000 08B5 push {r3, lr}
774 .LCFI8:
775 .cfi_def_cfa_offset 8
776 .cfi_offset 3, -8
777 .cfi_offset 14, -4
155:Src/si5351.c **** oeb |= 1U << clk;
778 .loc 1 155 2 is_stmt 1 view .LVU220
779 .loc 1 155 12 is_stmt 0 view .LVU221
780 0002 0123 movs r3, #1
781 0004 8340 lsls r3, r3, r0
782 .loc 1 155 6 view .LVU222
783 0006 044A ldr r2, .L43
784 0008 1178 ldrb r1, [r2] @ zero_extendqisi2
785 000a 1943 orrs r1, r1, r3
786 000c C9B2 uxtb r1, r1
787 000e 1170 strb r1, [r2]
156:Src/si5351.c **** si5351_write8(SI5351_OUT_ENABLE, oeb);
788 .loc 1 156 2 is_stmt 1 view .LVU223
789 0010 0320 movs r0, #3
790 .LVL98:
791 .loc 1 156 2 is_stmt 0 view .LVU224
792 0012 FFF7FEFF bl si5351_write8
793 .LVL99:
157:Src/si5351.c **** }
794 .loc 1 157 1 view .LVU225
795 0016 08BD pop {r3, pc}
796 .L44:
797 .align 2
798 .L43:
799 0018 00000000 .word oeb
800 .cfi_endproc
801 .LFE332:
803 .section .text.si5351_on_clk,"ax",%progbits
804 .align 1
805 .global si5351_on_clk
806 .syntax unified
807 .thumb
808 .thumb_func
810 si5351_on_clk:
811 .LVL100:
812 .LFB333:
158:Src/si5351.c ****
159:Src/si5351.c **** void si5351_on_clk(uint8_t clk){
813 .loc 1 159 32 is_stmt 1 view -0
814 .cfi_startproc
ARM GAS /tmp/cccZCQn9.s page 19
2023-07-02 17:09:41 +02:00
2025-06-28 00:58:29 +02:00
815 @ args = 0, pretend = 0, frame = 0
816 @ frame_needed = 0, uses_anonymous_args = 0
817 .loc 1 159 32 is_stmt 0 view .LVU227
818 0000 08B5 push {r3, lr}
819 .LCFI9:
820 .cfi_def_cfa_offset 8
821 .cfi_offset 3, -8
822 .cfi_offset 14, -4
160:Src/si5351.c **** oeb &= ~(1U << clk);
823 .loc 1 160 2 is_stmt 1 view .LVU228
824 .loc 1 160 14 is_stmt 0 view .LVU229
825 0002 0123 movs r3, #1
826 0004 8340 lsls r3, r3, r0
827 .loc 1 160 6 view .LVU230
828 0006 044A ldr r2, .L47
829 0008 1178 ldrb r1, [r2] @ zero_extendqisi2
830 000a 21EA0301 bic r1, r1, r3
831 000e 1170 strb r1, [r2]
161:Src/si5351.c **** si5351_write8(SI5351_OUT_ENABLE, oeb);
832 .loc 1 161 2 is_stmt 1 view .LVU231
833 0010 0320 movs r0, #3
834 .LVL101:
835 .loc 1 161 2 is_stmt 0 view .LVU232
836 0012 FFF7FEFF bl si5351_write8
837 .LVL102:
162:Src/si5351.c **** }
838 .loc 1 162 1 view .LVU233
839 0016 08BD pop {r3, pc}
840 .L48:
841 .align 2
842 .L47:
843 0018 00000000 .word oeb
844 .cfi_endproc
845 .LFE333:
847 .global oeb
848 .section .bss.oeb,"aw",%nobits
851 oeb:
852 0000 00 .space 1
853 .text
854 .Letext0:
855 .file 2 "/home/fra/bin/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-eabi/arm-none-eabi/include/mach
856 .file 3 "/home/fra/bin/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-eabi/arm-none-eabi/include/sys/
857 .file 4 "Inc/si5351.h"
ARM GAS /tmp/cccZCQn9.s page 20
2023-07-02 17:09:41 +02:00
DEFINED SYMBOLS
*ABS*:00000000 si5351.c
2025-06-28 00:58:29 +02:00
/tmp/cccZCQn9.s:21 .text.CalcRegisters:00000000 $t
/tmp/cccZCQn9.s:27 .text.CalcRegisters:00000000 CalcRegisters
/tmp/cccZCQn9.s:425 .text.CalcRegisters:00000190 $d
/tmp/cccZCQn9.s:440 .text.si5351_initialize:00000000 $t
/tmp/cccZCQn9.s:446 .text.si5351_initialize:00000000 si5351_initialize
/tmp/cccZCQn9.s:590 .text.si5351_initialize:000000d0 $d
/tmp/cccZCQn9.s:851 .bss.oeb:00000000 oeb
/tmp/cccZCQn9.s:595 .text.si5351_set_frequency:00000000 $t
/tmp/cccZCQn9.s:601 .text.si5351_set_frequency:00000000 si5351_set_frequency
/tmp/cccZCQn9.s:759 .text.si5351_off_clk:00000000 $t
/tmp/cccZCQn9.s:765 .text.si5351_off_clk:00000000 si5351_off_clk
/tmp/cccZCQn9.s:799 .text.si5351_off_clk:00000018 $d
/tmp/cccZCQn9.s:804 .text.si5351_on_clk:00000000 $t
/tmp/cccZCQn9.s:810 .text.si5351_on_clk:00000000 si5351_on_clk
/tmp/cccZCQn9.s:843 .text.si5351_on_clk:00000018 $d
/tmp/cccZCQn9.s:852 .bss.oeb:00000000 $d
2023-07-02 17:09:41 +02:00
UNDEFINED SYMBOLS
__aeabi_ui2d
__aeabi_ddiv
__aeabi_d2uiz
__aeabi_d2iz
__aeabi_i2d
__aeabi_dsub
__aeabi_dmul
__aeabi_dadd
2025-06-28 00:58:29 +02:00
si5351_read8
si5351_write8