From 953cc586553a8ffc59b6a5471e852ac144bd9e1e Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Mon, 30 Dec 2024 16:58:26 +0100 Subject: [PATCH] wip --- README.md | 35 + build/final.elf | Bin 55116 -> 62900 bytes build/final.elf.map | 397 +-- build/gpio.S | 845 +++--- build/gpio.i | 41 +- build/gpio.o | Bin 42328 -> 43040 bytes build/main.S | 1424 ++++++---- build/main.i | 147 +- build/main.o | Bin 48600 -> 50972 bytes build/startup.S | 32 +- build/startup.i | 2 +- build/startup.o | Bin 33192 -> 33188 bytes build/timer.S | 512 ++-- build/timer.i | 37 +- build/timer.o | Bin 44612 -> 45400 bytes build/usart.S | 6341 +++++++++++++++++++++++++++++++++++++++++++ build/usart.i | 2303 ++++++++++++++++ build/usart.o | Bin 0 -> 48832 bytes src/flash.h | 2 +- src/gpio.c | 16 +- src/gpio.h | 11 +- src/main.c | 15 +- src/rcc.h | 29 + src/usart.c | 79 + src/usart.h | 59 + todo.txt | 2 + 26 files changed, 10968 insertions(+), 1361 deletions(-) create mode 100644 README.md create mode 100644 build/usart.S create mode 100644 build/usart.i create mode 100644 build/usart.o create mode 100644 src/usart.c create mode 100644 src/usart.h create mode 100644 todo.txt diff --git a/README.md b/README.md new file mode 100644 index 0000000..cc2b9e9 --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +# Falling sand on the STM32F411CE + +## Building +Run +```sh +make build +``` + +## Probe for the board +Run +```sh +st-info --probe +``` + +## Flashing +Run +```sh +make flash +``` + +## Debugging + +### `st-info --probe` shows 0KB flash +``` +> sudo st-info --probe +Found 1 stlink programmers + version: V2J43S28 + serial: 0671FF343056363043090732 + flash: 0 (pagesize: 16384) <--- 0KB flash + sram: 131072 + chipid: 0x431 + dev-type: STM32F411xC_xE +``` +This can happen when the flash is locked. One way to unlock it is to erase the entire chip via the +Windows application `ST-Link Util`. diff --git a/build/final.elf b/build/final.elf index 72a7ae973eff74ae76774e019bb5abccd9df6700..bbbeeea623e5c09d8b40616d6f8e7519404937dd 100755 GIT binary patch literal 62900 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 literal 55116 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
  • jsFUb{~nG12Z;}|pNA1OyhYIX@@RZDNEU{>M<2{*g7O&|tkKlF zqVavu_#tTg7_fN^Q1h4>GSK9685tNRvM_Lf$|jKe%hBYk85tNvSr|A#@eGo0N0Xn3 z#-E19pM%Cg}D=DvMs@~6@GH_-SG(D+Z$_;1koKhgMXObiUY%nTf$dIRJ?ZYI?D z6GY?7pz&4E__}C(D>S|x8s7%Ry2Mu z8h<7e1H(lY1`bdH0r`Ikn*2&M{x&rJJ~aMCH2zIA{xdZGXEgqAG(HD2YJ7;I@g>pt zifDW_G`=<(AJmH|Dgn1}R7x0BQXp-xWLVn>b9@Ze4oa;k$uwX{NlhwEkI&7|%Ph$+ z0=1+VDj14WGV>WqixbmRL}A^cOrvB&kj!m_bYi^{$ZnTp&9PP2&xr{xD)FNX<)$FD_$% zm{SJzH@FGOP+p#r4swDCWRx*61+_0%RFWK@n3GtP%TQd9Y0LmNnjtqeH$FEpFEKq8 z*(Zijb3x8Q3K+28V7@hGC@zanPRz*xS!v9WUy>f5Rtz!(7L2AK4otNfIJTiv9wmvn z1)xr4ZUM+2#__3T3?RpqXO|Wr>oH&`C`(~TD<}oK)dWl$fgEoLYQAIZKq9#nJR)cq zpH!3$N(h!9i;O@PLEIS+whL*@u(%-81levQkgp8mlanEINl|)ya(*tzC__WALoDOL z{)2fIB_WtVZ7V`H(Hz8qDK}@x%gqFj3}+^1gRC$C5hx~_Ffiy9SLT)^CNbz0mlQ$h z3>Yi3xCq*JX3#51ttes81NF`s^pc8;8T24ICNnQBAI45hN-9b%gY$|K^U_n{3XAg6 zb25ud;QZXgQHr{)-U5O9Hk!2(GDWDZCI)TcobX6U%gz;GHQ I0mU$N0Mfp6^Z)<= diff --git a/build/final.elf.map b/build/final.elf.map index 64b9935..e56c78f 100644 --- a/build/final.elf.map +++ b/build/final.elf.map @@ -36,6 +36,7 @@ Discarded input sections .group 0x00000000 0xc build/main.o .group 0x00000000 0xc build/main.o .group 0x00000000 0xc build/main.o + .group 0x00000000 0xc build/main.o .text 0x00000000 0x0 build/main.o .data 0x00000000 0x0 build/main.o .bss 0x00000000 0x0 build/main.o @@ -52,7 +53,7 @@ Discarded input sections .debug_macro 0x00000000 0x89 build/main.o .debug_macro 0x00000000 0x4cc build/main.o .debug_macro 0x00000000 0x22 build/main.o - .debug_macro 0x00000000 0x34 build/main.o + .debug_macro 0x00000000 0x46 build/main.o .group 0x00000000 0xc build/startup.o .group 0x00000000 0xc build/startup.o .group 0x00000000 0xc build/startup.o @@ -96,6 +97,40 @@ Discarded input sections .debug_macro 0x00000000 0x89 build/timer.o .debug_macro 0x00000000 0x4cc build/timer.o .debug_macro 0x00000000 0x22 build/timer.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .group 0x00000000 0xc build/usart.o + .text 0x00000000 0x0 build/usart.o + .data 0x00000000 0x0 build/usart.o + .bss 0x00000000 0x0 build/usart.o + .debug_macro 0x00000000 0x22 build/usart.o + .debug_macro 0x00000000 0x75 build/usart.o + .debug_macro 0x00000000 0x2a build/usart.o + .debug_macro 0x00000000 0x5c build/usart.o + .debug_macro 0x00000000 0x3c build/usart.o + .debug_macro 0x00000000 0x103 build/usart.o + .debug_macro 0x00000000 0x3a build/usart.o + .debug_macro 0x00000000 0x57 build/usart.o + .debug_macro 0x00000000 0x6a build/usart.o + .debug_macro 0x00000000 0x1df build/usart.o + .debug_macro 0x00000000 0x89 build/usart.o + .debug_macro 0x00000000 0x4cc build/usart.o + .debug_macro 0x00000000 0x198 build/usart.o + .debug_macro 0x00000000 0x22 build/usart.o + .debug_macro 0x00000000 0x76 build/usart.o Memory Configuration @@ -112,6 +147,7 @@ LOAD build/gpio.o LOAD build/main.o LOAD build/startup.o LOAD build/timer.o +LOAD build/usart.o 0x20020000 stack_start = (ORIGIN (sram) + LENGTH (sram)) .isr_vector 0x08000000 0x198 @@ -121,126 +157,144 @@ LOAD build/timer.o 0x08000000 interrupt_vector_table 0x08000198 . = ALIGN (0x4) -.text 0x08000198 0x358 +.text 0x08000198 0x574 0x08000198 . = ALIGN (0x4) *(.text) *(.text.*) .text.gpio_set_mode 0x08000198 0x62 build/gpio.o 0x08000198 gpio_set_mode + .text.gpio_set_af + 0x080001fa 0x98 build/gpio.o + 0x080001fa gpio_set_af .text.gpio_write - 0x080001fa 0x4c build/gpio.o - 0x080001fa gpio_write - *fill* 0x08000246 0x2 + 0x08000292 0x4c build/gpio.o + 0x08000292 gpio_write + *fill* 0x080002de 0x2 .text.system_clock_init - 0x08000248 0x144 build/main.o - .text.main 0x0800038c 0x88 build/main.o - 0x0800038c main + 0x080002e0 0x128 build/main.o + .text.main 0x08000408 0x9c build/main.o + 0x08000408 main .text.init_memory - 0x08000414 0x64 build/startup.o - 0x08000414 init_memory - .text.reset 0x08000478 0x10 build/startup.o - 0x08000478 reset + 0x080004a4 0x64 build/startup.o + 0x080004a4 init_memory + .text.reset 0x08000508 0x10 build/startup.o + 0x08000508 reset .text.default_handler - 0x08000488 0x8 build/startup.o - 0x08000488 exti0 - 0x08000488 debug_monitor - 0x08000488 rcc - 0x08000488 x - 0x08000488 sdio - 0x08000488 usage_fault - 0x08000488 tim1_up_tim10 - 0x08000488 usart1 - 0x08000488 i2c3_er - 0x08000488 spi2 - 0x08000488 dma1_stream1 - 0x08000488 bus_fault - 0x08000488 spi5 - 0x08000488 exti3 - 0x08000488 dma2_stream5 - 0x08000488 tim2 - 0x08000488 dma1_stream6 - 0x08000488 default_handler - 0x08000488 i2c1_er - 0x08000488 hard_fault - 0x08000488 usart6 - 0x08000488 exti15_10 - 0x08000488 usart2 - 0x08000488 pend_sv - 0x08000488 i2c1_ev - 0x08000488 wwdg - 0x08000488 adc - 0x08000488 rtc_alarm - 0x08000488 spi3 - 0x08000488 exti1 - 0x08000488 mem_manage - 0x08000488 dma2_stream1 - 0x08000488 dma1_stream2 - 0x08000488 dma2_stream3 - 0x08000488 sv_call - 0x08000488 tim3 - 0x08000488 otg_fs - 0x08000488 dma1_stream5 - 0x08000488 dma2_stream6 - 0x08000488 flash - 0x08000488 tamp_stamp - 0x08000488 i2c3_ev - 0x08000488 rtc_wkup - 0x08000488 dma2_stream0 - 0x08000488 pvd - 0x08000488 fpu - 0x08000488 exti4 - 0x08000488 exti2 - 0x08000488 spi1 - 0x08000488 dma1_stream0 - 0x08000488 tim1_brk_tim9 - 0x08000488 i2c2_ev - 0x08000488 otg_fs_wkup - 0x08000488 spi4 - 0x08000488 dma2_stream2 - 0x08000488 tim1_cc - 0x08000488 tim1_trg_com_tim11 - 0x08000488 exti9_5 - 0x08000488 dma1_stream3 - 0x08000488 dma2_stream4 - 0x08000488 i2c2_er - 0x08000488 dma2_stream7 - 0x08000488 dma1_stream7 - 0x08000488 nmi - 0x08000488 systick - 0x08000488 tim4 - 0x08000488 tim5 - 0x08000488 dma1_stream4 + 0x08000518 0x8 build/startup.o + 0x08000518 exti0 + 0x08000518 debug_monitor + 0x08000518 rcc + 0x08000518 x + 0x08000518 sdio + 0x08000518 usage_fault + 0x08000518 tim1_up_tim10 + 0x08000518 usart1 + 0x08000518 i2c3_er + 0x08000518 spi2 + 0x08000518 dma1_stream1 + 0x08000518 bus_fault + 0x08000518 spi5 + 0x08000518 exti3 + 0x08000518 dma2_stream5 + 0x08000518 tim2 + 0x08000518 dma1_stream6 + 0x08000518 default_handler + 0x08000518 i2c1_er + 0x08000518 hard_fault + 0x08000518 usart6 + 0x08000518 exti15_10 + 0x08000518 usart2 + 0x08000518 pend_sv + 0x08000518 i2c1_ev + 0x08000518 wwdg + 0x08000518 adc + 0x08000518 rtc_alarm + 0x08000518 spi3 + 0x08000518 exti1 + 0x08000518 mem_manage + 0x08000518 dma2_stream1 + 0x08000518 dma1_stream2 + 0x08000518 dma2_stream3 + 0x08000518 sv_call + 0x08000518 tim3 + 0x08000518 otg_fs + 0x08000518 dma1_stream5 + 0x08000518 dma2_stream6 + 0x08000518 flash + 0x08000518 tamp_stamp + 0x08000518 i2c3_ev + 0x08000518 rtc_wkup + 0x08000518 dma2_stream0 + 0x08000518 pvd + 0x08000518 fpu + 0x08000518 exti4 + 0x08000518 exti2 + 0x08000518 spi1 + 0x08000518 dma1_stream0 + 0x08000518 tim1_brk_tim9 + 0x08000518 i2c2_ev + 0x08000518 otg_fs_wkup + 0x08000518 spi4 + 0x08000518 dma2_stream2 + 0x08000518 tim1_cc + 0x08000518 tim1_trg_com_tim11 + 0x08000518 exti9_5 + 0x08000518 dma1_stream3 + 0x08000518 dma2_stream4 + 0x08000518 i2c2_er + 0x08000518 dma2_stream7 + 0x08000518 dma1_stream7 + 0x08000518 nmi + 0x08000518 systick + 0x08000518 tim4 + 0x08000518 tim5 + 0x08000518 dma1_stream4 .text.tim4_init - 0x08000490 0x40 build/timer.o - 0x08000490 tim4_init + 0x08000520 0x40 build/timer.o + 0x08000520 tim4_init .text.tim4_start - 0x080004d0 0x20 build/timer.o - 0x080004d0 tim4_start + 0x08000560 0x20 build/timer.o + 0x08000560 tim4_start + .text.usart2_init + 0x08000580 0x100 build/usart.o + 0x08000580 usart2_init + .text.usart2_start + 0x08000680 0x20 build/usart.o + 0x08000680 usart2_start + .text.usart2_write_byte + 0x080006a0 0x30 build/usart.o + 0x080006a0 usart2_write_byte + .text.usart2_write + 0x080006d0 0x2a build/usart.o + 0x080006d0 usart2_write *(.rodata) + *fill* 0x080006fa 0x2 + .rodata 0x080006fc 0xf build/main.o *(.rodata.*) - 0x080004f0 . = ALIGN (0x4) - 0x080004f0 _data_addr = LOADADDR (.data) + 0x0800070c . = ALIGN (0x4) + *fill* 0x0800070b 0x1 + 0x0800070c _data_addr = LOADADDR (.data) -.glue_7 0x080004f0 0x0 - .glue_7 0x080004f0 0x0 linker stubs +.glue_7 0x0800070c 0x0 + .glue_7 0x0800070c 0x0 linker stubs -.glue_7t 0x080004f0 0x0 - .glue_7t 0x080004f0 0x0 linker stubs +.glue_7t 0x0800070c 0x0 + .glue_7t 0x0800070c 0x0 linker stubs -.vfp11_veneer 0x080004f0 0x0 - .vfp11_veneer 0x080004f0 0x0 linker stubs +.vfp11_veneer 0x0800070c 0x0 + .vfp11_veneer 0x0800070c 0x0 linker stubs -.v4_bx 0x080004f0 0x0 - .v4_bx 0x080004f0 0x0 linker stubs +.v4_bx 0x0800070c 0x0 + .v4_bx 0x0800070c 0x0 linker stubs -.iplt 0x080004f0 0x0 - .iplt 0x080004f0 0x0 build/main.o +.iplt 0x0800070c 0x0 + .iplt 0x0800070c 0x0 build/main.o -.rel.dyn 0x080004f0 0x0 - .rel.iplt 0x080004f0 0x0 build/main.o +.rel.dyn 0x0800070c 0x0 + .rel.iplt 0x0800070c 0x0 build/main.o -.data 0x20000000 0x0 load address 0x080004f0 +.data 0x20000000 0x0 load address 0x0800070c 0x20000000 . = ALIGN (0x4) 0x20000000 _data_start = . *(.data) @@ -248,10 +302,10 @@ LOAD build/timer.o 0x20000000 . = ALIGN (0x4) 0x20000000 _data_end = . -.igot.plt 0x20000000 0x0 load address 0x080004f0 +.igot.plt 0x20000000 0x0 load address 0x0800070c .igot.plt 0x20000000 0x0 build/main.o -.bss 0x20000000 0x0 load address 0x080004f0 +.bss 0x20000000 0x0 load address 0x0800070c 0x20000000 . = ALIGN (0x4) 0x20000000 _bss_start = . *(.bss) @@ -261,40 +315,46 @@ LOAD build/timer.o OUTPUT(build/final.elf elf32-littlearm) LOAD linker stubs -.debug_info 0x00000000 0xb25 - .debug_info 0x00000000 0x21a build/gpio.o - .debug_info 0x0000021a 0x44e build/main.o - .debug_info 0x00000668 0x188 build/startup.o - .debug_info 0x000007f0 0x335 build/timer.o +.debug_info 0x00000000 0xf2b + .debug_info 0x00000000 0x262 build/gpio.o + .debug_info 0x00000262 0x47e build/main.o + .debug_info 0x000006e0 0x188 build/startup.o + .debug_info 0x00000868 0x335 build/timer.o + .debug_info 0x00000b9d 0x38e build/usart.o -.debug_abbrev 0x00000000 0x44b - .debug_abbrev 0x00000000 0x12b build/gpio.o - .debug_abbrev 0x0000012b 0x144 build/main.o - .debug_abbrev 0x0000026f 0x127 build/startup.o - .debug_abbrev 0x00000396 0xb5 build/timer.o +.debug_abbrev 0x00000000 0x5ae + .debug_abbrev 0x00000000 0x11d build/gpio.o + .debug_abbrev 0x0000011d 0x14b build/main.o + .debug_abbrev 0x00000268 0x127 build/startup.o + .debug_abbrev 0x0000038f 0xb5 build/timer.o + .debug_abbrev 0x00000444 0x16a build/usart.o -.debug_aranges 0x00000000 0xa8 +.debug_aranges 0x00000000 0xe8 .debug_aranges - 0x00000000 0x28 build/gpio.o + 0x00000000 0x30 build/gpio.o .debug_aranges - 0x00000028 0x28 build/main.o + 0x00000030 0x28 build/main.o .debug_aranges - 0x00000050 0x30 build/startup.o + 0x00000058 0x30 build/startup.o .debug_aranges - 0x00000080 0x28 build/timer.o + 0x00000088 0x28 build/timer.o + .debug_aranges + 0x000000b0 0x38 build/usart.o .debug_rnglists - 0x00000000 0x6c + 0x00000000 0x99 .debug_rnglists - 0x00000000 0x19 build/gpio.o + 0x00000000 0x20 build/gpio.o .debug_rnglists - 0x00000019 0x1b build/main.o + 0x00000020 0x1b build/main.o .debug_rnglists - 0x00000034 0x1f build/startup.o + 0x0000003b 0x1f build/startup.o .debug_rnglists - 0x00000053 0x19 build/timer.o + 0x0000005a 0x19 build/timer.o + .debug_rnglists + 0x00000073 0x26 build/usart.o -.debug_macro 0x00000000 0x3ba0 +.debug_macro 0x00000000 0x48cd .debug_macro 0x00000000 0xb56 build/gpio.o .debug_macro 0x00000b56 0x22 build/gpio.o .debug_macro 0x00000b78 0x75 build/gpio.o @@ -309,33 +369,39 @@ LOAD linker stubs .debug_macro 0x0000108c 0x89 build/gpio.o .debug_macro 0x00001115 0x4cc build/gpio.o .debug_macro 0x000015e1 0x22 build/gpio.o - .debug_macro 0x00001603 0x34 build/gpio.o - .debug_macro 0x00001637 0xb80 build/main.o - .debug_macro 0x000021b7 0x12a build/main.o - .debug_macro 0x000022e1 0x46 build/main.o - .debug_macro 0x00002327 0x2e build/main.o - .debug_macro 0x00002355 0x22 build/main.o - .debug_macro 0x00002377 0xb02 build/startup.o - .debug_macro 0x00002e79 0x56 build/startup.o - .debug_macro 0x00002ecf 0x51 build/startup.o - .debug_macro 0x00002f20 0xb5c build/timer.o - .debug_macro 0x00003a7c 0x124 build/timer.o + .debug_macro 0x00001603 0x46 build/gpio.o + .debug_macro 0x00001649 0xb89 build/main.o + .debug_macro 0x000021d2 0x19e build/main.o + .debug_macro 0x00002370 0x46 build/main.o + .debug_macro 0x000023b6 0x2e build/main.o + .debug_macro 0x000023e4 0x22 build/main.o + .debug_macro 0x00002406 0x76 build/main.o + .debug_macro 0x0000247c 0xb02 build/startup.o + .debug_macro 0x00002f7e 0x56 build/startup.o + .debug_macro 0x00002fd4 0x51 build/startup.o + .debug_macro 0x00003025 0xb5c build/timer.o + .debug_macro 0x00003b81 0x198 build/timer.o + .debug_macro 0x00003d19 0xb74 build/usart.o + .debug_macro 0x0000488d 0x40 build/usart.o -.debug_line 0x00000000 0x4b9 - .debug_line 0x00000000 0x116 build/gpio.o - .debug_line 0x00000116 0x1da build/main.o - .debug_line 0x000002f0 0xea build/startup.o - .debug_line 0x000003da 0xdf build/timer.o +.debug_line 0x00000000 0x6b6 + .debug_line 0x00000000 0x179 build/gpio.o + .debug_line 0x00000179 0x1da build/main.o + .debug_line 0x00000353 0xea build/startup.o + .debug_line 0x0000043d 0xdf build/timer.o + .debug_line 0x0000051c 0x19a build/usart.o -.debug_str 0x00000000 0x5eb8 - .debug_str 0x00000000 0x5372 build/gpio.o - 0x551a (size before relaxing) - .debug_str 0x00005372 0xab2 build/main.o - 0x5f7c (size before relaxing) - .debug_str 0x00005e24 0x88 build/startup.o - 0x3cdf (size before relaxing) - .debug_str 0x00005eac 0xc build/timer.o - 0x5b1a (size before relaxing) +.debug_str 0x00000000 0x63f5 + .debug_str 0x00000000 0x53d8 build/gpio.o + 0x5588 (size before relaxing) + .debug_str 0x000053d8 0xf48 build/main.o + 0x6462 (size before relaxing) + .debug_str 0x00006320 0x88 build/startup.o + 0x3cdc (size before relaxing) + .debug_str 0x000063a8 0xc build/timer.o + 0x5d37 (size before relaxing) + .debug_str 0x000063b4 0x41 build/usart.o + 0x6132 (size before relaxing) .comment 0x00000000 0x45 .comment 0x00000000 0x45 build/gpio.o @@ -343,6 +409,7 @@ LOAD linker stubs .comment 0x00000045 0x46 build/main.o .comment 0x00000045 0x46 build/startup.o .comment 0x00000045 0x46 build/timer.o + .comment 0x00000045 0x46 build/usart.o .ARM.attributes 0x00000000 0x34 @@ -354,24 +421,30 @@ LOAD linker stubs 0x00000068 0x34 build/startup.o .ARM.attributes 0x0000009c 0x34 build/timer.o + .ARM.attributes + 0x000000d0 0x34 build/usart.o .debug_line_str - 0x00000000 0x283 + 0x00000000 0x290 .debug_line_str - 0x00000000 0x24e build/gpio.o - 0x260 (size before relaxing) + 0x00000000 0x24b build/gpio.o + 0x25d (size before relaxing) .debug_line_str - 0x0000024e 0x23 build/main.o - 0x27c (size before relaxing) + 0x0000024b 0x2b build/main.o + 0x281 (size before relaxing) .debug_line_str - 0x00000271 0xa build/startup.o - 0x21b (size before relaxing) + 0x00000276 0xa build/startup.o + 0x218 (size before relaxing) .debug_line_str - 0x0000027b 0x8 build/timer.o - 0x25e (size before relaxing) + 0x00000280 0x8 build/timer.o + 0x25b (size before relaxing) + .debug_line_str + 0x00000288 0x8 build/usart.o + 0x26c (size before relaxing) -.debug_frame 0x00000000 0x16c - .debug_frame 0x00000000 0x60 build/gpio.o - .debug_frame 0x00000060 0x50 build/main.o - .debug_frame 0x000000b0 0x6c build/startup.o - .debug_frame 0x0000011c 0x50 build/timer.o +.debug_frame 0x00000000 0x234 + .debug_frame 0x00000000 0x88 build/gpio.o + .debug_frame 0x00000088 0x50 build/main.o + .debug_frame 0x000000d8 0x6c build/startup.o + .debug_frame 0x00000144 0x50 build/timer.o + .debug_frame 0x00000194 0xa0 build/usart.o diff --git a/build/gpio.S b/build/gpio.S index e9c50e4..db3fcb3 100644 --- a/build/gpio.S +++ b/build/gpio.S @@ -61,11 +61,11 @@ gpio_set_mode: .loc 1 9 7 ldr r3, [r7, #12] ldr r3, [r3] - .loc 1 9 34 + .loc 1 9 32 ldr r2, [r7, #8] lsls r2, r2, #1 - .loc 1 9 27 - movs r1, #17 + .loc 1 9 25 + movs r1, #3 lsl r2, r1, r2 .loc 1 9 18 mvns r2, r2 @@ -79,10 +79,10 @@ gpio_set_mode: .loc 1 10 24 ldrb r2, [r7, #5] @ zero_extendqisi2 and r1, r2, #3 - .loc 1 10 40 + .loc 1 10 39 ldr r2, [r7, #8] lsls r2, r2, #1 - .loc 1 10 33 + .loc 1 10 32 lsl r2, r1, r2 .loc 1 10 15 orrs r2, r2, r3 @@ -102,16 +102,16 @@ gpio_set_mode: .cfi_endproc .LFE0: .size gpio_set_mode, .-gpio_set_mode - .section .text.gpio_write,"ax",%progbits + .section .text.gpio_set_af,"ax",%progbits .align 1 - .global gpio_write + .global gpio_set_af .syntax unified .thumb .thumb_func - .type gpio_write, %function -gpio_write: + .type gpio_set_af, %function +gpio_set_af: .LFB1: - .loc 1 13 40 + .loc 1 13 44 .cfi_startproc @ args = 0, pretend = 0, frame = 16 @ frame_needed = 1, uses_anonymous_args = 0 @@ -138,30 +138,80 @@ gpio_write: lsls r3, r3, #10 .loc 1 14 16 str r3, [r7, #12] - .loc 1 15 32 + .loc 1 15 17 ldrh r3, [r7, #6] + .loc 1 15 7 and r3, r3, #15 - .loc 1 15 24 - movs r2, #3 - lsls r2, r2, r3 - .loc 1 15 55 - ldrb r3, [r7, #5] @ zero_extendqisi2 - cmp r3, #0 - beq .L3 - .loc 1 15 55 is_stmt 0 discriminator 1 - movs r3, #0 - b .L4 -.L3: - .loc 1 15 55 discriminator 2 - movs r3, #16 -.L4: - .loc 1 15 43 is_stmt 1 discriminator 4 - lsl r3, r2, r3 - mov r2, r3 - .loc 1 15 14 discriminator 4 + str r3, [r7, #8] + .loc 1 16 6 + ldr r3, [r7, #8] + cmp r3, #7 + bgt .L3 + .loc 1 17 6 ldr r3, [r7, #12] - str r2, [r3, #24] - .loc 1 16 1 discriminator 4 + ldr r3, [r3, #32] + .loc 1 17 32 + ldr r2, [r7, #8] + lsls r2, r2, #2 + .loc 1 17 25 + movs r1, #15 + lsl r2, r1, r2 + .loc 1 17 16 + mvns r2, r2 + .loc 1 17 13 + ands r2, r2, r3 + ldr r3, [r7, #12] + str r2, [r3, #32] + .loc 1 18 6 + ldr r3, [r7, #12] + ldr r3, [r3, #32] + .loc 1 18 20 + ldrb r2, [r7, #5] @ zero_extendqisi2 + and r1, r2, #15 + .loc 1 18 37 + ldr r2, [r7, #8] + lsls r2, r2, #2 + .loc 1 18 30 + lsl r2, r1, r2 + .loc 1 18 13 + orrs r2, r2, r3 + ldr r3, [r7, #12] + str r2, [r3, #32] + .loc 1 23 1 + b .L5 +.L3: + .loc 1 20 6 + ldr r3, [r7, #12] + ldr r3, [r3, #36] + .loc 1 20 32 + ldr r2, [r7, #8] + lsls r2, r2, #2 + .loc 1 20 25 + movs r1, #15 + lsl r2, r1, r2 + .loc 1 20 16 + mvns r2, r2 + .loc 1 20 13 + ands r2, r2, r3 + ldr r3, [r7, #12] + str r2, [r3, #36] + .loc 1 21 6 + ldr r3, [r7, #12] + ldr r3, [r3, #36] + .loc 1 21 20 + ldrb r2, [r7, #5] @ zero_extendqisi2 + and r1, r2, #15 + .loc 1 21 37 + ldr r2, [r7, #8] + lsls r2, r2, #2 + .loc 1 21 30 + lsl r2, r1, r2 + .loc 1 21 13 + orrs r2, r2, r3 + ldr r3, [r7, #12] + str r2, [r3, #36] +.L5: + .loc 1 23 1 nop adds r7, r7, #20 .cfi_def_cfa_offset 4 @@ -174,6 +224,79 @@ gpio_write: bx lr .cfi_endproc .LFE1: + .size gpio_set_af, .-gpio_set_af + .section .text.gpio_write,"ax",%progbits + .align 1 + .global gpio_write + .syntax unified + .thumb + .thumb_func + .type gpio_write, %function +gpio_write: +.LFB2: + .loc 1 25 40 + .cfi_startproc + @ args = 0, pretend = 0, frame = 16 + @ frame_needed = 1, uses_anonymous_args = 0 + @ link register save eliminated. + push {r7} + .cfi_def_cfa_offset 4 + .cfi_offset 7, -4 + sub sp, sp, #20 + .cfi_def_cfa_offset 24 + add r7, sp, #0 + .cfi_def_cfa_register 7 + mov r3, r0 + mov r2, r1 + strh r3, [r7, #6] @ movhi + mov r3, r2 + strb r3, [r7, #5] + .loc 1 26 83 + ldrh r3, [r7, #6] + lsrs r3, r3, #8 + uxth r3, r3 + .loc 1 26 38 + add r3, r3, #1048576 + adds r3, r3, #128 + lsls r3, r3, #10 + .loc 1 26 16 + str r3, [r7, #12] + .loc 1 27 32 + ldrh r3, [r7, #6] + and r3, r3, #15 + .loc 1 27 24 + movs r2, #3 + lsls r2, r2, r3 + .loc 1 27 55 + ldrb r3, [r7, #5] @ zero_extendqisi2 + cmp r3, #0 + beq .L7 + .loc 1 27 55 is_stmt 0 discriminator 1 + movs r3, #0 + b .L8 +.L7: + .loc 1 27 55 discriminator 2 + movs r3, #16 +.L8: + .loc 1 27 43 is_stmt 1 discriminator 4 + lsl r3, r2, r3 + mov r2, r3 + .loc 1 27 14 discriminator 4 + ldr r3, [r7, #12] + str r2, [r3, #24] + .loc 1 28 1 discriminator 4 + nop + adds r7, r7, #20 + .cfi_def_cfa_offset 4 + mov sp, r7 + .cfi_def_cfa_register 13 + @ sp needed + ldr r7, [sp], #4 + .cfi_restore 7 + .cfi_def_cfa_offset 0 + bx lr + .cfi_endproc +.LFE2: .size gpio_write, .-gpio_write .text .Letext0: @@ -182,16 +305,16 @@ gpio_write: .file 4 "src/gpio.h" .section .debug_info,"",%progbits .Ldebug_info0: - .4byte 0x216 + .4byte 0x25e .2byte 0x5 .byte 0x1 .byte 0x4 .4byte .Ldebug_abbrev0 - .uleb128 0x9 - .4byte .LASF894 + .uleb128 0xa + .4byte .LASF901 .byte 0x1d - .4byte .LASF895 - .4byte .LASF896 + .4byte .LASF902 + .4byte .LASF903 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -199,205 +322,206 @@ gpio_write: .uleb128 0x1 .byte 0x1 .byte 0x6 - .4byte .LASF863 + .4byte .LASF866 + .uleb128 0x2 + .4byte .LASF869 + .byte 0x2 + .byte 0x2b + .byte 0x17 + .4byte 0x3d .uleb128 0x1 .byte 0x1 .byte 0x8 - .4byte .LASF864 + .4byte .LASF867 .uleb128 0x1 .byte 0x2 .byte 0x5 - .4byte .LASF865 - .uleb128 0x3 .4byte .LASF868 + .uleb128 0x2 + .4byte .LASF870 .byte 0x2 .byte 0x39 .byte 0x1c - .4byte 0x4b + .4byte 0x57 .uleb128 0x1 .byte 0x2 .byte 0x7 - .4byte .LASF866 + .4byte .LASF871 .uleb128 0x1 .byte 0x4 .byte 0x5 - .4byte .LASF867 - .uleb128 0x3 - .4byte .LASF869 + .4byte .LASF872 + .uleb128 0x2 + .4byte .LASF873 .byte 0x2 .byte 0x4f .byte 0x1b - .4byte 0x65 - .uleb128 0x1 - .byte 0x4 - .byte 0x7 - .4byte .LASF870 - .uleb128 0x1 - .byte 0x8 - .byte 0x5 - .4byte .LASF871 - .uleb128 0x1 - .byte 0x8 - .byte 0x7 - .4byte .LASF872 - .uleb128 0xa - .byte 0x4 - .byte 0x5 - .ascii "int\000" - .uleb128 0x3 - .4byte .LASF873 - .byte 0x2 - .byte 0xe8 - .byte 0x16 - .4byte 0x8d + .4byte 0x71 .uleb128 0x1 .byte 0x4 .byte 0x7 .4byte .LASF874 - .uleb128 0x3 + .uleb128 0x1 + .byte 0x8 + .byte 0x5 .4byte .LASF875 + .uleb128 0x1 + .byte 0x8 + .byte 0x7 + .4byte .LASF876 + .uleb128 0xb + .byte 0x4 + .byte 0x5 + .ascii "int\000" + .uleb128 0x2 + .4byte .LASF877 + .byte 0x2 + .byte 0xe8 + .byte 0x16 + .4byte 0x99 + .uleb128 0x1 + .byte 0x4 + .byte 0x7 + .4byte .LASF878 + .uleb128 0x2 + .4byte .LASF879 + .byte 0x3 + .byte 0x18 + .byte 0x13 + .4byte 0x31 + .uleb128 0x2 + .4byte .LASF880 .byte 0x3 .byte 0x24 .byte 0x14 - .4byte 0x3f - .uleb128 0x3 - .4byte .LASF876 + .4byte 0x4b + .uleb128 0x2 + .4byte .LASF881 .byte 0x3 .byte 0x30 .byte 0x14 - .4byte 0x59 - .uleb128 0x6 - .4byte 0xa0 - .uleb128 0x3 - .4byte .LASF877 + .4byte 0x65 + .uleb128 0xc + .4byte 0xb8 + .uleb128 0x2 + .4byte .LASF882 .byte 0x3 .byte 0x52 .byte 0x15 - .4byte 0x81 - .uleb128 0xb - .4byte .LASF893 - .byte 0x30 + .4byte 0x8d + .uleb128 0xd + .4byte .LASF899 + .byte 0x28 .byte 0x4 .byte 0x7 .byte 0x8 - .4byte 0x139 - .uleb128 0x2 - .4byte .LASF878 + .4byte 0x151 + .uleb128 0x3 + .4byte .LASF883 .byte 0x8 - .4byte 0xac + .4byte 0xc4 .byte 0 - .uleb128 0x2 - .4byte .LASF879 + .uleb128 0x3 + .4byte .LASF884 .byte 0x9 - .4byte 0xac + .4byte 0xc4 .byte 0x4 - .uleb128 0x2 - .4byte .LASF880 + .uleb128 0x3 + .4byte .LASF885 .byte 0xa - .4byte 0xac + .4byte 0xc4 .byte 0x8 - .uleb128 0x2 - .4byte .LASF881 + .uleb128 0x3 + .4byte .LASF886 .byte 0xb - .4byte 0xac + .4byte 0xc4 .byte 0xc .uleb128 0x7 .ascii "IDR\000" .byte 0xc - .4byte 0xac + .4byte 0xc4 .byte 0x10 .uleb128 0x7 .ascii "ODR\000" .byte 0xd - .4byte 0xac + .4byte 0xc4 .byte 0x14 - .uleb128 0x2 - .4byte .LASF882 + .uleb128 0x3 + .4byte .LASF887 .byte 0xe - .4byte 0xac + .4byte 0xc4 .byte 0x18 - .uleb128 0x2 - .4byte .LASF883 + .uleb128 0x3 + .4byte .LASF888 .byte 0xf - .4byte 0xac + .4byte 0xc4 .byte 0x1c - .uleb128 0x2 - .4byte .LASF884 + .uleb128 0x3 + .4byte .LASF889 .byte 0x10 - .4byte 0x149 + .4byte 0xc4 .byte 0x20 - .uleb128 0x2 - .4byte .LASF885 + .uleb128 0x3 + .4byte .LASF890 .byte 0x11 - .4byte 0x149 - .byte 0x28 + .4byte 0xc4 + .byte 0x24 .byte 0 - .uleb128 0xc - .4byte 0xac - .4byte 0x149 - .uleb128 0xd - .4byte 0x8d - .byte 0x1 - .byte 0 - .uleb128 0x6 - .4byte 0x139 .uleb128 0xe .byte 0x7 .byte 0x1 - .4byte 0x31 + .4byte 0x3d .byte 0x4 - .byte 0x20 + .byte 0x26 .byte 0xe - .4byte 0x175 - .uleb128 0x4 - .4byte .LASF886 + .4byte 0x178 + .uleb128 0x5 + .4byte .LASF891 .byte 0 - .uleb128 0x4 - .4byte .LASF887 + .uleb128 0x5 + .4byte .LASF892 .byte 0x1 - .uleb128 0x4 - .4byte .LASF888 + .uleb128 0x5 + .4byte .LASF893 .byte 0x2 - .uleb128 0x4 - .4byte .LASF889 + .uleb128 0x5 + .4byte .LASF894 .byte 0x3 .byte 0 - .uleb128 0x3 - .4byte .LASF890 + .uleb128 0x2 + .4byte .LASF895 .byte 0x4 - .byte 0x25 + .byte 0x2b .byte 0x3 - .4byte 0x14e - .uleb128 0xf + .4byte 0x151 + .uleb128 0x8 .4byte .LASF897 - .byte 0x1 - .byte 0xd - .byte 0x6 - .4byte .LFB1 - .4byte .LFE1-.LFB1 + .byte 0x19 + .4byte .LFB2 + .4byte .LFE2-.LFB2 .uleb128 0x1 .byte 0x9c - .4byte 0x1c1 - .uleb128 0x5 + .4byte 0x1c2 + .uleb128 0x4 .ascii "pin\000" - .byte 0xd + .byte 0x19 .byte 0x1a - .4byte 0x94 + .4byte 0xac .uleb128 0x2 .byte 0x91 .sleb128 -18 - .uleb128 0x5 + .uleb128 0x4 .ascii "val\000" - .byte 0xd + .byte 0x19 .byte 0x23 - .4byte 0x1c1 + .4byte 0x1c2 .uleb128 0x2 .byte 0x91 .sleb128 -19 - .uleb128 0x8 - .4byte .LASF893 - .byte 0xe - .4byte 0x1c8 + .uleb128 0x6 + .4byte .LASF899 + .byte 0x1a + .4byte 0x1c9 .uleb128 0x2 .byte 0x91 .sleb128 -12 @@ -405,12 +529,51 @@ gpio_write: .uleb128 0x1 .byte 0x1 .byte 0x2 - .4byte .LASF891 - .uleb128 0x10 + .4byte .LASF896 + .uleb128 0xf .byte 0x4 - .4byte 0xbd - .uleb128 0x11 + .4byte 0xd5 + .uleb128 0x8 .4byte .LASF898 + .byte 0xd + .4byte .LFB1 + .4byte .LFE1-.LFB1 + .uleb128 0x1 + .byte 0x9c + .4byte 0x218 + .uleb128 0x4 + .ascii "pin\000" + .byte 0xd + .byte 0x1b + .4byte 0xac + .uleb128 0x2 + .byte 0x91 + .sleb128 -18 + .uleb128 0x4 + .ascii "af\000" + .byte 0xd + .byte 0x28 + .4byte 0xa0 + .uleb128 0x2 + .byte 0x91 + .sleb128 -19 + .uleb128 0x6 + .4byte .LASF899 + .byte 0xe + .4byte 0x1c9 + .uleb128 0x2 + .byte 0x91 + .sleb128 -12 + .uleb128 0x9 + .ascii "pn\000" + .byte 0xf + .4byte 0x86 + .uleb128 0x2 + .byte 0x91 + .sleb128 -16 + .byte 0 + .uleb128 0x10 + .4byte .LASF904 .byte 0x1 .byte 0x6 .byte 0x6 @@ -418,36 +581,34 @@ gpio_write: .4byte .LFE0-.LFB0 .uleb128 0x1 .byte 0x9c - .uleb128 0x5 + .uleb128 0x4 .ascii "pin\000" .byte 0x6 .byte 0x1d - .4byte 0x94 + .4byte 0xac .uleb128 0x2 .byte 0x91 .sleb128 -18 - .uleb128 0x12 - .4byte .LASF892 + .uleb128 0x11 + .4byte .LASF900 .byte 0x1 .byte 0x6 .byte 0x2c - .4byte 0x175 + .4byte 0x178 .uleb128 0x2 .byte 0x91 .sleb128 -19 - .uleb128 0x8 - .4byte .LASF893 + .uleb128 0x6 + .4byte .LASF899 .byte 0x7 - .4byte 0x1c8 + .4byte 0x1c9 .uleb128 0x2 .byte 0x91 .sleb128 -12 - .uleb128 0x13 + .uleb128 0x9 .ascii "pn\000" - .byte 0x1 .byte 0x8 - .byte 0x7 - .4byte 0x7a + .4byte 0x86 .uleb128 0x2 .byte 0x91 .sleb128 -16 @@ -467,6 +628,21 @@ gpio_write: .byte 0 .byte 0 .uleb128 0x2 + .uleb128 0x16 + .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x3 .uleb128 0xd .byte 0 .uleb128 0x3 @@ -485,31 +661,7 @@ gpio_write: .uleb128 0xb .byte 0 .byte 0 - .uleb128 0x3 - .uleb128 0x16 - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x39 - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .byte 0 - .byte 0 .uleb128 0x4 - .uleb128 0x28 - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x1c - .uleb128 0xb - .byte 0 - .byte 0 - .uleb128 0x5 .uleb128 0x5 .byte 0 .uleb128 0x3 @@ -527,11 +679,32 @@ gpio_write: .uleb128 0x18 .byte 0 .byte 0 - .uleb128 0x6 - .uleb128 0x35 + .uleb128 0x5 + .uleb128 0x28 .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x1c + .uleb128 0xb + .byte 0 + .byte 0 + .uleb128 0x6 + .uleb128 0x34 + .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0x21 + .sleb128 1 + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0x21 + .sleb128 16 .uleb128 0x49 .uleb128 0x13 + .uleb128 0x2 + .uleb128 0x18 .byte 0 .byte 0 .uleb128 0x7 @@ -554,8 +727,10 @@ gpio_write: .byte 0 .byte 0 .uleb128 0x8 - .uleb128 0x34 - .byte 0 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 .uleb128 0x3 .uleb128 0xe .uleb128 0x3a @@ -565,14 +740,41 @@ gpio_write: .uleb128 0xb .uleb128 0x39 .uleb128 0x21 - .sleb128 16 + .sleb128 6 + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x11 + .uleb128 0x1 + .uleb128 0x12 + .uleb128 0x6 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x7a + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x9 + .uleb128 0x34 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0x21 + .sleb128 1 + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0x21 + .sleb128 7 .uleb128 0x49 .uleb128 0x13 .uleb128 0x2 .uleb128 0x18 .byte 0 .byte 0 - .uleb128 0x9 + .uleb128 0xa .uleb128 0x11 .byte 0x1 .uleb128 0x25 @@ -593,7 +795,7 @@ gpio_write: .uleb128 0x17 .byte 0 .byte 0 - .uleb128 0xa + .uleb128 0xb .uleb128 0x24 .byte 0 .uleb128 0xb @@ -604,7 +806,14 @@ gpio_write: .uleb128 0x8 .byte 0 .byte 0 - .uleb128 0xb + .uleb128 0xc + .uleb128 0x35 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xd .uleb128 0x13 .byte 0x1 .uleb128 0x3 @@ -621,24 +830,6 @@ gpio_write: .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0xc - .uleb128 0x1 - .byte 0x1 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0xd - .uleb128 0x21 - .byte 0 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x2f - .uleb128 0xb - .byte 0 - .byte 0 .uleb128 0xe .uleb128 0x4 .byte 0x1 @@ -659,33 +850,6 @@ gpio_write: .byte 0 .byte 0 .uleb128 0xf - .uleb128 0x2e - .byte 0x1 - .uleb128 0x3f - .uleb128 0x19 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x39 - .uleb128 0xb - .uleb128 0x27 - .uleb128 0x19 - .uleb128 0x11 - .uleb128 0x1 - .uleb128 0x12 - .uleb128 0x6 - .uleb128 0x40 - .uleb128 0x18 - .uleb128 0x7a - .uleb128 0x19 - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x10 .uleb128 0xf .byte 0 .uleb128 0xb @@ -694,7 +858,7 @@ gpio_write: .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0x11 + .uleb128 0x10 .uleb128 0x2e .byte 0x1 .uleb128 0x3f @@ -719,7 +883,7 @@ gpio_write: .uleb128 0x19 .byte 0 .byte 0 - .uleb128 0x12 + .uleb128 0x11 .uleb128 0x5 .byte 0 .uleb128 0x3 @@ -736,26 +900,9 @@ gpio_write: .uleb128 0x18 .byte 0 .byte 0 - .uleb128 0x13 - .uleb128 0x34 - .byte 0 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x39 - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x2 - .uleb128 0x18 - .byte 0 - .byte 0 .byte 0 .section .debug_aranges,"",%progbits - .4byte 0x24 + .4byte 0x2c .2byte 0x2 .4byte .Ldebug_info0 .byte 0x4 @@ -766,6 +913,8 @@ gpio_write: .4byte .LFE0-.LFB0 .4byte .LFB1 .4byte .LFE1-.LFB1 + .4byte .LFB2 + .4byte .LFE2-.LFB2 .4byte 0 .4byte 0 .section .debug_rnglists,"",%progbits @@ -783,6 +932,9 @@ gpio_write: .byte 0x7 .4byte .LFB1 .uleb128 .LFE1-.LFB1 + .byte 0x7 + .4byte .LFB2 + .uleb128 .LFE2-.LFB2 .byte 0 .Ldebug_ranges3: .section .debug_macro,"",%progbits @@ -3552,7 +3704,7 @@ gpio_write: .uleb128 0x32 .4byte .LASF854 .byte 0 - .section .debug_macro,"G",%progbits,wm4.gpio.h.2.d78c96d470f4347bf35ed0e3d72ef81e,comdat + .section .debug_macro,"G",%progbits,wm4.gpio.h.2.e8e8ad5caa641b1849e6396c88187098,comdat .Ldebug_macro15: .2byte 0x5 .byte 0 @@ -3560,26 +3712,35 @@ gpio_write: .uleb128 0x2 .4byte .LASF855 .byte 0x5 - .uleb128 0x14 + .uleb128 0x15 .4byte .LASF856 .byte 0x5 - .uleb128 0x15 + .uleb128 0x16 .4byte .LASF857 .byte 0x5 - .uleb128 0x16 + .uleb128 0x17 .4byte .LASF858 .byte 0x5 - .uleb128 0x18 + .uleb128 0x19 .4byte .LASF859 .byte 0x5 .uleb128 0x1a .4byte .LASF860 .byte 0x5 - .uleb128 0x1c + .uleb128 0x1b .4byte .LASF861 .byte 0x5 .uleb128 0x1e .4byte .LASF862 + .byte 0x5 + .uleb128 0x20 + .4byte .LASF863 + .byte 0x5 + .uleb128 0x22 + .4byte .LASF864 + .byte 0x5 + .uleb128 0x24 + .4byte .LASF865 .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: @@ -3614,8 +3775,8 @@ gpio_write: .ascii "__SCN32FAST(x) __FAST32 __STRINGIFY(x)\000" .LASF318: .ascii "__LLACCUM_MIN__ (-0X1P31LLK-0X1P31LLK)\000" -.LASF381: - .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" +.LASF338: + .ascii "__UHQ_FBIT__ 16\000" .LASF310: .ascii "__LACCUM_EPSILON__ 0x1P-31LK\000" .LASF809: @@ -3624,7 +3785,7 @@ gpio_write: .ascii "__PTRDIFF_MAX__ 0x7fffffff\000" .LASF541: .ascii "_LONG_DOUBLE long double\000" -.LASF893: +.LASF899: .ascii "gpio\000" .LASF591: .ascii "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)\000" @@ -3632,7 +3793,7 @@ gpio_write: .ascii "_UINT32_T_DECLARED \000" .LASF90: .ascii "__INTMAX_MAX__ 0x7fffffffffffffffLL\000" -.LASF888: +.LASF893: .ascii "GPIO_MODE_AF\000" .LASF335: .ascii "__TQ_IBIT__ 0\000" @@ -3746,7 +3907,7 @@ gpio_write: .ascii "__need_wchar_t\000" .LASF199: .ascii "__FLT32_MIN_EXP__ (-125)\000" -.LASF894: +.LASF901: .ascii "GNU C2X 12.3.1 20230626 -mcpu=cortex-m4 -mthumb -mf" .ascii "loat-abi=hard -mfpu=fpv4-sp-d16 -march=armv7e-m+fp " .ascii "-g3 -ggdb -O0 -std=c2x -ffunction-sections -fdata-s" @@ -3815,8 +3976,8 @@ gpio_write: .ascii "__LACCUM_IBIT__ 32\000" .LASF592: .ascii "INT_LEAST8_MAX (__INT_LEAST8_MAX__)\000" -.LASF559: - .ascii "__EXP\000" +.LASF869: + .ascii "__uint8_t\000" .LASF81: .ascii "__SCHAR_WIDTH__ 8\000" .LASF455: @@ -3831,7 +3992,7 @@ gpio_write: .ascii "__INT64 \"ll\"\000" .LASF138: .ascii "__INTPTR_MAX__ 0x7fffffff\000" -.LASF858: +.LASF861: .ascii "GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADD" .ascii "R + (GPIO_PORT_OFFSET * port)))\000" .LASF499: @@ -3857,6 +4018,8 @@ gpio_write: .ascii "INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)\000" .LASF672: .ascii "__SCN8LEAST(x) __LEAST8 __STRINGIFY(x)\000" +.LASF858: + .ascii "GPIO_AF_USART2_TX (0b0111)\000" .LASF55: .ascii "__UINT_LEAST8_TYPE__ unsigned char\000" .LASF727: @@ -3865,9 +4028,7 @@ gpio_write: .ascii "__ACCUM_FBIT__ 15\000" .LASF791: .ascii "PRId64 __PRI64(d)\000" -.LASF302: - .ascii "__UACCUM_IBIT__ 16\000" -.LASF867: +.LASF872: .ascii "long int\000" .LASF818: .ascii "PRIXFAST64 __PRI64FAST(X)\000" @@ -3963,7 +4124,7 @@ gpio_write: .ascii "PRIoLEAST16 __PRI16LEAST(o)\000" .LASF458: .ascii "__NEWLIB__ 4\000" -.LASF886: +.LASF891: .ascii "GPIO_MODE_INPUT\000" .LASF720: .ascii "SCNi16 __SCN16(i)\000" @@ -3973,19 +4134,21 @@ gpio_write: .ascii "__FLT_DECIMAL_DIG__ 9\000" .LASF562: .ascii "_UINT8_T_DECLARED \000" -.LASF863: +.LASF866: .ascii "signed char\000" .LASF805: .ascii "PRIuLEAST64 __PRI64LEAST(u)\000" +.LASF879: + .ascii "uint8_t\000" .LASF704: .ascii "SCNoFAST8 __SCN8FAST(o)\000" .LASF625: .ascii "INTMAX_MIN (-INTMAX_MAX - 1)\000" .LASF431: .ascii "__ARM_FEATURE_FMA 1\000" -.LASF364: - .ascii "__GNUC_STDC_INLINE__ 1\000" -.LASF890: +.LASF466: + .ascii "_HAVE_LONG_DOUBLE 1\000" +.LASF895: .ascii "GPIO_MODE\000" .LASF256: .ascii "__FRACT_FBIT__ 15\000" @@ -4009,7 +4172,7 @@ gpio_write: .ascii "__FLT64_MAX_10_EXP__ 308\000" .LASF65: .ascii "__UINT_FAST32_TYPE__ unsigned int\000" -.LASF864: +.LASF867: .ascii "unsigned char\000" .LASF3: .ascii "__STDC_UTF_32__ 1\000" @@ -4051,19 +4214,17 @@ gpio_write: .ascii "__PRI16LEAST(x) __LEAST16 __STRINGIFY(x)\000" .LASF494: .ascii "__POSIX_VISIBLE 0\000" -.LASF466: - .ascii "_HAVE_LONG_DOUBLE 1\000" .LASF584: .ascii "__int_fast64_t_defined 1\000" .LASF837: .ascii "__PRIPTR(x) __STRINGIFY(x)\000" -.LASF875: +.LASF880: .ascii "uint16_t\000" .LASF417: .ascii "__thumb2__ 1\000" .LASF321: .ascii "__ULLACCUM_FBIT__ 32\000" -.LASF891: +.LASF896: .ascii "_Bool\000" .LASF366: .ascii "__STRICT_ANSI__ 1\000" @@ -4081,7 +4242,9 @@ gpio_write: .ascii "__PRAGMA_REDEFINE_EXTNAME 1\000" .LASF36: .ascii "__WCHAR_TYPE__ unsigned int\000" -.LASF887: +.LASF862: + .ascii "PORT(port) (((port) - 'A') << 8)\000" +.LASF892: .ascii "GPIO_MODE_OUTPUT\000" .LASF357: .ascii "__USA_IBIT__ 16\000" @@ -4119,7 +4282,7 @@ gpio_write: .ascii "__SCN64(x) __INT64 __STRINGIFY(x)\000" .LASF646: .ascii "_GCC_WRAP_STDINT_H \000" -.LASF868: +.LASF870: .ascii "__uint16_t\000" .LASF224: .ascii "__FLT64_EPSILON__ 2.2204460492503131e-16F64\000" @@ -4147,8 +4310,6 @@ gpio_write: .ascii "INTMAX_MAX (__INTMAX_MAX__)\000" .LASF601: .ascii "INT32_MAX (__INT32_MAX__)\000" -.LASF859: - .ascii "BIT(x) (1 << x)\000" .LASF469: .ascii "_MB_LEN_MAX 8\000" .LASF69: @@ -4177,8 +4338,6 @@ gpio_write: .ascii "__FLT_EPSILON__ 1.1920928955078125e-7F\000" .LASF376: .ascii "__GCC_ATOMIC_SHORT_LOCK_FREE 2\000" -.LASF860: - .ascii "PIN(port,num) ((((port) - 'A') << 8) | num)\000" .LASF806: .ascii "PRIxLEAST64 __PRI64LEAST(x)\000" .LASF419: @@ -4333,7 +4492,7 @@ gpio_write: .ascii "___int8_t_defined 1\000" .LASF248: .ascii "__SFRACT_MIN__ (-0.5HR-0.5HR)\000" -.LASF870: +.LASF874: .ascii "long unsigned int\000" .LASF349: .ascii "__SA_IBIT__ 16\000" @@ -4349,6 +4508,8 @@ gpio_write: .ascii "__ARM_FP16_FORMAT_IEEE\000" .LASF48: .ascii "__UINT16_TYPE__ short unsigned int\000" +.LASF857: + .ascii "GPIO_AF_USART2_RX (0b0111)\000" .LASF897: .ascii "gpio_write\000" .LASF569: @@ -4361,8 +4522,6 @@ gpio_write: .ascii "__FLT_EVAL_METHOD_TS_18661_3__ 0\000" .LASF521: .ascii "int +2\000" -.LASF896: - .ascii "/home/alex/code/own/c-compile-experiments\000" .LASF636: .ascii "INT8_C(x) __INT8_C(x)\000" .LASF63: @@ -4395,7 +4554,7 @@ gpio_write: .ascii "SCNx8 __SCN8(x)\000" .LASF208: .ascii "__FLT32_DENORM_MIN__ 1.4012984643248171e-45F32\000" -.LASF898: +.LASF904: .ascii "gpio_set_mode\000" .LASF125: .ascii "__UINT64_C(c) c ## ULL\000" @@ -4415,7 +4574,7 @@ gpio_write: .ascii "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 2\000" .LASF789: .ascii "__PRI64FAST(x) __FAST64 __STRINGIFY(x)\000" -.LASF877: +.LASF882: .ascii "uintptr_t\000" .LASF168: .ascii "__DBL_MAX_EXP__ 1024\000" @@ -4463,7 +4622,7 @@ gpio_write: .ascii "PRIX32 __PRI32(X)\000" .LASF773: .ascii "SCNxLEAST32 __SCN32LEAST(x)\000" -.LASF880: +.LASF885: .ascii "OSPEEDR\000" .LASF711: .ascii "__SCN16LEAST(x) __LEAST16 __STRINGIFY(x)\000" @@ -4493,7 +4652,7 @@ gpio_write: .ascii "__ULACCUM_MIN__ 0.0ULK\000" .LASF461: .ascii "_ATEXIT_DYNAMIC_ALLOC 1\000" -.LASF869: +.LASF873: .ascii "__uint32_t\000" .LASF188: .ascii "__LDBL_MAX__ 1.7976931348623157e+308L\000" @@ -4503,7 +4662,7 @@ gpio_write: .ascii "__FLT_RADIX__ 2\000" .LASF454: .ascii "_INTTYPES_H \000" -.LASF871: +.LASF875: .ascii "long long int\000" .LASF401: .ascii "__ARM_FEATURE_CMSE\000" @@ -4523,6 +4682,8 @@ gpio_write: .ascii "_NEWLIB_VERSION \"4.3.0\"\000" .LASF137: .ascii "__UINT_FAST64_MAX__ 0xffffffffffffffffULL\000" +.LASF722: + .ascii "SCNu16 __SCN16(u)\000" .LASF423: .ascii "__ARM_FP\000" .LASF347: @@ -4533,6 +4694,8 @@ gpio_write: .ascii "__GCC_ATOMIC_LLONG_LOCK_FREE 1\000" .LASF239: .ascii "__FLT32X_MIN__ 2.2250738585072014e-308F32x\000" +.LASF856: + .ascii "GPIO_AF_MCO_1 (0b0000)\000" .LASF218: .ascii "__FLT64_MAX_EXP__ 1024\000" .LASF653: @@ -4608,7 +4771,7 @@ gpio_write: .ascii "\000" .LASF582: .ascii "__int_fast16_t_defined 1\000" -.LASF878: +.LASF883: .ascii "MODER\000" .LASF482: .ascii "__FLOAT_TYPE float\000" @@ -4619,9 +4782,9 @@ gpio_write: .ascii "L)\000" .LASF607: .ascii "INT64_MAX (__INT64_MAX__)\000" -.LASF874: +.LASF878: .ascii "unsigned int\000" -.LASF873: +.LASF877: .ascii "__uintptr_t\000" .LASF459: .ascii "__NEWLIB_MINOR__ 3\000" @@ -4647,18 +4810,18 @@ gpio_write: .ascii "_FVWRITE_IN_STREAMIO 1\000" .LASF662: .ascii "_WCHAR_T_DECLARED \000" -.LASF361: - .ascii "__UTA_IBIT__ 64\000" .LASF24: .ascii "__CHAR_BIT__ 8\000" .LASF143: .ascii "__FLT_EVAL_METHOD__ 0\000" -.LASF865: +.LASF868: .ascii "short int\000" .LASF685: .ascii "PRIdLEAST8 __PRI8LEAST(d)\000" .LASF70: .ascii "__SCHAR_MAX__ 0x7f\000" +.LASF559: + .ascii "__EXP\000" .LASF127: .ascii "__INT_FAST8_WIDTH__ 32\000" .LASF2: @@ -4675,6 +4838,8 @@ gpio_write: .ascii "__LFRACT_MAX__ 0X7FFFFFFFP-31LR\000" .LASF389: .ascii "__SIZEOF_PTRDIFF_T__ 4\000" +.LASF270: + .ascii "__LFRACT_EPSILON__ 0x1P-31LR\000" .LASF649: .ascii "__WCHAR_T__ \000" .LASF555: @@ -4693,6 +4858,8 @@ gpio_write: .ascii "__ARM_FEATURE_COPROC 15\000" .LASF483: .ascii "__OBSOLETE_MATH_DEFAULT 1\000" +.LASF898: + .ascii "gpio_set_af\000" .LASF82: .ascii "__SHRT_WIDTH__ 16\000" .LASF472: @@ -4713,8 +4880,8 @@ gpio_write: .ascii "__ATFILE_VISIBLE 0\000" .LASF372: .ascii "__GCC_ATOMIC_CHAR_LOCK_FREE 2\000" -.LASF270: - .ascii "__LFRACT_EPSILON__ 0x1P-31LR\000" +.LASF695: + .ascii "SCNxLEAST8 __SCN8LEAST(x)\000" .LASF808: .ascii "SCNdLEAST64 __SCN64LEAST(d)\000" .LASF538: @@ -4791,7 +4958,7 @@ gpio_write: .ascii "SCNuFAST16 __SCN16FAST(u)\000" .LASF801: .ascii "SCNx64 __SCN64(x)\000" -.LASF862: +.LASF865: .ascii "PINPORT(pin) (pin >> 8)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" @@ -4839,7 +5006,7 @@ gpio_write: .ascii "__ORDER_LITTLE_ENDIAN__ 1234\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF872: +.LASF876: .ascii "long long unsigned int\000" .LASF611: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" @@ -4853,8 +5020,6 @@ gpio_write: .ascii "__SHRT_MAX__ 0x7fff\000" .LASF196: .ascii "__LDBL_IS_IEC_60559__ 2\000" -.LASF695: - .ascii "SCNxLEAST8 __SCN8LEAST(x)\000" .LASF35: .ascii "__PTRDIFF_TYPE__ int\000" .LASF670: @@ -4917,11 +5082,11 @@ gpio_write: .ascii "SCNdFAST8 __SCN8FAST(d)\000" .LASF576: .ascii "_UINTPTR_T_DECLARED \000" -.LASF885: +.LASF890: .ascii "AFRH\000" .LASF314: .ascii "__ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK\000" -.LASF884: +.LASF889: .ascii "AFRL\000" .LASF273: .ascii "__ULFRACT_MIN__ 0.0ULR\000" @@ -4935,7 +5100,7 @@ gpio_write: .ascii "__INT32_TYPE__ long int\000" .LASF118: .ascii "__UINT_LEAST8_MAX__ 0xff\000" -.LASF883: +.LASF888: .ascii "LCKR\000" .LASF520: .ascii "__int20__ +2\000" @@ -4949,6 +5114,8 @@ gpio_write: .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" .LASF743: .ascii "SCNoFAST16 __SCN16FAST(o)\000" +.LASF863: + .ascii "PIN(port,num) (PORT(port) | num)\000" .LASF345: .ascii "__UTQ_IBIT__ 0\000" .LASF348: @@ -4963,6 +5130,8 @@ gpio_write: .ascii "__ARM_EABI__ 1\000" .LASF465: .ascii "_HAVE_INITFINI_ARRAY 1\000" +.LASF302: + .ascii "__UACCUM_IBIT__ 16\000" .LASF732: .ascii "SCNoLEAST16 __SCN16LEAST(o)\000" .LASF473: @@ -4981,7 +5150,7 @@ gpio_write: .ascii "__QQ_IBIT__ 0\000" .LASF763: .ascii "PRIdLEAST32 __PRI32LEAST(d)\000" -.LASF879: +.LASF884: .ascii "OTYPER\000" .LASF811: .ascii "SCNuLEAST64 __SCN64LEAST(u)\000" @@ -5001,11 +5170,11 @@ gpio_write: .ascii "__GNUC_MINOR__ 3\000" .LASF57: .ascii "__UINT_LEAST32_TYPE__ long unsigned int\000" -.LASF895: +.LASF902: .ascii "src/gpio.c\000" .LASF405: .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" -.LASF856: +.LASF859: .ascii "GPIO_BASE_ADDR (0x40020000U)\000" .LASF38: .ascii "__INTMAX_TYPE__ long long int\000" @@ -5057,7 +5226,7 @@ gpio_write: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" .LASF23: .ascii "__SIZEOF_SIZE_T__ 4\000" -.LASF857: +.LASF860: .ascii "GPIO_PORT_OFFSET (0x400U)\000" .LASF50: .ascii "__UINT64_TYPE__ long long unsigned int\000" @@ -5075,17 +5244,17 @@ gpio_write: .ascii "__ACCUM_IBIT__ 16\000" .LASF509: .ascii "unsigned\000" -.LASF881: +.LASF381: + .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" +.LASF886: .ascii "PUPDR\000" .LASF835: .ascii "SCNuMAX __SCNMAX(u)\000" .LASF121: .ascii "__UINT16_C(c) c\000" -.LASF542: - .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF359: .ascii "__UDA_IBIT__ 32\000" -.LASF892: +.LASF900: .ascii "mode\000" .LASF586: .ascii "INTPTR_MAX (__INTPTR_MAX__)\000" @@ -5095,11 +5264,11 @@ gpio_write: .ascii "INT64_MIN (-__INT64_MAX__ - 1)\000" .LASF9: .ascii "__ATOMIC_RELAXED 0\000" -.LASF338: - .ascii "__UHQ_FBIT__ 16\000" +.LASF542: + .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF443: .ascii "__ARM_FEATURE_COPROC\000" -.LASF889: +.LASF894: .ascii "GPIO_MODE_ANALOG\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" @@ -5137,7 +5306,7 @@ gpio_write: .ascii "__FAST8 \000" .LASF496: .ascii "__XSI_VISIBLE 0\000" -.LASF882: +.LASF887: .ascii "BSRR\000" .LASF794: .ascii "PRIu64 __PRI64(u)\000" @@ -5149,8 +5318,8 @@ gpio_write: .ascii "PRIxMAX __PRIMAX(x)\000" .LASF487: .ascii "__GNUC_PREREQ__(ma,mi) __GNUC_PREREQ(ma, mi)\000" -.LASF722: - .ascii "SCNu16 __SCN16(u)\000" +.LASF361: + .ascii "__UTA_IBIT__ 64\000" .LASF322: .ascii "__ULLACCUM_IBIT__ 32\000" .LASF396: @@ -5225,7 +5394,7 @@ gpio_write: .ascii "PRIx32 __PRI32(x)\000" .LASF278: .ascii "__LLFRACT_MIN__ (-0.5LLR-0.5LLR)\000" -.LASF876: +.LASF881: .ascii "uint32_t\000" .LASF689: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" @@ -5249,6 +5418,8 @@ gpio_write: .ascii "SCNiFAST32 __SCN32FAST(i)\000" .LASF355: .ascii "__UHA_IBIT__ 8\000" +.LASF364: + .ascii "__GNUC_STDC_INLINE__ 1\000" .LASF300: .ascii "__ACCUM_EPSILON__ 0x1P-15K\000" .LASF315: @@ -5273,13 +5444,13 @@ gpio_write: .ascii "__INT_LEAST16_TYPE__ short int\000" .LASF326: .ascii "__QQ_FBIT__ 7\000" -.LASF861: +.LASF864: .ascii "PINNUM(pin) (pin & 0b1111)\000" .LASF768: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF866: +.LASF871: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -5327,6 +5498,8 @@ gpio_write: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF280: .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" +.LASF903: + .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF249: .ascii "__SFRACT_MAX__ 0X7FP-7HR\000" .LASF230: diff --git a/build/gpio.i b/build/gpio.i index ba500f4..d992b00 100644 --- a/build/gpio.i +++ b/build/gpio.i @@ -1,5 +1,5 @@ # 0 "src/gpio.c" -# 1 "/home/alex/code/own/c-compile-experiments//" +# 1 "/home/alex/code/own/stm32-falling-sand//" # 0 "" #define __STDC__ 1 # 0 "" @@ -1995,17 +1995,23 @@ struct gpio { volatile uint32_t ODR; volatile uint32_t BSRR; volatile uint32_t LCKR; - volatile uint32_t AFRL[2]; - volatile uint32_t AFRH[2]; + volatile uint32_t AFRL; + volatile uint32_t AFRH; }; + +#define GPIO_AF_MCO_1 (0b0000) +#define GPIO_AF_USART2_RX (0b0111) +#define GPIO_AF_USART2_TX (0b0111) + #define GPIO_BASE_ADDR (0x40020000U) #define GPIO_PORT_OFFSET (0x400U) #define GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADDR + (GPIO_PORT_OFFSET * port))) -#define BIT(x) (1 << x) -#define PIN(port,num) ((((port) - 'A') << 8) | num) +#define PORT(port) (((port) - 'A') << 8) + +#define PIN(port,num) (PORT(port) | num) #define PINNUM(pin) (pin & 0b1111) @@ -2019,24 +2025,37 @@ typedef enum { } GPIO_MODE; void gpio_set_mode(uint16_t pin, GPIO_MODE mode); +void gpio_set_af(uint16_t pin, uint8_t af); void gpio_write(uint16_t pin, -# 40 "src/gpio.h" 3 4 +# 47 "src/gpio.h" 3 4 _Bool -# 40 "src/gpio.h" +# 47 "src/gpio.h" val); # 5 "src/gpio.c" 2 void gpio_set_mode(uint16_t pin, GPIO_MODE mode) { struct gpio *gpio = ((struct gpio*)(uintptr_t)((0x40020000U) + ((0x400U) * (pin >> 8)))); int pn = (pin & 0b1111); - gpio->MODER &= ~(0x0011 << (pn * 2)); - gpio->MODER |= (mode & 0b011) << (pn * 2); + gpio->MODER &= ~(0b11 << (pn * 2)); + gpio->MODER |= (mode & 0b11) << (pn * 2); +} + +void gpio_set_af(uint16_t pin, uint8_t af) { + struct gpio *gpio = ((struct gpio*)(uintptr_t)((0x40020000U) + ((0x400U) * (pin >> 8)))); + int pn = (pin & 0b1111); + if (pn < 8) { + gpio->AFRL &= ~(0b1111 << (pn * 4)); + gpio->AFRL |= (af & 0b1111) << (pn * 4); + } else { + gpio->AFRH &= ~(0b1111 << (pn * 4)); + gpio->AFRH |= (af & 0b1111) << (pn * 4); + } } void gpio_write(uint16_t pin, -# 13 "src/gpio.c" 3 4 +# 25 "src/gpio.c" 3 4 _Bool -# 13 "src/gpio.c" +# 25 "src/gpio.c" val) { struct gpio *gpio = ((struct gpio*)(uintptr_t)((0x40020000U) + ((0x400U) * (pin >> 8)))); gpio->BSRR = (0b0011 << (pin & 0b1111)) << (val ? 0 : 16); diff --git a/build/gpio.o b/build/gpio.o index 81c99fcbae6b6417a239de18d30f01cf704eb081..656d143b69402a982a5821bf9f901faa97f617c9 100644 GIT binary patch delta 18584 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 delta 17750 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 diff --git a/build/main.S b/build/main.S index 347c88a..42372f6 100644 --- a/build/main.S +++ b/build/main.S @@ -25,7 +25,7 @@ .type system_clock_init, %function system_clock_init: .LFB0: - .loc 1 12 37 + .loc 1 13 37 .cfi_startproc @ args = 0, pretend = 0, frame = 0 @ frame_needed = 1, uses_anonymous_args = 0 @@ -35,189 +35,175 @@ system_clock_init: .cfi_offset 7, -4 add r7, sp, #0 .cfi_def_cfa_register 7 - .loc 1 14 33 + .loc 1 15 33 ldr r3, .L5 ldr r3, [r3, #64] ldr r2, .L5 - .loc 1 14 43 + .loc 1 15 43 orr r3, r3, #268435456 str r3, [r2, #64] - .loc 1 17 33 - ldr r3, .L5+4 - ldr r3, [r3] - ldr r2, .L5+4 - .loc 1 17 38 - bic r3, r3, #49152 - str r3, [r2] .loc 1 18 33 ldr r3, .L5+4 ldr r3, [r3] ldr r2, .L5+4 .loc 1 18 38 + bic r3, r3, #49152 + str r3, [r2] + .loc 1 19 33 + ldr r3, .L5+4 + ldr r3, [r3] + ldr r2, .L5+4 + .loc 1 19 38 orr r3, r3, #49152 str r3, [r2] - .loc 1 21 33 + .loc 1 22 33 ldr r3, .L5 ldr r3, [r3] ldr r2, .L5 - .loc 1 21 38 + .loc 1 22 38 + bic r3, r3, #1 + str r3, [r2] + .loc 1 34 33 + ldr r3, .L5 + ldr r3, [r3] + ldr r2, .L5 + .loc 1 34 38 orr r3, r3, #65536 str r3, [r2] - .loc 1 25 9 - nop -.L2: - .loc 1 25 42 discriminator 1 - ldr r3, .L5 - ldr r3, [r3] - .loc 1 25 47 discriminator 1 - and r3, r3, #131072 - .loc 1 25 10 discriminator 1 - cmp r3, #0 - beq .L2 - .loc 1 29 33 + .loc 1 37 33 ldr r3, .L5 ldr r3, [r3] ldr r2, .L5 - .loc 1 29 38 + .loc 1 37 38 + orr r3, r3, #524288 + str r3, [r2] + .loc 1 41 9 + nop +.L2: + .loc 1 41 42 discriminator 1 + ldr r3, .L5 + ldr r3, [r3] + .loc 1 41 47 discriminator 1 + and r3, r3, #131072 + .loc 1 41 10 discriminator 1 + cmp r3, #0 + beq .L2 + .loc 1 45 33 + ldr r3, .L5 + ldr r3, [r3] + ldr r2, .L5 + .loc 1 45 38 bic r3, r3, #16777216 str r3, [r2] - .loc 1 32 33 + .loc 1 48 33 ldr r3, .L5 ldr r3, [r3, #4] ldr r2, .L5 - .loc 1 32 43 + .loc 1 48 43 orr r3, r3, #4194304 str r3, [r2, #4] - .loc 1 35 33 + .loc 1 51 33 ldr r3, .L5 ldr r2, [r3, #4] ldr r1, .L5 - .loc 1 35 43 + .loc 1 51 43 ldr r3, .L5+8 orrs r3, r3, r2 str r3, [r1, #4] - .loc 1 38 33 + .loc 1 54 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 38 40 + .loc 1 54 40 bic r3, r3, #240 str r3, [r2, #8] - .loc 1 39 33 + .loc 1 55 33 ldr r3, .L5 ldr r2, .L5 ldr r3, [r3, #8] - .loc 1 39 40 + .loc 1 55 40 str r3, [r2, #8] - .loc 1 42 33 + .loc 1 58 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 42 40 + .loc 1 58 40 bic r3, r3, #7168 str r3, [r2, #8] - .loc 1 43 33 + .loc 1 59 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 43 40 + .loc 1 59 40 orr r3, r3, #4096 str r3, [r2, #8] - .loc 1 46 33 - ldr r3, .L5 - ldr r3, [r3, #8] - ldr r2, .L5 - .loc 1 46 40 - bic r3, r3, #57344 - str r3, [r2, #8] - .loc 1 47 33 - ldr r3, .L5 - ldr r2, .L5 - ldr r3, [r3, #8] - .loc 1 47 40 - str r3, [r2, #8] - .loc 1 50 33 - ldr r3, .L5 - ldr r3, [r3] - ldr r2, .L5 - .loc 1 50 38 - orr r3, r3, #16777216 - str r3, [r2] - .loc 1 54 9 - nop -.L3: - .loc 1 54 42 discriminator 1 - ldr r3, .L5 - ldr r3, [r3] - .loc 1 54 47 discriminator 1 - and r3, r3, #131072 - .loc 1 54 10 discriminator 1 - cmp r3, #0 - beq .L3 - .loc 1 57 35 - ldr r3, .L5+12 - ldr r3, [r3] - ldr r2, .L5+12 - .loc 1 57 41 - orr r3, r3, #1024 - str r3, [r2] - .loc 1 58 35 - ldr r3, .L5+12 - ldr r3, [r3] - ldr r2, .L5+12 - .loc 1 58 41 - orr r3, r3, #512 - str r3, [r2] - .loc 1 61 35 - ldr r3, .L5+12 - ldr r3, [r3] - ldr r2, .L5+12 - .loc 1 61 41 - bic r3, r3, #15 - str r3, [r2] .loc 1 62 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 .loc 1 62 40 - orr r3, r3, #272 - orr r3, r3, #1 + bic r3, r3, #57344 str r3, [r2, #8] - .loc 1 65 33 + .loc 1 63 33 ldr r3, .L5 - ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 65 40 - bic r3, r3, #3 + ldr r3, [r3, #8] + .loc 1 63 40 str r3, [r2, #8] .loc 1 66 33 ldr r3, .L5 - ldr r3, [r3, #8] - ldr r2, .L5 - .loc 1 66 40 - orr r3, r3, #2 - str r3, [r2, #8] - .loc 1 70 9 - nop -.L4: - .loc 1 70 42 discriminator 1 - ldr r3, .L5 - ldr r3, [r3, #8] - .loc 1 70 49 discriminator 1 - lsrs r3, r3, #2 - .loc 1 70 55 discriminator 1 - and r3, r3, #3 - .loc 1 70 65 discriminator 1 - cmp r3, #2 - bne .L4 - .loc 1 73 33 - ldr r3, .L5 ldr r3, [r3] ldr r2, .L5 - .loc 1 73 38 - bic r3, r3, #1 + .loc 1 66 38 + orr r3, r3, #16777216 str r3, [r2] - .loc 1 74 1 + .loc 1 70 9 + nop +.L3: + .loc 1 70 42 discriminator 1 + ldr r3, .L5 + ldr r3, [r3] + .loc 1 70 47 discriminator 1 + and r3, r3, #33554432 + .loc 1 70 10 discriminator 1 + cmp r3, #0 + beq .L3 + .loc 1 73 35 + ldr r3, .L5+12 + ldr r3, [r3] + ldr r2, .L5+12 + .loc 1 73 41 + orr r3, r3, #1024 + str r3, [r2] + .loc 1 74 35 + ldr r3, .L5+12 + ldr r3, [r3] + ldr r2, .L5+12 + .loc 1 74 41 + orr r3, r3, #512 + str r3, [r2] + .loc 1 82 33 + ldr r3, .L5 + ldr r3, [r3, #8] + ldr r2, .L5 + .loc 1 82 40 + orr r3, r3, #2 + str r3, [r2, #8] + .loc 1 86 9 + nop +.L4: + .loc 1 86 42 discriminator 1 + ldr r3, .L5 + ldr r3, [r3, #8] + .loc 1 86 49 discriminator 1 + lsrs r3, r3, #2 + .loc 1 86 55 discriminator 1 + and r3, r3, #3 + .loc 1 86 65 discriminator 1 + cmp r3, #2 + bne .L4 + .loc 1 87 1 + nop nop mov sp, r7 .cfi_def_cfa_register 13 @@ -231,11 +217,15 @@ system_clock_init: .L5: .word 1073887232 .word 1073770496 - .word 67252505 + .word 67252249 .word 1073888256 .cfi_endproc .LFE0: .size system_clock_init, .-system_clock_init + .section .rodata + .align 2 +.LC0: + .ascii "hello, world!\012\000" .section .text.main,"ax",%progbits .align 1 .global main @@ -245,7 +235,7 @@ system_clock_init: .type main, %function main: .LFB1: - .loc 1 76 16 + .loc 1 89 16 .cfi_startproc @ args = 0, pretend = 0, frame = 8 @ frame_needed = 1, uses_anonymous_args = 0 @@ -257,56 +247,60 @@ main: .cfi_def_cfa_offset 16 add r7, sp, #0 .cfi_def_cfa_register 7 - .loc 1 77 3 + .loc 1 90 3 bl system_clock_init - .loc 1 78 3 + .loc 1 91 3 bl tim4_init - .loc 1 80 3 + .loc 1 92 3 + bl usart2_init + .loc 1 94 3 bl tim4_start - .loc 1 82 12 + .loc 1 95 3 + bl usart2_start + .loc 1 97 12 movw r3, #525 strh r3, [r7, #2] @ movhi - .loc 1 83 33 + .loc 1 98 33 ldr r3, .L10 ldr r3, [r3, #48] - .loc 1 83 57 + .loc 1 98 57 ldrh r2, [r7, #2] lsrs r2, r2, #8 uxth r2, r2 mov r1, r2 - .loc 1 83 49 + .loc 1 98 49 movs r2, #1 lsls r2, r2, r1 mov r1, r2 - .loc 1 83 33 + .loc 1 98 33 ldr r2, .L10 - .loc 1 83 43 + .loc 1 98 43 orrs r3, r3, r1 str r3, [r2, #48] - .loc 1 84 3 + .loc 1 99 3 ldrh r3, [r7, #2] movs r1, #1 mov r0, r3 bl gpio_set_mode - .loc 1 86 54 + .loc 1 101 54 ldr r3, .L10+4 ldr r3, [r3, #36] - .loc 1 86 12 + .loc 1 101 12 strh r3, [r7, #6] @ movhi - .loc 1 87 7 + .loc 1 102 7 movs r3, #0 strb r3, [r7, #5] .L9: - .loc 1 89 39 + .loc 1 104 39 ldr r3, .L10+4 ldr r2, [r3, #36] - .loc 1 89 45 + .loc 1 104 45 ldrh r3, [r7, #6] subs r3, r2, r3 - .loc 1 89 5 + .loc 1 104 5 cmp r3, #249 bls .L9 - .loc 1 90 3 + .loc 1 105 3 ldrb r3, [r7, #5] @ zero_extendqisi2 cmp r3, #0 ite ne @@ -315,29 +309,33 @@ main: uxtb r3, r3 eor r3, r3, #1 uxtb r3, r3 - .loc 1 90 10 + .loc 1 105 10 strb r3, [r7, #5] ldrb r3, [r7, #5] and r3, r3, #1 strb r3, [r7, #5] - .loc 1 91 3 + .loc 1 106 3 ldrb r2, [r7, #5] @ zero_extendqisi2 ldrh r3, [r7, #2] mov r1, r2 mov r0, r3 bl gpio_write - .loc 1 93 45 + .loc 1 108 3 + ldr r0, .L10+8 + bl usart2_write + .loc 1 110 45 ldr r3, .L10+4 ldr r3, [r3, #36] - .loc 1 93 11 + .loc 1 110 11 strh r3, [r7, #6] @ movhi - .loc 1 89 5 + .loc 1 104 5 b .L9 .L11: .align 2 .L10: .word 1073887232 .word 1073743872 + .word .LC0 .cfi_endproc .LFE1: .size main, .-main @@ -350,18 +348,19 @@ main: .file 6 "src/flash.h" .file 7 "src/pwr.h" .file 8 "src/timer.h" + .file 9 "src/usart.h" .section .debug_info,"",%progbits .Ldebug_info0: - .4byte 0x44a + .4byte 0x47a .2byte 0x5 .byte 0x1 .byte 0x4 .4byte .Ldebug_abbrev0 .uleb128 0xd - .4byte .LASF1002 + .4byte .LASF1044 .byte 0x1d - .4byte .LASF1003 - .4byte .LASF1004 + .4byte .LASF1045 + .4byte .LASF1046 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -369,17 +368,17 @@ main: .uleb128 0x3 .byte 0x1 .byte 0x6 - .4byte .LASF936 + .4byte .LASF975 .uleb128 0x3 .byte 0x1 .byte 0x8 - .4byte .LASF937 + .4byte .LASF976 .uleb128 0x3 .byte 0x2 .byte 0x5 - .4byte .LASF938 + .4byte .LASF977 .uleb128 0x4 - .4byte .LASF941 + .4byte .LASF980 .byte 0x2 .byte 0x39 .byte 0x1c @@ -387,13 +386,13 @@ main: .uleb128 0x3 .byte 0x2 .byte 0x7 - .4byte .LASF939 + .4byte .LASF978 .uleb128 0x3 .byte 0x4 .byte 0x5 - .4byte .LASF940 + .4byte .LASF979 .uleb128 0x4 - .4byte .LASF942 + .4byte .LASF981 .byte 0x2 .byte 0x4f .byte 0x1b @@ -401,15 +400,15 @@ main: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF943 + .4byte .LASF982 .uleb128 0x3 .byte 0x8 .byte 0x5 - .4byte .LASF944 + .4byte .LASF983 .uleb128 0x3 .byte 0x8 .byte 0x7 - .4byte .LASF945 + .4byte .LASF984 .uleb128 0xe .byte 0x4 .byte 0x5 @@ -417,22 +416,22 @@ main: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF946 + .4byte .LASF985 .uleb128 0x4 - .4byte .LASF947 + .4byte .LASF986 .byte 0x3 .byte 0x24 .byte 0x14 .4byte 0x3f .uleb128 0x4 - .4byte .LASF948 + .4byte .LASF987 .byte 0x3 .byte 0x30 .byte 0x14 .4byte 0x59 - .uleb128 0x7 + .uleb128 0x9 .4byte 0x94 - .uleb128 0x8 + .uleb128 0xa .ascii "rcc\000" .byte 0x8c .byte 0x4 @@ -444,13 +443,13 @@ main: .4byte 0xa0 .byte 0 .uleb128 0x1 - .4byte .LASF949 + .4byte .LASF988 .byte 0x4 .byte 0x8 .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF950 + .4byte .LASF989 .byte 0x4 .byte 0x9 .4byte 0xa0 @@ -462,115 +461,115 @@ main: .4byte 0xa0 .byte 0xc .uleb128 0x1 - .4byte .LASF951 + .4byte .LASF990 .byte 0x4 .byte 0xb .4byte 0xa0 .byte 0x10 .uleb128 0x1 - .4byte .LASF952 + .4byte .LASF991 .byte 0x4 .byte 0xc .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF953 + .4byte .LASF992 .byte 0x4 .byte 0xd .4byte 0x210 .byte 0x18 .uleb128 0x1 - .4byte .LASF954 + .4byte .LASF993 .byte 0x4 .byte 0xe .4byte 0xa0 .byte 0x20 .uleb128 0x1 - .4byte .LASF955 + .4byte .LASF994 .byte 0x4 .byte 0xf .4byte 0xa0 .byte 0x24 .uleb128 0x1 - .4byte .LASF956 + .4byte .LASF995 .byte 0x4 .byte 0x10 .4byte 0x210 .byte 0x28 .uleb128 0x1 - .4byte .LASF957 + .4byte .LASF996 .byte 0x4 .byte 0x11 .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF958 + .4byte .LASF997 .byte 0x4 .byte 0x12 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF959 + .4byte .LASF998 .byte 0x4 .byte 0x13 .4byte 0x210 .byte 0x38 .uleb128 0x1 - .4byte .LASF960 + .4byte .LASF999 .byte 0x4 .byte 0x14 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF961 + .4byte .LASF1000 .byte 0x4 .byte 0x15 .4byte 0xa0 .byte 0x44 .uleb128 0x1 - .4byte .LASF962 + .4byte .LASF1001 .byte 0x4 .byte 0x16 .4byte 0x210 .byte 0x48 .uleb128 0x1 - .4byte .LASF963 + .4byte .LASF1002 .byte 0x4 .byte 0x17 .4byte 0xa0 .byte 0x50 .uleb128 0x1 - .4byte .LASF964 + .4byte .LASF1003 .byte 0x4 .byte 0x18 .4byte 0xa0 .byte 0x54 .uleb128 0x1 - .4byte .LASF965 + .4byte .LASF1004 .byte 0x4 .byte 0x19 .4byte 0x210 .byte 0x58 .uleb128 0x1 - .4byte .LASF966 + .4byte .LASF1005 .byte 0x4 .byte 0x1a .4byte 0xa0 .byte 0x60 .uleb128 0x1 - .4byte .LASF967 + .4byte .LASF1006 .byte 0x4 .byte 0x1b .4byte 0xa0 .byte 0x64 .uleb128 0x1 - .4byte .LASF968 + .4byte .LASF1007 .byte 0x4 .byte 0x1c .4byte 0x210 .byte 0x68 .uleb128 0x1 - .4byte .LASF969 + .4byte .LASF1008 .byte 0x4 .byte 0x1d .4byte 0xa0 @@ -582,25 +581,25 @@ main: .4byte 0xa0 .byte 0x74 .uleb128 0x1 - .4byte .LASF970 + .4byte .LASF1009 .byte 0x4 .byte 0x1f .4byte 0x210 .byte 0x78 .uleb128 0x1 - .4byte .LASF971 + .4byte .LASF1010 .byte 0x4 .byte 0x20 .4byte 0xa0 .byte 0x80 .uleb128 0x1 - .4byte .LASF972 + .4byte .LASF1011 .byte 0x4 .byte 0x21 .4byte 0xa0 .byte 0x84 .uleb128 0x1 - .4byte .LASF973 + .4byte .LASF1012 .byte 0x4 .byte 0x22 .4byte 0xa0 @@ -613,37 +612,37 @@ main: .4byte 0x81 .byte 0x1 .byte 0 - .uleb128 0x7 + .uleb128 0x9 .4byte 0x200 .uleb128 0x11 .byte 0x7 .byte 0x1 .4byte 0x31 .byte 0x5 - .byte 0x20 + .byte 0x26 .byte 0xe .4byte 0x23c - .uleb128 0x5 - .4byte .LASF974 + .uleb128 0x6 + .4byte .LASF1013 .byte 0 - .uleb128 0x5 - .4byte .LASF975 + .uleb128 0x6 + .4byte .LASF1014 .byte 0x1 - .uleb128 0x5 - .4byte .LASF976 + .uleb128 0x6 + .4byte .LASF1015 .byte 0x2 - .uleb128 0x5 - .4byte .LASF977 + .uleb128 0x6 + .4byte .LASF1016 .byte 0x3 .byte 0 .uleb128 0x4 - .4byte .LASF978 + .4byte .LASF1017 .byte 0x5 - .byte 0x25 + .byte 0x2b .byte 0x3 .4byte 0x215 - .uleb128 0x9 - .4byte .LASF979 + .uleb128 0xb + .4byte .LASF1018 .byte 0x18 .byte 0x6 .4byte 0x29a @@ -654,13 +653,13 @@ main: .4byte 0xa0 .byte 0 .uleb128 0x1 - .4byte .LASF980 + .4byte .LASF1019 .byte 0x6 .byte 0x8 .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF981 + .4byte .LASF1020 .byte 0x6 .byte 0x9 .4byte 0xa0 @@ -678,13 +677,13 @@ main: .4byte 0xa0 .byte 0x10 .uleb128 0x1 - .4byte .LASF982 + .4byte .LASF1021 .byte 0x6 .byte 0xc .4byte 0xa0 .byte 0x14 .byte 0 - .uleb128 0x8 + .uleb128 0xa .ascii "pwr\000" .byte 0x8 .byte 0x7 @@ -702,8 +701,8 @@ main: .4byte 0xa0 .byte 0x4 .byte 0 - .uleb128 0x9 - .4byte .LASF983 + .uleb128 0xb + .4byte .LASF1022 .byte 0x50 .byte 0x8 .4byte 0x3b8 @@ -720,13 +719,13 @@ main: .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF984 + .4byte .LASF1023 .byte 0x8 .byte 0x9 .4byte 0xa0 .byte 0x8 .uleb128 0x1 - .4byte .LASF985 + .4byte .LASF1024 .byte 0x8 .byte 0xa .4byte 0xa0 @@ -744,19 +743,19 @@ main: .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF986 + .4byte .LASF1025 .byte 0x8 .byte 0xd .4byte 0xa0 .byte 0x18 .uleb128 0x1 - .4byte .LASF987 + .4byte .LASF1026 .byte 0x8 .byte 0xe .4byte 0xa0 .byte 0x1c .uleb128 0x1 - .4byte .LASF988 + .4byte .LASF1027 .byte 0x8 .byte 0xf .4byte 0xa0 @@ -786,31 +785,31 @@ main: .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF989 + .4byte .LASF1028 .byte 0x8 .byte 0x14 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF990 + .4byte .LASF1029 .byte 0x8 .byte 0x15 .4byte 0xa0 .byte 0x38 .uleb128 0x1 - .4byte .LASF991 + .4byte .LASF1030 .byte 0x8 .byte 0x16 .4byte 0xa0 .byte 0x3c .uleb128 0x1 - .4byte .LASF992 + .4byte .LASF1031 .byte 0x8 .byte 0x17 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF993 + .4byte .LASF1032 .byte 0x8 .byte 0x18 .4byte 0xa0 @@ -822,81 +821,108 @@ main: .4byte 0xa0 .byte 0x48 .uleb128 0x1 - .4byte .LASF994 + .4byte .LASF1033 .byte 0x8 .byte 0x1a .4byte 0xa0 .byte 0x4c .byte 0 - .uleb128 0xa - .4byte .LASF996 - .byte 0x28 - .4byte 0x3cd - .uleb128 0x6 + .uleb128 0x8 + .4byte .LASF1034 + .byte 0x9 + .byte 0x39 + .4byte 0x3c9 + .uleb128 0x5 + .4byte 0x3c9 + .byte 0 + .uleb128 0x12 + .byte 0x4 + .4byte 0x3cf + .uleb128 0x3 + .byte 0x1 + .byte 0x8 + .4byte .LASF510 + .uleb128 0x8 + .4byte .LASF1035 + .byte 0x5 + .byte 0x2f + .4byte 0x3ec + .uleb128 0x5 .4byte 0x88 - .uleb128 0x6 - .4byte 0x3cd + .uleb128 0x5 + .4byte 0x3ec .byte 0 .uleb128 0x3 .byte 0x1 .byte 0x2 - .4byte .LASF995 - .uleb128 0xa - .4byte .LASF997 - .byte 0x27 - .4byte 0x3e9 - .uleb128 0x6 + .4byte .LASF1036 + .uleb128 0x8 + .4byte .LASF1037 + .byte 0x5 + .byte 0x2d + .4byte 0x409 + .uleb128 0x5 .4byte 0x88 - .uleb128 0x6 + .uleb128 0x5 .4byte 0x23c .byte 0 - .uleb128 0xb - .4byte .LASF998 + .uleb128 0x7 + .4byte .LASF1038 + .byte 0x9 + .byte 0x36 + .uleb128 0x7 + .4byte .LASF1039 + .byte 0x8 .byte 0x24 - .uleb128 0xb - .4byte .LASF999 + .uleb128 0x7 + .4byte .LASF1040 + .byte 0x9 + .byte 0x35 + .uleb128 0x7 + .4byte .LASF1041 + .byte 0x8 .byte 0x23 - .uleb128 0x12 - .4byte .LASF1005 + .uleb128 0x13 + .4byte .LASF1047 .byte 0x1 - .byte 0x4c + .byte 0x59 .byte 0x5 .4byte 0x7a .4byte .LFB1 .4byte .LFE1-.LFB1 .uleb128 0x1 .byte 0x9c - .4byte 0x43b - .uleb128 0x13 + .4byte 0x46b + .uleb128 0x14 .ascii "led\000" .byte 0x1 - .byte 0x52 + .byte 0x61 .byte 0xc .4byte 0x88 .uleb128 0x2 .byte 0x91 .sleb128 -14 .uleb128 0xc - .4byte .LASF1000 - .byte 0x56 + .4byte .LASF1042 + .byte 0x65 .byte 0xc .4byte 0x88 .uleb128 0x2 .byte 0x91 .sleb128 -10 .uleb128 0xc - .4byte .LASF1001 - .byte 0x57 + .4byte .LASF1043 + .byte 0x66 .byte 0x7 - .4byte 0x3cd + .4byte 0x3ec .uleb128 0x2 .byte 0x91 .sleb128 -11 .byte 0 - .uleb128 0x14 - .4byte .LASF1006 + .uleb128 0x15 + .4byte .LASF1048 .byte 0x1 - .byte 0xc + .byte 0xd .byte 0xd .4byte .LFB0 .4byte .LFE0-.LFB0 @@ -968,6 +994,13 @@ main: .byte 0 .byte 0 .uleb128 0x5 + .uleb128 0x5 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x6 .uleb128 0x28 .byte 0 .uleb128 0x3 @@ -976,100 +1009,91 @@ main: .uleb128 0xb .byte 0 .byte 0 - .uleb128 0x6 - .uleb128 0x5 + .uleb128 0x7 + .uleb128 0x2e .byte 0 - .uleb128 0x49 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0x21 + .sleb128 6 + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x3c + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0x8 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0x21 + .sleb128 6 + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x1 .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0x7 + .uleb128 0x9 .uleb128 0x35 .byte 0 .uleb128 0x49 .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0x8 - .uleb128 0x13 - .byte 0x1 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0x21 - .sleb128 6 - .uleb128 0x39 - .uleb128 0x21 - .sleb128 8 - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x9 - .uleb128 0x13 - .byte 0x1 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0x21 - .sleb128 6 - .uleb128 0x39 - .uleb128 0x21 - .sleb128 8 - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 .uleb128 0xa - .uleb128 0x2e + .uleb128 0x13 .byte 0x1 - .uleb128 0x3f - .uleb128 0x19 .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0x21 - .sleb128 5 - .uleb128 0x3b + .uleb128 0x8 .uleb128 0xb - .uleb128 0x39 + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b .uleb128 0x21 .sleb128 6 - .uleb128 0x27 - .uleb128 0x19 - .uleb128 0x3c - .uleb128 0x19 + .uleb128 0x39 + .uleb128 0x21 + .sleb128 8 .uleb128 0x1 .uleb128 0x13 .byte 0 .byte 0 .uleb128 0xb - .uleb128 0x2e - .byte 0 - .uleb128 0x3f - .uleb128 0x19 + .uleb128 0x13 + .byte 0x1 .uleb128 0x3 .uleb128 0xe - .uleb128 0x3a - .uleb128 0x21 - .sleb128 8 - .uleb128 0x3b .uleb128 0xb - .uleb128 0x39 + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b .uleb128 0x21 .sleb128 6 - .uleb128 0x27 - .uleb128 0x19 - .uleb128 0x3c - .uleb128 0x19 + .uleb128 0x39 + .uleb128 0x21 + .sleb128 8 + .uleb128 0x1 + .uleb128 0x13 .byte 0 .byte 0 .uleb128 0xc @@ -1160,6 +1184,15 @@ main: .byte 0 .byte 0 .uleb128 0x12 + .uleb128 0xf + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x13 .uleb128 0x2e .byte 0x1 .uleb128 0x3f @@ -1188,7 +1221,7 @@ main: .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0x13 + .uleb128 0x14 .uleb128 0x34 .byte 0 .uleb128 0x3 @@ -1205,7 +1238,7 @@ main: .uleb128 0x18 .byte 0 .byte 0 - .uleb128 0x14 + .uleb128 0x15 .uleb128 0x2e .byte 0 .uleb128 0x3 @@ -2630,76 +2663,76 @@ main: .byte 0x5 .uleb128 0 .4byte .LASF453 - .file 9 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" + .file 10 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" .byte 0x3 .uleb128 0x1 - .uleb128 0x9 + .uleb128 0xa .byte 0x5 .uleb128 0xe .4byte .LASF454 - .file 10 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/newlib.h" + .file 11 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/newlib.h" .byte 0x3 .uleb128 0x10 - .uleb128 0xa + .uleb128 0xb .byte 0x5 .uleb128 0x7 .4byte .LASF455 - .file 11 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_newlib_version.h" + .file 12 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_newlib_version.h" .byte 0x3 .uleb128 0xa - .uleb128 0xb + .uleb128 0xc .byte 0x7 .4byte .Ldebug_macro2 .byte 0x4 .byte 0x7 .4byte .Ldebug_macro3 .byte 0x4 - .file 12 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/config.h" + .file 13 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/config.h" .byte 0x3 .uleb128 0x11 - .uleb128 0xc + .uleb128 0xd .byte 0x5 .uleb128 0x2 .4byte .LASF478 - .file 13 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/ieeefp.h" + .file 14 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/ieeefp.h" .byte 0x3 .uleb128 0x4 - .uleb128 0xd + .uleb128 0xe .byte 0x7 .4byte .Ldebug_macro4 .byte 0x4 - .file 14 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" + .file 15 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" .byte 0x3 .uleb128 0x5 - .uleb128 0xe + .uleb128 0xf .byte 0x7 .4byte .Ldebug_macro5 .byte 0x4 .byte 0x7 .4byte .Ldebug_macro6 .byte 0x4 - .file 15 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" + .file 16 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" .byte 0x3 .uleb128 0x12 - .uleb128 0xf + .uleb128 0x10 .byte 0x7 .4byte .Ldebug_macro7 .byte 0x4 - .file 16 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_ansi.h" + .file 17 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_ansi.h" .byte 0x3 .uleb128 0x13 - .uleb128 0x10 + .uleb128 0x11 .byte 0x7 .4byte .Ldebug_macro8 .byte 0x4 - .file 17 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdint.h" + .file 18 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdint.h" .byte 0x3 .uleb128 0x14 - .uleb128 0x11 - .file 18 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" + .uleb128 0x12 + .file 19 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" .byte 0x3 .uleb128 0x9 - .uleb128 0x12 + .uleb128 0x13 .byte 0x5 .uleb128 0xa .4byte .LASF546 @@ -2725,20 +2758,20 @@ main: .byte 0x5 .uleb128 0x15 .4byte .LASF647 - .file 19 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stddef.h" + .file 20 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stddef.h" .byte 0x3 .uleb128 0x16 - .uleb128 0x13 + .uleb128 0x14 .byte 0x7 .4byte .Ldebug_macro12 .byte 0x4 .byte 0x7 .4byte .Ldebug_macro13 .byte 0x4 - .file 20 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdbool.h" + .file 21 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdbool.h" .byte 0x3 .uleb128 0x2 - .uleb128 0x14 + .uleb128 0x15 .byte 0x7 .4byte .Ldebug_macro14 .byte 0x4 @@ -2772,9 +2805,15 @@ main: .byte 0x7 .4byte .Ldebug_macro19 .byte 0x4 + .byte 0x3 + .uleb128 0x9 + .uleb128 0x9 + .byte 0x7 + .4byte .Ldebug_macro20 + .byte 0x4 .byte 0x5 - .uleb128 0xa - .4byte .LASF935 + .uleb128 0xb + .4byte .LASF974 .byte 0x4 .byte 0 .section .debug_macro,"G",%progbits,wm4._newlib_version.h.4.6d111ab2e95434b664b53815e5c8ccba,comdat @@ -4054,7 +4093,7 @@ main: .uleb128 0x32 .4byte .LASF854 .byte 0 - .section .debug_macro,"G",%progbits,wm4.rcc.h.2.b760e7ff526d570de1c04ddc6fae6ff8,comdat + .section .debug_macro,"G",%progbits,wm4.rcc.h.2.64cd1c708e343101e2656cc76ebaf070,comdat .Ldebug_macro15: .2byte 0x5 .byte 0 @@ -4086,64 +4125,64 @@ main: .uleb128 0x33 .4byte .LASF863 .byte 0x5 - .uleb128 0x36 + .uleb128 0x37 .4byte .LASF864 .byte 0x5 - .uleb128 0x37 + .uleb128 0x38 .4byte .LASF865 .byte 0x5 - .uleb128 0x3a + .uleb128 0x3b .4byte .LASF866 .byte 0x5 - .uleb128 0x3b + .uleb128 0x3c .4byte .LASF867 .byte 0x5 - .uleb128 0x3e + .uleb128 0x3f .4byte .LASF868 .byte 0x5 - .uleb128 0x3f + .uleb128 0x40 .4byte .LASF869 .byte 0x5 - .uleb128 0x42 + .uleb128 0x43 .4byte .LASF870 .byte 0x5 - .uleb128 0x43 + .uleb128 0x44 .4byte .LASF871 .byte 0x5 - .uleb128 0x44 + .uleb128 0x47 .4byte .LASF872 .byte 0x5 - .uleb128 0x46 + .uleb128 0x48 .4byte .LASF873 .byte 0x5 - .uleb128 0x47 + .uleb128 0x49 .4byte .LASF874 .byte 0x5 - .uleb128 0x49 + .uleb128 0x4b .4byte .LASF875 .byte 0x5 - .uleb128 0x4a + .uleb128 0x4c .4byte .LASF876 .byte 0x5 - .uleb128 0x4b + .uleb128 0x4d .4byte .LASF877 .byte 0x5 - .uleb128 0x4d + .uleb128 0x4f .4byte .LASF878 .byte 0x5 - .uleb128 0x4e + .uleb128 0x50 .4byte .LASF879 .byte 0x5 - .uleb128 0x4f + .uleb128 0x51 .4byte .LASF880 .byte 0x5 - .uleb128 0x51 + .uleb128 0x53 .4byte .LASF881 .byte 0x5 - .uleb128 0x52 + .uleb128 0x54 .4byte .LASF882 .byte 0x5 - .uleb128 0x53 + .uleb128 0x55 .4byte .LASF883 .byte 0x5 .uleb128 0x57 @@ -4152,126 +4191,186 @@ main: .uleb128 0x58 .4byte .LASF885 .byte 0x5 - .uleb128 0x5b + .uleb128 0x59 .4byte .LASF886 .byte 0x5 - .uleb128 0x5c + .uleb128 0x5d .4byte .LASF887 .byte 0x5 - .uleb128 0x5f + .uleb128 0x5e .4byte .LASF888 .byte 0x5 - .uleb128 0x60 + .uleb128 0x61 .4byte .LASF889 .byte 0x5 - .uleb128 0x63 + .uleb128 0x62 .4byte .LASF890 .byte 0x5 - .uleb128 0x65 + .uleb128 0x63 .4byte .LASF891 .byte 0x5 - .uleb128 0x66 + .uleb128 0x65 .4byte .LASF892 .byte 0x5 - .uleb128 0x69 + .uleb128 0x66 .4byte .LASF893 .byte 0x5 - .uleb128 0x6b + .uleb128 0x68 .4byte .LASF894 .byte 0x5 - .uleb128 0x6c + .uleb128 0x69 .4byte .LASF895 .byte 0x5 - .uleb128 0x6f + .uleb128 0x6a .4byte .LASF896 .byte 0x5 - .uleb128 0x71 + .uleb128 0x6c .4byte .LASF897 .byte 0x5 - .uleb128 0x72 + .uleb128 0x6d .4byte .LASF898 .byte 0x5 - .uleb128 0x73 + .uleb128 0x70 .4byte .LASF899 .byte 0x5 - .uleb128 0x76 + .uleb128 0x71 .4byte .LASF900 .byte 0x5 - .uleb128 0x77 + .uleb128 0x74 .4byte .LASF901 .byte 0x5 - .uleb128 0x79 + .uleb128 0x75 .4byte .LASF902 .byte 0x5 - .uleb128 0x7a + .uleb128 0x78 .4byte .LASF903 + .byte 0x5 + .uleb128 0x7a + .4byte .LASF904 + .byte 0x5 + .uleb128 0x7b + .4byte .LASF905 + .byte 0x5 + .uleb128 0x7e + .4byte .LASF906 + .byte 0x5 + .uleb128 0x80 + .4byte .LASF907 + .byte 0x5 + .uleb128 0x81 + .4byte .LASF908 + .byte 0x5 + .uleb128 0x84 + .4byte .LASF909 + .byte 0x5 + .uleb128 0x86 + .4byte .LASF910 + .byte 0x5 + .uleb128 0x87 + .4byte .LASF911 + .byte 0x5 + .uleb128 0x88 + .4byte .LASF912 + .byte 0x5 + .uleb128 0x8c + .4byte .LASF913 + .byte 0x5 + .uleb128 0x8d + .4byte .LASF914 + .byte 0x5 + .uleb128 0x90 + .4byte .LASF915 + .byte 0x5 + .uleb128 0x91 + .4byte .LASF916 + .byte 0x5 + .uleb128 0x93 + .4byte .LASF917 + .byte 0x5 + .uleb128 0x94 + .4byte .LASF918 + .byte 0x5 + .uleb128 0x96 + .4byte .LASF919 + .byte 0x5 + .uleb128 0x97 + .4byte .LASF920 .byte 0 - .section .debug_macro,"G",%progbits,wm4.gpio.h.2.d78c96d470f4347bf35ed0e3d72ef81e,comdat + .section .debug_macro,"G",%progbits,wm4.gpio.h.2.e8e8ad5caa641b1849e6396c88187098,comdat .Ldebug_macro16: .2byte 0x5 .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF904 - .byte 0x5 - .uleb128 0x14 - .4byte .LASF905 + .4byte .LASF921 .byte 0x5 .uleb128 0x15 - .4byte .LASF906 + .4byte .LASF922 .byte 0x5 .uleb128 0x16 - .4byte .LASF907 + .4byte .LASF923 .byte 0x5 - .uleb128 0x18 - .4byte .LASF908 + .uleb128 0x17 + .4byte .LASF924 + .byte 0x5 + .uleb128 0x19 + .4byte .LASF925 .byte 0x5 .uleb128 0x1a - .4byte .LASF909 + .4byte .LASF926 .byte 0x5 - .uleb128 0x1c - .4byte .LASF910 + .uleb128 0x1b + .4byte .LASF927 .byte 0x5 .uleb128 0x1e - .4byte .LASF911 + .4byte .LASF928 + .byte 0x5 + .uleb128 0x20 + .4byte .LASF929 + .byte 0x5 + .uleb128 0x22 + .4byte .LASF930 + .byte 0x5 + .uleb128 0x24 + .4byte .LASF931 .byte 0 - .section .debug_macro,"G",%progbits,wm4.flash.h.2.51d6f0499046dca8c8d7cee08875e55f,comdat + .section .debug_macro,"G",%progbits,wm4.flash.h.2.f966f6c905ff507203ee6a1fd62d64ef,comdat .Ldebug_macro17: .2byte 0x5 .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF912 + .4byte .LASF932 .byte 0x5 .uleb128 0xf - .4byte .LASF913 + .4byte .LASF933 .byte 0x5 .uleb128 0x10 - .4byte .LASF914 + .4byte .LASF934 .byte 0x5 .uleb128 0x14 - .4byte .LASF915 + .4byte .LASF935 .byte 0x5 .uleb128 0x15 - .4byte .LASF916 + .4byte .LASF936 .byte 0x5 .uleb128 0x18 - .4byte .LASF917 + .4byte .LASF937 .byte 0x5 .uleb128 0x19 - .4byte .LASF918 + .4byte .LASF938 .byte 0x5 .uleb128 0x1c - .4byte .LASF919 + .4byte .LASF939 .byte 0x5 .uleb128 0x1e - .4byte .LASF920 + .4byte .LASF940 .byte 0x5 .uleb128 0x1f - .4byte .LASF921 + .4byte .LASF941 .byte 0x5 .uleb128 0x20 - .4byte .LASF922 + .4byte .LASF942 .byte 0 .section .debug_macro,"G",%progbits,wm4.pwr.h.2.b22d01f8fafa27268c4600cc8f787804,comdat .Ldebug_macro18: @@ -4279,51 +4378,111 @@ main: .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF923 + .4byte .LASF943 .byte 0x5 .uleb128 0xb - .4byte .LASF924 + .4byte .LASF944 .byte 0x5 .uleb128 0xc - .4byte .LASF925 + .4byte .LASF945 .byte 0x5 .uleb128 0xf - .4byte .LASF926 + .4byte .LASF946 .byte 0x5 .uleb128 0x12 - .4byte .LASF927 + .4byte .LASF947 .byte 0x5 .uleb128 0x13 - .4byte .LASF928 + .4byte .LASF948 .byte 0x5 .uleb128 0x14 - .4byte .LASF929 + .4byte .LASF949 .byte 0 - .section .debug_macro,"G",%progbits,wm4.timer.h.2.a5bec0ee8e2998a7b121820fb4e4e9a6,comdat + .section .debug_macro,"G",%progbits,wm4.timer.h.2.2e929ede818fb0960868f1b0a08a1cbf,comdat .Ldebug_macro19: .2byte 0x5 .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF930 + .4byte .LASF950 .byte 0x5 .uleb128 0x1d - .4byte .LASF931 + .4byte .LASF951 .byte 0x5 .uleb128 0x1e - .4byte .LASF932 + .4byte .LASF952 .byte 0x5 .uleb128 0x20 - .4byte .LASF933 + .4byte .LASF953 .byte 0x5 .uleb128 0x21 - .4byte .LASF934 + .4byte .LASF954 + .byte 0 + .section .debug_macro,"G",%progbits,wm4.usart.h.2.85ce7dcad34c06b8629bb558bcbbd125,comdat +.Ldebug_macro20: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x2 + .4byte .LASF955 + .byte 0x5 + .uleb128 0x10 + .4byte .LASF956 + .byte 0x5 + .uleb128 0x11 + .4byte .LASF957 + .byte 0x5 + .uleb128 0x15 + .4byte .LASF958 + .byte 0x5 + .uleb128 0x16 + .4byte .LASF959 + .byte 0x5 + .uleb128 0x19 + .4byte .LASF960 + .byte 0x5 + .uleb128 0x1a + .4byte .LASF961 + .byte 0x5 + .uleb128 0x1e + .4byte .LASF962 + .byte 0x5 + .uleb128 0x1f + .4byte .LASF963 + .byte 0x5 + .uleb128 0x23 + .4byte .LASF964 + .byte 0x5 + .uleb128 0x24 + .4byte .LASF965 + .byte 0x5 + .uleb128 0x27 + .4byte .LASF966 + .byte 0x5 + .uleb128 0x28 + .4byte .LASF967 + .byte 0x5 + .uleb128 0x2b + .4byte .LASF968 + .byte 0x5 + .uleb128 0x2c + .4byte .LASF969 + .byte 0x5 + .uleb128 0x2f + .4byte .LASF970 + .byte 0x5 + .uleb128 0x30 + .4byte .LASF971 + .byte 0x5 + .uleb128 0x32 + .4byte .LASF972 + .byte 0x5 + .uleb128 0x33 + .4byte .LASF973 .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: .section .debug_str,"MS",%progbits,1 -.LASF933: - .ascii "TIM4_CR_CEN_BIT 0\000" .LASF734: .ascii "SCNxLEAST16 __SCN16LEAST(x)\000" .LASF635: @@ -4336,7 +4495,7 @@ main: .ascii "__UHA_FBIT__ 8\000" .LASF814: .ascii "PRIiFAST64 __PRI64FAST(i)\000" -.LASF937: +.LASF976: .ascii "unsigned char\000" .LASF225: .ascii "__FLT64_DENORM_MIN__ 4.9406564584124654e-324F64\000" @@ -4366,7 +4525,7 @@ main: .ascii "__WINT_MIN__ 0U\000" .LASF90: .ascii "__INTMAX_MAX__ 0x7fffffffffffffffLL\000" -.LASF976: +.LASF1015: .ascii "GPIO_MODE_AF\000" .LASF335: .ascii "__TQ_IBIT__ 0\000" @@ -4378,10 +4537,14 @@ main: .ascii "__ULACCUM_FBIT__ 32\000" .LASF75: .ascii "__WCHAR_MAX__ 0xffffffffU\000" +.LASF896: + .ascii "RCC_CFGR_MCO1PRE_DIV2 (0b100)\000" .LASF513: .ascii "__int20__\000" -.LASF902: +.LASF919: .ascii "RCC_APB1ENR_TIM4_BIT 2\000" +.LASF973: + .ascii "USART_BRR_FRACTION_MASK (0b111)\000" .LASF18: .ascii "__SIZEOF_LONG_LONG__ 8\000" .LASF169: @@ -4392,7 +4555,7 @@ main: .ascii "__FRACT_MIN__ (-0.5R-0.5R)\000" .LASF324: .ascii "__ULLACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULLK\000" -.LASF979: +.LASF1018: .ascii "flash\000" .LASF294: .ascii "__USACCUM_MAX__ 0XFFFFP-8UHK\000" @@ -4400,6 +4563,8 @@ main: .ascii "__SFRACT_FBIT__ 7\000" .LASF94: .ascii "__INTMAX_WIDTH__ 64\000" +.LASF955: + .ascii "USART_H_ \000" .LASF448: .ascii "__ARM_FEATURE_BF16_SCALAR_ARITHMETIC\000" .LASF331: @@ -4408,7 +4573,7 @@ main: .ascii "__ORDER_PDP_ENDIAN__ 3412\000" .LASF34: .ascii "__SIZE_TYPE__ unsigned int\000" -.LASF903: +.LASF920: .ascii "RCC_APB1ENR_TIM4_ENABLE (1 << RCC_APB1ENR_TIM4_BIT)" .ascii "\000" .LASF620: @@ -4467,9 +4632,9 @@ main: .ascii "_LDBL_EQ_DBL 1\000" .LASF675: .ascii "PRIi8 __PRI8(i)\000" -.LASF918: +.LASF938: .ascii "FLASH_ACR_ICEN_ENABLE (1 <> 8)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" -.LASF889: +.LASF895: + .ascii "RCC_CFGR_MCO1PRE_DIV4 (0b110)\000" +.LASF917: + .ascii "RCC_APB1ENR_USART2EN_BIT 17\000" +.LASF902: .ascii "RCC_CFGR_PPRE1_MASK (0b111)\000" .LASF645: .ascii "UINTMAX_C(x) __UINTMAX_C(x)\000" @@ -5705,19 +5912,23 @@ main: .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1\000" .LASF733: .ascii "SCNuLEAST16 __SCN16LEAST(u)\000" -.LASF954: +.LASF993: .ascii "APB1RSTR\000" .LASF298: .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" .LASF393: .ascii "__ARM_FEATURE_CRYPTO\000" -.LASF960: +.LASF999: .ascii "APB1ENR\000" .LASF741: .ascii "SCNdFAST16 __SCN16FAST(d)\000" -.LASF872: +.LASF892: + .ascii "RCC_CFGR_MCO1_BIT 21\000" +.LASF874: .ascii "RCC_PLLCFGR_PLLQ(q) ((q & RCC_PLLCFGR_PLLQ_MASK) <<" .ascii " RCC_PLLCFGR_PLLQ_BIT)\000" +.LASF959: + .ascii "USART_SR_TXE_TRANSMITTED (1 << USART_SR_TXE_BIT)\000" .LASF787: .ascii "__PRI64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF677: @@ -5736,18 +5947,18 @@ main: .ascii "__NEWLIB_PATCHLEVEL__ 0\000" .LASF26: .ascii "__ORDER_LITTLE_ENDIAN__ 1234\000" -.LASF874: +.LASF876: .ascii "RCC_PLLCFGR_PLLSRC_HSE (1 << RCC_PLLCFGR_PLLSRC_BIT" .ascii ")\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF945: +.LASF984: .ascii "long long unsigned int\000" .LASF611: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" .LASF150: .ascii "__FLT_MIN_10_EXP__ (-37)\000" -.LASF895: +.LASF908: .ascii "RCC_CFGR_SWS_MASK (0b11)\000" .LASF312: .ascii "__ULACCUM_IBIT__ 32\000" @@ -5775,27 +5986,29 @@ main: .ascii "__UHQ_IBIT__ 0\000" .LASF60: .ascii "__INT_FAST16_TYPE__ int\000" -.LASF679: - .ascii "PRIX8 __PRI8(X)\000" +.LASF574: + .ascii "_UINTMAX_T_DECLARED \000" .LASF61: .ascii "__INT_FAST32_TYPE__ int\000" .LASF288: .ascii "__SACCUM_MIN__ (-0X1P7HK-0X1P7HK)\000" .LASF274: .ascii "__ULFRACT_MAX__ 0XFFFFFFFFP-32ULR\000" -.LASF880: +.LASF883: .ascii "RCC_PLLCFGR_PLLN(n) ((n & RCC_PLLCFGR_PLLN_MASK) <<" .ascii " RCC_PLLCFGR_PLLN_BIT)\000" .LASF56: .ascii "__UINT_LEAST16_TYPE__ short unsigned int\000" -.LASF926: +.LASF946: .ascii "PWR_SCALE3 (0b11)\000" .LASF573: .ascii "_INTMAX_T_DECLARED \000" -.LASF988: +.LASF1027: .ascii "CCER\000" .LASF40: .ascii "__CHAR16_TYPE__ short unsigned int\000" +.LASF961: + .ascii "USART_SR_TC_COMPLETED (1 << USART_SR_TC_BIT)\000" .LASF231: .ascii "__FLT32X_DIG__ 15\000" .LASF740: @@ -5838,6 +6051,8 @@ main: .ascii "SIZE_MAX (__SIZE_MAX__)\000" .LASF333: .ascii "__DQ_IBIT__ 0\000" +.LASF898: + .ascii "RCC_CFGR_MCO1PRE_MASK (0b111)\000" .LASF450: .ascii "__ARM_BF16_FORMAT_ALTERNATIVE\000" .LASF45: @@ -5850,18 +6065,22 @@ main: .ascii "__int20__ +2\000" .LASF654: .ascii "_WCHAR_T_ \000" -.LASF984: +.LASF1023: .ascii "SMCR\000" .LASF828: .ascii "PRIoMAX __PRIMAX(o)\000" .LASF747: .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" -.LASF921: +.LASF941: .ascii "FLASH_ACR_LATENCY_MASK (0b1111)\000" -.LASF974: +.LASF1013: .ascii "GPIO_MODE_INPUT\000" .LASF743: .ascii "SCNoFAST16 __SCN16FAST(o)\000" +.LASF929: + .ascii "PIN(port,num) (PORT(port) | num)\000" +.LASF1040: + .ascii "usart2_init\000" .LASF345: .ascii "__UTQ_IBIT__ 0\000" .LASF348: @@ -5870,8 +6089,6 @@ main: .ascii "__INT_WCHAR_T_H \000" .LASF237: .ascii "__FLT32X_MAX__ 1.7976931348623157e+308F32x\000" -.LASF552: - .ascii "___int16_t_defined 1\000" .LASF438: .ascii "__ARM_EABI__ 1\000" .LASF465: @@ -5888,6 +6105,8 @@ main: .ascii "PRIi16 __PRI16(i)\000" .LASF390: .ascii "__ARM_FEATURE_DSP 1\000" +.LASF965: + .ascii "USART_CR1_UE_ENABLE (1 << USART_CR1_UE_BIT)\000" .LASF825: .ascii "__SCNMAX(x) __STRINGIFY(ll ##x)\000" .LASF327: @@ -5914,19 +6133,23 @@ main: .ascii "__UINT_LEAST32_TYPE__ long unsigned int\000" .LASF405: .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" -.LASF905: +.LASF925: .ascii "GPIO_BASE_ADDR (0x40020000U)\000" .LASF38: .ascii "__INTMAX_TYPE__ long long int\000" .LASF377: .ascii "__GCC_ATOMIC_INT_LOCK_FREE 2\000" +.LASF971: + .ascii "USART_BRR_MANTISSA_MASK (0b111111111111)\000" +.LASF962: + .ascii "USART_SR_RXNE_BIT 5\000" .LASF561: .ascii "_INT8_T_DECLARED \000" .LASF436: .ascii "__ARM_ARCH_7EM__ 1\000" .LASF428: .ascii "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC\000" -.LASF957: +.LASF996: .ascii "AHB1ENR\000" .LASF295: .ascii "__USACCUM_EPSILON__ 0x1P-8UHK\000" @@ -5966,11 +6189,11 @@ main: .ascii "__DBL_DIG__ 15\000" .LASF275: .ascii "__ULFRACT_EPSILON__ 0x1P-32ULR\000" -.LASF952: +.LASF991: .ascii "AHB2RSTR\000" .LASF671: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" -.LASF887: +.LASF900: .ascii "RCC_CFGR_PPRE2_MASK (0b111)\000" .LASF23: .ascii "__SIZEOF_SIZE_T__ 4\000" @@ -5990,28 +6213,32 @@ main: .ascii "__LDBL_MIN__ 2.2250738585072014e-308L\000" .LASF445: .ascii "__ARM_FEATURE_CDE\000" -.LASF980: +.LASF1019: .ascii "KEYR\000" .LASF509: .ascii "unsigned\000" .LASF381: .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" -.LASF938: +.LASF977: .ascii "short int\000" .LASF835: .ascii "SCNuMAX __SCNMAX(u)\000" +.LASF957: + .ascii "USART2 ((struct usart *) USART2_BASE_ADDR)\000" .LASF121: .ascii "__UINT16_C(c) c\000" -.LASF934: - .ascii "TIM4_ENABLE (1 << TIM4_CR_CEN_BIT)\000" +.LASF972: + .ascii "USART_BRR_FRACTION_BIT 0\000" .LASF359: .ascii "__UDA_IBIT__ 32\000" .LASF534: .ascii "__LEAST16 \"h\"\000" -.LASF882: +.LASF885: .ascii "RCC_PLLCFGR_PLLM_MASK (0b111111)\000" .LASF365: .ascii "__NO_INLINE__ 1\000" +.LASF889: + .ascii "RCC_CFGR_MCO1_HSI (0b00)\000" .LASF710: .ascii "__SCN16(x) __INT16 __STRINGIFY(x)\000" .LASF606: @@ -6022,19 +6249,22 @@ main: .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF443: .ascii "__ARM_FEATURE_COPROC\000" -.LASF977: +.LASF1016: .ascii "GPIO_MODE_ANALOG\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" -.LASF932: +.LASF952: .ascii "TIM4 ((struct timer *) TIM4_BASE_ADDR)\000" .LASF95: .ascii "__SIG_ATOMIC_MAX__ 0x7fffffff\000" .LASF608: .ascii "UINT64_MAX (__UINT64_MAX__)\000" +.LASF914: + .ascii "RCC_AHB1ENR_GPIOAEN_ENABLE (1 << RCC_AHB1ENR_GPIOAE" + .ascii "N_BIT)\000" .LASF471: .ascii "_RETARGETABLE_LOCKING 1\000" -.LASF915: +.LASF935: .ascii "FLASH_ACR_DCEN_BIT 10\000" .LASF453: .ascii "__USES_INITFINI__ 1\000" @@ -6058,7 +6288,7 @@ main: .ascii "__INT16_MAX__ 0x7fff\000" .LASF478: .ascii "__SYS_CONFIG_H__ \000" -.LASF881: +.LASF884: .ascii "RCC_PLLCFGR_PLLM_BIT 0\000" .LASF8: .ascii "__VERSION__ \"12.3.1 20230626\"\000" @@ -6094,7 +6324,7 @@ main: .ascii "PRIdMAX __PRIMAX(d)\000" .LASF388: .ascii "__SIZEOF_WINT_T__ 4\000" -.LASF886: +.LASF899: .ascii "RCC_CFGR_PPRE2_BIT 13\000" .LASF782: .ascii "SCNoFAST32 __SCN32FAST(o)\000" @@ -6106,11 +6336,11 @@ main: .ascii "__LDBL_DECIMAL_DIG__ 17\000" .LASF701: .ascii "PRIXFAST8 __PRI8FAST(X)\000" -.LASF1001: +.LASF1043: .ascii "led_on\000" .LASF308: .ascii "__LACCUM_MIN__ (-0X1P31LK-0X1P31LK)\000" -.LASF1003: +.LASF1045: .ascii "src/main.c\000" .LASF126: .ascii "__INT_FAST8_MAX__ 0x7fffffff\000" @@ -6148,13 +6378,13 @@ main: .ascii "__ULLFRACT_MIN__ 0.0ULLR\000" .LASF651: .ascii "_T_WCHAR_ \000" -.LASF993: +.LASF1032: .ascii "BDTR\000" .LASF382: .ascii "__GCC_CONSTRUCTIVE_SIZE 64\000" .LASF664: .ascii "_BSD_WCHAR_T_\000" -.LASF972: +.LASF1011: .ascii "PLLI2SCFGR\000" .LASF277: .ascii "__LLFRACT_IBIT__ 0\000" @@ -6162,23 +6392,23 @@ main: .ascii "UINT16_C(x) __UINT16_C(x)\000" .LASF756: .ascii "PRIx32 __PRI32(x)\000" -.LASF999: +.LASF1041: .ascii "tim4_init\000" -.LASF948: +.LASF987: .ascii "uint32_t\000" -.LASF878: +.LASF881: .ascii "RCC_PLLCFGR_PLLN_BIT 6\000" .LASF689: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" .LASF506: .ascii "_SYS__INTSUP_H \000" -.LASF982: +.LASF1021: .ascii "OPTCR\000" .LASF290: .ascii "__SACCUM_EPSILON__ 0x1P-7HK\000" .LASF415: .ascii "__GCC_ASM_FLAG_OUTPUTS__ 1\000" -.LASF913: +.LASF933: .ascii "FLASH_BASE_ADDR (0x40023C00U)\000" .LASF745: .ascii "SCNxFAST16 __SCN16FAST(x)\000" @@ -6202,9 +6432,11 @@ main: .ascii "__ULACCUM_EPSILON__ 0x1P-32ULK\000" .LASF181: .ascii "__LDBL_DIG__ 15\000" +.LASF894: + .ascii "RCC_CFGR_MCO1PRE_DIV5 (0b111)\000" .LASF89: .ascii "__SIZE_WIDTH__ 32\000" -.LASF876: +.LASF879: .ascii "RCC_PLLCFGR_PLLP_MASK (0b11)\000" .LASF480: .ascii "_SUPPORTS_ERREXCEPT \000" @@ -6212,7 +6444,7 @@ main: .ascii "__FLT64_DIG__ 15\000" .LASF524: .ascii "_INT32_EQ_LONG \000" -.LASF884: +.LASF887: .ascii "RCC_CFGR_PPRE_DIV_NONE 0\000" .LASF77: .ascii "__WINT_MAX__ 0xffffffffU\000" @@ -6224,13 +6456,13 @@ main: .ascii "__PRI16(x) __INT16 __STRINGIFY(x)\000" .LASF159: .ascii "__FLT_HAS_DENORM__ 1\000" -.LASF910: +.LASF930: .ascii "PINNUM(pin) (pin & 0b1111)\000" .LASF768: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF939: +.LASF978: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -6238,6 +6470,8 @@ main: .ascii "__FLT32_HAS_INFINITY__ 1\000" .LASF416: .ascii "__thumb__ 1\000" +.LASF970: + .ascii "USART_BRR_MANTISSA_BIT 4\000" .LASF421: .ascii "__ARMEL__ 1\000" .LASF690: @@ -6246,19 +6480,25 @@ main: .ascii "__HQ_FBIT__ 15\000" .LASF854: .ascii "__bool_true_false_are_defined 1\000" -.LASF907: +.LASF964: + .ascii "USART_CR1_UE_BIT 13\000" +.LASF927: .ascii "GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADD" .ascii "R + (GPIO_PORT_OFFSET * port)))\000" .LASF798: .ascii "SCNi64 __SCN64(i)\000" -.LASF866: +.LASF868: .ascii "RCC_CR_HSIRDY_BIT 1\000" .LASF80: .ascii "__SIZE_MAX__ 0xffffffffU\000" +.LASF1034: + .ascii "usart2_write\000" .LASF818: .ascii "PRIXFAST64 __PRI64FAST(X)\000" -.LASF912: +.LASF932: .ascii "FLASH_H_ \000" +.LASF863: + .ascii "RCC_CR_CSS_ON (1 << RCC_CR_CSS_BIT)\000" .LASF412: .ascii "__ARM_ARCH\000" .LASF590: @@ -6275,7 +6515,7 @@ main: .ascii "SCNuFAST32 __SCN32FAST(u)\000" .LASF522: .ascii "long +4\000" -.LASF951: +.LASF990: .ascii "AHB1RSTR\000" .LASF723: .ascii "SCNx16 __SCN16(x)\000" @@ -6285,6 +6525,8 @@ main: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF340: .ascii "__USQ_FBIT__ 32\000" +.LASF1046: + .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF796: .ascii "PRIX64 __PRI64(X)\000" .LASF249: @@ -6321,6 +6563,8 @@ main: .ascii "__DBL_MIN_10_EXP__ (-307)\000" .LASF795: .ascii "PRIx64 __PRI64(x)\000" +.LASF966: + .ascii "USART_CR1_TE_BIT 3\000" .LASF512: .ascii "__int20\000" .LASF619: @@ -6337,7 +6581,9 @@ main: .ascii "__DBL_MANT_DIG__ 53\000" .LASF272: .ascii "__ULFRACT_IBIT__ 0\000" -.LASF892: +.LASF857: + .ascii "RCC ((struct rcc *) RCC_BASE_ADDR)\000" +.LASF905: .ascii "RCC_CFGR_HPRE_MASK (0b1111)\000" .LASF72: .ascii "__INT_MAX__ 0x7fffffff\000" @@ -6345,12 +6591,14 @@ main: .ascii "__INT_LEAST64_TYPE__ long long int\000" .LASF103: .ascii "__UINT16_MAX__ 0xffff\000" -.LASF924: +.LASF944: .ascii "PWR_BASE_ADDR (0x40007000U)\000" .LASF446: .ascii "__ARM_FEATURE_CDE_COPROC\000" .LASF765: .ascii "PRIoLEAST32 __PRI32LEAST(o)\000" +.LASF939: + .ascii "FLASH_ACR_LATENCY_3_WAIT_STATES (0b0011)\000" .LASF91: .ascii "__INTMAX_C(c) c ## LL\000" .ident "GCC: (Arm GNU Toolchain 12.3.Rel1 (Build arm-12.35)) 12.3.1 20230626" diff --git a/build/main.i b/build/main.i index 1404660..9734917 100644 --- a/build/main.i +++ b/build/main.i @@ -1,5 +1,5 @@ # 0 "src/main.c" -# 1 "/home/alex/code/own/c-compile-experiments//" +# 1 "/home/alex/code/own/stm32-falling-sand//" # 0 "" #define __STDC__ 1 # 0 "" @@ -2029,6 +2029,11 @@ struct rcc { #define RCC_CR_PLLON_ON (1 << RCC_CR_PLLON_BIT) +#define RCC_CR_CSS_BIT 19 +#define RCC_CR_CSS_ON (1 << RCC_CR_CSS_BIT) + + + #define RCC_CR_HSERDY_BIT 17 #define RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT) @@ -2051,6 +2056,7 @@ struct rcc { #define RCC_PLLCFGR_PLLSRC_BIT 22 #define RCC_PLLCFGR_PLLSRC_HSE (1 << RCC_PLLCFGR_PLLSRC_BIT) +#define RCC_PLLCFGR_PLLSRC_HSI (0 << RCC_PLLCFGR_PLLSRC_BIT) #define RCC_PLLCFGR_PLLP_BIT 16 #define RCC_PLLCFGR_PLLP_MASK (0b11) @@ -2070,6 +2076,21 @@ struct rcc { #define RCC_CFGR_PPRE_DIV_2 (0b100) +#define RCC_CFGR_MCO1_HSI (0b00) +#define RCC_CFGR_MCO1_HSE (0b10) +#define RCC_CFGR_MCO1_PLL (0b11) + +#define RCC_CFGR_MCO1_BIT 21 +#define RCC_CFGR_MCO1_MASK (0b11) + +#define RCC_CFGR_MCO1PRE_DIV5 (0b111) +#define RCC_CFGR_MCO1PRE_DIV4 (0b110) +#define RCC_CFGR_MCO1PRE_DIV2 (0b100) + +#define RCC_CFGR_MCO1PRE_BIT 24 +#define RCC_CFGR_MCO1PRE_MASK (0b111) + + #define RCC_CFGR_PPRE2_BIT 13 #define RCC_CFGR_PPRE2_MASK (0b111) @@ -2097,9 +2118,17 @@ struct rcc { #define RCC_CFGR_SW(clock) ((clock & RCC_CFGR_SW_MASK) << RCC_CFGR_SW_BIT) + +#define RCC_AHB1ENR_GPIOAEN_BIT 0 +#define RCC_AHB1ENR_GPIOAEN_ENABLE (1 << RCC_AHB1ENR_GPIOAEN_BIT) + + #define RCC_APB1ENR_PWREN_BIT 28 #define RCC_APB1ENR_PWREN_CLOCK_ENABLE (1 << RCC_APB1ENR_PWREN_BIT) +#define RCC_APB1ENR_USART2EN_BIT 17 +#define RCC_APB1ENR_USART2EN_ENABLE (1 << RCC_APB1ENR_USART2EN_BIT) + #define RCC_APB1ENR_TIM4_BIT 2 #define RCC_APB1ENR_TIM4_ENABLE (1 << RCC_APB1ENR_TIM4_BIT) # 5 "src/main.c" 2 @@ -2119,17 +2148,23 @@ struct gpio { volatile uint32_t ODR; volatile uint32_t BSRR; volatile uint32_t LCKR; - volatile uint32_t AFRL[2]; - volatile uint32_t AFRH[2]; + volatile uint32_t AFRL; + volatile uint32_t AFRH; }; + +#define GPIO_AF_MCO_1 (0b0000) +#define GPIO_AF_USART2_RX (0b0111) +#define GPIO_AF_USART2_TX (0b0111) + #define GPIO_BASE_ADDR (0x40020000U) #define GPIO_PORT_OFFSET (0x400U) #define GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADDR + (GPIO_PORT_OFFSET * port))) -#define BIT(x) (1 << x) -#define PIN(port,num) ((((port) - 'A') << 8) | num) +#define PORT(port) (((port) - 'A') << 8) + +#define PIN(port,num) (PORT(port) | num) #define PINNUM(pin) (pin & 0b1111) @@ -2143,10 +2178,11 @@ typedef enum { } GPIO_MODE; void gpio_set_mode(uint16_t pin, GPIO_MODE mode); +void gpio_set_af(uint16_t pin, uint8_t af); void gpio_write(uint16_t pin, -# 40 "src/gpio.h" 3 4 +# 47 "src/gpio.h" 3 4 _Bool -# 40 "src/gpio.h" +# 47 "src/gpio.h" val); # 6 "src/main.c" 2 # 1 "src/flash.h" 1 @@ -2177,7 +2213,7 @@ struct flash { #define FLASH_ACR_ICEN_ENABLE (1 <CR |= ((0b11) << 14); + ((struct rcc *) (0x40023800U))->CR &= ~(1 << 0); +# 34 "src/main.c" ((struct rcc *) (0x40023800U))->CR |= (1 << 16); + ((struct rcc *) (0x40023800U))->CR |= (1 << 19); + + while (!(((struct rcc *) (0x40023800U))->CR & (1 << 17))); @@ -2269,7 +2369,7 @@ static void system_clock_init(void) { ((struct rcc *) (0x40023800U))->PLLCFGR |= (1 << 22); - ((struct rcc *) (0x40023800U))->PLLCFGR |= ((25 & (0b111111)) << 0) | ((196 & (0b111111111)) << 6) | ((2 & (0b11)) << 16) | ((4 & (0b1111)) << 24); + ((struct rcc *) (0x40023800U))->PLLCFGR |= ((25 & (0b111111)) << 0) | ((192 & (0b111111111)) << 6) | ((2 & (0b11)) << 16) | ((4 & (0b1111)) << 24); ((struct rcc *) (0x40023800U))->CFGR &= ~((0b1111) << 4); @@ -2288,33 +2388,32 @@ static void system_clock_init(void) { - while (!(((struct rcc *) (0x40023800U))->CR & (1 << 17))); + while (!(((struct rcc *) (0x40023800U))->CR & (1 << 25))); ((struct flash *) (0x40023C00U))->ACR |= (1 <<10); ((struct flash *) (0x40023C00U))->ACR |= (1 <<9); - ((struct flash *) (0x40023C00U))->ACR &= ~((0b1111) << 0); - ((struct rcc *) (0x40023800U))->CFGR |= ((0x0111) << 0); - ((struct rcc *) (0x40023800U))->CFGR &= ~((0b11) << 0); - ((struct rcc *) (0x40023800U))->CFGR |= ((0b10) << 0); + + + + ((struct rcc *) (0x40023800U))->CFGR |= (((0b10) & (0b11)) << 0); while (((((struct rcc *) (0x40023800U))->CFGR >> 2) & (0b11)) != (0b10)); - - - ((struct rcc *) (0x40023800U))->CR &= ~(1 << 0); } int main(void) { (void) system_clock_init(); (void) tim4_init(); + (void) usart2_init(); (void) tim4_start(); + (void) usart2_start(); uint16_t led = (((('C') - 'A') << 8) | 13); ((struct rcc *) (0x40023800U))->AHB1ENR |= (1 << (led >> 8)); @@ -2322,19 +2421,21 @@ int main(void) { uint16_t counter = ((struct timer *) (0x40000800U))->CNT; -# 87 "src/main.c" 3 4 +# 102 "src/main.c" 3 4 _Bool -# 87 "src/main.c" +# 102 "src/main.c" led_on = -# 87 "src/main.c" 3 4 +# 102 "src/main.c" 3 4 ((_Bool)+0u) -# 87 "src/main.c" +# 102 "src/main.c" ; while(1) { if ((((struct timer *) (0x40000800U))->CNT - counter) >= 250) { led_on = !led_on; gpio_write(led, led_on); + usart2_write("hello, world!\n"); + counter = ((struct timer *) (0x40000800U))->CNT; } }; diff --git a/build/main.o b/build/main.o index 7baa25a3a5ce343d9fe13e2cda2b95d1fcc6e8b0..eef9063701a4ade3393e0544329d77eecba8e8cc 100644 GIT binary patch delta 22768 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 diff --git a/build/startup.S b/build/startup.S index 0e7baf8..f652787 100644 --- a/build/startup.S +++ b/build/startup.S @@ -2923,6 +2923,8 @@ interrupt_vector_table: .ascii "INOR__ >= ((maj) << 16) + (min))\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" +.LASF602: + .ascii "UINTMAX_C(x) __UINTMAX_C(x)\000" .LASF253: .ascii "__USFRACT_MIN__ 0.0UHR\000" .LASF578: @@ -3020,8 +3022,8 @@ interrupt_vector_table: .ascii "__BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__\000" .LASF200: .ascii "__FLT32_MIN_10_EXP__ (-37)\000" -.LASF176: - .ascii "__DBL_HAS_DENORM__ 1\000" +.LASF492: + .ascii "__int20\000" .LASF267: .ascii "__LFRACT_IBIT__ 0\000" .LASF497: @@ -3106,8 +3108,8 @@ interrupt_vector_table: .ascii "__ARM_NEON\000" .LASF401: .ascii "__ARM_FEATURE_CMSE\000" -.LASF625: - .ascii "/home/alex/code/own/c-compile-experiments\000" +.LASF68: + .ascii "__UINTPTR_TYPE__ unsigned int\000" .LASF229: .ascii "__FLT64_IS_IEC_60559__ 2\000" .LASF209: @@ -3473,8 +3475,6 @@ interrupt_vector_table: .ascii "UINT16_C(x) __UINT16_C(x)\000" .LASF344: .ascii "__UTQ_FBIT__ 128\000" -.LASF499: - .ascii "__int20 +2\000" .LASF610: .ascii "long long int\000" .LASF24: @@ -3539,8 +3539,8 @@ interrupt_vector_table: .ascii "__STDC__ 1\000" .LASF17: .ascii "__SIZEOF_LONG__ 4\000" -.LASF492: - .ascii "__int20\000" +.LASF499: + .ascii "__int20 +2\000" .LASF168: .ascii "__DBL_MAX_EXP__ 1024\000" .LASF585: @@ -3567,6 +3567,8 @@ interrupt_vector_table: .ascii "__SCHAR_WIDTH__ 8\000" .LASF298: .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" +.LASF40: + .ascii "__CHAR16_TYPE__ short unsigned int\000" .LASF21: .ascii "__SIZEOF_DOUBLE__ 8\000" .LASF7: @@ -3801,8 +3803,8 @@ interrupt_vector_table: .ascii "SIZE_MAX (__SIZE_MAX__)\000" .LASF54: .ascii "__INT_LEAST64_TYPE__ long long int\000" -.LASF602: - .ascii "UINTMAX_C(x) __UINTMAX_C(x)\000" +.LASF128: + .ascii "__INT_FAST16_MAX__ 0x7fffffff\000" .LASF49: .ascii "__UINT32_TYPE__ long unsigned int\000" .LASF183: @@ -3879,8 +3881,8 @@ interrupt_vector_table: .ascii "INT64_MAX (__INT64_MAX__)\000" .LASF518: .ascii "_INT8_T_DECLARED \000" -.LASF40: - .ascii "__CHAR16_TYPE__ short unsigned int\000" +.LASF625: + .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF370: .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1\000" .LASF151: @@ -4044,8 +4046,8 @@ interrupt_vector_table: .ascii "__FLT32X_MAX_10_EXP__ 308\000" .LASF140: .ascii "__UINTPTR_MAX__ 0xffffffffU\000" -.LASF128: - .ascii "__INT_FAST16_MAX__ 0x7fffffff\000" +.LASF176: + .ascii "__DBL_HAS_DENORM__ 1\000" .LASF32: .ascii "__GNUC_EXECUTION_CHARSET_NAME \"UTF-8\"\000" .LASF475: @@ -4072,8 +4074,6 @@ interrupt_vector_table: .ascii "long +4\000" .LASF534: .ascii "__int_least8_t_defined 1\000" -.LASF68: - .ascii "__UINTPTR_TYPE__ unsigned int\000" .LASF92: .ascii "__UINTMAX_MAX__ 0xffffffffffffffffULL\000" .LASF42: diff --git a/build/startup.i b/build/startup.i index a43bdc7..1d70ec9 100644 --- a/build/startup.i +++ b/build/startup.i @@ -1,5 +1,5 @@ # 0 "src/startup.c" -# 1 "/home/alex/code/own/c-compile-experiments//" +# 1 "/home/alex/code/own/stm32-falling-sand//" # 0 "" #define __STDC__ 1 # 0 "" diff --git a/build/startup.o b/build/startup.o index fd68f1d78b488e82874695bf415e0fc3f2aea89d..7f8da7530ba32c8b9c2873fdfed396a7157460a7 100644 GIT binary patch delta 4520 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 diff --git a/build/timer.S b/build/timer.S index 4ff166a..aa1eb37 100644 --- a/build/timer.S +++ b/build/timer.S @@ -56,7 +56,7 @@ tim4_init: .loc 1 14 35 ldr r3, .L2+4 .loc 1 14 41 - movw r2, #47999 + movw r2, #30463 str r2, [r3, #40] .loc 1 17 35 ldr r3, .L2+4 @@ -136,10 +136,10 @@ tim4_start: .byte 0x4 .4byte .Ldebug_abbrev0 .uleb128 0x7 - .4byte .LASF956 + .4byte .LASF973 .byte 0x1d - .4byte .LASF957 - .4byte .LASF958 + .4byte .LASF974 + .4byte .LASF975 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -147,17 +147,17 @@ tim4_start: .uleb128 0x3 .byte 0x1 .byte 0x6 - .4byte .LASF904 + .4byte .LASF921 .uleb128 0x3 .byte 0x1 .byte 0x8 - .4byte .LASF905 + .4byte .LASF922 .uleb128 0x3 .byte 0x2 .byte 0x5 - .4byte .LASF906 + .4byte .LASF923 .uleb128 0x4 - .4byte .LASF909 + .4byte .LASF926 .byte 0x2 .byte 0x39 .byte 0x1c @@ -165,13 +165,13 @@ tim4_start: .uleb128 0x3 .byte 0x2 .byte 0x7 - .4byte .LASF907 + .4byte .LASF924 .uleb128 0x3 .byte 0x4 .byte 0x5 - .4byte .LASF908 + .4byte .LASF925 .uleb128 0x4 - .4byte .LASF910 + .4byte .LASF927 .byte 0x2 .byte 0x4f .byte 0x1b @@ -179,15 +179,15 @@ tim4_start: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF911 + .4byte .LASF928 .uleb128 0x3 .byte 0x8 .byte 0x5 - .4byte .LASF912 + .4byte .LASF929 .uleb128 0x3 .byte 0x8 .byte 0x7 - .4byte .LASF913 + .4byte .LASF930 .uleb128 0x8 .byte 0x4 .byte 0x5 @@ -195,15 +195,15 @@ tim4_start: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF914 + .4byte .LASF931 .uleb128 0x4 - .4byte .LASF915 + .4byte .LASF932 .byte 0x3 .byte 0x24 .byte 0x14 .4byte 0x3f .uleb128 0x4 - .4byte .LASF916 + .4byte .LASF933 .byte 0x3 .byte 0x30 .byte 0x14 @@ -224,13 +224,13 @@ tim4_start: .4byte 0xa0 .byte 0 .uleb128 0x1 - .4byte .LASF917 + .4byte .LASF934 .byte 0x4 .byte 0x8 .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF918 + .4byte .LASF935 .byte 0x4 .byte 0x9 .4byte 0xa0 @@ -242,115 +242,115 @@ tim4_start: .4byte 0xa0 .byte 0xc .uleb128 0x1 - .4byte .LASF919 + .4byte .LASF936 .byte 0x4 .byte 0xb .4byte 0xa0 .byte 0x10 .uleb128 0x1 - .4byte .LASF920 + .4byte .LASF937 .byte 0x4 .byte 0xc .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF921 + .4byte .LASF938 .byte 0x4 .byte 0xd .4byte 0x212 .byte 0x18 .uleb128 0x1 - .4byte .LASF922 + .4byte .LASF939 .byte 0x4 .byte 0xe .4byte 0xa0 .byte 0x20 .uleb128 0x1 - .4byte .LASF923 + .4byte .LASF940 .byte 0x4 .byte 0xf .4byte 0xa0 .byte 0x24 .uleb128 0x1 - .4byte .LASF924 + .4byte .LASF941 .byte 0x4 .byte 0x10 .4byte 0x212 .byte 0x28 .uleb128 0x1 - .4byte .LASF925 + .4byte .LASF942 .byte 0x4 .byte 0x11 .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF926 + .4byte .LASF943 .byte 0x4 .byte 0x12 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF927 + .4byte .LASF944 .byte 0x4 .byte 0x13 .4byte 0x212 .byte 0x38 .uleb128 0x1 - .4byte .LASF928 + .4byte .LASF945 .byte 0x4 .byte 0x14 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF929 + .4byte .LASF946 .byte 0x4 .byte 0x15 .4byte 0xa0 .byte 0x44 .uleb128 0x1 - .4byte .LASF930 + .4byte .LASF947 .byte 0x4 .byte 0x16 .4byte 0x212 .byte 0x48 .uleb128 0x1 - .4byte .LASF931 + .4byte .LASF948 .byte 0x4 .byte 0x17 .4byte 0xa0 .byte 0x50 .uleb128 0x1 - .4byte .LASF932 + .4byte .LASF949 .byte 0x4 .byte 0x18 .4byte 0xa0 .byte 0x54 .uleb128 0x1 - .4byte .LASF933 + .4byte .LASF950 .byte 0x4 .byte 0x19 .4byte 0x212 .byte 0x58 .uleb128 0x1 - .4byte .LASF934 + .4byte .LASF951 .byte 0x4 .byte 0x1a .4byte 0xa0 .byte 0x60 .uleb128 0x1 - .4byte .LASF935 + .4byte .LASF952 .byte 0x4 .byte 0x1b .4byte 0xa0 .byte 0x64 .uleb128 0x1 - .4byte .LASF936 + .4byte .LASF953 .byte 0x4 .byte 0x1c .4byte 0x212 .byte 0x68 .uleb128 0x1 - .4byte .LASF937 + .4byte .LASF954 .byte 0x4 .byte 0x1d .4byte 0xa0 @@ -362,25 +362,25 @@ tim4_start: .4byte 0xa0 .byte 0x74 .uleb128 0x1 - .4byte .LASF938 + .4byte .LASF955 .byte 0x4 .byte 0x1f .4byte 0x212 .byte 0x78 .uleb128 0x1 - .4byte .LASF939 + .4byte .LASF956 .byte 0x4 .byte 0x20 .4byte 0xa0 .byte 0x80 .uleb128 0x1 - .4byte .LASF940 + .4byte .LASF957 .byte 0x4 .byte 0x21 .4byte 0xa0 .byte 0x84 .uleb128 0x1 - .4byte .LASF941 + .4byte .LASF958 .byte 0x4 .byte 0x22 .4byte 0xa0 @@ -396,7 +396,7 @@ tim4_start: .uleb128 0x5 .4byte 0x202 .uleb128 0xc - .4byte .LASF942 + .4byte .LASF959 .byte 0x50 .byte 0x5 .byte 0x6 @@ -415,13 +415,13 @@ tim4_start: .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF943 + .4byte .LASF960 .byte 0x5 .byte 0x9 .4byte 0xa0 .byte 0x8 .uleb128 0x1 - .4byte .LASF944 + .4byte .LASF961 .byte 0x5 .byte 0xa .4byte 0xa0 @@ -439,19 +439,19 @@ tim4_start: .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF945 + .4byte .LASF962 .byte 0x5 .byte 0xd .4byte 0xa0 .byte 0x18 .uleb128 0x1 - .4byte .LASF946 + .4byte .LASF963 .byte 0x5 .byte 0xe .4byte 0xa0 .byte 0x1c .uleb128 0x1 - .4byte .LASF947 + .4byte .LASF964 .byte 0x5 .byte 0xf .4byte 0xa0 @@ -481,31 +481,31 @@ tim4_start: .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF948 + .4byte .LASF965 .byte 0x5 .byte 0x14 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF949 + .4byte .LASF966 .byte 0x5 .byte 0x15 .4byte 0xa0 .byte 0x38 .uleb128 0x1 - .4byte .LASF950 + .4byte .LASF967 .byte 0x5 .byte 0x16 .4byte 0xa0 .byte 0x3c .uleb128 0x1 - .4byte .LASF951 + .4byte .LASF968 .byte 0x5 .byte 0x17 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF952 + .4byte .LASF969 .byte 0x5 .byte 0x18 .4byte 0xa0 @@ -517,21 +517,21 @@ tim4_start: .4byte 0xa0 .byte 0x48 .uleb128 0x1 - .4byte .LASF953 + .4byte .LASF970 .byte 0x5 .byte 0x1a .4byte 0xa0 .byte 0x4c .byte 0 .uleb128 0x6 - .4byte .LASF954 + .4byte .LASF971 .byte 0x14 .4byte .LFB1 .4byte .LFE1-.LFB1 .uleb128 0x1 .byte 0x9c .uleb128 0x6 - .4byte .LASF955 + .4byte .LASF972 .byte 0x4 .4byte .LFB0 .4byte .LFE0-.LFB0 @@ -3501,7 +3501,7 @@ tim4_start: .uleb128 0x135 .4byte .LASF850 .byte 0 - .section .debug_macro,"G",%progbits,wm4.rcc.h.37.7ab56e8f55874aebd4da18716582113c,comdat + .section .debug_macro,"G",%progbits,wm4.rcc.h.37.5794a95d344d56391987aa7090658f72,comdat .Ldebug_macro14: .2byte 0x5 .byte 0 @@ -3530,64 +3530,64 @@ tim4_start: .uleb128 0x33 .4byte .LASF858 .byte 0x5 - .uleb128 0x36 + .uleb128 0x37 .4byte .LASF859 .byte 0x5 - .uleb128 0x37 + .uleb128 0x38 .4byte .LASF860 .byte 0x5 - .uleb128 0x3a + .uleb128 0x3b .4byte .LASF861 .byte 0x5 - .uleb128 0x3b + .uleb128 0x3c .4byte .LASF862 .byte 0x5 - .uleb128 0x3e + .uleb128 0x3f .4byte .LASF863 .byte 0x5 - .uleb128 0x3f + .uleb128 0x40 .4byte .LASF864 .byte 0x5 - .uleb128 0x42 + .uleb128 0x43 .4byte .LASF865 .byte 0x5 - .uleb128 0x43 + .uleb128 0x44 .4byte .LASF866 .byte 0x5 - .uleb128 0x44 + .uleb128 0x47 .4byte .LASF867 .byte 0x5 - .uleb128 0x46 + .uleb128 0x48 .4byte .LASF868 .byte 0x5 - .uleb128 0x47 + .uleb128 0x49 .4byte .LASF869 .byte 0x5 - .uleb128 0x49 + .uleb128 0x4b .4byte .LASF870 .byte 0x5 - .uleb128 0x4a + .uleb128 0x4c .4byte .LASF871 .byte 0x5 - .uleb128 0x4b + .uleb128 0x4d .4byte .LASF872 .byte 0x5 - .uleb128 0x4d + .uleb128 0x4f .4byte .LASF873 .byte 0x5 - .uleb128 0x4e + .uleb128 0x50 .4byte .LASF874 .byte 0x5 - .uleb128 0x4f + .uleb128 0x51 .4byte .LASF875 .byte 0x5 - .uleb128 0x51 + .uleb128 0x53 .4byte .LASF876 .byte 0x5 - .uleb128 0x52 + .uleb128 0x54 .4byte .LASF877 .byte 0x5 - .uleb128 0x53 + .uleb128 0x55 .4byte .LASF878 .byte 0x5 .uleb128 0x57 @@ -3596,85 +3596,134 @@ tim4_start: .uleb128 0x58 .4byte .LASF880 .byte 0x5 - .uleb128 0x5b + .uleb128 0x59 .4byte .LASF881 .byte 0x5 - .uleb128 0x5c + .uleb128 0x5d .4byte .LASF882 .byte 0x5 - .uleb128 0x5f + .uleb128 0x5e .4byte .LASF883 .byte 0x5 - .uleb128 0x60 + .uleb128 0x61 .4byte .LASF884 .byte 0x5 - .uleb128 0x63 + .uleb128 0x62 .4byte .LASF885 .byte 0x5 - .uleb128 0x65 + .uleb128 0x63 .4byte .LASF886 .byte 0x5 - .uleb128 0x66 + .uleb128 0x65 .4byte .LASF887 .byte 0x5 - .uleb128 0x69 + .uleb128 0x66 .4byte .LASF888 .byte 0x5 - .uleb128 0x6b + .uleb128 0x68 .4byte .LASF889 .byte 0x5 - .uleb128 0x6c + .uleb128 0x69 .4byte .LASF890 .byte 0x5 - .uleb128 0x6f + .uleb128 0x6a .4byte .LASF891 .byte 0x5 - .uleb128 0x71 + .uleb128 0x6c .4byte .LASF892 .byte 0x5 - .uleb128 0x72 + .uleb128 0x6d .4byte .LASF893 .byte 0x5 - .uleb128 0x73 + .uleb128 0x70 .4byte .LASF894 .byte 0x5 - .uleb128 0x76 + .uleb128 0x71 .4byte .LASF895 .byte 0x5 - .uleb128 0x77 + .uleb128 0x74 .4byte .LASF896 .byte 0x5 - .uleb128 0x79 + .uleb128 0x75 .4byte .LASF897 .byte 0x5 - .uleb128 0x7a + .uleb128 0x78 .4byte .LASF898 + .byte 0x5 + .uleb128 0x7a + .4byte .LASF899 + .byte 0x5 + .uleb128 0x7b + .4byte .LASF900 + .byte 0x5 + .uleb128 0x7e + .4byte .LASF901 + .byte 0x5 + .uleb128 0x80 + .4byte .LASF902 + .byte 0x5 + .uleb128 0x81 + .4byte .LASF903 + .byte 0x5 + .uleb128 0x84 + .4byte .LASF904 + .byte 0x5 + .uleb128 0x86 + .4byte .LASF905 + .byte 0x5 + .uleb128 0x87 + .4byte .LASF906 + .byte 0x5 + .uleb128 0x88 + .4byte .LASF907 + .byte 0x5 + .uleb128 0x8c + .4byte .LASF908 + .byte 0x5 + .uleb128 0x8d + .4byte .LASF909 + .byte 0x5 + .uleb128 0x90 + .4byte .LASF910 + .byte 0x5 + .uleb128 0x91 + .4byte .LASF911 + .byte 0x5 + .uleb128 0x93 + .4byte .LASF912 + .byte 0x5 + .uleb128 0x94 + .4byte .LASF913 + .byte 0x5 + .uleb128 0x96 + .4byte .LASF914 + .byte 0x5 + .uleb128 0x97 + .4byte .LASF915 .byte 0 - .section .debug_macro,"G",%progbits,wm4.timer.h.2.a5bec0ee8e2998a7b121820fb4e4e9a6,comdat + .section .debug_macro,"G",%progbits,wm4.timer.h.2.2e929ede818fb0960868f1b0a08a1cbf,comdat .Ldebug_macro15: .2byte 0x5 .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF899 + .4byte .LASF916 .byte 0x5 .uleb128 0x1d - .4byte .LASF900 + .4byte .LASF917 .byte 0x5 .uleb128 0x1e - .4byte .LASF901 + .4byte .LASF918 .byte 0x5 .uleb128 0x20 - .4byte .LASF902 + .4byte .LASF919 .byte 0x5 .uleb128 0x21 - .4byte .LASF903 + .4byte .LASF920 .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: .section .debug_str,"MS",%progbits,1 -.LASF902: - .ascii "TIM4_CR_CEN_BIT 0\000" .LASF735: .ascii "SCNxLEAST16 __SCN16LEAST(x)\000" .LASF636: @@ -3685,7 +3734,7 @@ tim4_start: .ascii "__UHA_FBIT__ 8\000" .LASF815: .ascii "PRIiFAST64 __PRI64FAST(i)\000" -.LASF905: +.LASF922: .ascii "unsigned char\000" .LASF225: .ascii "__FLT64_DENORM_MIN__ 4.9406564584124654e-324F64\000" @@ -3729,9 +3778,11 @@ tim4_start: .ascii "__ULACCUM_FBIT__ 32\000" .LASF75: .ascii "__WCHAR_MAX__ 0xffffffffU\000" +.LASF891: + .ascii "RCC_CFGR_MCO1PRE_DIV2 (0b100)\000" .LASF514: .ascii "__int20__\000" -.LASF897: +.LASF914: .ascii "RCC_APB1ENR_TIM4_BIT 2\000" .LASF18: .ascii "__SIZEOF_LONG_LONG__ 8\000" @@ -3757,7 +3808,7 @@ tim4_start: .ascii "__ORDER_PDP_ENDIAN__ 3412\000" .LASF34: .ascii "__SIZE_TYPE__ unsigned int\000" -.LASF898: +.LASF915: .ascii "RCC_APB1ENR_TIM4_ENABLE (1 << RCC_APB1ENR_TIM4_BIT)" .ascii "\000" .LASF621: @@ -3822,15 +3873,13 @@ tim4_start: .ascii "PRIx8 __PRI8(x)\000" .LASF590: .ascii "INT8_MAX (__INT8_MAX__)\000" -.LASF516: - .ascii "signed +0\000" .LASF631: .ascii "PTRDIFF_MAX (__PTRDIFF_MAX__)\000" .LASF839: .ascii "__SCNPTR(x) __STRINGIFY(x)\000" .LASF202: .ascii "__FLT32_MAX_10_EXP__ 38\000" -.LASF886: +.LASF899: .ascii "RCC_CFGR_HPRE_BIT 4\000" .LASF683: .ascii "SCNo8 __SCN8(o)\000" @@ -3846,12 +3895,12 @@ tim4_start: .ascii "__need_wchar_t\000" .LASF199: .ascii "__FLT32_MIN_EXP__ (-125)\000" -.LASF956: +.LASF973: .ascii "GNU C2X 12.3.1 20230626 -mcpu=cortex-m4 -mthumb -mf" .ascii "loat-abi=hard -mfpu=fpv4-sp-d16 -march=armv7e-m+fp " .ascii "-g3 -ggdb -O0 -std=c2x -ffunction-sections -fdata-s" .ascii "ections -fno-builtin -fno-common\000" -.LASF859: +.LASF861: .ascii "RCC_CR_HSEON_BIT 16\000" .LASF596: .ascii "INT16_MAX (__INT16_MAX__)\000" @@ -3865,7 +3914,7 @@ tim4_start: .ascii "__int_fast32_t_defined 1\000" .LASF133: .ascii "__INT_FAST64_WIDTH__ 64\000" -.LASF953: +.LASF970: .ascii "DMAR\000" .LASF660: .ascii "___int_wchar_t_h \000" @@ -3877,6 +3926,8 @@ tim4_start: .ascii "INT16_C(x) __INT16_C(x)\000" .LASF250: .ascii "__SFRACT_EPSILON__ 0x1P-7HR\000" +.LASF888: + .ascii "RCC_CFGR_MCO1_MASK (0b11)\000" .LASF113: .ascii "__INT32_C(c) c ## L\000" .LASF27: @@ -3907,28 +3958,27 @@ tim4_start: .ascii "__PRI32LEAST(x) __LEAST32 __STRINGIFY(x)\000" .LASF88: .ascii "__PTRDIFF_WIDTH__ 32\000" -.LASF894: - .ascii "RCC_CFGR_SW(clock) ((clock & RCC_CFGR_SW_MASK) << R" - .ascii "CC_CFGR_SW_BIT)\000" +.LASF886: + .ascii "RCC_CFGR_MCO1_PLL (0b11)\000" .LASF134: .ascii "__UINT_FAST8_MAX__ 0xffffffffU\000" .LASF761: .ascii "SCNo32 __SCN32(o)\000" .LASF541: .ascii "_NOTHROW \000" -.LASF948: +.LASF965: .ascii "CCR1\000" -.LASF949: +.LASF966: .ascii "CCR2\000" -.LASF950: +.LASF967: .ascii "CCR3\000" -.LASF951: +.LASF968: .ascii "CCR4\000" .LASF307: .ascii "__LACCUM_IBIT__ 32\000" .LASF593: .ascii "INT_LEAST8_MAX (__INT_LEAST8_MAX__)\000" -.LASF888: +.LASF901: .ascii "RCC_CFGR_SWS_PLL (0b10)\000" .LASF560: .ascii "__EXP\000" @@ -3946,7 +3996,7 @@ tim4_start: .ascii "__INT64 \"ll\"\000" .LASF138: .ascii "__INTPTR_MAX__ 0x7fffffff\000" -.LASF932: +.LASF949: .ascii "AHB2LPENR\000" .LASF500: .ascii "__RAND_MAX\000" @@ -3956,7 +4006,7 @@ tim4_start: .ascii "INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)\000" .LASF614: .ascii "INT_FAST8_MAX (__INT_FAST8_MAX__)\000" -.LASF896: +.LASF911: .ascii "RCC_APB1ENR_PWREN_CLOCK_ENABLE (1 << RCC_APB1ENR_PW" .ascii "REN_BIT)\000" .LASF487: @@ -3984,12 +4034,12 @@ tim4_start: .ascii "__ACCUM_FBIT__ 15\000" .LASF792: .ascii "PRId64 __PRI64(d)\000" -.LASF872: +.LASF875: .ascii "RCC_PLLCFGR_PLLP(p) ((p & RCC_PLLCFGR_PLLP_MASK) <<" .ascii " RCC_PLLCFGR_PLLP_BIT)\000" .LASF302: .ascii "__UACCUM_IBIT__ 16\000" -.LASF908: +.LASF925: .ascii "long int\000" .LASF720: .ascii "SCNd16 __SCN16(d)\000" @@ -4007,7 +4057,7 @@ tim4_start: .ascii "__FLT32X_EPSILON__ 2.2204460492503131e-16F32x\000" .LASF557: .ascii "___int_least16_t_defined 1\000" -.LASF878: +.LASF881: .ascii "RCC_PLLCFGR_PLLM(m) ((m & RCC_PLLCFGR_PLLM_MASK) <<" .ascii " RCC_PLLCFGR_PLLM_BIT)\000" .LASF468: @@ -4022,7 +4072,7 @@ tim4_start: .ascii "__LLFRACT_MIN__ (-0.5LLR-0.5LLR)\000" .LASF93: .ascii "__UINTMAX_C(c) c ## ULL\000" -.LASF865: +.LASF867: .ascii "RCC_PLLCFGR_PLLQ_BIT 24\000" .LASF31: .ascii "__SIZEOF_POINTER__ 4\000" @@ -4030,7 +4080,7 @@ tim4_start: .ascii "INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)\000" .LASF371: .ascii "__GCC_ATOMIC_BOOL_LOCK_FREE 2\000" -.LASF893: +.LASF906: .ascii "RCC_CFGR_SW_MASK (0b11)\000" .LASF432: .ascii "__ARM_NEON__\000" @@ -4066,7 +4116,7 @@ tim4_start: .ascii "__SIZEOF_LONG__ 4\000" .LASF754: .ascii "PRIi32 __PRI32(i)\000" -.LASF929: +.LASF946: .ascii "APB2ENR\000" .LASF822: .ascii "SCNoFAST64 __SCN64FAST(o)\000" @@ -4080,7 +4130,7 @@ tim4_start: .ascii "__FLT32X_MIN_EXP__ (-1021)\000" .LASF816: .ascii "PRIoFAST64 __PRI64FAST(o)\000" -.LASF931: +.LASF948: .ascii "AHB1LPENR\000" .LASF406: .ascii "__ARM_FEATURE_SIMD32 1\000" @@ -4092,7 +4142,7 @@ tim4_start: .ascii "PRIoLEAST16 __PRI16LEAST(o)\000" .LASF459: .ascii "__NEWLIB__ 4\000" -.LASF941: +.LASF958: .ascii "DCKCFGR\000" .LASF721: .ascii "SCNi16 __SCN16(i)\000" @@ -4102,7 +4152,7 @@ tim4_start: .ascii "__FLT_DECIMAL_DIG__ 9\000" .LASF563: .ascii "_UINT8_T_DECLARED \000" -.LASF904: +.LASF921: .ascii "signed char\000" .LASF806: .ascii "PRIuLEAST64 __PRI64LEAST(u)\000" @@ -4124,7 +4174,7 @@ tim4_start: .ascii "__GNUC_PATCHLEVEL__ 1\000" .LASF374: .ascii "__GCC_ATOMIC_CHAR32_T_LOCK_FREE 2\000" -.LASF866: +.LASF868: .ascii "RCC_PLLCFGR_PLLQ_MASK (0b1111)\000" .LASF120: .ascii "__UINT_LEAST16_MAX__ 0xffff\000" @@ -4134,25 +4184,25 @@ tim4_start: .ascii "_STDINT_H \000" .LASF219: .ascii "__FLT64_MAX_10_EXP__ 308\000" -.LASF874: +.LASF877: .ascii "RCC_PLLCFGR_PLLN_MASK (0b111111111)\000" -.LASF957: +.LASF974: .ascii "src/timer.c\000" -.LASF924: +.LASF941: .ascii "RESERVED1\000" -.LASF927: +.LASF944: .ascii "RESERVED2\000" .LASF3: .ascii "__STDC_UTF_32__ 1\000" -.LASF933: +.LASF950: .ascii "RESERVED4\000" .LASF241: .ascii "__FLT32X_DENORM_MIN__ 4.9406564584124654e-324F32x\000" -.LASF938: +.LASF955: .ascii "RESERVED6\000" .LASF152: .ascii "__FLT_MAX_10_EXP__ 38\000" -.LASF883: +.LASF896: .ascii "RCC_CFGR_PPRE1_BIT 10\000" .LASF259: .ascii "__FRACT_MAX__ 0X7FFFP-15R\000" @@ -4166,8 +4216,10 @@ tim4_start: .ascii "_READ_WRITE_RETURN_TYPE int\000" .LASF772: .ascii "SCNoLEAST32 __SCN32LEAST(o)\000" -.LASF891: +.LASF904: .ascii "RCC_CFGR_SW_PLL (0b10)\000" +.LASF919: + .ascii "TIM_CR1_CEN_BIT 0\000" .LASF798: .ascii "SCNd64 __SCN64(d)\000" .LASF828: @@ -4186,33 +4238,36 @@ tim4_start: .ascii "__int_fast64_t_defined 1\000" .LASF838: .ascii "__PRIPTR(x) __STRINGIFY(x)\000" -.LASF915: +.LASF932: .ascii "uint16_t\000" .LASF417: .ascii "__thumb2__ 1\000" .LASF321: .ascii "__ULLACCUM_FBIT__ 32\000" -.LASF895: +.LASF910: .ascii "RCC_APB1ENR_PWREN_BIT 28\000" +.LASF913: + .ascii "RCC_APB1ENR_USART2EN_ENABLE (1 << RCC_APB1ENR_USART" + .ascii "2EN_BIT)\000" .LASF366: .ascii "__STRICT_ANSI__ 1\000" .LASF486: .ascii "_SYS_FEATURES_H \000" .LASF813: .ascii "SCNxLEAST64 __SCN64LEAST(x)\000" -.LASF930: +.LASF947: .ascii "RESERVED3\000" .LASF22: .ascii "__SIZEOF_LONG_DOUBLE__ 8\000" -.LASF936: +.LASF953: .ascii "RESERVED5\000" -.LASF945: +.LASF962: .ascii "CCMR1\000" -.LASF946: +.LASF963: .ascii "CCMR2\000" .LASF36: .ascii "__WCHAR_TYPE__ unsigned int\000" -.LASF899: +.LASF916: .ascii "TIMER_H_ \000" .LASF470: .ascii "_MB_LEN_MAX 8\000" @@ -4230,7 +4285,7 @@ tim4_start: .ascii "__need_wchar_t \000" .LASF66: .ascii "__UINT_FAST64_TYPE__ long long unsigned int\000" -.LASF889: +.LASF902: .ascii "RCC_CFGR_SWS_BIT 2\000" .LASF156: .ascii "__FLT_MIN__ 1.1754943508222875e-38F\000" @@ -4242,8 +4297,8 @@ tim4_start: .ascii "__FDPIC__\000" .LASF263: .ascii "__UFRACT_MIN__ 0.0UR\000" -.LASF689: - .ascii "PRIuLEAST8 __PRI8LEAST(u)\000" +.LASF516: + .ascii "signed +0\000" .LASF213: .ascii "__FLT32_IS_IEC_60559__ 2\000" .LASF630: @@ -4256,9 +4311,9 @@ tim4_start: .ascii "__SCN64(x) __INT64 __STRINGIFY(x)\000" .LASF647: .ascii "_GCC_WRAP_STDINT_H \000" -.LASF909: - .ascii "__uint16_t\000" .LASF926: + .ascii "__uint16_t\000" +.LASF943: .ascii "AHB2ENR\000" .LASF805: .ascii "PRIoLEAST64 __PRI64LEAST(o)\000" @@ -4272,7 +4327,7 @@ tim4_start: .ascii "__UINT8_MAX__ 0xff\000" .LASF575: .ascii "_UINTMAX_T_DECLARED \000" -.LASF942: +.LASF959: .ascii "timer\000" .LASF184: .ascii "__LDBL_MAX_EXP__ 1024\000" @@ -4284,6 +4339,8 @@ tim4_start: .ascii "__int8_t_defined 1\000" .LASF176: .ascii "__DBL_HAS_DENORM__ 1\000" +.LASF885: + .ascii "RCC_CFGR_MCO1_HSE (0b10)\000" .LASF625: .ascii "INTMAX_MAX (__INTMAX_MAX__)\000" .LASF602: @@ -4298,7 +4355,7 @@ tim4_start: .ascii "__FLT_DENORM_MIN__ 1.4012984643248171e-45F\000" .LASF534: .ascii "__LEAST8 \"hh\"\000" -.LASF885: +.LASF898: .ascii "RCC_CFGR_HPRE_DIV_NONE 0\000" .LASF540: .ascii "_END_STD_C \000" @@ -4310,13 +4367,13 @@ tim4_start: .ascii "PRIiLEAST16 __PRI16LEAST(i)\000" .LASF303: .ascii "__UACCUM_MIN__ 0.0UK\000" -.LASF870: +.LASF873: .ascii "RCC_PLLCFGR_PLLP_BIT 16\000" .LASF157: .ascii "__FLT_EPSILON__ 1.1920928955078125e-7F\000" .LASF770: .ascii "SCNdLEAST32 __SCN32LEAST(d)\000" -.LASF921: +.LASF938: .ascii "RESERVED0\000" .LASF807: .ascii "PRIxLEAST64 __PRI64LEAST(x)\000" @@ -4336,7 +4393,7 @@ tim4_start: .ascii "INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1)\000" .LASF376: .ascii "__GCC_ATOMIC_SHORT_LOCK_FREE 2\000" -.LASF863: +.LASF865: .ascii "RCC_CR_HSION_BIT 0\000" .LASF779: .ascii "PRIxFAST32 __PRI32FAST(x)\000" @@ -4352,7 +4409,9 @@ tim4_start: .ascii "__MISC_VISIBLE 0\000" .LASF306: .ascii "__LACCUM_FBIT__ 31\000" -.LASF937: +.LASF689: + .ascii "PRIuLEAST8 __PRI8LEAST(u)\000" +.LASF954: .ascii "BDCR\000" .LASF211: .ascii "__FLT32_HAS_QUIET_NAN__ 1\000" @@ -4386,7 +4445,7 @@ tim4_start: .ascii "__FP_FAST_FMAF 1\000" .LASF629: .ascii "SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)\000" -.LASF860: +.LASF862: .ascii "RCC_CR_HSEON_ON (1 << RCC_CR_HSEON_BIT)\000" .LASF565: .ascii "_INT16_T_DECLARED \000" @@ -4410,11 +4469,11 @@ tim4_start: .ascii "PRIdLEAST64 __PRI64LEAST(d)\000" .LASF255: .ascii "__USFRACT_EPSILON__ 0x1P-8UHR\000" -.LASF858: +.LASF860: .ascii "RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT)\000" .LASF763: .ascii "SCNx32 __SCN32(x)\000" -.LASF918: +.LASF935: .ascii "CFGR\000" .LASF558: .ascii "___int_least32_t_defined 1\000" @@ -4484,7 +4543,7 @@ tim4_start: .ascii "___int8_t_defined 1\000" .LASF248: .ascii "__SFRACT_MIN__ (-0.5HR-0.5HR)\000" -.LASF911: +.LASF928: .ascii "long unsigned int\000" .LASF349: .ascii "__SA_IBIT__ 16\000" @@ -4500,9 +4559,9 @@ tim4_start: .ascii "__ARM_FP16_FORMAT_IEEE\000" .LASF48: .ascii "__UINT16_TYPE__ short unsigned int\000" -.LASF868: +.LASF870: .ascii "RCC_PLLCFGR_PLLSRC_BIT 22\000" -.LASF944: +.LASF961: .ascii "DIER\000" .LASF657: .ascii "_WCHAR_T_DEFINED_ \000" @@ -4510,8 +4569,6 @@ tim4_start: .ascii "__FLT_EVAL_METHOD_TS_18661_3__ 0\000" .LASF522: .ascii "int +2\000" -.LASF958: - .ascii "/home/alex/code/own/c-compile-experiments\000" .LASF637: .ascii "INT8_C(x) __INT8_C(x)\000" .LASF63: @@ -4562,7 +4619,7 @@ tim4_start: .ascii "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 2\000" .LASF790: .ascii "__PRI64FAST(x) __FAST64 __STRINGIFY(x)\000" -.LASF892: +.LASF905: .ascii "RCC_CFGR_SW_BIT 0\000" .LASF168: .ascii "__DBL_MAX_EXP__ 1024\000" @@ -4608,11 +4665,11 @@ tim4_start: .ascii "PRIX32 __PRI32(X)\000" .LASF774: .ascii "SCNxLEAST32 __SCN32LEAST(x)\000" -.LASF954: +.LASF971: .ascii "tim4_start\000" .LASF704: .ascii "SCNiFAST8 __SCN8FAST(i)\000" -.LASF917: +.LASF934: .ascii "PLLCFGR\000" .LASF5: .ascii "__GNUC__ 12\000" @@ -4640,7 +4697,7 @@ tim4_start: .ascii "__ULACCUM_MIN__ 0.0ULK\000" .LASF462: .ascii "_ATEXIT_DYNAMIC_ALLOC 1\000" -.LASF910: +.LASF927: .ascii "__uint32_t\000" .LASF188: .ascii "__LDBL_MAX__ 1.7976931348623157e+308L\000" @@ -4650,7 +4707,7 @@ tim4_start: .ascii "__FLT_RADIX__ 2\000" .LASF455: .ascii "_INTTYPES_H \000" -.LASF912: +.LASF929: .ascii "long long int\000" .LASF401: .ascii "__ARM_FEATURE_CMSE\000" @@ -4670,7 +4727,7 @@ tim4_start: .ascii "WINT_MAX (__WINT_MAX__)\000" .LASF823: .ascii "SCNuFAST64 __SCN64FAST(u)\000" -.LASF939: +.LASF956: .ascii "SSCGR\000" .LASF137: .ascii "__UINT_FAST64_MAX__ 0xffffffffffffffffULL\000" @@ -4698,7 +4755,7 @@ tim4_start: .ascii "___int32_t_defined 1\000" .LASF83: .ascii "__INT_WIDTH__ 32\000" -.LASF923: +.LASF940: .ascii "APB2RSTR\000" .LASF409: .ascii "__ARM_ARCH_PROFILE\000" @@ -4750,15 +4807,17 @@ tim4_start: .ascii "__ARM_NEON_FP\000" .LASF280: .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" -.LASF935: +.LASF952: .ascii "APB2LPENR\000" +.LASF920: + .ascii "TIM_ENABLE (1 << TIM_CR1_CEN_BIT)\000" .LASF821: .ascii "SCNiFAST64 __SCN64FAST(i)\000" .LASF538: .ascii "_ANSIDECL_H_ \000" .LASF684: .ascii "SCNu8 __SCN8(u)\000" -.LASF900: +.LASF917: .ascii "TIM4_BASE_ADDR (0x40000800U)\000" .LASF261: .ascii "__UFRACT_FBIT__ 16\000" @@ -4778,9 +4837,9 @@ tim4_start: .ascii "L)\000" .LASF608: .ascii "INT64_MAX (__INT64_MAX__)\000" -.LASF914: +.LASF931: .ascii "unsigned int\000" -.LASF857: +.LASF859: .ascii "RCC_CR_HSERDY_BIT 17\000" .LASF460: .ascii "__NEWLIB_MINOR__ 3\000" @@ -4818,6 +4877,8 @@ tim4_start: .ascii "__INT_FAST8_WIDTH__ 32\000" .LASF2: .ascii "__STDC_UTF_16__ 1\000" +.LASF892: + .ascii "RCC_CFGR_MCO1PRE_BIT 24\000" .LASF402: .ascii "__ARM_FEATURE_LDREX\000" .LASF336: @@ -4850,13 +4911,13 @@ tim4_start: .ascii "__ARM_FEATURE_COPROC 15\000" .LASF484: .ascii "__OBSOLETE_MATH_DEFAULT 1\000" -.LASF864: +.LASF866: .ascii "RCC_CR_HSION_ON (1 << RCC_CR_HSION_BIT)\000" .LASF671: .ascii "__PRI8FAST(x) __FAST8 __STRINGIFY(x)\000" .LASF82: .ascii "__SHRT_WIDTH__ 16\000" -.LASF880: +.LASF883: .ascii "RCC_CFGR_PPRE_DIV_2 (0b100)\000" .LASF473: .ascii "_UNBUF_STREAM_OPT 1\000" @@ -4864,7 +4925,7 @@ tim4_start: .ascii "__STRINGIFY(a) #a\000" .LASF356: .ascii "__USA_FBIT__ 16\000" -.LASF934: +.LASF951: .ascii "APB1LPENR\000" .LASF480: .ascii "__IEEE_LITTLE_ENDIAN \000" @@ -4894,6 +4955,9 @@ tim4_start: .ascii "PRIuLEAST32 __PRI32LEAST(u)\000" .LASF407: .ascii "__ARM_SIZEOF_MINIMAL_ENUM 1\000" +.LASF872: + .ascii "RCC_PLLCFGR_PLLSRC_HSI (0 << RCC_PLLCFGR_PLLSRC_BIT" + .ascii ")\000" .LASF499: .ascii "_POINTER_INT long\000" .LASF238: @@ -4924,7 +4988,7 @@ tim4_start: .ascii "__SCN16FAST(x) __FAST16 __STRINGIFY(x)\000" .LASF537: .ascii "__LEAST64 \"ll\"\000" -.LASF862: +.LASF864: .ascii "RCC_CR_HSIRDY_READY (1 << RCC_CR_HSIRDY_BIT)\000" .LASF659: .ascii "_WCHAR_T_H \000" @@ -4946,6 +5010,8 @@ tim4_start: .ascii "_FSEEK_OPTIMIZATION 1\000" .LASF87: .ascii "__WINT_WIDTH__ 32\000" +.LASF857: + .ascii "RCC_CR_CSS_BIT 19\000" .LASF515: .ascii "long\000" .LASF65: @@ -4972,7 +5038,11 @@ tim4_start: .ascii "SCNx64 __SCN64(x)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" -.LASF884: +.LASF890: + .ascii "RCC_CFGR_MCO1PRE_DIV4 (0b110)\000" +.LASF912: + .ascii "RCC_APB1ENR_USART2EN_BIT 17\000" +.LASF897: .ascii "RCC_CFGR_PPRE1_MASK (0b111)\000" .LASF646: .ascii "UINTMAX_C(x) __UINTMAX_C(x)\000" @@ -4990,17 +5060,19 @@ tim4_start: .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1\000" .LASF734: .ascii "SCNuLEAST16 __SCN16LEAST(u)\000" -.LASF922: +.LASF939: .ascii "APB1RSTR\000" .LASF298: .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" .LASF393: .ascii "__ARM_FEATURE_CRYPTO\000" -.LASF928: +.LASF945: .ascii "APB1ENR\000" .LASF742: .ascii "SCNdFAST16 __SCN16FAST(d)\000" -.LASF867: +.LASF887: + .ascii "RCC_CFGR_MCO1_BIT 21\000" +.LASF869: .ascii "RCC_PLLCFGR_PLLQ(q) ((q & RCC_PLLCFGR_PLLQ_MASK) <<" .ascii " RCC_PLLCFGR_PLLQ_BIT)\000" .LASF788: @@ -5021,18 +5093,18 @@ tim4_start: .ascii "__NEWLIB_PATCHLEVEL__ 0\000" .LASF26: .ascii "__ORDER_LITTLE_ENDIAN__ 1234\000" -.LASF869: +.LASF871: .ascii "RCC_PLLCFGR_PLLSRC_HSE (1 << RCC_PLLCFGR_PLLSRC_BIT" .ascii ")\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF913: +.LASF930: .ascii "long long unsigned int\000" .LASF612: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" .LASF150: .ascii "__FLT_MIN_10_EXP__ (-37)\000" -.LASF890: +.LASF903: .ascii "RCC_CFGR_SWS_MASK (0b11)\000" .LASF312: .ascii "__ULACCUM_IBIT__ 32\000" @@ -5066,14 +5138,14 @@ tim4_start: .ascii "__SACCUM_MIN__ (-0X1P7HK-0X1P7HK)\000" .LASF274: .ascii "__ULFRACT_MAX__ 0XFFFFFFFFP-32ULR\000" -.LASF875: +.LASF878: .ascii "RCC_PLLCFGR_PLLN(n) ((n & RCC_PLLCFGR_PLLN_MASK) <<" .ascii " RCC_PLLCFGR_PLLN_BIT)\000" .LASF56: .ascii "__UINT_LEAST16_TYPE__ short unsigned int\000" .LASF574: .ascii "_INTMAX_T_DECLARED \000" -.LASF947: +.LASF964: .ascii "CCER\000" .LASF40: .ascii "__CHAR16_TYPE__ short unsigned int\000" @@ -5119,6 +5191,8 @@ tim4_start: .ascii "SIZE_MAX (__SIZE_MAX__)\000" .LASF333: .ascii "__DQ_IBIT__ 0\000" +.LASF893: + .ascii "RCC_CFGR_MCO1PRE_MASK (0b111)\000" .LASF450: .ascii "__ARM_BF16_FORMAT_ALTERNATIVE\000" .LASF45: @@ -5129,7 +5203,7 @@ tim4_start: .ascii "__int20__ +2\000" .LASF655: .ascii "_WCHAR_T_ \000" -.LASF943: +.LASF960: .ascii "SMCR\000" .LASF829: .ascii "PRIoMAX __PRIMAX(o)\000" @@ -5137,6 +5211,8 @@ tim4_start: .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" .LASF744: .ascii "SCNoFAST16 __SCN16FAST(o)\000" +.LASF908: + .ascii "RCC_AHB1ENR_GPIOAEN_BIT 0\000" .LASF345: .ascii "__UTQ_IBIT__ 0\000" .LASF348: @@ -5199,7 +5275,7 @@ tim4_start: .ascii "__ARM_ARCH_7EM__ 1\000" .LASF428: .ascii "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC\000" -.LASF925: +.LASF942: .ascii "AHB1ENR\000" .LASF295: .ascii "__USACCUM_EPSILON__ 0x1P-8UHK\000" @@ -5239,11 +5315,11 @@ tim4_start: .ascii "__DBL_DIG__ 15\000" .LASF275: .ascii "__ULFRACT_EPSILON__ 0x1P-32ULR\000" -.LASF920: +.LASF937: .ascii "AHB2RSTR\000" .LASF672: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" -.LASF882: +.LASF895: .ascii "RCC_CFGR_PPRE2_MASK (0b111)\000" .LASF23: .ascii "__SIZEOF_SIZE_T__ 4\000" @@ -5269,22 +5345,22 @@ tim4_start: .ascii "unsigned\000" .LASF381: .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" -.LASF906: +.LASF923: .ascii "short int\000" .LASF836: .ascii "SCNuMAX __SCNMAX(u)\000" .LASF121: .ascii "__UINT16_C(c) c\000" -.LASF903: - .ascii "TIM4_ENABLE (1 << TIM4_CR_CEN_BIT)\000" .LASF359: .ascii "__UDA_IBIT__ 32\000" .LASF535: .ascii "__LEAST16 \"h\"\000" -.LASF877: +.LASF880: .ascii "RCC_PLLCFGR_PLLM_MASK (0b111111)\000" .LASF587: .ascii "INTPTR_MAX (__INTPTR_MAX__)\000" +.LASF884: + .ascii "RCC_CFGR_MCO1_HSI (0b00)\000" .LASF711: .ascii "__SCN16(x) __INT16 __STRINGIFY(x)\000" .LASF607: @@ -5297,12 +5373,15 @@ tim4_start: .ascii "__ARM_FEATURE_COPROC\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" -.LASF901: +.LASF918: .ascii "TIM4 ((struct timer *) TIM4_BASE_ADDR)\000" .LASF95: .ascii "__SIG_ATOMIC_MAX__ 0x7fffffff\000" .LASF609: .ascii "UINT64_MAX (__UINT64_MAX__)\000" +.LASF909: + .ascii "RCC_AHB1ENR_GPIOAEN_ENABLE (1 << RCC_AHB1ENR_GPIOAE" + .ascii "N_BIT)\000" .LASF472: .ascii "_RETARGETABLE_LOCKING 1\000" .LASF453: @@ -5327,7 +5406,7 @@ tim4_start: .ascii "__INT16_MAX__ 0x7fff\000" .LASF479: .ascii "__SYS_CONFIG_H__ \000" -.LASF876: +.LASF879: .ascii "RCC_PLLCFGR_PLLM_BIT 0\000" .LASF8: .ascii "__VERSION__ \"12.3.1 20230626\"\000" @@ -5363,7 +5442,7 @@ tim4_start: .ascii "PRIdMAX __PRIMAX(d)\000" .LASF388: .ascii "__SIZEOF_WINT_T__ 4\000" -.LASF881: +.LASF894: .ascii "RCC_CFGR_PPRE2_BIT 13\000" .LASF783: .ascii "SCNoFAST32 __SCN32FAST(o)\000" @@ -5375,6 +5454,9 @@ tim4_start: .ascii "__LDBL_DECIMAL_DIG__ 17\000" .LASF702: .ascii "PRIXFAST8 __PRI8FAST(X)\000" +.LASF907: + .ascii "RCC_CFGR_SW(clock) ((clock & RCC_CFGR_SW_MASK) << R" + .ascii "CC_CFGR_SW_BIT)\000" .LASF308: .ascii "__LACCUM_MIN__ (-0X1P31LK-0X1P31LK)\000" .LASF785: @@ -5415,13 +5497,13 @@ tim4_start: .ascii "__ULLFRACT_MIN__ 0.0ULLR\000" .LASF652: .ascii "_T_WCHAR_ \000" -.LASF952: +.LASF969: .ascii "BDTR\000" .LASF382: .ascii "__GCC_CONSTRUCTIVE_SIZE 64\000" .LASF665: .ascii "_BSD_WCHAR_T_\000" -.LASF940: +.LASF957: .ascii "PLLI2SCFGR\000" .LASF277: .ascii "__LLFRACT_IBIT__ 0\000" @@ -5429,11 +5511,11 @@ tim4_start: .ascii "UINT16_C(x) __UINT16_C(x)\000" .LASF757: .ascii "PRIx32 __PRI32(x)\000" -.LASF955: +.LASF972: .ascii "tim4_init\000" -.LASF916: +.LASF933: .ascii "uint32_t\000" -.LASF873: +.LASF876: .ascii "RCC_PLLCFGR_PLLN_BIT 6\000" .LASF690: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" @@ -5465,9 +5547,11 @@ tim4_start: .ascii "__ULACCUM_EPSILON__ 0x1P-32ULK\000" .LASF181: .ascii "__LDBL_DIG__ 15\000" +.LASF889: + .ascii "RCC_CFGR_MCO1PRE_DIV5 (0b111)\000" .LASF89: .ascii "__SIZE_WIDTH__ 32\000" -.LASF871: +.LASF874: .ascii "RCC_PLLCFGR_PLLP_MASK (0b11)\000" .LASF481: .ascii "_SUPPORTS_ERREXCEPT \000" @@ -5475,7 +5559,7 @@ tim4_start: .ascii "__FLT64_DIG__ 15\000" .LASF525: .ascii "_INT32_EQ_LONG \000" -.LASF879: +.LASF882: .ascii "RCC_CFGR_PPRE_DIV_NONE 0\000" .LASF77: .ascii "__WINT_MAX__ 0xffffffffU\000" @@ -5491,7 +5575,7 @@ tim4_start: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF907: +.LASF924: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -5507,7 +5591,7 @@ tim4_start: .ascii "__HQ_FBIT__ 15\000" .LASF799: .ascii "SCNi64 __SCN64(i)\000" -.LASF861: +.LASF863: .ascii "RCC_CR_HSIRDY_BIT 1\000" .LASF80: .ascii "__SIZE_MAX__ 0xffffffffU\000" @@ -5515,6 +5599,8 @@ tim4_start: .ascii "__FLT32X_HAS_INFINITY__ 1\000" .LASF819: .ascii "PRIXFAST64 __PRI64FAST(X)\000" +.LASF858: + .ascii "RCC_CR_CSS_ON (1 << RCC_CR_CSS_BIT)\000" .LASF412: .ascii "__ARM_ARCH\000" .LASF591: @@ -5531,7 +5617,7 @@ tim4_start: .ascii "SCNuFAST32 __SCN32FAST(u)\000" .LASF523: .ascii "long +4\000" -.LASF919: +.LASF936: .ascii "AHB1RSTR\000" .LASF724: .ascii "SCNx16 __SCN16(x)\000" @@ -5541,6 +5627,8 @@ tim4_start: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF340: .ascii "__USQ_FBIT__ 32\000" +.LASF975: + .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF797: .ascii "PRIX64 __PRI64(X)\000" .LASF249: @@ -5591,7 +5679,7 @@ tim4_start: .ascii "__DBL_MANT_DIG__ 53\000" .LASF272: .ascii "__ULFRACT_IBIT__ 0\000" -.LASF887: +.LASF900: .ascii "RCC_CFGR_HPRE_MASK (0b1111)\000" .LASF72: .ascii "__INT_MAX__ 0x7fffffff\000" diff --git a/build/timer.i b/build/timer.i index 74f1085..29362fe 100644 --- a/build/timer.i +++ b/build/timer.i @@ -1,5 +1,5 @@ # 0 "src/timer.c" -# 1 "/home/alex/code/own/c-compile-experiments//" +# 1 "/home/alex/code/own/stm32-falling-sand//" # 0 "" #define __STDC__ 1 # 0 "" @@ -2014,6 +2014,11 @@ struct rcc { #define RCC_CR_PLLON_ON (1 << RCC_CR_PLLON_BIT) +#define RCC_CR_CSS_BIT 19 +#define RCC_CR_CSS_ON (1 << RCC_CR_CSS_BIT) + + + #define RCC_CR_HSERDY_BIT 17 #define RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT) @@ -2036,6 +2041,7 @@ struct rcc { #define RCC_PLLCFGR_PLLSRC_BIT 22 #define RCC_PLLCFGR_PLLSRC_HSE (1 << RCC_PLLCFGR_PLLSRC_BIT) +#define RCC_PLLCFGR_PLLSRC_HSI (0 << RCC_PLLCFGR_PLLSRC_BIT) #define RCC_PLLCFGR_PLLP_BIT 16 #define RCC_PLLCFGR_PLLP_MASK (0b11) @@ -2055,6 +2061,21 @@ struct rcc { #define RCC_CFGR_PPRE_DIV_2 (0b100) +#define RCC_CFGR_MCO1_HSI (0b00) +#define RCC_CFGR_MCO1_HSE (0b10) +#define RCC_CFGR_MCO1_PLL (0b11) + +#define RCC_CFGR_MCO1_BIT 21 +#define RCC_CFGR_MCO1_MASK (0b11) + +#define RCC_CFGR_MCO1PRE_DIV5 (0b111) +#define RCC_CFGR_MCO1PRE_DIV4 (0b110) +#define RCC_CFGR_MCO1PRE_DIV2 (0b100) + +#define RCC_CFGR_MCO1PRE_BIT 24 +#define RCC_CFGR_MCO1PRE_MASK (0b111) + + #define RCC_CFGR_PPRE2_BIT 13 #define RCC_CFGR_PPRE2_MASK (0b111) @@ -2082,9 +2103,17 @@ struct rcc { #define RCC_CFGR_SW(clock) ((clock & RCC_CFGR_SW_MASK) << RCC_CFGR_SW_BIT) + +#define RCC_AHB1ENR_GPIOAEN_BIT 0 +#define RCC_AHB1ENR_GPIOAEN_ENABLE (1 << RCC_AHB1ENR_GPIOAEN_BIT) + + #define RCC_APB1ENR_PWREN_BIT 28 #define RCC_APB1ENR_PWREN_CLOCK_ENABLE (1 << RCC_APB1ENR_PWREN_BIT) +#define RCC_APB1ENR_USART2EN_BIT 17 +#define RCC_APB1ENR_USART2EN_ENABLE (1 << RCC_APB1ENR_USART2EN_BIT) + #define RCC_APB1ENR_TIM4_BIT 2 #define RCC_APB1ENR_TIM4_ENABLE (1 << RCC_APB1ENR_TIM4_BIT) # 2 "src/timer.c" 2 @@ -2120,8 +2149,8 @@ struct timer { #define TIM4_BASE_ADDR (0x40000800U) #define TIM4 ((struct timer *) TIM4_BASE_ADDR) -#define TIM4_CR_CEN_BIT 0 -#define TIM4_ENABLE (1 << TIM4_CR_CEN_BIT) +#define TIM_CR1_CEN_BIT 0 +#define TIM_ENABLE (1 << TIM_CR1_CEN_BIT) void tim4_init(void); void tim4_start(void); @@ -2137,7 +2166,7 @@ void tim4_init(void) { - ((struct timer *) (0x40000800U))->PSC = (uint16_t) 48000 - 1; + ((struct timer *) (0x40000800U))->PSC = (uint16_t) 96000 - 1; ((struct timer *) (0x40000800U))->ARR = (uint16_t) 0xFFFF; diff --git a/build/timer.o b/build/timer.o index e731214da19a61f4d65ab74f6402af0d8b146ae2..4b585925c69e6de16bec1aae12f097efc290841c 100644 GIT binary patch delta 7939 zcmX?dhv~*6rU?p6JC;pUy20Z9>3`D1f8O;IIT#pZIm8(lRHGOeco%Og?$_(5zHMiFra1{ML38V$xpo(v2uf*^4N#snD#1{R?O z^$ZLQCX8|*MZzFO7L2Pw28neo1_l;s5IcoY7i5kMNKFRgLj`LF1{PV6 zL;;g?a1aBF9Ee@QSOzjk9;B#(@wh$%1B(Jkyn%6B2m=F)B8c6>$UE7XS&{L@`e#8j*!WEEMoEuTnr4XU|;z#u-WJ`Fo=LskOBh(1LGVv zhS1H)ECP)6UjrE!SQ$ceK;#uO5UC*!A`8Ld>AE2Ha}N+{E(Ri113;vZABbd-0FetF zKxDNxi1dpFkr_-N^1KU(+-VCU?+Js*7hrKUR}lM{6^L}K7XeWsAU`uO`heKMU`MR6 z2C=_`ja~@y2g6Hdkcho8h}>fiA}!2h<0!tGT^F zBJyBzvn+_c3LGkeV9j&DmKjEZ#Gl%L$bN9Zu44ePmBG&X$p~W40h6;MKowqdrw@SfuWw2AzL3L)E5OJmB5a8#|>gH4Fi#!V51ddL2P5N#S6i~z6cy03&82% zup&ry5;$c%R|B!1`-4bHO%S;roVE_gfY{d{Ca8eeDIl_*;U9=%m3vd#X0m}yPg0!syC!e$6kW&PUC>Vgm zeK|m+Avk%iR0pw>z~)DS(@-GTGdJ}>;+w$fMzkI*9d8N}+UN)(Pl1hY06W556eO|_ zoC!U_vii~>kyBvbJOzi-6mXbr0{ha}5+v)T1S0#~L1ZL2!27@{=@dAO`@xAf0&M+% zCUE+X0LRu*ut7;CAZ@AwAkq_T=q<2_1K6@8aD1NtXQ#Fx z!0~+utk(pbFd4uBz6|X9G;sFb-~&$oQ^4`j1WqQ8?LZc5fa5X<9K5RFG=B{o-)dml z3UDAl1{WX&LLl|W!P)6C*!ncEU!Q}0ISC>HE;IgsO*jX3gfuuuJW~Lte=D$Y8^Hl9 z22Ry4!M<4y&IP^TxUU1p?rCtc@(1ULWU#+g!KvgVSauaS{nvs0`VSnT9N_F%24)`v zC%tlTqUHprwmeWmu4kAEE|p%Wg8XqAoMgDcf&Ud;5KRO7G8k+@H(1;SoHAyC<8KSt zA0c4zL*Q7S0QSHIaDGV!n-&MQG8~+D8o?ng0S=oMa0J!MgMB{>oHE~mliLKaOLf2o ztpQv151e}K!Esp(PDGQyp%nD ze-E$*ad0^(0Zw9xk|0;BgZ=jfY_vPr)!|@Y7J(DmPjLQD1BYBAI7Y96q6kf zcoi%%8JxtHfXfC>up=D6Mjrv^Z+CEB&;$GU4Y=Z|0atHf;3$p-70>ky>fl5t4)$vx zI5qf!Lt-yj{0G=ir@`Uz1#Fx?I5jK;8>9`6GJbGsr~oIlzu*+^3l7EoVD*2%tpRIr zeEWeT!UXJrQgHOui-KIi&gXQ41 zf&*CgCl5%R(*T_QuZDs+Z^7>Jum-Ue%|T?XCy2}w29fFD5+VWY6jvdT$ZQ!9IT4&i zmw}@o3+!|oa9EmxE$#rPm;yyma$XJ&xu#$S1~vv?a6KYv!Qjup#&FFCB=jZ*M3&2g z$ZgCZa-$}Q{0dIP_F(@xfvX%He^9rFg_Y@t2dI0)#>)2+)Qu5fXJx-MSyw=u>5u

    GX2eT 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 Y^1ZccOesy1+19DC?pVse@E;@x08|xjasU7T delta 7257 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 diff --git a/build/usart.S b/build/usart.S new file mode 100644 index 0000000..0d75761 --- /dev/null +++ b/build/usart.S @@ -0,0 +1,6341 @@ + .cpu cortex-m4 + .arch armv7e-m + .fpu fpv4-sp-d16 + .eabi_attribute 27, 1 + .eabi_attribute 28, 1 + .eabi_attribute 20, 1 + .eabi_attribute 21, 1 + .eabi_attribute 23, 3 + .eabi_attribute 24, 1 + .eabi_attribute 25, 1 + .eabi_attribute 26, 1 + .eabi_attribute 30, 6 + .eabi_attribute 34, 1 + .eabi_attribute 18, 4 + .file "usart.c" + .text +.Ltext0: + .cfi_sections .debug_frame + .file 1 "src/usart.c" + .section .text.usart2_init,"ax",%progbits + .align 1 + .global usart2_init + .syntax unified + .thumb + .thumb_func + .type usart2_init, %function +usart2_init: +.LFB0: + .loc 1 5 24 + .cfi_startproc + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 1, uses_anonymous_args = 0 + push {r7, lr} + .cfi_def_cfa_offset 8 + .cfi_offset 7, -8 + .cfi_offset 14, -4 + sub sp, sp, #8 + .cfi_def_cfa_offset 16 + add r7, sp, #0 + .cfi_def_cfa_register 7 + .loc 1 7 33 + ldr r3, .L2 + ldr r3, [r3, #48] + ldr r2, .L2 + .loc 1 7 43 + orr r3, r3, #1 + str r3, [r2, #48] + .loc 1 11 12 + movs r3, #2 + strh r3, [r7, #6] @ movhi + .loc 1 12 3 + ldrh r3, [r7, #6] + movs r1, #2 + mov r0, r3 + bl gpio_set_mode + .loc 1 13 3 + ldrh r3, [r7, #6] + movs r1, #7 + mov r0, r3 + bl gpio_set_af + .loc 1 15 12 + movs r3, #3 + strh r3, [r7, #4] @ movhi + .loc 1 16 3 + ldrh r3, [r7, #4] + movs r1, #2 + mov r0, r3 + bl gpio_set_mode + .loc 1 17 3 + ldrh r3, [r7, #4] + movs r1, #7 + mov r0, r3 + bl gpio_set_af + .loc 1 20 12 + movs r3, #8 + strh r3, [r7, #2] @ movhi + .loc 1 21 3 + ldrh r3, [r7, #2] + movs r1, #2 + mov r0, r3 + bl gpio_set_mode + .loc 1 22 3 + ldrh r3, [r7, #2] + movs r1, #0 + mov r0, r3 + bl gpio_set_af + .loc 1 24 33 + ldr r3, .L2 + ldr r3, [r3, #8] + ldr r2, .L2 + .loc 1 24 40 + bic r3, r3, #6291456 + str r3, [r2, #8] + .loc 1 26 33 + ldr r3, .L2 + ldr r3, [r3, #8] + ldr r2, .L2 + .loc 1 26 40 + orr r3, r3, #6291456 + str r3, [r2, #8] + .loc 1 27 33 + ldr r3, .L2 + ldr r3, [r3, #8] + ldr r2, .L2 + .loc 1 27 40 + bic r3, r3, #117440512 + str r3, [r2, #8] + .loc 1 28 33 + ldr r3, .L2 + ldr r3, [r3, #8] + ldr r2, .L2 + .loc 1 28 40 + orr r3, r3, #100663296 + str r3, [r2, #8] + .loc 1 31 33 + ldr r3, .L2 + ldr r3, [r3, #64] + ldr r2, .L2 + .loc 1 31 43 + orr r3, r3, #131072 + str r3, [r2, #64] + .loc 1 34 35 + ldr r3, .L2+4 + .loc 1 34 41 + movs r2, #0 + str r2, [r3, #12] + .loc 1 35 35 + ldr r3, .L2+4 + .loc 1 35 41 + movs r2, #0 + str r2, [r3, #16] + .loc 1 36 35 + ldr r3, .L2+4 + .loc 1 36 41 + movs r2, #0 + str r2, [r3, #20] + .loc 1 54 35 + ldr r3, .L2+4 + ldr r3, [r3, #8] + ldr r2, .L2+4 + .loc 1 54 41 + bic r3, r3, #65280 + bic r3, r3, #240 + str r3, [r2, #8] + .loc 1 55 35 + ldr r3, .L2+4 + ldr r3, [r3, #8] + ldr r2, .L2+4 + .loc 1 55 41 + orr r3, r3, #416 + str r3, [r2, #8] + .loc 1 56 35 + ldr r3, .L2+4 + ldr r3, [r3, #8] + ldr r2, .L2+4 + .loc 1 56 41 + bic r3, r3, #7 + str r3, [r2, #8] + .loc 1 57 35 + ldr r3, .L2+4 + ldr r2, .L2+4 + ldr r3, [r3, #8] + .loc 1 57 41 + str r3, [r2, #8] + .loc 1 60 35 + ldr r3, .L2+4 + ldr r3, [r3, #12] + ldr r2, .L2+4 + .loc 1 60 41 + orr r3, r3, #8 + str r3, [r2, #12] + .loc 1 61 35 + ldr r3, .L2+4 + ldr r3, [r3, #12] + ldr r2, .L2+4 + .loc 1 61 41 + orr r3, r3, #4 + str r3, [r2, #12] + .loc 1 62 1 + nop + adds r7, r7, #8 + .cfi_def_cfa_offset 8 + mov sp, r7 + .cfi_def_cfa_register 13 + @ sp needed + pop {r7, pc} +.L3: + .align 2 +.L2: + .word 1073887232 + .word 1073759232 + .cfi_endproc +.LFE0: + .size usart2_init, .-usart2_init + .section .text.usart2_start,"ax",%progbits + .align 1 + .global usart2_start + .syntax unified + .thumb + .thumb_func + .type usart2_start, %function +usart2_start: +.LFB1: + .loc 1 64 25 + .cfi_startproc + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + @ link register save eliminated. + push {r7} + .cfi_def_cfa_offset 4 + .cfi_offset 7, -4 + add r7, sp, #0 + .cfi_def_cfa_register 7 + .loc 1 65 35 + ldr r3, .L5 + ldr r3, [r3, #12] + ldr r2, .L5 + .loc 1 65 41 + orr r3, r3, #8192 + str r3, [r2, #12] + .loc 1 66 1 + nop + mov sp, r7 + .cfi_def_cfa_register 13 + @ sp needed + ldr r7, [sp], #4 + .cfi_restore 7 + .cfi_def_cfa_offset 0 + bx lr +.L6: + .align 2 +.L5: + .word 1073759232 + .cfi_endproc +.LFE1: + .size usart2_start, .-usart2_start + .section .text.usart2_write_byte,"ax",%progbits + .align 1 + .global usart2_write_byte + .syntax unified + .thumb + .thumb_func + .type usart2_write_byte, %function +usart2_write_byte: +.LFB2: + .loc 1 68 35 + .cfi_startproc + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 1, uses_anonymous_args = 0 + @ link register save eliminated. + push {r7} + .cfi_def_cfa_offset 4 + .cfi_offset 7, -4 + sub sp, sp, #12 + .cfi_def_cfa_offset 16 + add r7, sp, #0 + .cfi_def_cfa_register 7 + mov r3, r0 + strb r3, [r7, #7] + .loc 1 70 35 + ldr r2, .L9 + .loc 1 70 40 + ldrb r3, [r7, #7] @ zero_extendqisi2 + str r3, [r2, #4] + .loc 1 74 9 + nop +.L8: + .loc 1 74 44 discriminator 1 + ldr r3, .L9 + ldr r3, [r3] + .loc 1 74 49 discriminator 1 + and r3, r3, #64 + .loc 1 74 10 discriminator 1 + cmp r3, #0 + beq .L8 + .loc 1 75 1 + nop + nop + adds r7, r7, #12 + .cfi_def_cfa_offset 4 + mov sp, r7 + .cfi_def_cfa_register 13 + @ sp needed + ldr r7, [sp], #4 + .cfi_restore 7 + .cfi_def_cfa_offset 0 + bx lr +.L10: + .align 2 +.L9: + .word 1073759232 + .cfi_endproc +.LFE2: + .size usart2_write_byte, .-usart2_write_byte + .section .text.usart2_write,"ax",%progbits + .align 1 + .global usart2_write + .syntax unified + .thumb + .thumb_func + .type usart2_write, %function +usart2_write: +.LFB3: + .loc 1 77 30 + .cfi_startproc + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 1, uses_anonymous_args = 0 + push {r7, lr} + .cfi_def_cfa_offset 8 + .cfi_offset 7, -8 + .cfi_offset 14, -4 + sub sp, sp, #8 + .cfi_def_cfa_offset 16 + add r7, sp, #0 + .cfi_def_cfa_register 7 + str r0, [r7, #4] + .loc 1 78 9 + b .L12 +.L13: + .loc 1 78 38 discriminator 2 + ldr r3, [r7, #4] + adds r2, r3, #1 + str r2, [r7, #4] + .loc 1 78 16 discriminator 2 + ldrb r3, [r3] @ zero_extendqisi2 + mov r0, r3 + bl usart2_write_byte +.L12: + .loc 1 78 10 discriminator 1 + ldr r3, [r7, #4] + ldrb r3, [r3] @ zero_extendqisi2 + cmp r3, #0 + bne .L13 + .loc 1 79 1 + nop + nop + adds r7, r7, #8 + .cfi_def_cfa_offset 8 + mov sp, r7 + .cfi_def_cfa_register 13 + @ sp needed + pop {r7, pc} + .cfi_endproc +.LFE3: + .size usart2_write, .-usart2_write + .text +.Letext0: + .file 2 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" + .file 3 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_stdint.h" + .file 4 "src/rcc.h" + .file 5 "src/gpio.h" + .file 6 "src/usart.h" + .section .debug_info,"",%progbits +.Ldebug_info0: + .4byte 0x38a + .2byte 0x5 + .byte 0x1 + .byte 0x4 + .4byte .Ldebug_abbrev0 + .uleb128 0xb + .4byte .LASF1005 + .byte 0x1d + .4byte .LASF1006 + .4byte .LASF1007 + .4byte .LLRL0 + .4byte 0 + .4byte .Ldebug_line0 + .4byte .Ldebug_macro0 + .uleb128 0x2 + .byte 0x1 + .byte 0x6 + .4byte .LASF951 + .uleb128 0x4 + .4byte .LASF954 + .byte 0x2 + .byte 0x2b + .byte 0x17 + .4byte 0x3d + .uleb128 0x2 + .byte 0x1 + .byte 0x8 + .4byte .LASF952 + .uleb128 0x2 + .byte 0x2 + .byte 0x5 + .4byte .LASF953 + .uleb128 0x4 + .4byte .LASF955 + .byte 0x2 + .byte 0x39 + .byte 0x1c + .4byte 0x57 + .uleb128 0x2 + .byte 0x2 + .byte 0x7 + .4byte .LASF956 + .uleb128 0x2 + .byte 0x4 + .byte 0x5 + .4byte .LASF957 + .uleb128 0x4 + .4byte .LASF958 + .byte 0x2 + .byte 0x4f + .byte 0x1b + .4byte 0x71 + .uleb128 0x2 + .byte 0x4 + .byte 0x7 + .4byte .LASF959 + .uleb128 0x2 + .byte 0x8 + .byte 0x5 + .4byte .LASF960 + .uleb128 0x2 + .byte 0x8 + .byte 0x7 + .4byte .LASF961 + .uleb128 0xc + .byte 0x4 + .byte 0x5 + .ascii "int\000" + .uleb128 0x2 + .byte 0x4 + .byte 0x7 + .4byte .LASF962 + .uleb128 0x4 + .4byte .LASF963 + .byte 0x3 + .byte 0x18 + .byte 0x13 + .4byte 0x31 + .uleb128 0x4 + .4byte .LASF964 + .byte 0x3 + .byte 0x24 + .byte 0x14 + .4byte 0x4b + .uleb128 0x4 + .4byte .LASF965 + .byte 0x3 + .byte 0x30 + .byte 0x14 + .4byte 0x65 + .uleb128 0x8 + .4byte 0xac + .uleb128 0xd + .ascii "rcc\000" + .byte 0x8c + .byte 0x4 + .byte 0x6 + .byte 0x8 + .4byte 0x21a + .uleb128 0x3 + .ascii "CR\000" + .byte 0x4 + .byte 0x7 + .4byte 0xb8 + .byte 0 + .uleb128 0x1 + .4byte .LASF966 + .byte 0x4 + .byte 0x8 + .4byte 0xb8 + .byte 0x4 + .uleb128 0x1 + .4byte .LASF967 + .byte 0x4 + .byte 0x9 + .4byte 0xb8 + .byte 0x8 + .uleb128 0x3 + .ascii "CIR\000" + .byte 0x4 + .byte 0xa + .4byte 0xb8 + .byte 0xc + .uleb128 0x1 + .4byte .LASF968 + .byte 0x4 + .byte 0xb + .4byte 0xb8 + .byte 0x10 + .uleb128 0x1 + .4byte .LASF969 + .byte 0x4 + .byte 0xc + .4byte 0xb8 + .byte 0x14 + .uleb128 0x1 + .4byte .LASF970 + .byte 0x4 + .byte 0xd + .4byte 0x22a + .byte 0x18 + .uleb128 0x1 + .4byte .LASF971 + .byte 0x4 + .byte 0xe + .4byte 0xb8 + .byte 0x20 + .uleb128 0x1 + .4byte .LASF972 + .byte 0x4 + .byte 0xf + .4byte 0xb8 + .byte 0x24 + .uleb128 0x1 + .4byte .LASF973 + .byte 0x4 + .byte 0x10 + .4byte 0x22a + .byte 0x28 + .uleb128 0x1 + .4byte .LASF974 + .byte 0x4 + .byte 0x11 + .4byte 0xb8 + .byte 0x30 + .uleb128 0x1 + .4byte .LASF975 + .byte 0x4 + .byte 0x12 + .4byte 0xb8 + .byte 0x34 + .uleb128 0x1 + .4byte .LASF976 + .byte 0x4 + .byte 0x13 + .4byte 0x22a + .byte 0x38 + .uleb128 0x1 + .4byte .LASF977 + .byte 0x4 + .byte 0x14 + .4byte 0xb8 + .byte 0x40 + .uleb128 0x1 + .4byte .LASF978 + .byte 0x4 + .byte 0x15 + .4byte 0xb8 + .byte 0x44 + .uleb128 0x1 + .4byte .LASF979 + .byte 0x4 + .byte 0x16 + .4byte 0x22a + .byte 0x48 + .uleb128 0x1 + .4byte .LASF980 + .byte 0x4 + .byte 0x17 + .4byte 0xb8 + .byte 0x50 + .uleb128 0x1 + .4byte .LASF981 + .byte 0x4 + .byte 0x18 + .4byte 0xb8 + .byte 0x54 + .uleb128 0x1 + .4byte .LASF982 + .byte 0x4 + .byte 0x19 + .4byte 0x22a + .byte 0x58 + .uleb128 0x1 + .4byte .LASF983 + .byte 0x4 + .byte 0x1a + .4byte 0xb8 + .byte 0x60 + .uleb128 0x1 + .4byte .LASF984 + .byte 0x4 + .byte 0x1b + .4byte 0xb8 + .byte 0x64 + .uleb128 0x1 + .4byte .LASF985 + .byte 0x4 + .byte 0x1c + .4byte 0x22a + .byte 0x68 + .uleb128 0x1 + .4byte .LASF986 + .byte 0x4 + .byte 0x1d + .4byte 0xb8 + .byte 0x70 + .uleb128 0x3 + .ascii "CSR\000" + .byte 0x4 + .byte 0x1e + .4byte 0xb8 + .byte 0x74 + .uleb128 0x1 + .4byte .LASF987 + .byte 0x4 + .byte 0x1f + .4byte 0x22a + .byte 0x78 + .uleb128 0x1 + .4byte .LASF988 + .byte 0x4 + .byte 0x20 + .4byte 0xb8 + .byte 0x80 + .uleb128 0x1 + .4byte .LASF989 + .byte 0x4 + .byte 0x21 + .4byte 0xb8 + .byte 0x84 + .uleb128 0x1 + .4byte .LASF990 + .byte 0x4 + .byte 0x22 + .4byte 0xb8 + .byte 0x88 + .byte 0 + .uleb128 0xe + .4byte 0xb8 + .4byte 0x22a + .uleb128 0xf + .4byte 0x8d + .byte 0x1 + .byte 0 + .uleb128 0x8 + .4byte 0x21a + .uleb128 0x10 + .byte 0x7 + .byte 0x1 + .4byte 0x3d + .byte 0x5 + .byte 0x26 + .byte 0xe + .4byte 0x256 + .uleb128 0x5 + .4byte .LASF991 + .byte 0 + .uleb128 0x5 + .4byte .LASF992 + .byte 0x1 + .uleb128 0x5 + .4byte .LASF993 + .byte 0x2 + .uleb128 0x5 + .4byte .LASF994 + .byte 0x3 + .byte 0 + .uleb128 0x4 + .4byte .LASF995 + .byte 0x5 + .byte 0x2b + .byte 0x3 + .4byte 0x22f + .uleb128 0x11 + .4byte .LASF996 + .byte 0x1c + .byte 0x6 + .byte 0x6 + .byte 0x8 + .4byte 0x2c2 + .uleb128 0x3 + .ascii "SR\000" + .byte 0x6 + .byte 0x7 + .4byte 0xb8 + .byte 0 + .uleb128 0x3 + .ascii "DR\000" + .byte 0x6 + .byte 0x8 + .4byte 0xb8 + .byte 0x4 + .uleb128 0x3 + .ascii "BRR\000" + .byte 0x6 + .byte 0x9 + .4byte 0xb8 + .byte 0x8 + .uleb128 0x3 + .ascii "CR1\000" + .byte 0x6 + .byte 0xa + .4byte 0xb8 + .byte 0xc + .uleb128 0x3 + .ascii "CR2\000" + .byte 0x6 + .byte 0xb + .4byte 0xb8 + .byte 0x10 + .uleb128 0x3 + .ascii "CR3\000" + .byte 0x6 + .byte 0xc + .4byte 0xb8 + .byte 0x14 + .uleb128 0x1 + .4byte .LASF997 + .byte 0x6 + .byte 0xd + .4byte 0xb8 + .byte 0x18 + .byte 0 + .uleb128 0x9 + .4byte .LASF998 + .byte 0x2e + .4byte 0x2d7 + .uleb128 0x6 + .4byte 0xa0 + .uleb128 0x6 + .4byte 0x94 + .byte 0 + .uleb128 0x9 + .4byte .LASF999 + .byte 0x2d + .4byte 0x2ec + .uleb128 0x6 + .4byte 0xa0 + .uleb128 0x6 + .4byte 0x256 + .byte 0 + .uleb128 0x12 + .4byte .LASF1000 + .byte 0x1 + .byte 0x4d + .byte 0x6 + .4byte .LFB3 + .4byte .LFE3-.LFB3 + .uleb128 0x1 + .byte 0x9c + .4byte 0x311 + .uleb128 0xa + .ascii "buf\000" + .byte 0x4d + .byte 0x19 + .4byte 0x311 + .uleb128 0x2 + .byte 0x91 + .sleb128 -12 + .byte 0 + .uleb128 0x13 + .byte 0x4 + .4byte 0x317 + .uleb128 0x2 + .byte 0x1 + .byte 0x8 + .4byte .LASF511 + .uleb128 0x14 + .4byte .LASF1001 + .byte 0x1 + .byte 0x44 + .byte 0x6 + .4byte .LFB2 + .4byte .LFE2-.LFB2 + .uleb128 0x1 + .byte 0x9c + .4byte 0x341 + .uleb128 0xa + .ascii "c\000" + .byte 0x44 + .byte 0x20 + .4byte 0x94 + .uleb128 0x2 + .byte 0x91 + .sleb128 -9 + .byte 0 + .uleb128 0x15 + .4byte .LASF1008 + .byte 0x1 + .byte 0x40 + .byte 0x6 + .4byte .LFB1 + .4byte .LFE1-.LFB1 + .uleb128 0x1 + .byte 0x9c + .uleb128 0x16 + .4byte .LASF1009 + .byte 0x1 + .byte 0x5 + .byte 0x6 + .4byte .LFB0 + .4byte .LFE0-.LFB0 + .uleb128 0x1 + .byte 0x9c + .uleb128 0x7 + .4byte .LASF1002 + .byte 0xb + .4byte 0xa0 + .uleb128 0x2 + .byte 0x91 + .sleb128 -10 + .uleb128 0x7 + .4byte .LASF1003 + .byte 0xf + .4byte 0xa0 + .uleb128 0x2 + .byte 0x91 + .sleb128 -12 + .uleb128 0x7 + .4byte .LASF1004 + .byte 0x14 + .4byte 0xa0 + .uleb128 0x2 + .byte 0x91 + .sleb128 -14 + .byte 0 + .byte 0 + .section .debug_abbrev,"",%progbits +.Ldebug_abbrev0: + .uleb128 0x1 + .uleb128 0xd + .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0x21 + .sleb128 21 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x38 + .uleb128 0xb + .byte 0 + .byte 0 + .uleb128 0x2 + .uleb128 0x24 + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3e + .uleb128 0xb + .uleb128 0x3 + .uleb128 0xe + .byte 0 + .byte 0 + .uleb128 0x3 + .uleb128 0xd + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0x21 + .sleb128 21 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x38 + .uleb128 0xb + .byte 0 + .byte 0 + .uleb128 0x4 + .uleb128 0x16 + .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x5 + .uleb128 0x28 + .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x1c + .uleb128 0xb + .byte 0 + .byte 0 + .uleb128 0x6 + .uleb128 0x5 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x7 + .uleb128 0x34 + .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0x21 + .sleb128 1 + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0x21 + .sleb128 12 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x2 + .uleb128 0x18 + .byte 0 + .byte 0 + .uleb128 0x8 + .uleb128 0x35 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x9 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0x21 + .sleb128 5 + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0x21 + .sleb128 6 + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xa + .uleb128 0x5 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0x21 + .sleb128 1 + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x2 + .uleb128 0x18 + .byte 0 + .byte 0 + .uleb128 0xb + .uleb128 0x11 + .byte 0x1 + .uleb128 0x25 + .uleb128 0xe + .uleb128 0x13 + .uleb128 0xb + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x1b + .uleb128 0xe + .uleb128 0x55 + .uleb128 0x17 + .uleb128 0x11 + .uleb128 0x1 + .uleb128 0x10 + .uleb128 0x17 + .uleb128 0x79 + .uleb128 0x17 + .byte 0 + .byte 0 + .uleb128 0xc + .uleb128 0x24 + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3e + .uleb128 0xb + .uleb128 0x3 + .uleb128 0x8 + .byte 0 + .byte 0 + .uleb128 0xd + .uleb128 0x13 + .byte 0x1 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0xb + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xe + .uleb128 0x1 + .byte 0x1 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xf + .uleb128 0x21 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x2f + .uleb128 0xb + .byte 0 + .byte 0 + .uleb128 0x10 + .uleb128 0x4 + .byte 0x1 + .uleb128 0x3e + .uleb128 0xb + .uleb128 0xb + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0xb + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x11 + .uleb128 0x13 + .byte 0x1 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0xb + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x12 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0xb + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x11 + .uleb128 0x1 + .uleb128 0x12 + .uleb128 0x6 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x7c + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x13 + .uleb128 0xf + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x14 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0xb + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x11 + .uleb128 0x1 + .uleb128 0x12 + .uleb128 0x6 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x7a + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x15 + .uleb128 0x2e + .byte 0 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0xb + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x11 + .uleb128 0x1 + .uleb128 0x12 + .uleb128 0x6 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x7a + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0x16 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0xb + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x11 + .uleb128 0x1 + .uleb128 0x12 + .uleb128 0x6 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x7c + .uleb128 0x19 + .byte 0 + .byte 0 + .byte 0 + .section .debug_aranges,"",%progbits + .4byte 0x34 + .2byte 0x2 + .4byte .Ldebug_info0 + .byte 0x4 + .byte 0 + .2byte 0 + .2byte 0 + .4byte .LFB0 + .4byte .LFE0-.LFB0 + .4byte .LFB1 + .4byte .LFE1-.LFB1 + .4byte .LFB2 + .4byte .LFE2-.LFB2 + .4byte .LFB3 + .4byte .LFE3-.LFB3 + .4byte 0 + .4byte 0 + .section .debug_rnglists,"",%progbits +.Ldebug_ranges0: + .4byte .Ldebug_ranges3-.Ldebug_ranges2 +.Ldebug_ranges2: + .2byte 0x5 + .byte 0x4 + .byte 0 + .4byte 0 +.LLRL0: + .byte 0x7 + .4byte .LFB0 + .uleb128 .LFE0-.LFB0 + .byte 0x7 + .4byte .LFB1 + .uleb128 .LFE1-.LFB1 + .byte 0x7 + .4byte .LFB2 + .uleb128 .LFE2-.LFB2 + .byte 0x7 + .4byte .LFB3 + .uleb128 .LFE3-.LFB3 + .byte 0 +.Ldebug_ranges3: + .section .debug_macro,"",%progbits +.Ldebug_macro0: + .2byte 0x5 + .byte 0x2 + .4byte .Ldebug_line0 + .byte 0x3 + .uleb128 0 + .uleb128 0x1 + .byte 0x5 + .uleb128 0 + .4byte .LASF0 + .byte 0x5 + .uleb128 0 + .4byte .LASF1 + .byte 0x5 + .uleb128 0 + .4byte .LASF2 + .byte 0x5 + .uleb128 0 + .4byte .LASF3 + .byte 0x5 + .uleb128 0 + .4byte .LASF4 + .byte 0x5 + .uleb128 0 + .4byte .LASF5 + .byte 0x5 + .uleb128 0 + .4byte .LASF6 + .byte 0x5 + .uleb128 0 + .4byte .LASF7 + .byte 0x5 + .uleb128 0 + .4byte .LASF8 + .byte 0x5 + .uleb128 0 + .4byte .LASF9 + .byte 0x5 + .uleb128 0 + .4byte .LASF10 + .byte 0x5 + .uleb128 0 + .4byte .LASF11 + .byte 0x5 + .uleb128 0 + .4byte .LASF12 + .byte 0x5 + .uleb128 0 + .4byte .LASF13 + .byte 0x5 + .uleb128 0 + .4byte .LASF14 + .byte 0x5 + .uleb128 0 + .4byte .LASF15 + .byte 0x5 + .uleb128 0 + .4byte .LASF16 + .byte 0x5 + .uleb128 0 + .4byte .LASF17 + .byte 0x5 + .uleb128 0 + .4byte .LASF18 + .byte 0x5 + .uleb128 0 + .4byte .LASF19 + .byte 0x5 + .uleb128 0 + .4byte .LASF20 + .byte 0x5 + .uleb128 0 + .4byte .LASF21 + .byte 0x5 + .uleb128 0 + .4byte .LASF22 + .byte 0x5 + .uleb128 0 + .4byte .LASF23 + .byte 0x5 + .uleb128 0 + .4byte .LASF24 + .byte 0x5 + .uleb128 0 + .4byte .LASF25 + .byte 0x5 + .uleb128 0 + .4byte .LASF26 + .byte 0x5 + .uleb128 0 + .4byte .LASF27 + .byte 0x5 + .uleb128 0 + .4byte .LASF28 + .byte 0x5 + .uleb128 0 + .4byte .LASF29 + .byte 0x5 + .uleb128 0 + .4byte .LASF30 + .byte 0x5 + .uleb128 0 + .4byte .LASF31 + .byte 0x5 + .uleb128 0 + .4byte .LASF32 + .byte 0x5 + .uleb128 0 + .4byte .LASF33 + .byte 0x5 + .uleb128 0 + .4byte .LASF34 + .byte 0x5 + .uleb128 0 + .4byte .LASF35 + .byte 0x5 + .uleb128 0 + .4byte .LASF36 + .byte 0x5 + .uleb128 0 + .4byte .LASF37 + .byte 0x5 + .uleb128 0 + .4byte .LASF38 + .byte 0x5 + .uleb128 0 + .4byte .LASF39 + .byte 0x5 + .uleb128 0 + .4byte .LASF40 + .byte 0x5 + .uleb128 0 + .4byte .LASF41 + .byte 0x5 + .uleb128 0 + .4byte .LASF42 + .byte 0x5 + .uleb128 0 + .4byte .LASF43 + .byte 0x5 + .uleb128 0 + .4byte .LASF44 + .byte 0x5 + .uleb128 0 + .4byte .LASF45 + .byte 0x5 + .uleb128 0 + .4byte .LASF46 + .byte 0x5 + .uleb128 0 + .4byte .LASF47 + .byte 0x5 + .uleb128 0 + .4byte .LASF48 + .byte 0x5 + .uleb128 0 + .4byte .LASF49 + .byte 0x5 + .uleb128 0 + .4byte .LASF50 + .byte 0x5 + .uleb128 0 + .4byte .LASF51 + .byte 0x5 + .uleb128 0 + .4byte .LASF52 + .byte 0x5 + .uleb128 0 + .4byte .LASF53 + .byte 0x5 + .uleb128 0 + .4byte .LASF54 + .byte 0x5 + .uleb128 0 + .4byte .LASF55 + .byte 0x5 + .uleb128 0 + .4byte .LASF56 + .byte 0x5 + .uleb128 0 + .4byte .LASF57 + .byte 0x5 + .uleb128 0 + .4byte .LASF58 + .byte 0x5 + .uleb128 0 + .4byte .LASF59 + .byte 0x5 + .uleb128 0 + .4byte .LASF60 + .byte 0x5 + .uleb128 0 + .4byte .LASF61 + .byte 0x5 + .uleb128 0 + .4byte .LASF62 + .byte 0x5 + .uleb128 0 + .4byte .LASF63 + .byte 0x5 + .uleb128 0 + .4byte .LASF64 + .byte 0x5 + .uleb128 0 + .4byte .LASF65 + .byte 0x5 + .uleb128 0 + .4byte .LASF66 + .byte 0x5 + .uleb128 0 + .4byte .LASF67 + .byte 0x5 + .uleb128 0 + .4byte .LASF68 + .byte 0x5 + .uleb128 0 + .4byte .LASF69 + .byte 0x5 + .uleb128 0 + .4byte .LASF70 + .byte 0x5 + .uleb128 0 + .4byte .LASF71 + .byte 0x5 + .uleb128 0 + .4byte .LASF72 + .byte 0x5 + .uleb128 0 + .4byte .LASF73 + .byte 0x5 + .uleb128 0 + .4byte .LASF74 + .byte 0x5 + .uleb128 0 + .4byte .LASF75 + .byte 0x5 + .uleb128 0 + .4byte .LASF76 + .byte 0x5 + .uleb128 0 + .4byte .LASF77 + .byte 0x5 + .uleb128 0 + .4byte .LASF78 + .byte 0x5 + .uleb128 0 + .4byte .LASF79 + .byte 0x5 + .uleb128 0 + .4byte .LASF80 + .byte 0x5 + .uleb128 0 + .4byte .LASF81 + .byte 0x5 + .uleb128 0 + .4byte .LASF82 + .byte 0x5 + .uleb128 0 + .4byte .LASF83 + .byte 0x5 + .uleb128 0 + .4byte .LASF84 + .byte 0x5 + .uleb128 0 + .4byte .LASF85 + .byte 0x5 + .uleb128 0 + .4byte .LASF86 + .byte 0x5 + .uleb128 0 + .4byte .LASF87 + .byte 0x5 + .uleb128 0 + .4byte .LASF88 + .byte 0x5 + .uleb128 0 + .4byte .LASF89 + .byte 0x5 + .uleb128 0 + .4byte .LASF90 + .byte 0x5 + .uleb128 0 + .4byte .LASF91 + .byte 0x5 + .uleb128 0 + .4byte .LASF92 + .byte 0x5 + .uleb128 0 + .4byte .LASF93 + .byte 0x5 + .uleb128 0 + .4byte .LASF94 + .byte 0x5 + .uleb128 0 + .4byte .LASF95 + .byte 0x5 + .uleb128 0 + .4byte .LASF96 + .byte 0x5 + .uleb128 0 + .4byte .LASF97 + .byte 0x5 + .uleb128 0 + .4byte .LASF98 + .byte 0x5 + .uleb128 0 + .4byte .LASF99 + .byte 0x5 + .uleb128 0 + .4byte .LASF100 + .byte 0x5 + .uleb128 0 + .4byte .LASF101 + .byte 0x5 + .uleb128 0 + .4byte .LASF102 + .byte 0x5 + .uleb128 0 + .4byte .LASF103 + .byte 0x5 + .uleb128 0 + .4byte .LASF104 + .byte 0x5 + .uleb128 0 + .4byte .LASF105 + .byte 0x5 + .uleb128 0 + .4byte .LASF106 + .byte 0x5 + .uleb128 0 + .4byte .LASF107 + .byte 0x5 + .uleb128 0 + .4byte .LASF108 + .byte 0x5 + .uleb128 0 + .4byte .LASF109 + .byte 0x5 + .uleb128 0 + .4byte .LASF110 + .byte 0x5 + .uleb128 0 + .4byte .LASF111 + .byte 0x5 + .uleb128 0 + .4byte .LASF112 + .byte 0x5 + .uleb128 0 + .4byte .LASF113 + .byte 0x5 + .uleb128 0 + .4byte .LASF114 + .byte 0x5 + .uleb128 0 + .4byte .LASF115 + .byte 0x5 + .uleb128 0 + .4byte .LASF116 + .byte 0x5 + .uleb128 0 + .4byte .LASF117 + .byte 0x5 + .uleb128 0 + .4byte .LASF118 + .byte 0x5 + .uleb128 0 + .4byte .LASF119 + .byte 0x5 + .uleb128 0 + .4byte .LASF120 + .byte 0x5 + .uleb128 0 + .4byte .LASF121 + .byte 0x5 + .uleb128 0 + .4byte .LASF122 + .byte 0x5 + .uleb128 0 + .4byte .LASF123 + .byte 0x5 + .uleb128 0 + .4byte .LASF124 + .byte 0x5 + .uleb128 0 + .4byte .LASF125 + .byte 0x5 + .uleb128 0 + .4byte .LASF126 + .byte 0x5 + .uleb128 0 + .4byte .LASF127 + .byte 0x5 + .uleb128 0 + .4byte .LASF128 + .byte 0x5 + .uleb128 0 + .4byte .LASF129 + .byte 0x5 + .uleb128 0 + .4byte .LASF130 + .byte 0x5 + .uleb128 0 + .4byte .LASF131 + .byte 0x5 + .uleb128 0 + .4byte .LASF132 + .byte 0x5 + .uleb128 0 + .4byte .LASF133 + .byte 0x5 + .uleb128 0 + .4byte .LASF134 + .byte 0x5 + .uleb128 0 + .4byte .LASF135 + .byte 0x5 + .uleb128 0 + .4byte .LASF136 + .byte 0x5 + .uleb128 0 + .4byte .LASF137 + .byte 0x5 + .uleb128 0 + .4byte .LASF138 + .byte 0x5 + .uleb128 0 + .4byte .LASF139 + .byte 0x5 + .uleb128 0 + .4byte .LASF140 + .byte 0x5 + .uleb128 0 + .4byte .LASF141 + .byte 0x5 + .uleb128 0 + .4byte .LASF142 + .byte 0x5 + .uleb128 0 + .4byte .LASF143 + .byte 0x5 + .uleb128 0 + .4byte .LASF144 + .byte 0x5 + .uleb128 0 + .4byte .LASF145 + .byte 0x5 + .uleb128 0 + .4byte .LASF146 + .byte 0x5 + .uleb128 0 + .4byte .LASF147 + .byte 0x5 + .uleb128 0 + .4byte .LASF148 + .byte 0x5 + .uleb128 0 + .4byte .LASF149 + .byte 0x5 + .uleb128 0 + .4byte .LASF150 + .byte 0x5 + .uleb128 0 + .4byte .LASF151 + .byte 0x5 + .uleb128 0 + .4byte .LASF152 + .byte 0x5 + .uleb128 0 + .4byte .LASF153 + .byte 0x5 + .uleb128 0 + .4byte .LASF154 + .byte 0x5 + .uleb128 0 + .4byte .LASF155 + .byte 0x5 + .uleb128 0 + .4byte .LASF156 + .byte 0x5 + .uleb128 0 + .4byte .LASF157 + .byte 0x5 + .uleb128 0 + .4byte .LASF158 + .byte 0x5 + .uleb128 0 + .4byte .LASF159 + .byte 0x5 + .uleb128 0 + .4byte .LASF160 + .byte 0x5 + .uleb128 0 + .4byte .LASF161 + .byte 0x5 + .uleb128 0 + .4byte .LASF162 + .byte 0x5 + .uleb128 0 + .4byte .LASF163 + .byte 0x5 + .uleb128 0 + .4byte .LASF164 + .byte 0x5 + .uleb128 0 + .4byte .LASF165 + .byte 0x5 + .uleb128 0 + .4byte .LASF166 + .byte 0x5 + .uleb128 0 + .4byte .LASF167 + .byte 0x5 + .uleb128 0 + .4byte .LASF168 + .byte 0x5 + .uleb128 0 + .4byte .LASF169 + .byte 0x5 + .uleb128 0 + .4byte .LASF170 + .byte 0x5 + .uleb128 0 + .4byte .LASF171 + .byte 0x5 + .uleb128 0 + .4byte .LASF172 + .byte 0x5 + .uleb128 0 + .4byte .LASF173 + .byte 0x5 + .uleb128 0 + .4byte .LASF174 + .byte 0x5 + .uleb128 0 + .4byte .LASF175 + .byte 0x5 + .uleb128 0 + .4byte .LASF176 + .byte 0x5 + .uleb128 0 + .4byte .LASF177 + .byte 0x5 + .uleb128 0 + .4byte .LASF178 + .byte 0x5 + .uleb128 0 + .4byte .LASF179 + .byte 0x5 + .uleb128 0 + .4byte .LASF180 + .byte 0x5 + .uleb128 0 + .4byte .LASF181 + .byte 0x5 + .uleb128 0 + .4byte .LASF182 + .byte 0x5 + .uleb128 0 + .4byte .LASF183 + .byte 0x5 + .uleb128 0 + .4byte .LASF184 + .byte 0x5 + .uleb128 0 + .4byte .LASF185 + .byte 0x5 + .uleb128 0 + .4byte .LASF186 + .byte 0x5 + .uleb128 0 + .4byte .LASF187 + .byte 0x5 + .uleb128 0 + .4byte .LASF188 + .byte 0x5 + .uleb128 0 + .4byte .LASF189 + .byte 0x5 + .uleb128 0 + .4byte .LASF190 + .byte 0x5 + .uleb128 0 + .4byte .LASF191 + .byte 0x5 + .uleb128 0 + .4byte .LASF192 + .byte 0x5 + .uleb128 0 + .4byte .LASF193 + .byte 0x5 + .uleb128 0 + .4byte .LASF194 + .byte 0x5 + .uleb128 0 + .4byte .LASF195 + .byte 0x5 + .uleb128 0 + .4byte .LASF196 + .byte 0x5 + .uleb128 0 + .4byte .LASF197 + .byte 0x5 + .uleb128 0 + .4byte .LASF198 + .byte 0x5 + .uleb128 0 + .4byte .LASF199 + .byte 0x5 + .uleb128 0 + .4byte .LASF200 + .byte 0x5 + .uleb128 0 + .4byte .LASF201 + .byte 0x5 + .uleb128 0 + .4byte .LASF202 + .byte 0x5 + .uleb128 0 + .4byte .LASF203 + .byte 0x5 + .uleb128 0 + .4byte .LASF204 + .byte 0x5 + .uleb128 0 + .4byte .LASF205 + .byte 0x5 + .uleb128 0 + .4byte .LASF206 + .byte 0x5 + .uleb128 0 + .4byte .LASF207 + .byte 0x5 + .uleb128 0 + .4byte .LASF208 + .byte 0x5 + .uleb128 0 + .4byte .LASF209 + .byte 0x5 + .uleb128 0 + .4byte .LASF210 + .byte 0x5 + .uleb128 0 + .4byte .LASF211 + .byte 0x5 + .uleb128 0 + .4byte .LASF212 + .byte 0x5 + .uleb128 0 + .4byte .LASF213 + .byte 0x5 + .uleb128 0 + .4byte .LASF214 + .byte 0x5 + .uleb128 0 + .4byte .LASF215 + .byte 0x5 + .uleb128 0 + .4byte .LASF216 + .byte 0x5 + .uleb128 0 + .4byte .LASF217 + .byte 0x5 + .uleb128 0 + .4byte .LASF218 + .byte 0x5 + .uleb128 0 + .4byte .LASF219 + .byte 0x5 + .uleb128 0 + .4byte .LASF220 + .byte 0x5 + .uleb128 0 + .4byte .LASF221 + .byte 0x5 + .uleb128 0 + .4byte .LASF222 + .byte 0x5 + .uleb128 0 + .4byte .LASF223 + .byte 0x5 + .uleb128 0 + .4byte .LASF224 + .byte 0x5 + .uleb128 0 + .4byte .LASF225 + .byte 0x5 + .uleb128 0 + .4byte .LASF226 + .byte 0x5 + .uleb128 0 + .4byte .LASF227 + .byte 0x5 + .uleb128 0 + .4byte .LASF228 + .byte 0x5 + .uleb128 0 + .4byte .LASF229 + .byte 0x5 + .uleb128 0 + .4byte .LASF230 + .byte 0x5 + .uleb128 0 + .4byte .LASF231 + .byte 0x5 + .uleb128 0 + .4byte .LASF232 + .byte 0x5 + .uleb128 0 + .4byte .LASF233 + .byte 0x5 + .uleb128 0 + .4byte .LASF234 + .byte 0x5 + .uleb128 0 + .4byte .LASF235 + .byte 0x5 + .uleb128 0 + .4byte .LASF236 + .byte 0x5 + .uleb128 0 + .4byte .LASF237 + .byte 0x5 + .uleb128 0 + .4byte .LASF238 + .byte 0x5 + .uleb128 0 + .4byte .LASF239 + .byte 0x5 + .uleb128 0 + .4byte .LASF240 + .byte 0x5 + .uleb128 0 + .4byte .LASF241 + .byte 0x5 + .uleb128 0 + .4byte .LASF242 + .byte 0x5 + .uleb128 0 + .4byte .LASF243 + .byte 0x5 + .uleb128 0 + .4byte .LASF244 + .byte 0x5 + .uleb128 0 + .4byte .LASF245 + .byte 0x5 + .uleb128 0 + .4byte .LASF246 + .byte 0x5 + .uleb128 0 + .4byte .LASF247 + .byte 0x5 + .uleb128 0 + .4byte .LASF248 + .byte 0x5 + .uleb128 0 + .4byte .LASF249 + .byte 0x5 + .uleb128 0 + .4byte .LASF250 + .byte 0x5 + .uleb128 0 + .4byte .LASF251 + .byte 0x5 + .uleb128 0 + .4byte .LASF252 + .byte 0x5 + .uleb128 0 + .4byte .LASF253 + .byte 0x5 + .uleb128 0 + .4byte .LASF254 + .byte 0x5 + .uleb128 0 + .4byte .LASF255 + .byte 0x5 + .uleb128 0 + .4byte .LASF256 + .byte 0x5 + .uleb128 0 + .4byte .LASF257 + .byte 0x5 + .uleb128 0 + .4byte .LASF258 + .byte 0x5 + .uleb128 0 + .4byte .LASF259 + .byte 0x5 + .uleb128 0 + .4byte .LASF260 + .byte 0x5 + .uleb128 0 + .4byte .LASF261 + .byte 0x5 + .uleb128 0 + .4byte .LASF262 + .byte 0x5 + .uleb128 0 + .4byte .LASF263 + .byte 0x5 + .uleb128 0 + .4byte .LASF264 + .byte 0x5 + .uleb128 0 + .4byte .LASF265 + .byte 0x5 + .uleb128 0 + .4byte .LASF266 + .byte 0x5 + .uleb128 0 + .4byte .LASF267 + .byte 0x5 + .uleb128 0 + .4byte .LASF268 + .byte 0x5 + .uleb128 0 + .4byte .LASF269 + .byte 0x5 + .uleb128 0 + .4byte .LASF270 + .byte 0x5 + .uleb128 0 + .4byte .LASF271 + .byte 0x5 + .uleb128 0 + .4byte .LASF272 + .byte 0x5 + .uleb128 0 + .4byte .LASF273 + .byte 0x5 + .uleb128 0 + .4byte .LASF274 + .byte 0x5 + .uleb128 0 + .4byte .LASF275 + .byte 0x5 + .uleb128 0 + .4byte .LASF276 + .byte 0x5 + .uleb128 0 + .4byte .LASF277 + .byte 0x5 + .uleb128 0 + .4byte .LASF278 + .byte 0x5 + .uleb128 0 + .4byte .LASF279 + .byte 0x5 + .uleb128 0 + .4byte .LASF280 + .byte 0x5 + .uleb128 0 + .4byte .LASF281 + .byte 0x5 + .uleb128 0 + .4byte .LASF282 + .byte 0x5 + .uleb128 0 + .4byte .LASF283 + .byte 0x5 + .uleb128 0 + .4byte .LASF284 + .byte 0x5 + .uleb128 0 + .4byte .LASF285 + .byte 0x5 + .uleb128 0 + .4byte .LASF286 + .byte 0x5 + .uleb128 0 + .4byte .LASF287 + .byte 0x5 + .uleb128 0 + .4byte .LASF288 + .byte 0x5 + .uleb128 0 + .4byte .LASF289 + .byte 0x5 + .uleb128 0 + .4byte .LASF290 + .byte 0x5 + .uleb128 0 + .4byte .LASF291 + .byte 0x5 + .uleb128 0 + .4byte .LASF292 + .byte 0x5 + .uleb128 0 + .4byte .LASF293 + .byte 0x5 + .uleb128 0 + .4byte .LASF294 + .byte 0x5 + .uleb128 0 + .4byte .LASF295 + .byte 0x5 + .uleb128 0 + .4byte .LASF296 + .byte 0x5 + .uleb128 0 + .4byte .LASF297 + .byte 0x5 + .uleb128 0 + .4byte .LASF298 + .byte 0x5 + .uleb128 0 + .4byte .LASF299 + .byte 0x5 + .uleb128 0 + .4byte .LASF300 + .byte 0x5 + .uleb128 0 + .4byte .LASF301 + .byte 0x5 + .uleb128 0 + .4byte .LASF302 + .byte 0x5 + .uleb128 0 + .4byte .LASF303 + .byte 0x5 + .uleb128 0 + .4byte .LASF304 + .byte 0x5 + .uleb128 0 + .4byte .LASF305 + .byte 0x5 + .uleb128 0 + .4byte .LASF306 + .byte 0x5 + .uleb128 0 + .4byte .LASF307 + .byte 0x5 + .uleb128 0 + .4byte .LASF308 + .byte 0x5 + .uleb128 0 + .4byte .LASF309 + .byte 0x5 + .uleb128 0 + .4byte .LASF310 + .byte 0x5 + .uleb128 0 + .4byte .LASF311 + .byte 0x5 + .uleb128 0 + .4byte .LASF312 + .byte 0x5 + .uleb128 0 + .4byte .LASF313 + .byte 0x5 + .uleb128 0 + .4byte .LASF314 + .byte 0x5 + .uleb128 0 + .4byte .LASF315 + .byte 0x5 + .uleb128 0 + .4byte .LASF316 + .byte 0x5 + .uleb128 0 + .4byte .LASF317 + .byte 0x5 + .uleb128 0 + .4byte .LASF318 + .byte 0x5 + .uleb128 0 + .4byte .LASF319 + .byte 0x5 + .uleb128 0 + .4byte .LASF320 + .byte 0x5 + .uleb128 0 + .4byte .LASF321 + .byte 0x5 + .uleb128 0 + .4byte .LASF322 + .byte 0x5 + .uleb128 0 + .4byte .LASF323 + .byte 0x5 + .uleb128 0 + .4byte .LASF324 + .byte 0x5 + .uleb128 0 + .4byte .LASF325 + .byte 0x5 + .uleb128 0 + .4byte .LASF326 + .byte 0x5 + .uleb128 0 + .4byte .LASF327 + .byte 0x5 + .uleb128 0 + .4byte .LASF328 + .byte 0x5 + .uleb128 0 + .4byte .LASF329 + .byte 0x5 + .uleb128 0 + .4byte .LASF330 + .byte 0x5 + .uleb128 0 + .4byte .LASF331 + .byte 0x5 + .uleb128 0 + .4byte .LASF332 + .byte 0x5 + .uleb128 0 + .4byte .LASF333 + .byte 0x5 + .uleb128 0 + .4byte .LASF334 + .byte 0x5 + .uleb128 0 + .4byte .LASF335 + .byte 0x5 + .uleb128 0 + .4byte .LASF336 + .byte 0x5 + .uleb128 0 + .4byte .LASF337 + .byte 0x5 + .uleb128 0 + .4byte .LASF338 + .byte 0x5 + .uleb128 0 + .4byte .LASF339 + .byte 0x5 + .uleb128 0 + .4byte .LASF340 + .byte 0x5 + .uleb128 0 + .4byte .LASF341 + .byte 0x5 + .uleb128 0 + .4byte .LASF342 + .byte 0x5 + .uleb128 0 + .4byte .LASF343 + .byte 0x5 + .uleb128 0 + .4byte .LASF344 + .byte 0x5 + .uleb128 0 + .4byte .LASF345 + .byte 0x5 + .uleb128 0 + .4byte .LASF346 + .byte 0x5 + .uleb128 0 + .4byte .LASF347 + .byte 0x5 + .uleb128 0 + .4byte .LASF348 + .byte 0x5 + .uleb128 0 + .4byte .LASF349 + .byte 0x5 + .uleb128 0 + .4byte .LASF350 + .byte 0x5 + .uleb128 0 + .4byte .LASF351 + .byte 0x5 + .uleb128 0 + .4byte .LASF352 + .byte 0x5 + .uleb128 0 + .4byte .LASF353 + .byte 0x5 + .uleb128 0 + .4byte .LASF354 + .byte 0x5 + .uleb128 0 + .4byte .LASF355 + .byte 0x5 + .uleb128 0 + .4byte .LASF356 + .byte 0x5 + .uleb128 0 + .4byte .LASF357 + .byte 0x5 + .uleb128 0 + .4byte .LASF358 + .byte 0x5 + .uleb128 0 + .4byte .LASF359 + .byte 0x5 + .uleb128 0 + .4byte .LASF360 + .byte 0x5 + .uleb128 0 + .4byte .LASF361 + .byte 0x5 + .uleb128 0 + .4byte .LASF362 + .byte 0x5 + .uleb128 0 + .4byte .LASF363 + .byte 0x5 + .uleb128 0 + .4byte .LASF364 + .byte 0x5 + .uleb128 0 + .4byte .LASF365 + .byte 0x5 + .uleb128 0 + .4byte .LASF366 + .byte 0x5 + .uleb128 0 + .4byte .LASF367 + .byte 0x5 + .uleb128 0 + .4byte .LASF368 + .byte 0x5 + .uleb128 0 + .4byte .LASF369 + .byte 0x5 + .uleb128 0 + .4byte .LASF370 + .byte 0x5 + .uleb128 0 + .4byte .LASF371 + .byte 0x5 + .uleb128 0 + .4byte .LASF372 + .byte 0x5 + .uleb128 0 + .4byte .LASF373 + .byte 0x5 + .uleb128 0 + .4byte .LASF374 + .byte 0x5 + .uleb128 0 + .4byte .LASF375 + .byte 0x5 + .uleb128 0 + .4byte .LASF376 + .byte 0x5 + .uleb128 0 + .4byte .LASF377 + .byte 0x5 + .uleb128 0 + .4byte .LASF378 + .byte 0x5 + .uleb128 0 + .4byte .LASF379 + .byte 0x5 + .uleb128 0 + .4byte .LASF380 + .byte 0x5 + .uleb128 0 + .4byte .LASF381 + .byte 0x5 + .uleb128 0 + .4byte .LASF382 + .byte 0x5 + .uleb128 0 + .4byte .LASF383 + .byte 0x5 + .uleb128 0 + .4byte .LASF384 + .byte 0x5 + .uleb128 0 + .4byte .LASF385 + .byte 0x5 + .uleb128 0 + .4byte .LASF386 + .byte 0x5 + .uleb128 0 + .4byte .LASF387 + .byte 0x5 + .uleb128 0 + .4byte .LASF388 + .byte 0x5 + .uleb128 0 + .4byte .LASF389 + .byte 0x5 + .uleb128 0 + .4byte .LASF390 + .byte 0x5 + .uleb128 0 + .4byte .LASF391 + .byte 0x5 + .uleb128 0 + .4byte .LASF392 + .byte 0x6 + .uleb128 0 + .4byte .LASF393 + .byte 0x5 + .uleb128 0 + .4byte .LASF394 + .byte 0x6 + .uleb128 0 + .4byte .LASF395 + .byte 0x6 + .uleb128 0 + .4byte .LASF396 + .byte 0x6 + .uleb128 0 + .4byte .LASF397 + .byte 0x6 + .uleb128 0 + .4byte .LASF398 + .byte 0x5 + .uleb128 0 + .4byte .LASF399 + .byte 0x6 + .uleb128 0 + .4byte .LASF400 + .byte 0x6 + .uleb128 0 + .4byte .LASF401 + .byte 0x6 + .uleb128 0 + .4byte .LASF402 + .byte 0x5 + .uleb128 0 + .4byte .LASF403 + .byte 0x5 + .uleb128 0 + .4byte .LASF404 + .byte 0x6 + .uleb128 0 + .4byte .LASF405 + .byte 0x5 + .uleb128 0 + .4byte .LASF406 + .byte 0x5 + .uleb128 0 + .4byte .LASF407 + .byte 0x5 + .uleb128 0 + .4byte .LASF408 + .byte 0x6 + .uleb128 0 + .4byte .LASF409 + .byte 0x5 + .uleb128 0 + .4byte .LASF410 + .byte 0x5 + .uleb128 0 + .4byte .LASF411 + .byte 0x6 + .uleb128 0 + .4byte .LASF412 + .byte 0x5 + .uleb128 0 + .4byte .LASF413 + .byte 0x5 + .uleb128 0 + .4byte .LASF414 + .byte 0x5 + .uleb128 0 + .4byte .LASF415 + .byte 0x5 + .uleb128 0 + .4byte .LASF416 + .byte 0x5 + .uleb128 0 + .4byte .LASF417 + .byte 0x5 + .uleb128 0 + .4byte .LASF418 + .byte 0x6 + .uleb128 0 + .4byte .LASF419 + .byte 0x5 + .uleb128 0 + .4byte .LASF420 + .byte 0x5 + .uleb128 0 + .4byte .LASF421 + .byte 0x5 + .uleb128 0 + .4byte .LASF422 + .byte 0x6 + .uleb128 0 + .4byte .LASF423 + .byte 0x5 + .uleb128 0 + .4byte .LASF424 + .byte 0x6 + .uleb128 0 + .4byte .LASF425 + .byte 0x6 + .uleb128 0 + .4byte .LASF426 + .byte 0x6 + .uleb128 0 + .4byte .LASF427 + .byte 0x6 + .uleb128 0 + .4byte .LASF428 + .byte 0x6 + .uleb128 0 + .4byte .LASF429 + .byte 0x6 + .uleb128 0 + .4byte .LASF430 + .byte 0x5 + .uleb128 0 + .4byte .LASF431 + .byte 0x6 + .uleb128 0 + .4byte .LASF432 + .byte 0x6 + .uleb128 0 + .4byte .LASF433 + .byte 0x6 + .uleb128 0 + .4byte .LASF434 + .byte 0x5 + .uleb128 0 + .4byte .LASF435 + .byte 0x5 + .uleb128 0 + .4byte .LASF436 + .byte 0x5 + .uleb128 0 + .4byte .LASF437 + .byte 0x5 + .uleb128 0 + .4byte .LASF438 + .byte 0x6 + .uleb128 0 + .4byte .LASF439 + .byte 0x5 + .uleb128 0 + .4byte .LASF440 + .byte 0x5 + .uleb128 0 + .4byte .LASF441 + .byte 0x5 + .uleb128 0 + .4byte .LASF442 + .byte 0x6 + .uleb128 0 + .4byte .LASF443 + .byte 0x5 + .uleb128 0 + .4byte .LASF444 + .byte 0x6 + .uleb128 0 + .4byte .LASF445 + .byte 0x6 + .uleb128 0 + .4byte .LASF446 + .byte 0x6 + .uleb128 0 + .4byte .LASF447 + .byte 0x6 + .uleb128 0 + .4byte .LASF448 + .byte 0x6 + .uleb128 0 + .4byte .LASF449 + .byte 0x6 + .uleb128 0 + .4byte .LASF450 + .byte 0x5 + .uleb128 0 + .4byte .LASF451 + .byte 0x5 + .uleb128 0 + .4byte .LASF452 + .byte 0x5 + .uleb128 0 + .4byte .LASF453 + .byte 0x3 + .uleb128 0x1 + .uleb128 0x4 + .byte 0x5 + .uleb128 0x2 + .4byte .LASF454 + .file 7 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" + .byte 0x3 + .uleb128 0x4 + .uleb128 0x7 + .byte 0x5 + .uleb128 0xe + .4byte .LASF455 + .file 8 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/newlib.h" + .byte 0x3 + .uleb128 0x10 + .uleb128 0x8 + .byte 0x5 + .uleb128 0x7 + .4byte .LASF456 + .file 9 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_newlib_version.h" + .byte 0x3 + .uleb128 0xa + .uleb128 0x9 + .byte 0x7 + .4byte .Ldebug_macro2 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro3 + .byte 0x4 + .file 10 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/config.h" + .byte 0x3 + .uleb128 0x11 + .uleb128 0xa + .byte 0x5 + .uleb128 0x2 + .4byte .LASF479 + .file 11 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/ieeefp.h" + .byte 0x3 + .uleb128 0x4 + .uleb128 0xb + .byte 0x7 + .4byte .Ldebug_macro4 + .byte 0x4 + .file 12 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" + .byte 0x3 + .uleb128 0x5 + .uleb128 0xc + .byte 0x7 + .4byte .Ldebug_macro5 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro6 + .byte 0x4 + .file 13 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" + .byte 0x3 + .uleb128 0x12 + .uleb128 0xd + .byte 0x7 + .4byte .Ldebug_macro7 + .byte 0x4 + .file 14 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_ansi.h" + .byte 0x3 + .uleb128 0x13 + .uleb128 0xe + .byte 0x7 + .4byte .Ldebug_macro8 + .byte 0x4 + .file 15 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdint.h" + .byte 0x3 + .uleb128 0x14 + .uleb128 0xf + .file 16 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" + .byte 0x3 + .uleb128 0x9 + .uleb128 0x10 + .byte 0x5 + .uleb128 0xa + .4byte .LASF547 + .byte 0x3 + .uleb128 0xc + .uleb128 0x2 + .byte 0x7 + .4byte .Ldebug_macro9 + .byte 0x4 + .byte 0x3 + .uleb128 0xe + .uleb128 0x3 + .byte 0x7 + .4byte .Ldebug_macro10 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro11 + .byte 0x4 + .byte 0x5 + .uleb128 0xd + .4byte .LASF647 + .byte 0x4 + .byte 0x5 + .uleb128 0x15 + .4byte .LASF648 + .file 17 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stddef.h" + .byte 0x3 + .uleb128 0x16 + .uleb128 0x11 + .byte 0x7 + .4byte .Ldebug_macro12 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro13 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro14 + .byte 0x4 + .byte 0x3 + .uleb128 0x2 + .uleb128 0x5 + .byte 0x5 + .uleb128 0x2 + .4byte .LASF916 + .file 18 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdbool.h" + .byte 0x3 + .uleb128 0x4 + .uleb128 0x12 + .byte 0x7 + .4byte .Ldebug_macro15 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro16 + .byte 0x4 + .byte 0x3 + .uleb128 0x3 + .uleb128 0x6 + .byte 0x7 + .4byte .Ldebug_macro17 + .byte 0x4 + .byte 0x4 + .byte 0 + .section .debug_macro,"G",%progbits,wm4._newlib_version.h.4.6d111ab2e95434b664b53815e5c8ccba,comdat +.Ldebug_macro2: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x4 + .4byte .LASF457 + .byte 0x5 + .uleb128 0x6 + .4byte .LASF458 + .byte 0x5 + .uleb128 0x7 + .4byte .LASF459 + .byte 0x5 + .uleb128 0x8 + .4byte .LASF460 + .byte 0x5 + .uleb128 0x9 + .4byte .LASF461 + .byte 0 + .section .debug_macro,"G",%progbits,wm4.newlib.h.27.d4bf77c18f14f545101dac22f0b54118,comdat +.Ldebug_macro3: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x1b + .4byte .LASF462 + .byte 0x5 + .uleb128 0x21 + .4byte .LASF463 + .byte 0x5 + .uleb128 0x24 + .4byte .LASF464 + .byte 0x5 + .uleb128 0x27 + .4byte .LASF465 + .byte 0x5 + .uleb128 0x2b + .4byte .LASF466 + .byte 0x5 + .uleb128 0x2e + .4byte .LASF467 + .byte 0x5 + .uleb128 0x163 + .4byte .LASF468 + .byte 0x5 + .uleb128 0x169 + .4byte .LASF469 + .byte 0x5 + .uleb128 0x16c + .4byte .LASF470 + .byte 0x5 + .uleb128 0x175 + .4byte .LASF471 + .byte 0x5 + .uleb128 0x178 + .4byte .LASF472 + .byte 0x5 + .uleb128 0x17b + .4byte .LASF473 + .byte 0x5 + .uleb128 0x17f + .4byte .LASF474 + .byte 0x5 + .uleb128 0x187 + .4byte .LASF475 + .byte 0x5 + .uleb128 0x198 + .4byte .LASF476 + .byte 0x5 + .uleb128 0x19b + .4byte .LASF477 + .byte 0x5 + .uleb128 0x1a1 + .4byte .LASF478 + .byte 0 + .section .debug_macro,"G",%progbits,wm4.ieeefp.h.77.9dc6728f2d488a554e7c0cabef1b6c33,comdat +.Ldebug_macro4: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x4d + .4byte .LASF480 + .byte 0x5 + .uleb128 0x5b + .4byte .LASF481 + .byte 0x5 + .uleb128 0x62 + .4byte .LASF482 + .byte 0x5 + .uleb128 0x63 + .4byte .LASF483 + .byte 0x5 + .uleb128 0x203 + .4byte .LASF484 + .byte 0x5 + .uleb128 0x206 + .4byte .LASF485 + .byte 0 + .section .debug_macro,"G",%progbits,wm4.features.h.22.2e1fda838b2ee7b0fe7a454167fc345d,comdat +.Ldebug_macro5: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x16 + .4byte .LASF486 + .byte 0x5 + .uleb128 0x21 + .4byte .LASF487 + .byte 0x5 + .uleb128 0x28 + .4byte .LASF488 + .byte 0x5 + .uleb128 0xf9 + .4byte .LASF489 + .byte 0x5 + .uleb128 0xff + .4byte .LASF490 + .byte 0x5 + .uleb128 0x105 + .4byte .LASF491 + .byte 0x5 + .uleb128 0x10a + .4byte .LASF492 + .byte 0x5 + .uleb128 0x115 + .4byte .LASF493 + .byte 0x5 + .uleb128 0x11b + .4byte .LASF494 + .byte 0x5 + .uleb128 0x12b + .4byte .LASF495 + .byte 0x5 + .uleb128 0x131 + .4byte .LASF496 + .byte 0x5 + .uleb128 0x13f + .4byte .LASF497 + .byte 0x5 + .uleb128 0x14b + .4byte .LASF498 + .byte 0 + .section .debug_macro,"G",%progbits,wm4.config.h.224.10ee1ad185d877c6e334e6581faab44d,comdat +.Ldebug_macro6: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0xe0 + .4byte .LASF499 + .byte 0x6 + .uleb128 0xe6 + .4byte .LASF500 + .byte 0x5 + .uleb128 0xea + .4byte .LASF501 + .byte 0x5 + .uleb128 0xf8 + .4byte .LASF502 + .byte 0x5 + .uleb128 0xfc + .4byte .LASF503 + .byte 0x5 + .uleb128 0x103 + .4byte .LASF504 + .byte 0x5 + .uleb128 0x109 + .4byte .LASF505 + .byte 0x5 + .uleb128 0x122 + .4byte .LASF506 + .byte 0 + .section .debug_macro,"G",%progbits,wm4._intsup.h.10.48bafbb683905c4daa4565a85aeeb264,comdat +.Ldebug_macro7: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0xa + .4byte .LASF507 + .byte 0x5 + .uleb128 0x10 + .4byte .LASF508 + .byte 0x6 + .uleb128 0x2b + .4byte .LASF509 + .byte 0x6 + .uleb128 0x2c + .4byte .LASF510 + .byte 0x6 + .uleb128 0x2d + .4byte .LASF511 + .byte 0x6 + .uleb128 0x2e + .4byte .LASF512 + .byte 0x2 + .uleb128 0x2f + .ascii "int\000" + .byte 0x6 + .uleb128 0x30 + .4byte .LASF513 + .byte 0x6 + .uleb128 0x31 + .4byte .LASF514 + .byte 0x6 + .uleb128 0x32 + .4byte .LASF515 + .byte 0x5 + .uleb128 0x33 + .4byte .LASF516 + .byte 0x5 + .uleb128 0x34 + .4byte .LASF517 + .byte 0x5 + .uleb128 0x35 + .4byte .LASF518 + .byte 0x5 + .uleb128 0x36 + .4byte .LASF519 + .byte 0x5 + .uleb128 0x37 + .4byte .LASF520 + .byte 0x5 + .uleb128 0x38 + .4byte .LASF521 + .byte 0x5 + .uleb128 0x39 + .4byte .LASF522 + .byte 0x5 + .uleb128 0x3a + .4byte .LASF523 + .byte 0x5 + .uleb128 0x43 + .4byte .LASF524 + .byte 0x5 + .uleb128 0x4a + .4byte .LASF525 + .byte 0x5 + .uleb128 0x52 + .4byte .LASF526 + .byte 0x5 + .uleb128 0x5d + .4byte .LASF527 + .byte 0x5 + .uleb128 0x68 + .4byte .LASF528 + .byte 0x5 + .uleb128 0x71 + .4byte .LASF529 + .byte 0x5 + .uleb128 0x78 + .4byte .LASF530 + .byte 0x5 + .uleb128 0x81 + .4byte .LASF531 + .byte 0x5 + .uleb128 0x88 + .4byte .LASF532 + .byte 0x5 + .uleb128 0x93 + .4byte .LASF533 + .byte 0x5 + .uleb128 0x97 + .4byte .LASF534 + .byte 0x5 + .uleb128 0xa2 + .4byte .LASF535 + .byte 0x5 + .uleb128 0xad + .4byte .LASF536 + .byte 0x5 + .uleb128 0xb6 + .4byte .LASF537 + .byte 0x6 + .uleb128 0xb8 + .4byte .LASF509 + .byte 0x6 + .uleb128 0xb9 + .4byte .LASF510 + .byte 0x6 + .uleb128 0xba + .4byte .LASF511 + .byte 0x6 + .uleb128 0xbb + .4byte .LASF512 + .byte 0x2 + .uleb128 0xbc + .ascii "int\000" + .byte 0x6 + .uleb128 0xbd + .4byte .LASF515 + .byte 0x6 + .uleb128 0xc2 + .4byte .LASF513 + .byte 0x6 + .uleb128 0xc3 + .4byte .LASF514 + .byte 0 + .section .debug_macro,"G",%progbits,wm4._ansi.h.8.aeadd4934928258a76627d21910677e3,comdat +.Ldebug_macro8: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x8 + .4byte .LASF538 + .byte 0x5 + .uleb128 0x1f + .4byte .LASF539 + .byte 0x5 + .uleb128 0x20 + .4byte .LASF540 + .byte 0x5 + .uleb128 0x21 + .4byte .LASF541 + .byte 0x5 + .uleb128 0x25 + .4byte .LASF542 + .byte 0x5 + .uleb128 0x2b + .4byte .LASF543 + .byte 0x5 + .uleb128 0x45 + .4byte .LASF544 + .byte 0x5 + .uleb128 0x49 + .4byte .LASF545 + .byte 0x5 + .uleb128 0x4a + .4byte .LASF546 + .byte 0 + .section .debug_macro,"G",%progbits,wm4._default_types.h.6.959254cf5f09734ea7516c89e8bb21bd,comdat +.Ldebug_macro9: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x6 + .4byte .LASF548 + .byte 0x5 + .uleb128 0xf + .4byte .LASF549 + .byte 0x5 + .uleb128 0x1a + .4byte .LASF550 + .byte 0x5 + .uleb128 0x21 + .4byte .LASF551 + .byte 0x5 + .uleb128 0x2f + .4byte .LASF552 + .byte 0x5 + .uleb128 0x3d + .4byte .LASF553 + .byte 0x5 + .uleb128 0x53 + .4byte .LASF554 + .byte 0x5 + .uleb128 0x6d + .4byte .LASF555 + .byte 0x5 + .uleb128 0x8c + .4byte .LASF556 + .byte 0x5 + .uleb128 0xa6 + .4byte .LASF557 + .byte 0x5 + .uleb128 0xbc + .4byte .LASF558 + .byte 0x5 + .uleb128 0xce + .4byte .LASF559 + .byte 0x6 + .uleb128 0xf4 + .4byte .LASF560 + .byte 0 + .section .debug_macro,"G",%progbits,wm4._stdint.h.10.c24fa3af3bc1706662bb5593a907e841,comdat +.Ldebug_macro10: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0xa + .4byte .LASF561 + .byte 0x5 + .uleb128 0x15 + .4byte .LASF562 + .byte 0x5 + .uleb128 0x19 + .4byte .LASF563 + .byte 0x5 + .uleb128 0x1b + .4byte .LASF564 + .byte 0x5 + .uleb128 0x21 + .4byte .LASF565 + .byte 0x5 + .uleb128 0x25 + .4byte .LASF566 + .byte 0x5 + .uleb128 0x27 + .4byte .LASF567 + .byte 0x5 + .uleb128 0x2d + .4byte .LASF568 + .byte 0x5 + .uleb128 0x31 + .4byte .LASF569 + .byte 0x5 + .uleb128 0x33 + .4byte .LASF570 + .byte 0x5 + .uleb128 0x39 + .4byte .LASF571 + .byte 0x5 + .uleb128 0x3d + .4byte .LASF572 + .byte 0x5 + .uleb128 0x3f + .4byte .LASF573 + .byte 0x5 + .uleb128 0x44 + .4byte .LASF574 + .byte 0x5 + .uleb128 0x49 + .4byte .LASF575 + .byte 0x5 + .uleb128 0x4e + .4byte .LASF576 + .byte 0x5 + .uleb128 0x53 + .4byte .LASF577 + .byte 0 + .section .debug_macro,"G",%progbits,wm4.stdint.h.23.d53047a68f4a85177f80b422d52785ed,comdat +.Ldebug_macro11: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x17 + .4byte .LASF578 + .byte 0x5 + .uleb128 0x1d + .4byte .LASF579 + .byte 0x5 + .uleb128 0x23 + .4byte .LASF580 + .byte 0x5 + .uleb128 0x29 + .4byte .LASF581 + .byte 0x5 + .uleb128 0x35 + .4byte .LASF582 + .byte 0x5 + .uleb128 0x3f + .4byte .LASF583 + .byte 0x5 + .uleb128 0x49 + .4byte .LASF584 + .byte 0x5 + .uleb128 0x53 + .4byte .LASF585 + .byte 0x5 + .uleb128 0x80 + .4byte .LASF586 + .byte 0x5 + .uleb128 0x81 + .4byte .LASF587 + .byte 0x5 + .uleb128 0x82 + .4byte .LASF588 + .byte 0x5 + .uleb128 0x98 + .4byte .LASF589 + .byte 0x5 + .uleb128 0x99 + .4byte .LASF590 + .byte 0x5 + .uleb128 0x9a + .4byte .LASF591 + .byte 0x5 + .uleb128 0xa2 + .4byte .LASF592 + .byte 0x5 + .uleb128 0xa3 + .4byte .LASF593 + .byte 0x5 + .uleb128 0xa4 + .4byte .LASF594 + .byte 0x5 + .uleb128 0xae + .4byte .LASF595 + .byte 0x5 + .uleb128 0xaf + .4byte .LASF596 + .byte 0x5 + .uleb128 0xb0 + .4byte .LASF597 + .byte 0x5 + .uleb128 0xb8 + .4byte .LASF598 + .byte 0x5 + .uleb128 0xb9 + .4byte .LASF599 + .byte 0x5 + .uleb128 0xba + .4byte .LASF600 + .byte 0x5 + .uleb128 0xc4 + .4byte .LASF601 + .byte 0x5 + .uleb128 0xc5 + .4byte .LASF602 + .byte 0x5 + .uleb128 0xc6 + .4byte .LASF603 + .byte 0x5 + .uleb128 0xd4 + .4byte .LASF604 + .byte 0x5 + .uleb128 0xd5 + .4byte .LASF605 + .byte 0x5 + .uleb128 0xd6 + .4byte .LASF606 + .byte 0x5 + .uleb128 0xe6 + .4byte .LASF607 + .byte 0x5 + .uleb128 0xe7 + .4byte .LASF608 + .byte 0x5 + .uleb128 0xe8 + .4byte .LASF609 + .byte 0x5 + .uleb128 0xf6 + .4byte .LASF610 + .byte 0x5 + .uleb128 0xf7 + .4byte .LASF611 + .byte 0x5 + .uleb128 0xf8 + .4byte .LASF612 + .byte 0x5 + .uleb128 0x106 + .4byte .LASF613 + .byte 0x5 + .uleb128 0x107 + .4byte .LASF614 + .byte 0x5 + .uleb128 0x108 + .4byte .LASF615 + .byte 0x5 + .uleb128 0x116 + .4byte .LASF616 + .byte 0x5 + .uleb128 0x117 + .4byte .LASF617 + .byte 0x5 + .uleb128 0x118 + .4byte .LASF618 + .byte 0x5 + .uleb128 0x126 + .4byte .LASF619 + .byte 0x5 + .uleb128 0x127 + .4byte .LASF620 + .byte 0x5 + .uleb128 0x128 + .4byte .LASF621 + .byte 0x5 + .uleb128 0x136 + .4byte .LASF622 + .byte 0x5 + .uleb128 0x137 + .4byte .LASF623 + .byte 0x5 + .uleb128 0x138 + .4byte .LASF624 + .byte 0x5 + .uleb128 0x146 + .4byte .LASF625 + .byte 0x5 + .uleb128 0x147 + .4byte .LASF626 + .byte 0x5 + .uleb128 0x14f + .4byte .LASF627 + .byte 0x5 + .uleb128 0x157 + .4byte .LASF628 + .byte 0x5 + .uleb128 0x15d + .4byte .LASF629 + .byte 0x5 + .uleb128 0x15e + .4byte .LASF630 + .byte 0x5 + .uleb128 0x162 + .4byte .LASF631 + .byte 0x5 + .uleb128 0x166 + .4byte .LASF632 + .byte 0x5 + .uleb128 0x16b + .4byte .LASF633 + .byte 0x5 + .uleb128 0x176 + .4byte .LASF634 + .byte 0x5 + .uleb128 0x180 + .4byte .LASF635 + .byte 0x5 + .uleb128 0x185 + .4byte .LASF636 + .byte 0x5 + .uleb128 0x18c + .4byte .LASF637 + .byte 0x5 + .uleb128 0x18d + .4byte .LASF638 + .byte 0x5 + .uleb128 0x198 + .4byte .LASF639 + .byte 0x5 + .uleb128 0x199 + .4byte .LASF640 + .byte 0x5 + .uleb128 0x1a4 + .4byte .LASF641 + .byte 0x5 + .uleb128 0x1a5 + .4byte .LASF642 + .byte 0x5 + .uleb128 0x1b1 + .4byte .LASF643 + .byte 0x5 + .uleb128 0x1b2 + .4byte .LASF644 + .byte 0x5 + .uleb128 0x1c1 + .4byte .LASF645 + .byte 0x5 + .uleb128 0x1c2 + .4byte .LASF646 + .byte 0 + .section .debug_macro,"G",%progbits,wm4.stddef.h.267.6dda48f8b0edf141523347999dd9ec79,comdat +.Ldebug_macro12: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x10b + .4byte .LASF649 + .byte 0x5 + .uleb128 0x10c + .4byte .LASF650 + .byte 0x5 + .uleb128 0x10d + .4byte .LASF651 + .byte 0x5 + .uleb128 0x10e + .4byte .LASF652 + .byte 0x5 + .uleb128 0x10f + .4byte .LASF653 + .byte 0x5 + .uleb128 0x110 + .4byte .LASF654 + .byte 0x5 + .uleb128 0x111 + .4byte .LASF655 + .byte 0x5 + .uleb128 0x112 + .4byte .LASF656 + .byte 0x5 + .uleb128 0x113 + .4byte .LASF657 + .byte 0x5 + .uleb128 0x114 + .4byte .LASF658 + .byte 0x5 + .uleb128 0x115 + .4byte .LASF659 + .byte 0x5 + .uleb128 0x116 + .4byte .LASF660 + .byte 0x5 + .uleb128 0x117 + .4byte .LASF661 + .byte 0x5 + .uleb128 0x118 + .4byte .LASF662 + .byte 0x5 + .uleb128 0x119 + .4byte .LASF663 + .byte 0x5 + .uleb128 0x11a + .4byte .LASF664 + .byte 0x6 + .uleb128 0x127 + .4byte .LASF665 + .byte 0x6 + .uleb128 0x15d + .4byte .LASF666 + .byte 0x6 + .uleb128 0x19a + .4byte .LASF667 + .byte 0 + .section .debug_macro,"G",%progbits,wm4.inttypes.h.28.684aa7736e7ecc9a6ffc44acc61c7a90,comdat +.Ldebug_macro13: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x1c + .4byte .LASF668 + .byte 0x5 + .uleb128 0x1f + .4byte .LASF669 + .byte 0x5 + .uleb128 0x20 + .4byte .LASF670 + .byte 0x5 + .uleb128 0x21 + .4byte .LASF671 + .byte 0x5 + .uleb128 0x2e + .4byte .LASF672 + .byte 0x5 + .uleb128 0x2f + .4byte .LASF673 + .byte 0x5 + .uleb128 0x30 + .4byte .LASF674 + .byte 0x5 + .uleb128 0x34 + .4byte .LASF675 + .byte 0x5 + .uleb128 0x35 + .4byte .LASF676 + .byte 0x5 + .uleb128 0x36 + .4byte .LASF677 + .byte 0x5 + .uleb128 0x37 + .4byte .LASF678 + .byte 0x5 + .uleb128 0x38 + .4byte .LASF679 + .byte 0x5 + .uleb128 0x39 + .4byte .LASF680 + .byte 0x5 + .uleb128 0x3e + .4byte .LASF681 + .byte 0x5 + .uleb128 0x3f + .4byte .LASF682 + .byte 0x5 + .uleb128 0x40 + .4byte .LASF683 + .byte 0x5 + .uleb128 0x41 + .4byte .LASF684 + .byte 0x5 + .uleb128 0x42 + .4byte .LASF685 + .byte 0x5 + .uleb128 0x47 + .4byte .LASF686 + .byte 0x5 + .uleb128 0x48 + .4byte .LASF687 + .byte 0x5 + .uleb128 0x49 + .4byte .LASF688 + .byte 0x5 + .uleb128 0x4a + .4byte .LASF689 + .byte 0x5 + .uleb128 0x4b + .4byte .LASF690 + .byte 0x5 + .uleb128 0x4c + .4byte .LASF691 + .byte 0x5 + .uleb128 0x51 + .4byte .LASF692 + .byte 0x5 + .uleb128 0x52 + .4byte .LASF693 + .byte 0x5 + .uleb128 0x53 + .4byte .LASF694 + .byte 0x5 + .uleb128 0x54 + .4byte .LASF695 + .byte 0x5 + .uleb128 0x55 + .4byte .LASF696 + .byte 0x5 + .uleb128 0x59 + .4byte .LASF697 + .byte 0x5 + .uleb128 0x5a + .4byte .LASF698 + .byte 0x5 + .uleb128 0x5b + .4byte .LASF699 + .byte 0x5 + .uleb128 0x5c + .4byte .LASF700 + .byte 0x5 + .uleb128 0x5d + .4byte .LASF701 + .byte 0x5 + .uleb128 0x5e + .4byte .LASF702 + .byte 0x5 + .uleb128 0x63 + .4byte .LASF703 + .byte 0x5 + .uleb128 0x64 + .4byte .LASF704 + .byte 0x5 + .uleb128 0x65 + .4byte .LASF705 + .byte 0x5 + .uleb128 0x66 + .4byte .LASF706 + .byte 0x5 + .uleb128 0x67 + .4byte .LASF707 + .byte 0x5 + .uleb128 0x6c + .4byte .LASF708 + .byte 0x5 + .uleb128 0x6d + .4byte .LASF709 + .byte 0x5 + .uleb128 0x6e + .4byte .LASF710 + .byte 0x5 + .uleb128 0x6f + .4byte .LASF711 + .byte 0x5 + .uleb128 0x70 + .4byte .LASF712 + .byte 0x5 + .uleb128 0x71 + .4byte .LASF713 + .byte 0x5 + .uleb128 0x74 + .4byte .LASF714 + .byte 0x5 + .uleb128 0x75 + .4byte .LASF715 + .byte 0x5 + .uleb128 0x76 + .4byte .LASF716 + .byte 0x5 + .uleb128 0x77 + .4byte .LASF717 + .byte 0x5 + .uleb128 0x78 + .4byte .LASF718 + .byte 0x5 + .uleb128 0x79 + .4byte .LASF719 + .byte 0x5 + .uleb128 0x7b + .4byte .LASF720 + .byte 0x5 + .uleb128 0x7c + .4byte .LASF721 + .byte 0x5 + .uleb128 0x7d + .4byte .LASF722 + .byte 0x5 + .uleb128 0x7e + .4byte .LASF723 + .byte 0x5 + .uleb128 0x7f + .4byte .LASF724 + .byte 0x5 + .uleb128 0x82 + .4byte .LASF725 + .byte 0x5 + .uleb128 0x83 + .4byte .LASF726 + .byte 0x5 + .uleb128 0x84 + .4byte .LASF727 + .byte 0x5 + .uleb128 0x85 + .4byte .LASF728 + .byte 0x5 + .uleb128 0x86 + .4byte .LASF729 + .byte 0x5 + .uleb128 0x87 + .4byte .LASF730 + .byte 0x5 + .uleb128 0x89 + .4byte .LASF731 + .byte 0x5 + .uleb128 0x8a + .4byte .LASF732 + .byte 0x5 + .uleb128 0x8b + .4byte .LASF733 + .byte 0x5 + .uleb128 0x8c + .4byte .LASF734 + .byte 0x5 + .uleb128 0x8d + .4byte .LASF735 + .byte 0x5 + .uleb128 0x90 + .4byte .LASF736 + .byte 0x5 + .uleb128 0x91 + .4byte .LASF737 + .byte 0x5 + .uleb128 0x92 + .4byte .LASF738 + .byte 0x5 + .uleb128 0x93 + .4byte .LASF739 + .byte 0x5 + .uleb128 0x94 + .4byte .LASF740 + .byte 0x5 + .uleb128 0x95 + .4byte .LASF741 + .byte 0x5 + .uleb128 0x97 + .4byte .LASF742 + .byte 0x5 + .uleb128 0x98 + .4byte .LASF743 + .byte 0x5 + .uleb128 0x99 + .4byte .LASF744 + .byte 0x5 + .uleb128 0x9a + .4byte .LASF745 + .byte 0x5 + .uleb128 0x9b + .4byte .LASF746 + .byte 0x5 + .uleb128 0x9e + .4byte .LASF747 + .byte 0x5 + .uleb128 0x9f + .4byte .LASF748 + .byte 0x5 + .uleb128 0xa0 + .4byte .LASF749 + .byte 0x5 + .uleb128 0xa1 + .4byte .LASF750 + .byte 0x5 + .uleb128 0xa2 + .4byte .LASF751 + .byte 0x5 + .uleb128 0xa3 + .4byte .LASF752 + .byte 0x5 + .uleb128 0xa5 + .4byte .LASF753 + .byte 0x5 + .uleb128 0xa6 + .4byte .LASF754 + .byte 0x5 + .uleb128 0xa7 + .4byte .LASF755 + .byte 0x5 + .uleb128 0xa8 + .4byte .LASF756 + .byte 0x5 + .uleb128 0xa9 + .4byte .LASF757 + .byte 0x5 + .uleb128 0xaa + .4byte .LASF758 + .byte 0x5 + .uleb128 0xac + .4byte .LASF759 + .byte 0x5 + .uleb128 0xad + .4byte .LASF760 + .byte 0x5 + .uleb128 0xae + .4byte .LASF761 + .byte 0x5 + .uleb128 0xaf + .4byte .LASF762 + .byte 0x5 + .uleb128 0xb0 + .4byte .LASF763 + .byte 0x5 + .uleb128 0xb3 + .4byte .LASF764 + .byte 0x5 + .uleb128 0xb4 + .4byte .LASF765 + .byte 0x5 + .uleb128 0xb5 + .4byte .LASF766 + .byte 0x5 + .uleb128 0xb6 + .4byte .LASF767 + .byte 0x5 + .uleb128 0xb7 + .4byte .LASF768 + .byte 0x5 + .uleb128 0xb8 + .4byte .LASF769 + .byte 0x5 + .uleb128 0xba + .4byte .LASF770 + .byte 0x5 + .uleb128 0xbb + .4byte .LASF771 + .byte 0x5 + .uleb128 0xbc + .4byte .LASF772 + .byte 0x5 + .uleb128 0xbd + .4byte .LASF773 + .byte 0x5 + .uleb128 0xbe + .4byte .LASF774 + .byte 0x5 + .uleb128 0xc1 + .4byte .LASF775 + .byte 0x5 + .uleb128 0xc2 + .4byte .LASF776 + .byte 0x5 + .uleb128 0xc3 + .4byte .LASF777 + .byte 0x5 + .uleb128 0xc4 + .4byte .LASF778 + .byte 0x5 + .uleb128 0xc5 + .4byte .LASF779 + .byte 0x5 + .uleb128 0xc6 + .4byte .LASF780 + .byte 0x5 + .uleb128 0xc8 + .4byte .LASF781 + .byte 0x5 + .uleb128 0xc9 + .4byte .LASF782 + .byte 0x5 + .uleb128 0xca + .4byte .LASF783 + .byte 0x5 + .uleb128 0xcb + .4byte .LASF784 + .byte 0x5 + .uleb128 0xcc + .4byte .LASF785 + .byte 0x5 + .uleb128 0xd0 + .4byte .LASF786 + .byte 0x5 + .uleb128 0xd1 + .4byte .LASF787 + .byte 0x5 + .uleb128 0xd3 + .4byte .LASF788 + .byte 0x5 + .uleb128 0xd4 + .4byte .LASF789 + .byte 0x5 + .uleb128 0xd5 + .4byte .LASF790 + .byte 0x5 + .uleb128 0xd6 + .4byte .LASF791 + .byte 0x5 + .uleb128 0xd9 + .4byte .LASF792 + .byte 0x5 + .uleb128 0xda + .4byte .LASF793 + .byte 0x5 + .uleb128 0xdb + .4byte .LASF794 + .byte 0x5 + .uleb128 0xdc + .4byte .LASF795 + .byte 0x5 + .uleb128 0xdd + .4byte .LASF796 + .byte 0x5 + .uleb128 0xde + .4byte .LASF797 + .byte 0x5 + .uleb128 0xe0 + .4byte .LASF798 + .byte 0x5 + .uleb128 0xe1 + .4byte .LASF799 + .byte 0x5 + .uleb128 0xe2 + .4byte .LASF800 + .byte 0x5 + .uleb128 0xe3 + .4byte .LASF801 + .byte 0x5 + .uleb128 0xe4 + .4byte .LASF802 + .byte 0x5 + .uleb128 0xe8 + .4byte .LASF803 + .byte 0x5 + .uleb128 0xe9 + .4byte .LASF804 + .byte 0x5 + .uleb128 0xea + .4byte .LASF805 + .byte 0x5 + .uleb128 0xeb + .4byte .LASF806 + .byte 0x5 + .uleb128 0xec + .4byte .LASF807 + .byte 0x5 + .uleb128 0xed + .4byte .LASF808 + .byte 0x5 + .uleb128 0xef + .4byte .LASF809 + .byte 0x5 + .uleb128 0xf0 + .4byte .LASF810 + .byte 0x5 + .uleb128 0xf1 + .4byte .LASF811 + .byte 0x5 + .uleb128 0xf2 + .4byte .LASF812 + .byte 0x5 + .uleb128 0xf3 + .4byte .LASF813 + .byte 0x5 + .uleb128 0xf7 + .4byte .LASF814 + .byte 0x5 + .uleb128 0xf8 + .4byte .LASF815 + .byte 0x5 + .uleb128 0xf9 + .4byte .LASF816 + .byte 0x5 + .uleb128 0xfa + .4byte .LASF817 + .byte 0x5 + .uleb128 0xfb + .4byte .LASF818 + .byte 0x5 + .uleb128 0xfc + .4byte .LASF819 + .byte 0x5 + .uleb128 0xfe + .4byte .LASF820 + .byte 0x5 + .uleb128 0xff + .4byte .LASF821 + .byte 0x5 + .uleb128 0x100 + .4byte .LASF822 + .byte 0x5 + .uleb128 0x101 + .4byte .LASF823 + .byte 0x5 + .uleb128 0x102 + .4byte .LASF824 + .byte 0x5 + .uleb128 0x10a + .4byte .LASF825 + .byte 0x5 + .uleb128 0x10b + .4byte .LASF826 + .byte 0x5 + .uleb128 0x111 + .4byte .LASF827 + .byte 0x5 + .uleb128 0x112 + .4byte .LASF828 + .byte 0x5 + .uleb128 0x113 + .4byte .LASF829 + .byte 0x5 + .uleb128 0x114 + .4byte .LASF830 + .byte 0x5 + .uleb128 0x115 + .4byte .LASF831 + .byte 0x5 + .uleb128 0x116 + .4byte .LASF832 + .byte 0x5 + .uleb128 0x118 + .4byte .LASF833 + .byte 0x5 + .uleb128 0x119 + .4byte .LASF834 + .byte 0x5 + .uleb128 0x11a + .4byte .LASF835 + .byte 0x5 + .uleb128 0x11b + .4byte .LASF836 + .byte 0x5 + .uleb128 0x11c + .4byte .LASF837 + .byte 0x5 + .uleb128 0x126 + .4byte .LASF838 + .byte 0x5 + .uleb128 0x127 + .4byte .LASF839 + .byte 0x5 + .uleb128 0x12a + .4byte .LASF840 + .byte 0x5 + .uleb128 0x12b + .4byte .LASF841 + .byte 0x5 + .uleb128 0x12c + .4byte .LASF842 + .byte 0x5 + .uleb128 0x12d + .4byte .LASF843 + .byte 0x5 + .uleb128 0x12e + .4byte .LASF844 + .byte 0x5 + .uleb128 0x12f + .4byte .LASF845 + .byte 0x5 + .uleb128 0x131 + .4byte .LASF846 + .byte 0x5 + .uleb128 0x132 + .4byte .LASF847 + .byte 0x5 + .uleb128 0x133 + .4byte .LASF848 + .byte 0x5 + .uleb128 0x134 + .4byte .LASF849 + .byte 0x5 + .uleb128 0x135 + .4byte .LASF850 + .byte 0 + .section .debug_macro,"G",%progbits,wm4.rcc.h.37.5794a95d344d56391987aa7090658f72,comdat +.Ldebug_macro14: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x25 + .4byte .LASF851 + .byte 0x5 + .uleb128 0x26 + .4byte .LASF852 + .byte 0x5 + .uleb128 0x2a + .4byte .LASF853 + .byte 0x5 + .uleb128 0x2b + .4byte .LASF854 + .byte 0x5 + .uleb128 0x2e + .4byte .LASF855 + .byte 0x5 + .uleb128 0x2f + .4byte .LASF856 + .byte 0x5 + .uleb128 0x32 + .4byte .LASF857 + .byte 0x5 + .uleb128 0x33 + .4byte .LASF858 + .byte 0x5 + .uleb128 0x37 + .4byte .LASF859 + .byte 0x5 + .uleb128 0x38 + .4byte .LASF860 + .byte 0x5 + .uleb128 0x3b + .4byte .LASF861 + .byte 0x5 + .uleb128 0x3c + .4byte .LASF862 + .byte 0x5 + .uleb128 0x3f + .4byte .LASF863 + .byte 0x5 + .uleb128 0x40 + .4byte .LASF864 + .byte 0x5 + .uleb128 0x43 + .4byte .LASF865 + .byte 0x5 + .uleb128 0x44 + .4byte .LASF866 + .byte 0x5 + .uleb128 0x47 + .4byte .LASF867 + .byte 0x5 + .uleb128 0x48 + .4byte .LASF868 + .byte 0x5 + .uleb128 0x49 + .4byte .LASF869 + .byte 0x5 + .uleb128 0x4b + .4byte .LASF870 + .byte 0x5 + .uleb128 0x4c + .4byte .LASF871 + .byte 0x5 + .uleb128 0x4d + .4byte .LASF872 + .byte 0x5 + .uleb128 0x4f + .4byte .LASF873 + .byte 0x5 + .uleb128 0x50 + .4byte .LASF874 + .byte 0x5 + .uleb128 0x51 + .4byte .LASF875 + .byte 0x5 + .uleb128 0x53 + .4byte .LASF876 + .byte 0x5 + .uleb128 0x54 + .4byte .LASF877 + .byte 0x5 + .uleb128 0x55 + .4byte .LASF878 + .byte 0x5 + .uleb128 0x57 + .4byte .LASF879 + .byte 0x5 + .uleb128 0x58 + .4byte .LASF880 + .byte 0x5 + .uleb128 0x59 + .4byte .LASF881 + .byte 0x5 + .uleb128 0x5d + .4byte .LASF882 + .byte 0x5 + .uleb128 0x5e + .4byte .LASF883 + .byte 0x5 + .uleb128 0x61 + .4byte .LASF884 + .byte 0x5 + .uleb128 0x62 + .4byte .LASF885 + .byte 0x5 + .uleb128 0x63 + .4byte .LASF886 + .byte 0x5 + .uleb128 0x65 + .4byte .LASF887 + .byte 0x5 + .uleb128 0x66 + .4byte .LASF888 + .byte 0x5 + .uleb128 0x68 + .4byte .LASF889 + .byte 0x5 + .uleb128 0x69 + .4byte .LASF890 + .byte 0x5 + .uleb128 0x6a + .4byte .LASF891 + .byte 0x5 + .uleb128 0x6c + .4byte .LASF892 + .byte 0x5 + .uleb128 0x6d + .4byte .LASF893 + .byte 0x5 + .uleb128 0x70 + .4byte .LASF894 + .byte 0x5 + .uleb128 0x71 + .4byte .LASF895 + .byte 0x5 + .uleb128 0x74 + .4byte .LASF896 + .byte 0x5 + .uleb128 0x75 + .4byte .LASF897 + .byte 0x5 + .uleb128 0x78 + .4byte .LASF898 + .byte 0x5 + .uleb128 0x7a + .4byte .LASF899 + .byte 0x5 + .uleb128 0x7b + .4byte .LASF900 + .byte 0x5 + .uleb128 0x7e + .4byte .LASF901 + .byte 0x5 + .uleb128 0x80 + .4byte .LASF902 + .byte 0x5 + .uleb128 0x81 + .4byte .LASF903 + .byte 0x5 + .uleb128 0x84 + .4byte .LASF904 + .byte 0x5 + .uleb128 0x86 + .4byte .LASF905 + .byte 0x5 + .uleb128 0x87 + .4byte .LASF906 + .byte 0x5 + .uleb128 0x88 + .4byte .LASF907 + .byte 0x5 + .uleb128 0x8c + .4byte .LASF908 + .byte 0x5 + .uleb128 0x8d + .4byte .LASF909 + .byte 0x5 + .uleb128 0x90 + .4byte .LASF910 + .byte 0x5 + .uleb128 0x91 + .4byte .LASF911 + .byte 0x5 + .uleb128 0x93 + .4byte .LASF912 + .byte 0x5 + .uleb128 0x94 + .4byte .LASF913 + .byte 0x5 + .uleb128 0x96 + .4byte .LASF914 + .byte 0x5 + .uleb128 0x97 + .4byte .LASF915 + .byte 0 + .section .debug_macro,"G",%progbits,wm4.stdbool.h.29.eb124ecb79face0a1d832a352bec45e0,comdat +.Ldebug_macro15: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x1d + .4byte .LASF917 + .byte 0x5 + .uleb128 0x21 + .4byte .LASF918 + .byte 0x5 + .uleb128 0x23 + .4byte .LASF919 + .byte 0x5 + .uleb128 0x24 + .4byte .LASF920 + .byte 0x5 + .uleb128 0x32 + .4byte .LASF921 + .byte 0 + .section .debug_macro,"G",%progbits,wm4.gpio.h.21.3348067d9334353ab1797d9b1fa5e257,comdat +.Ldebug_macro16: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x15 + .4byte .LASF922 + .byte 0x5 + .uleb128 0x16 + .4byte .LASF923 + .byte 0x5 + .uleb128 0x17 + .4byte .LASF924 + .byte 0x5 + .uleb128 0x19 + .4byte .LASF925 + .byte 0x5 + .uleb128 0x1a + .4byte .LASF926 + .byte 0x5 + .uleb128 0x1b + .4byte .LASF927 + .byte 0x5 + .uleb128 0x1e + .4byte .LASF928 + .byte 0x5 + .uleb128 0x20 + .4byte .LASF929 + .byte 0x5 + .uleb128 0x22 + .4byte .LASF930 + .byte 0x5 + .uleb128 0x24 + .4byte .LASF931 + .byte 0 + .section .debug_macro,"G",%progbits,wm4.usart.h.2.85ce7dcad34c06b8629bb558bcbbd125,comdat +.Ldebug_macro17: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x2 + .4byte .LASF932 + .byte 0x5 + .uleb128 0x10 + .4byte .LASF933 + .byte 0x5 + .uleb128 0x11 + .4byte .LASF934 + .byte 0x5 + .uleb128 0x15 + .4byte .LASF935 + .byte 0x5 + .uleb128 0x16 + .4byte .LASF936 + .byte 0x5 + .uleb128 0x19 + .4byte .LASF937 + .byte 0x5 + .uleb128 0x1a + .4byte .LASF938 + .byte 0x5 + .uleb128 0x1e + .4byte .LASF939 + .byte 0x5 + .uleb128 0x1f + .4byte .LASF940 + .byte 0x5 + .uleb128 0x23 + .4byte .LASF941 + .byte 0x5 + .uleb128 0x24 + .4byte .LASF942 + .byte 0x5 + .uleb128 0x27 + .4byte .LASF943 + .byte 0x5 + .uleb128 0x28 + .4byte .LASF944 + .byte 0x5 + .uleb128 0x2b + .4byte .LASF945 + .byte 0x5 + .uleb128 0x2c + .4byte .LASF946 + .byte 0x5 + .uleb128 0x2f + .4byte .LASF947 + .byte 0x5 + .uleb128 0x30 + .4byte .LASF948 + .byte 0x5 + .uleb128 0x32 + .4byte .LASF949 + .byte 0x5 + .uleb128 0x33 + .4byte .LASF950 + .byte 0 + .section .debug_line,"",%progbits +.Ldebug_line0: + .section .debug_str,"MS",%progbits,1 +.LASF735: + .ascii "SCNxLEAST16 __SCN16LEAST(x)\000" +.LASF636: + .ascii "WINT_MIN (__WINT_MIN__)\000" +.LASF186: + .ascii "__DECIMAL_DIG__ 17\000" +.LASF354: + .ascii "__UHA_FBIT__ 8\000" +.LASF815: + .ascii "PRIiFAST64 __PRI64FAST(i)\000" +.LASF952: + .ascii "unsigned char\000" +.LASF225: + .ascii "__FLT64_DENORM_MIN__ 4.9406564584124654e-324F64\000" +.LASF76: + .ascii "__WCHAR_MIN__ 0U\000" +.LASF375: + .ascii "__GCC_ATOMIC_WCHAR_T_LOCK_FREE 2\000" +.LASF841: + .ascii "PRIiPTR __PRIPTR(i)\000" +.LASF367: + .ascii "__CHAR_UNSIGNED__ 1\000" +.LASF227: + .ascii "__FLT64_HAS_INFINITY__ 1\000" +.LASF752: + .ascii "__SCN32FAST(x) __FAST32 __STRINGIFY(x)\000" +.LASF318: + .ascii "__LLACCUM_MIN__ (-0X1P31LLK-0X1P31LLK)\000" +.LASF338: + .ascii "__UHQ_FBIT__ 16\000" +.LASF310: + .ascii "__LACCUM_EPSILON__ 0x1P-31LK\000" +.LASF810: + .ascii "SCNiLEAST64 __SCN64LEAST(i)\000" +.LASF79: + .ascii "__PTRDIFF_MAX__ 0x7fffffff\000" +.LASF542: + .ascii "_LONG_DOUBLE long double\000" +.LASF592: + .ascii "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)\000" +.LASF78: + .ascii "__WINT_MIN__ 0U\000" +.LASF90: + .ascii "__INTMAX_MAX__ 0x7fffffffffffffffLL\000" +.LASF993: + .ascii "GPIO_MODE_AF\000" +.LASF335: + .ascii "__TQ_IBIT__ 0\000" +.LASF220: + .ascii "__FLT64_DECIMAL_DIG__ 17\000" +.LASF14: + .ascii "__ATOMIC_CONSUME 1\000" +.LASF311: + .ascii "__ULACCUM_FBIT__ 32\000" +.LASF75: + .ascii "__WCHAR_MAX__ 0xffffffffU\000" +.LASF891: + .ascii "RCC_CFGR_MCO1PRE_DIV2 (0b100)\000" +.LASF514: + .ascii "__int20__\000" +.LASF914: + .ascii "RCC_APB1ENR_TIM4_BIT 2\000" +.LASF950: + .ascii "USART_BRR_FRACTION_MASK (0b111)\000" +.LASF18: + .ascii "__SIZEOF_LONG_LONG__ 8\000" +.LASF169: + .ascii "__DBL_MAX_10_EXP__ 308\000" +.LASF214: + .ascii "__FLT64_MANT_DIG__ 53\000" +.LASF258: + .ascii "__FRACT_MIN__ (-0.5R-0.5R)\000" +.LASF324: + .ascii "__ULLACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULLK\000" +.LASF294: + .ascii "__USACCUM_MAX__ 0XFFFFP-8UHK\000" +.LASF246: + .ascii "__SFRACT_FBIT__ 7\000" +.LASF94: + .ascii "__INTMAX_WIDTH__ 64\000" +.LASF932: + .ascii "USART_H_ \000" +.LASF448: + .ascii "__ARM_FEATURE_BF16_SCALAR_ARITHMETIC\000" +.LASF331: + .ascii "__SQ_IBIT__ 0\000" +.LASF28: + .ascii "__ORDER_PDP_ENDIAN__ 3412\000" +.LASF34: + .ascii "__SIZE_TYPE__ unsigned int\000" +.LASF915: + .ascii "RCC_APB1ENR_TIM4_ENABLE (1 << RCC_APB1ENR_TIM4_BIT)" + .ascii "\000" +.LASF621: + .ascii "UINT_FAST32_MAX (__UINT_FAST32_MAX__)\000" +.LASF43: + .ascii "__INT8_TYPE__ signed char\000" +.LASF206: + .ascii "__FLT32_MIN__ 1.1754943508222875e-38F32\000" +.LASF293: + .ascii "__USACCUM_MIN__ 0.0UHK\000" +.LASF716: + .ascii "PRIo16 __PRI16(o)\000" +.LASF203: + .ascii "__FLT32_DECIMAL_DIG__ 9\000" +.LASF379: + .ascii "__GCC_ATOMIC_LLONG_LOCK_FREE 1\000" +.LASF182: + .ascii "__LDBL_MIN_EXP__ (-1021)\000" +.LASF180: + .ascii "__LDBL_MANT_DIG__ 53\000" +.LASF119: + .ascii "__UINT8_C(c) c\000" +.LASF44: + .ascii "__INT16_TYPE__ short int\000" +.LASF714: + .ascii "PRId16 __PRI16(d)\000" +.LASF221: + .ascii "__FLT64_MAX__ 1.7976931348623157e+308F64\000" +.LASF492: + .ascii "__ISO_C_VISIBLE 2011\000" +.LASF780: + .ascii "PRIXFAST32 __PRI32FAST(X)\000" +.LASF851: + .ascii "RCC_BASE_ADDR (0x40023800U)\000" +.LASF526: + .ascii "__INT8 \"hh\"\000" +.LASF47: + .ascii "__UINT8_TYPE__ unsigned char\000" +.LASF368: + .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1\000" +.LASF599: + .ascii "INT_LEAST16_MAX (__INT_LEAST16_MAX__)\000" +.LASF704: + .ascii "SCNiFAST8 __SCN8FAST(i)\000" +.LASF791: + .ascii "__SCN64FAST(x) __FAST64 __STRINGIFY(x)\000" +.LASF617: + .ascii "INT_FAST16_MAX (__INT_FAST16_MAX__)\000" +.LASF281: + .ascii "__ULLFRACT_FBIT__ 64\000" +.LASF675: + .ascii "PRId8 __PRI8(d)\000" +.LASF468: + .ascii "_LDBL_EQ_DBL 1\000" +.LASF676: + .ascii "PRIi8 __PRI8(i)\000" +.LASF62: + .ascii "__INT_FAST64_TYPE__ long long int\000" +.LASF37: + .ascii "__WINT_TYPE__ unsigned int\000" +.LASF679: + .ascii "PRIx8 __PRI8(x)\000" +.LASF590: + .ascii "INT8_MAX (__INT8_MAX__)\000" +.LASF928: + .ascii "PORT(port) (((port) - 'A') << 8)\000" +.LASF631: + .ascii "PTRDIFF_MAX (__PTRDIFF_MAX__)\000" +.LASF839: + .ascii "__SCNPTR(x) __STRINGIFY(x)\000" +.LASF202: + .ascii "__FLT32_MAX_10_EXP__ 38\000" +.LASF899: + .ascii "RCC_CFGR_HPRE_BIT 4\000" +.LASF683: + .ascii "SCNo8 __SCN8(o)\000" +.LASF1004: + .ascii "clockOutPin\000" +.LASF765: + .ascii "PRIiLEAST32 __PRI32LEAST(i)\000" +.LASF254: + .ascii "__USFRACT_MAX__ 0XFFP-8UHR\000" +.LASF212: + .ascii "__FP_FAST_FMAF32 1\000" +.LASF140: + .ascii "__UINTPTR_MAX__ 0xffffffffU\000" +.LASF666: + .ascii "__need_wchar_t\000" +.LASF199: + .ascii "__FLT32_MIN_EXP__ (-125)\000" +.LASF1005: + .ascii "GNU C2X 12.3.1 20230626 -mcpu=cortex-m4 -mthumb -mf" + .ascii "loat-abi=hard -mfpu=fpv4-sp-d16 -march=armv7e-m+fp " + .ascii "-g3 -ggdb -O0 -std=c2x -ffunction-sections -fdata-s" + .ascii "ections -fno-builtin -fno-common\000" +.LASF861: + .ascii "RCC_CR_HSEON_BIT 16\000" +.LASF596: + .ascii "INT16_MAX (__INT16_MAX__)\000" +.LASF271: + .ascii "__ULFRACT_FBIT__ 32\000" +.LASF217: + .ascii "__FLT64_MIN_10_EXP__ (-307)\000" +.LASF32: + .ascii "__GNUC_EXECUTION_CHARSET_NAME \"UTF-8\"\000" +.LASF584: + .ascii "__int_fast32_t_defined 1\000" +.LASF133: + .ascii "__INT_FAST64_WIDTH__ 64\000" +.LASF882: + .ascii "RCC_CFGR_PPRE_DIV_NONE 0\000" +.LASF660: + .ascii "___int_wchar_t_h \000" +.LASF850: + .ascii "SCNxPTR __SCNPTR(x)\000" +.LASF844: + .ascii "PRIxPTR __PRIPTR(x)\000" +.LASF639: + .ascii "INT16_C(x) __INT16_C(x)\000" +.LASF250: + .ascii "__SFRACT_EPSILON__ 0x1P-7HR\000" +.LASF888: + .ascii "RCC_CFGR_MCO1_MASK (0b11)\000" +.LASF113: + .ascii "__INT32_C(c) c ## L\000" +.LASF27: + .ascii "__ORDER_BIG_ENDIAN__ 4321\000" +.LASF743: + .ascii "SCNiFAST16 __SCN16FAST(i)\000" +.LASF330: + .ascii "__SQ_FBIT__ 31\000" +.LASF830: + .ascii "PRIuMAX __PRIMAX(u)\000" +.LASF365: + .ascii "__NO_INLINE__ 1\000" +.LASF589: + .ascii "INT8_MIN (-__INT8_MAX__ - 1)\000" +.LASF786: + .ascii "__PRI64(x) __INT64 __STRINGIFY(x)\000" +.LASF566: + .ascii "_UINT16_T_DECLARED \000" +.LASF687: + .ascii "PRIiLEAST8 __PRI8LEAST(i)\000" +.LASF561: + .ascii "_SYS__STDINT_H \000" +.LASF611: + .ascii "INT_LEAST64_MAX (__INT_LEAST64_MAX__)\000" +.LASF216: + .ascii "__FLT64_MIN_EXP__ (-1021)\000" +.LASF749: + .ascii "__PRI32LEAST(x) __LEAST32 __STRINGIFY(x)\000" +.LASF88: + .ascii "__PTRDIFF_WIDTH__ 32\000" +.LASF886: + .ascii "RCC_CFGR_MCO1_PLL (0b11)\000" +.LASF134: + .ascii "__UINT_FAST8_MAX__ 0xffffffffU\000" +.LASF949: + .ascii "USART_BRR_FRACTION_BIT 0\000" +.LASF541: + .ascii "_NOTHROW \000" +.LASF601: + .ascii "INT32_MIN (-__INT32_MAX__ - 1)\000" +.LASF307: + .ascii "__LACCUM_IBIT__ 32\000" +.LASF593: + .ascii "INT_LEAST8_MAX (__INT_LEAST8_MAX__)\000" +.LASF901: + .ascii "RCC_CFGR_SWS_PLL (0b10)\000" +.LASF954: + .ascii "__uint8_t\000" +.LASF81: + .ascii "__SCHAR_WIDTH__ 8\000" +.LASF456: + .ascii "__NEWLIB_H__ 1\000" +.LASF129: + .ascii "__INT_FAST16_WIDTH__ 32\000" +.LASF422: + .ascii "__VFP_FP__ 1\000" +.LASF536: + .ascii "__LEAST32 \"l\"\000" +.LASF529: + .ascii "__INT64 \"ll\"\000" +.LASF138: + .ascii "__INTPTR_MAX__ 0x7fffffff\000" +.LASF981: + .ascii "AHB2LPENR\000" +.LASF500: + .ascii "__RAND_MAX\000" +.LASF135: + .ascii "__UINT_FAST16_MAX__ 0xffffffffU\000" +.LASF610: + .ascii "INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)\000" +.LASF911: + .ascii "RCC_APB1ENR_PWREN_CLOCK_ENABLE (1 << RCC_APB1ENR_PW" + .ascii "REN_BIT)\000" +.LASF487: + .ascii "__GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_M" + .ascii "INOR__ >= ((maj) << 16) + (min))\000" +.LASF653: + .ascii "_T_WCHAR \000" +.LASF576: + .ascii "_INTPTR_T_DECLARED \000" +.LASF475: + .ascii "_WANT_IO_LONG_LONG 1\000" +.LASF243: + .ascii "__FLT32X_HAS_INFINITY__ 1\000" +.LASF619: + .ascii "INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)\000" +.LASF673: + .ascii "__SCN8LEAST(x) __LEAST8 __STRINGIFY(x)\000" +.LASF856: + .ascii "RCC_CR_PLLON_ON (1 << RCC_CR_PLLON_BIT)\000" +.LASF55: + .ascii "__UINT_LEAST8_TYPE__ unsigned char\000" +.LASF728: + .ascii "PRIuLEAST16 __PRI16LEAST(u)\000" +.LASF296: + .ascii "__ACCUM_FBIT__ 15\000" +.LASF792: + .ascii "PRId64 __PRI64(d)\000" +.LASF875: + .ascii "RCC_PLLCFGR_PLLP(p) ((p & RCC_PLLCFGR_PLLP_MASK) <<" + .ascii " RCC_PLLCFGR_PLLP_BIT)\000" +.LASF302: + .ascii "__UACCUM_IBIT__ 16\000" +.LASF957: + .ascii "long int\000" +.LASF720: + .ascii "SCNd16 __SCN16(d)\000" +.LASF132: + .ascii "__INT_FAST64_MAX__ 0x7fffffffffffffffLL\000" +.LASF236: + .ascii "__FLT32X_DECIMAL_DIG__ 17\000" +.LASF173: + .ascii "__DBL_MIN__ ((double)2.2250738585072014e-308L)\000" +.LASF244: + .ascii "__FLT32X_HAS_QUIET_NAN__ 1\000" +.LASF773: + .ascii "SCNuLEAST32 __SCN32LEAST(u)\000" +.LASF240: + .ascii "__FLT32X_EPSILON__ 2.2204460492503131e-16F32x\000" +.LASF1002: + .ascii "txPin\000" +.LASF881: + .ascii "RCC_PLLCFGR_PLLM(m) ((m & RCC_PLLCFGR_PLLM_MASK) <<" + .ascii " RCC_PLLCFGR_PLLM_BIT)\000" +.LASF59: + .ascii "__INT_FAST8_TYPE__ int\000" +.LASF545: + .ascii "_NOINLINE __attribute__ ((__noinline__))\000" +.LASF358: + .ascii "__UDA_FBIT__ 32\000" +.LASF775: + .ascii "PRIdFAST32 __PRI32FAST(d)\000" +.LASF93: + .ascii "__UINTMAX_C(c) c ## ULL\000" +.LASF867: + .ascii "RCC_PLLCFGR_PLLQ_BIT 24\000" +.LASF31: + .ascii "__SIZEOF_POINTER__ 4\000" +.LASF622: + .ascii "INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)\000" +.LASF371: + .ascii "__GCC_ATOMIC_BOOL_LOCK_FREE 2\000" +.LASF906: + .ascii "RCC_CFGR_SW_MASK (0b11)\000" +.LASF432: + .ascii "__ARM_NEON__\000" +.LASF588: + .ascii "UINTPTR_MAX (__UINTPTR_MAX__)\000" +.LASF201: + .ascii "__FLT32_MAX_EXP__ 128\000" +.LASF825: + .ascii "__PRIMAX(x) __STRINGIFY(ll ##x)\000" +.LASF435: + .ascii "__THUMB_INTERWORK__ 1\000" +.LASF284: + .ascii "__ULLFRACT_MAX__ 0XFFFFFFFFFFFFFFFFP-64ULLR\000" +.LASF940: + .ascii "USART_SR_RXNE_READY (1 <> 8)\000" +.LASF198: + .ascii "__FLT32_DIG__ 6\000" +.LASF890: + .ascii "RCC_CFGR_MCO1PRE_DIV4 (0b110)\000" +.LASF912: + .ascii "RCC_APB1ENR_USART2EN_BIT 17\000" +.LASF897: + .ascii "RCC_CFGR_PPRE1_MASK (0b111)\000" +.LASF646: + .ascii "UINTMAX_C(x) __UINTMAX_C(x)\000" +.LASF624: + .ascii "UINT_FAST64_MAX (__UINT_FAST64_MAX__)\000" +.LASF555: + .ascii "___int64_t_defined 1\000" +.LASF193: + .ascii "__LDBL_HAS_DENORM__ 1\000" +.LASF384: + .ascii "__HAVE_SPECULATION_SAFE_VALUE 1\000" +.LASF286: + .ascii "__SACCUM_FBIT__ 7\000" +.LASF734: + .ascii "SCNuLEAST16 __SCN16LEAST(u)\000" +.LASF971: + .ascii "APB1RSTR\000" +.LASF298: + .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" +.LASF393: + .ascii "__ARM_FEATURE_CRYPTO\000" +.LASF977: + .ascii "APB1ENR\000" +.LASF698: + .ascii "PRIiFAST8 __PRI8FAST(i)\000" +.LASF742: + .ascii "SCNdFAST16 __SCN16FAST(d)\000" +.LASF887: + .ascii "RCC_CFGR_MCO1_BIT 21\000" +.LASF869: + .ascii "RCC_PLLCFGR_PLLQ(q) ((q & RCC_PLLCFGR_PLLQ_MASK) <<" + .ascii " RCC_PLLCFGR_PLLQ_BIT)\000" +.LASF936: + .ascii "USART_SR_TXE_TRANSMITTED (1 << USART_SR_TXE_BIT)\000" +.LASF788: + .ascii "__PRI64LEAST(x) __LEAST64 __STRINGIFY(x)\000" +.LASF678: + .ascii "PRIu8 __PRI8(u)\000" +.LASF124: + .ascii "__UINT_LEAST64_MAX__ 0xffffffffffffffffULL\000" +.LASF257: + .ascii "__FRACT_IBIT__ 0\000" +.LASF11: + .ascii "__ATOMIC_ACQUIRE 2\000" +.LASF477: + .ascii "_WANT_USE_GDTOA 1\000" +.LASF229: + .ascii "__FLT64_IS_IEC_60559__ 2\000" +.LASF461: + .ascii "__NEWLIB_PATCHLEVEL__ 0\000" +.LASF26: + .ascii "__ORDER_LITTLE_ENDIAN__ 1234\000" +.LASF871: + .ascii "RCC_PLLCFGR_PLLSRC_HSE (1 << RCC_PLLCFGR_PLLSRC_BIT" + .ascii ")\000" +.LASF155: + .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" +.LASF961: + .ascii "long long unsigned int\000" +.LASF612: + .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" +.LASF150: + .ascii "__FLT_MIN_10_EXP__ (-37)\000" +.LASF903: + .ascii "RCC_CFGR_SWS_MASK (0b11)\000" +.LASF312: + .ascii "__ULACCUM_IBIT__ 32\000" +.LASF777: + .ascii "PRIoFAST32 __PRI32FAST(o)\000" +.LASF71: + .ascii "__SHRT_MAX__ 0x7fff\000" +.LASF196: + .ascii "__LDBL_IS_IEC_60559__ 2\000" +.LASF696: + .ascii "SCNxLEAST8 __SCN8LEAST(x)\000" +.LASF325: + .ascii "__ULLACCUM_EPSILON__ 0x1P-32ULLK\000" +.LASF570: + .ascii "__int32_t_defined 1\000" +.LASF332: + .ascii "__DQ_FBIT__ 63\000" +.LASF491: + .ascii "__GNU_VISIBLE 0\000" +.LASF287: + .ascii "__SACCUM_IBIT__ 8\000" +.LASF781: + .ascii "SCNdFAST32 __SCN32FAST(d)\000" +.LASF339: + .ascii "__UHQ_IBIT__ 0\000" +.LASF370: + .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1\000" +.LASF60: + .ascii "__INT_FAST16_TYPE__ int\000" +.LASF575: + .ascii "_UINTMAX_T_DECLARED \000" +.LASF61: + .ascii "__INT_FAST32_TYPE__ int\000" +.LASF288: + .ascii "__SACCUM_MIN__ (-0X1P7HK-0X1P7HK)\000" +.LASF274: + .ascii "__ULFRACT_MAX__ 0XFFFFFFFFP-32ULR\000" +.LASF878: + .ascii "RCC_PLLCFGR_PLLN(n) ((n & RCC_PLLCFGR_PLLN_MASK) <<" + .ascii " RCC_PLLCFGR_PLLN_BIT)\000" +.LASF56: + .ascii "__UINT_LEAST16_TYPE__ short unsigned int\000" +.LASF574: + .ascii "_INTMAX_T_DECLARED \000" +.LASF309: + .ascii "__LACCUM_MAX__ 0X7FFFFFFFFFFFFFFFP-31LK\000" +.LASF40: + .ascii "__CHAR16_TYPE__ short unsigned int\000" +.LASF938: + .ascii "USART_SR_TC_COMPLETED (1 << USART_SR_TC_BIT)\000" +.LASF231: + .ascii "__FLT32X_DIG__ 15\000" +.LASF741: + .ascii "PRIXFAST16 __PRI16FAST(X)\000" +.LASF834: + .ascii "SCNiMAX __SCNMAX(i)\000" +.LASF853: + .ascii "RCC_CR_PLLRDY_BIT 25\000" +.LASF768: + .ascii "PRIxLEAST32 __PRI32LEAST(x)\000" +.LASF344: + .ascii "__UTQ_FBIT__ 128\000" +.LASF848: + .ascii "SCNoPTR __SCNPTR(o)\000" +.LASF842: + .ascii "PRIoPTR __PRIPTR(o)\000" +.LASF732: + .ascii "SCNiLEAST16 __SCN16LEAST(i)\000" +.LASF15: + .ascii "__FINITE_MATH_ONLY__ 0\000" +.LASF128: + .ascii "__INT_FAST16_MAX__ 0x7fffffff\000" +.LASF550: + .ascii "__have_longlong64 1\000" +.LASF469: + .ascii "_MB_CAPABLE 1\000" +.LASF19: + .ascii "__SIZEOF_SHORT__ 2\000" +.LASF703: + .ascii "SCNdFAST8 __SCN8FAST(d)\000" +.LASF577: + .ascii "_UINTPTR_T_DECLARED \000" +.LASF503: + .ascii "__IMPORT \000" +.LASF314: + .ascii "__ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK\000" +.LASF273: + .ascii "__ULFRACT_MIN__ 0.0ULR\000" +.LASF628: + .ascii "SIZE_MAX (__SIZE_MAX__)\000" +.LASF333: + .ascii "__DQ_IBIT__ 0\000" +.LASF893: + .ascii "RCC_CFGR_MCO1PRE_MASK (0b111)\000" +.LASF450: + .ascii "__ARM_BF16_FORMAT_ALTERNATIVE\000" +.LASF45: + .ascii "__INT32_TYPE__ long int\000" +.LASF569: + .ascii "_UINT32_T_DECLARED \000" +.LASF521: + .ascii "__int20__ +2\000" +.LASF655: + .ascii "_WCHAR_T_ \000" +.LASF571: + .ascii "_INT64_T_DECLARED \000" +.LASF829: + .ascii "PRIoMAX __PRIMAX(o)\000" +.LASF748: + .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" +.LASF991: + .ascii "GPIO_MODE_INPUT\000" +.LASF744: + .ascii "SCNoFAST16 __SCN16FAST(o)\000" +.LASF929: + .ascii "PIN(port,num) (PORT(port) | num)\000" +.LASF1009: + .ascii "usart2_init\000" +.LASF345: + .ascii "__UTQ_IBIT__ 0\000" +.LASF348: + .ascii "__SA_FBIT__ 15\000" +.LASF661: + .ascii "__INT_WCHAR_T_H \000" +.LASF237: + .ascii "__FLT32X_MAX__ 1.7976931348623157e+308F32x\000" +.LASF438: + .ascii "__ARM_EABI__ 1\000" +.LASF466: + .ascii "_HAVE_INITFINI_ARRAY 1\000" +.LASF733: + .ascii "SCNoLEAST16 __SCN16LEAST(o)\000" +.LASF474: + .ascii "_WANT_IO_C99_FORMATS 1\000" +.LASF163: + .ascii "__FLT_IS_IEC_60559__ 2\000" +.LASF418: + .ascii "__THUMBEL__ 1\000" +.LASF715: + .ascii "PRIi16 __PRI16(i)\000" +.LASF390: + .ascii "__ARM_FEATURE_DSP 1\000" +.LASF942: + .ascii "USART_CR1_UE_ENABLE (1 << USART_CR1_UE_BIT)\000" +.LASF826: + .ascii "__SCNMAX(x) __STRINGIFY(ll ##x)\000" +.LASF327: + .ascii "__QQ_IBIT__ 0\000" +.LASF764: + .ascii "PRIdLEAST32 __PRI32LEAST(d)\000" +.LASF812: + .ascii "SCNuLEAST64 __SCN64LEAST(u)\000" +.LASF644: + .ascii "UINT64_C(x) __UINT64_C(x)\000" +.LASF316: + .ascii "__LLACCUM_FBIT__ 31\000" +.LASF39: + .ascii "__UINTMAX_TYPE__ long long unsigned int\000" +.LASF233: + .ascii "__FLT32X_MIN_10_EXP__ (-307)\000" +.LASF594: + .ascii "UINT_LEAST8_MAX (__UINT_LEAST8_MAX__)\000" +.LASF341: + .ascii "__USQ_IBIT__ 0\000" +.LASF6: + .ascii "__GNUC_MINOR__ 3\000" +.LASF828: + .ascii "PRIiMAX __PRIMAX(i)\000" +.LASF454: + .ascii "RCC_H_ \000" +.LASF405: + .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" +.LASF925: + .ascii "GPIO_BASE_ADDR (0x40020000U)\000" +.LASF38: + .ascii "__INTMAX_TYPE__ long long int\000" +.LASF377: + .ascii "__GCC_ATOMIC_INT_LOCK_FREE 2\000" +.LASF948: + .ascii "USART_BRR_MANTISSA_MASK (0b111111111111)\000" +.LASF939: + .ascii "USART_SR_RXNE_BIT 5\000" +.LASF436: + .ascii "__ARM_ARCH_7EM__ 1\000" +.LASF428: + .ascii "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC\000" +.LASF974: + .ascii "AHB1ENR\000" +.LASF295: + .ascii "__USACCUM_EPSILON__ 0x1P-8UHK\000" +.LASF178: + .ascii "__DBL_HAS_QUIET_NAN__ 1\000" +.LASF641: + .ascii "INT32_C(x) __INT32_C(x)\000" +.LASF618: + .ascii "UINT_FAST16_MAX (__UINT_FAST16_MAX__)\000" +.LASF546: + .ascii "_NOINLINE_STATIC _NOINLINE static\000" +.LASF279: + .ascii "__LLFRACT_MAX__ 0X7FFFFFFFFFFFFFFFP-63LLR\000" +.LASF840: + .ascii "PRIdPTR __PRIPTR(d)\000" +.LASF606: + .ascii "UINT_LEAST32_MAX (__UINT_LEAST32_MAX__)\000" +.LASF731: + .ascii "SCNdLEAST16 __SCN16LEAST(d)\000" +.LASF814: + .ascii "PRIdFAST64 __PRI64FAST(d)\000" +.LASF833: + .ascii "SCNdMAX __SCNMAX(d)\000" +.LASF518: + .ascii "char +0\000" +.LASF67: + .ascii "__INTPTR_TYPE__ int\000" +.LASF68: + .ascii "__UINTPTR_TYPE__ unsigned int\000" +.LASF837: + .ascii "SCNxMAX __SCNMAX(x)\000" +.LASF362: + .ascii "__REGISTER_PREFIX__ \000" +.LASF204: + .ascii "__FLT32_MAX__ 3.4028234663852886e+38F32\000" +.LASF165: + .ascii "__DBL_DIG__ 15\000" +.LASF275: + .ascii "__ULFRACT_EPSILON__ 0x1P-32ULR\000" +.LASF969: + .ascii "AHB2RSTR\000" +.LASF672: + .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" +.LASF895: + .ascii "RCC_CFGR_PPRE2_MASK (0b111)\000" +.LASF23: + .ascii "__SIZEOF_SIZE_T__ 4\000" +.LASF854: + .ascii "RCC_CR_PLLRDY_LOCKED (1 << RCC_CR_PLLRDY_BIT)\000" +.LASF50: + .ascii "__UINT64_TYPE__ long long unsigned int\000" +.LASF580: + .ascii "__int_least32_t_defined 1\000" +.LASF116: + .ascii "__INT64_C(c) c ## LL\000" +.LASF464: + .ascii "_FVWRITE_IN_STREAMIO 1\000" +.LASF190: + .ascii "__LDBL_MIN__ 2.2250738585072014e-308L\000" +.LASF445: + .ascii "__ARM_FEATURE_CDE\000" +.LASF297: + .ascii "__ACCUM_IBIT__ 16\000" +.LASF717: + .ascii "PRIu16 __PRI16(u)\000" +.LASF510: + .ascii "unsigned\000" +.LASF381: + .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" +.LASF953: + .ascii "short int\000" +.LASF836: + .ascii "SCNuMAX __SCNMAX(u)\000" +.LASF934: + .ascii "USART2 ((struct usart *) USART2_BASE_ADDR)\000" +.LASF121: + .ascii "__UINT16_C(c) c\000" +.LASF359: + .ascii "__UDA_IBIT__ 32\000" +.LASF535: + .ascii "__LEAST16 \"h\"\000" +.LASF880: + .ascii "RCC_PLLCFGR_PLLM_MASK (0b111111)\000" +.LASF587: + .ascii "INTPTR_MAX (__INTPTR_MAX__)\000" +.LASF884: + .ascii "RCC_CFGR_MCO1_HSI (0b00)\000" +.LASF711: + .ascii "__SCN16(x) __INT16 __STRINGIFY(x)\000" +.LASF607: + .ascii "INT64_MIN (-__INT64_MAX__ - 1)\000" +.LASF9: + .ascii "__ATOMIC_RELAXED 0\000" +.LASF543: + .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" +.LASF443: + .ascii "__ARM_FEATURE_COPROC\000" +.LASF994: + .ascii "GPIO_MODE_ANALOG\000" +.LASF177: + .ascii "__DBL_HAS_INFINITY__ 1\000" +.LASF95: + .ascii "__SIG_ATOMIC_MAX__ 0x7fffffff\000" +.LASF609: + .ascii "UINT64_MAX (__UINT64_MAX__)\000" +.LASF472: + .ascii "_RETARGETABLE_LOCKING 1\000" +.LASF440: + .ascii "__ARM_ARCH_EXT_IDIV__ 1\000" +.LASF638: + .ascii "UINT8_C(x) __UINT8_C(x)\000" +.LASF170: + .ascii "__DBL_DECIMAL_DIG__ 17\000" +.LASF551: + .ascii "__have_long32 1\000" +.LASF855: + .ascii "RCC_CR_PLLON_BIT 24\000" +.LASF658: + .ascii "_WCHAR_T_DEFINED \000" +.LASF793: + .ascii "PRIi64 __PRI64(i)\000" +.LASF811: + .ascii "SCNoLEAST64 __SCN64LEAST(o)\000" +.LASF573: + .ascii "__int64_t_defined 1\000" +.LASF99: + .ascii "__INT16_MAX__ 0x7fff\000" +.LASF479: + .ascii "__SYS_CONFIG_H__ \000" +.LASF879: + .ascii "RCC_PLLCFGR_PLLM_BIT 0\000" +.LASF8: + .ascii "__VERSION__ \"12.3.1 20230626\"\000" +.LASF498: + .ascii "__SSP_FORTIFY_LEVEL 0\000" +.LASF530: + .ascii "__FAST8 \000" +.LASF497: + .ascii "__XSI_VISIBLE 0\000" +.LASF326: + .ascii "__QQ_FBIT__ 7\000" +.LASF795: + .ascii "PRIu64 __PRI64(u)\000" +.LASF532: + .ascii "__FAST32 \000" +.LASF97: + .ascii "__SIG_ATOMIC_WIDTH__ 32\000" +.LASF224: + .ascii "__FLT64_EPSILON__ 2.2204460492503131e-16F64\000" +.LASF831: + .ascii "PRIxMAX __PRIMAX(x)\000" +.LASF488: + .ascii "__GNUC_PREREQ__(ma,mi) __GNUC_PREREQ(ma, mi)\000" +.LASF361: + .ascii "__UTA_IBIT__ 64\000" +.LASF322: + .ascii "__ULLACCUM_IBIT__ 32\000" +.LASF396: + .ascii "__ARM_FEATURE_CRC32\000" +.LASF285: + .ascii "__ULLFRACT_EPSILON__ 0x1P-64ULLR\000" +.LASF4: + .ascii "__STDC_HOSTED__ 1\000" +.LASF827: + .ascii "PRIdMAX __PRIMAX(d)\000" +.LASF388: + .ascii "__SIZEOF_WINT_T__ 4\000" +.LASF894: + .ascii "RCC_CFGR_PPRE2_BIT 13\000" +.LASF783: + .ascii "SCNoFAST32 __SCN32FAST(o)\000" +.LASF394: + .ascii "__ARM_FEATURE_UNALIGNED 1\000" +.LASF451: + .ascii "__GXX_TYPEINFO_EQUALITY_INLINE 0\000" +.LASF187: + .ascii "__LDBL_DECIMAL_DIG__ 17\000" +.LASF702: + .ascii "PRIXFAST8 __PRI8FAST(X)\000" +.LASF907: + .ascii "RCC_CFGR_SW(clock) ((clock & RCC_CFGR_SW_MASK) << R" + .ascii "CC_CFGR_SW_BIT)\000" +.LASF308: + .ascii "__LACCUM_MIN__ (-0X1P31LK-0X1P31LK)\000" +.LASF785: + .ascii "SCNxFAST32 __SCN32FAST(x)\000" +.LASF126: + .ascii "__INT_FAST8_MAX__ 0x7fffffff\000" +.LASF209: + .ascii "__FLT32_HAS_DENORM__ 1\000" +.LASF478: + .ascii "_WIDE_ORIENT 1\000" +.LASF323: + .ascii "__ULLACCUM_MIN__ 0.0ULLK\000" +.LASF131: + .ascii "__INT_FAST32_WIDTH__ 32\000" +.LASF222: + .ascii "__FLT64_NORM_MAX__ 1.7976931348623157e+308F64\000" +.LASF544: + .ascii "_ELIDABLE_INLINE static __inline__\000" +.LASF528: + .ascii "__INT32 \"l\"\000" +.LASF442: + .ascii "__ARM_ASM_SYNTAX_UNIFIED__ 1\000" +.LASF738: + .ascii "PRIoFAST16 __PRI16FAST(o)\000" +.LASF750: + .ascii "__SCN32LEAST(x) __LEAST32 __STRINGIFY(x)\000" +.LASF49: + .ascii "__UINT32_TYPE__ long unsigned int\000" +.LASF397: + .ascii "__ARM_FEATURE_DOTPROD\000" +.LASF747: + .ascii "__PRI32(x) __INT32 __STRINGIFY(x)\000" +.LASF437: + .ascii "__ARM_PCS_VFP 1\000" +.LASF700: + .ascii "PRIuFAST8 __PRI8FAST(u)\000" +.LASF283: + .ascii "__ULLFRACT_MIN__ 0.0ULLR\000" +.LASF652: + .ascii "_T_WCHAR_ \000" +.LASF562: + .ascii "_INT8_T_DECLARED \000" +.LASF382: + .ascii "__GCC_CONSTRUCTIVE_SIZE 64\000" +.LASF665: + .ascii "_BSD_WCHAR_T_\000" +.LASF989: + .ascii "PLLI2SCFGR\000" +.LASF277: + .ascii "__LLFRACT_IBIT__ 0\000" +.LASF640: + .ascii "UINT16_C(x) __UINT16_C(x)\000" +.LASF757: + .ascii "PRIx32 __PRI32(x)\000" +.LASF278: + .ascii "__LLFRACT_MIN__ (-0.5LLR-0.5LLR)\000" +.LASF965: + .ascii "uint32_t\000" +.LASF876: + .ascii "RCC_PLLCFGR_PLLN_BIT 6\000" +.LASF690: + .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" +.LASF507: + .ascii "_SYS__INTSUP_H \000" +.LASF290: + .ascii "__SACCUM_EPSILON__ 0x1P-7HK\000" +.LASF415: + .ascii "__GCC_ASM_FLAG_OUTPUTS__ 1\000" +.LASF746: + .ascii "SCNxFAST16 __SCN16FAST(x)\000" +.LASF471: + .ascii "_REENT_CHECK_VERIFY 1\000" +.LASF776: + .ascii "PRIiFAST32 __PRI32FAST(i)\000" +.LASF424: + .ascii "__ARM_FP 4\000" +.LASF719: + .ascii "PRIX16 __PRI16(X)\000" +.LASF64: + .ascii "__UINT_FAST16_TYPE__ unsigned int\000" +.LASF782: + .ascii "SCNiFAST32 __SCN32FAST(i)\000" +.LASF355: + .ascii "__UHA_IBIT__ 8\000" +.LASF364: + .ascii "__GNUC_STDC_INLINE__ 1\000" +.LASF300: + .ascii "__ACCUM_EPSILON__ 0x1P-15K\000" +.LASF315: + .ascii "__ULACCUM_EPSILON__ 0x1P-32ULK\000" +.LASF181: + .ascii "__LDBL_DIG__ 15\000" +.LASF889: + .ascii "RCC_CFGR_MCO1PRE_DIV5 (0b111)\000" +.LASF89: + .ascii "__SIZE_WIDTH__ 32\000" +.LASF874: + .ascii "RCC_PLLCFGR_PLLP_MASK (0b11)\000" +.LASF481: + .ascii "_SUPPORTS_ERREXCEPT \000" +.LASF215: + .ascii "__FLT64_DIG__ 15\000" +.LASF525: + .ascii "_INT32_EQ_LONG \000" +.LASF77: + .ascii "__WINT_MAX__ 0xffffffffU\000" +.LASF108: + .ascii "__INT_LEAST8_WIDTH__ 8\000" +.LASF52: + .ascii "__INT_LEAST16_TYPE__ short int\000" +.LASF159: + .ascii "__FLT_HAS_DENORM__ 1\000" +.LASF930: + .ascii "PINNUM(pin) (pin & 0b1111)\000" +.LASF769: + .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" +.LASF171: + .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" +.LASF956: + .ascii "short unsigned int\000" +.LASF276: + .ascii "__LLFRACT_FBIT__ 63\000" +.LASF210: + .ascii "__FLT32_HAS_INFINITY__ 1\000" +.LASF416: + .ascii "__thumb__ 1\000" +.LASF947: + .ascii "USART_BRR_MANTISSA_BIT 4\000" +.LASF421: + .ascii "__ARMEL__ 1\000" +.LASF691: + .ascii "PRIXLEAST8 __PRI8LEAST(X)\000" +.LASF328: + .ascii "__HQ_FBIT__ 15\000" +.LASF921: + .ascii "__bool_true_false_are_defined 1\000" +.LASF941: + .ascii "USART_CR1_UE_BIT 13\000" +.LASF927: + .ascii "GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADD" + .ascii "R + (GPIO_PORT_OFFSET * port)))\000" +.LASF799: + .ascii "SCNi64 __SCN64(i)\000" +.LASF863: + .ascii "RCC_CR_HSIRDY_BIT 1\000" +.LASF80: + .ascii "__SIZE_MAX__ 0xffffffffU\000" +.LASF1000: + .ascii "usart2_write\000" +.LASF819: + .ascii "PRIXFAST64 __PRI64FAST(X)\000" +.LASF858: + .ascii "RCC_CR_CSS_ON (1 << RCC_CR_CSS_BIT)\000" +.LASF412: + .ascii "__ARM_ARCH\000" +.LASF591: + .ascii "UINT8_MAX (__UINT8_MAX__)\000" +.LASF73: + .ascii "__LONG_MAX__ 0x7fffffffL\000" +.LASF615: + .ascii "UINT_FAST8_MAX (__UINT_FAST8_MAX__)\000" +.LASF578: + .ascii "__int_least8_t_defined 1\000" +.LASF801: + .ascii "SCNu64 __SCN64(u)\000" +.LASF784: + .ascii "SCNuFAST32 __SCN32FAST(u)\000" +.LASF523: + .ascii "long +4\000" +.LASF968: + .ascii "AHB1RSTR\000" +.LASF724: + .ascii "SCNx16 __SCN16(x)\000" +.LASF403: + .ascii "__ARM_FEATURE_LDREX 7\000" +.LASF789: + .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" +.LASF340: + .ascii "__USQ_FBIT__ 32\000" +.LASF1007: + .ascii "/home/alex/code/own/stm32-falling-sand\000" +.LASF797: + .ascii "PRIX64 __PRI64(X)\000" +.LASF249: + .ascii "__SFRACT_MAX__ 0X7FP-7HR\000" +.LASF230: + .ascii "__FLT32X_MANT_DIG__ 53\000" +.LASF86: + .ascii "__WCHAR_WIDTH__ 32\000" +.LASF762: + .ascii "SCNu32 __SCN32(u)\000" +.LASF818: + .ascii "PRIxFAST64 __PRI64FAST(x)\000" +.LASF817: + .ascii "PRIuFAST64 __PRI64FAST(u)\000" +.LASF110: + .ascii "__INT16_C(c) c\000" +.LASF351: + .ascii "__DA_IBIT__ 32\000" +.LASF708: + .ascii "__PRI16(x) __INT16 __STRINGIFY(x)\000" +.LASF252: + .ascii "__USFRACT_IBIT__ 0\000" +.LASF519: + .ascii "short +1\000" +.LASF694: + .ascii "SCNoLEAST8 __SCN8LEAST(o)\000" +.LASF13: + .ascii "__ATOMIC_ACQ_REL 4\000" +.LASF51: + .ascii "__INT_LEAST8_TYPE__ signed char\000" +.LASF329: + .ascii "__HQ_IBIT__ 0\000" +.LASF167: + .ascii "__DBL_MIN_10_EXP__ (-307)\000" +.LASF796: + .ascii "PRIx64 __PRI64(x)\000" +.LASF943: + .ascii "USART_CR1_TE_BIT 3\000" +.LASF513: + .ascii "__int20\000" +.LASF620: + .ascii "INT_FAST32_MAX (__INT_FAST32_MAX__)\000" +.LASF205: + .ascii "__FLT32_NORM_MAX__ 3.4028234663852886e+38F32\000" +.LASF918: + .ascii "bool _Bool\000" +.LASF632: + .ascii "PTRDIFF_MIN (-PTRDIFF_MAX - 1)\000" +.LASF92: + .ascii "__UINTMAX_MAX__ 0xffffffffffffffffULL\000" +.LASF164: + .ascii "__DBL_MANT_DIG__ 53\000" +.LASF272: + .ascii "__ULFRACT_IBIT__ 0\000" +.LASF852: + .ascii "RCC ((struct rcc *) RCC_BASE_ADDR)\000" +.LASF900: + .ascii "RCC_CFGR_HPRE_MASK (0b1111)\000" +.LASF72: + .ascii "__INT_MAX__ 0x7fffffff\000" +.LASF54: + .ascii "__INT_LEAST64_TYPE__ long long int\000" +.LASF103: + .ascii "__UINT16_MAX__ 0xffff\000" +.LASF446: + .ascii "__ARM_FEATURE_CDE_COPROC\000" +.LASF766: + .ascii "PRIoLEAST32 __PRI32LEAST(o)\000" +.LASF91: + .ascii "__INTMAX_C(c) c ## LL\000" + .ident "GCC: (Arm GNU Toolchain 12.3.Rel1 (Build arm-12.35)) 12.3.1 20230626" diff --git a/build/usart.i b/build/usart.i new file mode 100644 index 0000000..438e101 --- /dev/null +++ b/build/usart.i @@ -0,0 +1,2303 @@ +# 0 "src/usart.c" +# 1 "/home/alex/code/own/stm32-falling-sand//" +# 0 "" +#define __STDC__ 1 +# 0 "" +#define __STDC_VERSION__ 202000L +# 0 "" +#define __STDC_UTF_16__ 1 +# 0 "" +#define __STDC_UTF_32__ 1 +# 0 "" +#define __STDC_HOSTED__ 1 +# 0 "" +#define __GNUC__ 12 +# 0 "" +#define __GNUC_MINOR__ 3 +# 0 "" +#define __GNUC_PATCHLEVEL__ 1 +# 0 "" +#define __VERSION__ "12.3.1 20230626" +# 0 "" +#define __ATOMIC_RELAXED 0 +# 0 "" +#define __ATOMIC_SEQ_CST 5 +# 0 "" +#define __ATOMIC_ACQUIRE 2 +# 0 "" +#define __ATOMIC_RELEASE 3 +# 0 "" +#define __ATOMIC_ACQ_REL 4 +# 0 "" +#define __ATOMIC_CONSUME 1 +# 0 "" +#define __FINITE_MATH_ONLY__ 0 +# 0 "" +#define __SIZEOF_INT__ 4 +# 0 "" +#define __SIZEOF_LONG__ 4 +# 0 "" +#define __SIZEOF_LONG_LONG__ 8 +# 0 "" +#define __SIZEOF_SHORT__ 2 +# 0 "" +#define __SIZEOF_FLOAT__ 4 +# 0 "" +#define __SIZEOF_DOUBLE__ 8 +# 0 "" +#define __SIZEOF_LONG_DOUBLE__ 8 +# 0 "" +#define __SIZEOF_SIZE_T__ 4 +# 0 "" +#define __CHAR_BIT__ 8 +# 0 "" +#define __BIGGEST_ALIGNMENT__ 8 +# 0 "" +#define __ORDER_LITTLE_ENDIAN__ 1234 +# 0 "" +#define __ORDER_BIG_ENDIAN__ 4321 +# 0 "" +#define __ORDER_PDP_ENDIAN__ 3412 +# 0 "" +#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__ +# 0 "" +#define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__ +# 0 "" +#define __SIZEOF_POINTER__ 4 +# 0 "" +#define __GNUC_EXECUTION_CHARSET_NAME "UTF-8" +# 0 "" +#define __GNUC_WIDE_EXECUTION_CHARSET_NAME "UTF-32LE" +# 0 "" +#define __SIZE_TYPE__ unsigned int +# 0 "" +#define __PTRDIFF_TYPE__ int +# 0 "" +#define __WCHAR_TYPE__ unsigned int +# 0 "" +#define __WINT_TYPE__ unsigned int +# 0 "" +#define __INTMAX_TYPE__ long long int +# 0 "" +#define __UINTMAX_TYPE__ long long unsigned int +# 0 "" +#define __CHAR16_TYPE__ short unsigned int +# 0 "" +#define __CHAR32_TYPE__ long unsigned int +# 0 "" +#define __SIG_ATOMIC_TYPE__ int +# 0 "" +#define __INT8_TYPE__ signed char +# 0 "" +#define __INT16_TYPE__ short int +# 0 "" +#define __INT32_TYPE__ long int +# 0 "" +#define __INT64_TYPE__ long long int +# 0 "" +#define __UINT8_TYPE__ unsigned char +# 0 "" +#define __UINT16_TYPE__ short unsigned int +# 0 "" +#define __UINT32_TYPE__ long unsigned int +# 0 "" +#define __UINT64_TYPE__ long long unsigned int +# 0 "" +#define __INT_LEAST8_TYPE__ signed char +# 0 "" +#define __INT_LEAST16_TYPE__ short int +# 0 "" +#define __INT_LEAST32_TYPE__ long int +# 0 "" +#define __INT_LEAST64_TYPE__ long long int +# 0 "" +#define __UINT_LEAST8_TYPE__ unsigned char +# 0 "" +#define __UINT_LEAST16_TYPE__ short unsigned int +# 0 "" +#define __UINT_LEAST32_TYPE__ long unsigned int +# 0 "" +#define __UINT_LEAST64_TYPE__ long long unsigned int +# 0 "" +#define __INT_FAST8_TYPE__ int +# 0 "" +#define __INT_FAST16_TYPE__ int +# 0 "" +#define __INT_FAST32_TYPE__ int +# 0 "" +#define __INT_FAST64_TYPE__ long long int +# 0 "" +#define __UINT_FAST8_TYPE__ unsigned int +# 0 "" +#define __UINT_FAST16_TYPE__ unsigned int +# 0 "" +#define __UINT_FAST32_TYPE__ unsigned int +# 0 "" +#define __UINT_FAST64_TYPE__ long long unsigned int +# 0 "" +#define __INTPTR_TYPE__ int +# 0 "" +#define __UINTPTR_TYPE__ unsigned int +# 0 "" +#define __GXX_ABI_VERSION 1017 +# 0 "" +#define __SCHAR_MAX__ 0x7f +# 0 "" +#define __SHRT_MAX__ 0x7fff +# 0 "" +#define __INT_MAX__ 0x7fffffff +# 0 "" +#define __LONG_MAX__ 0x7fffffffL +# 0 "" +#define __LONG_LONG_MAX__ 0x7fffffffffffffffLL +# 0 "" +#define __WCHAR_MAX__ 0xffffffffU +# 0 "" +#define __WCHAR_MIN__ 0U +# 0 "" +#define __WINT_MAX__ 0xffffffffU +# 0 "" +#define __WINT_MIN__ 0U +# 0 "" +#define __PTRDIFF_MAX__ 0x7fffffff +# 0 "" +#define __SIZE_MAX__ 0xffffffffU +# 0 "" +#define __SCHAR_WIDTH__ 8 +# 0 "" +#define __SHRT_WIDTH__ 16 +# 0 "" +#define __INT_WIDTH__ 32 +# 0 "" +#define __LONG_WIDTH__ 32 +# 0 "" +#define __LONG_LONG_WIDTH__ 64 +# 0 "" +#define __WCHAR_WIDTH__ 32 +# 0 "" +#define __WINT_WIDTH__ 32 +# 0 "" +#define __PTRDIFF_WIDTH__ 32 +# 0 "" +#define __SIZE_WIDTH__ 32 +# 0 "" +#define __INTMAX_MAX__ 0x7fffffffffffffffLL +# 0 "" +#define __INTMAX_C(c) c ## LL +# 0 "" +#define __UINTMAX_MAX__ 0xffffffffffffffffULL +# 0 "" +#define __UINTMAX_C(c) c ## ULL +# 0 "" +#define __INTMAX_WIDTH__ 64 +# 0 "" +#define __SIG_ATOMIC_MAX__ 0x7fffffff +# 0 "" +#define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1) +# 0 "" +#define __SIG_ATOMIC_WIDTH__ 32 +# 0 "" +#define __INT8_MAX__ 0x7f +# 0 "" +#define __INT16_MAX__ 0x7fff +# 0 "" +#define __INT32_MAX__ 0x7fffffffL +# 0 "" +#define __INT64_MAX__ 0x7fffffffffffffffLL +# 0 "" +#define __UINT8_MAX__ 0xff +# 0 "" +#define __UINT16_MAX__ 0xffff +# 0 "" +#define __UINT32_MAX__ 0xffffffffUL +# 0 "" +#define __UINT64_MAX__ 0xffffffffffffffffULL +# 0 "" +#define __INT_LEAST8_MAX__ 0x7f +# 0 "" +#define __INT8_C(c) c +# 0 "" +#define __INT_LEAST8_WIDTH__ 8 +# 0 "" +#define __INT_LEAST16_MAX__ 0x7fff +# 0 "" +#define __INT16_C(c) c +# 0 "" +#define __INT_LEAST16_WIDTH__ 16 +# 0 "" +#define __INT_LEAST32_MAX__ 0x7fffffffL +# 0 "" +#define __INT32_C(c) c ## L +# 0 "" +#define __INT_LEAST32_WIDTH__ 32 +# 0 "" +#define __INT_LEAST64_MAX__ 0x7fffffffffffffffLL +# 0 "" +#define __INT64_C(c) c ## LL +# 0 "" +#define __INT_LEAST64_WIDTH__ 64 +# 0 "" +#define __UINT_LEAST8_MAX__ 0xff +# 0 "" +#define __UINT8_C(c) c +# 0 "" +#define __UINT_LEAST16_MAX__ 0xffff +# 0 "" +#define __UINT16_C(c) c +# 0 "" +#define __UINT_LEAST32_MAX__ 0xffffffffUL +# 0 "" +#define __UINT32_C(c) c ## UL +# 0 "" +#define __UINT_LEAST64_MAX__ 0xffffffffffffffffULL +# 0 "" +#define __UINT64_C(c) c ## ULL +# 0 "" +#define __INT_FAST8_MAX__ 0x7fffffff +# 0 "" +#define __INT_FAST8_WIDTH__ 32 +# 0 "" +#define __INT_FAST16_MAX__ 0x7fffffff +# 0 "" +#define __INT_FAST16_WIDTH__ 32 +# 0 "" +#define __INT_FAST32_MAX__ 0x7fffffff +# 0 "" +#define __INT_FAST32_WIDTH__ 32 +# 0 "" +#define __INT_FAST64_MAX__ 0x7fffffffffffffffLL +# 0 "" +#define __INT_FAST64_WIDTH__ 64 +# 0 "" +#define __UINT_FAST8_MAX__ 0xffffffffU +# 0 "" +#define __UINT_FAST16_MAX__ 0xffffffffU +# 0 "" +#define __UINT_FAST32_MAX__ 0xffffffffU +# 0 "" +#define __UINT_FAST64_MAX__ 0xffffffffffffffffULL +# 0 "" +#define __INTPTR_MAX__ 0x7fffffff +# 0 "" +#define __INTPTR_WIDTH__ 32 +# 0 "" +#define __UINTPTR_MAX__ 0xffffffffU +# 0 "" +#define __GCC_IEC_559 0 +# 0 "" +#define __GCC_IEC_559_COMPLEX 0 +# 0 "" +#define __FLT_EVAL_METHOD__ 0 +# 0 "" +#define __FLT_EVAL_METHOD_TS_18661_3__ 0 +# 0 "" +#define __DEC_EVAL_METHOD__ 2 +# 0 "" +#define __FLT_RADIX__ 2 +# 0 "" +#define __FLT_MANT_DIG__ 24 +# 0 "" +#define __FLT_DIG__ 6 +# 0 "" +#define __FLT_MIN_EXP__ (-125) +# 0 "" +#define __FLT_MIN_10_EXP__ (-37) +# 0 "" +#define __FLT_MAX_EXP__ 128 +# 0 "" +#define __FLT_MAX_10_EXP__ 38 +# 0 "" +#define __FLT_DECIMAL_DIG__ 9 +# 0 "" +#define __FLT_MAX__ 3.4028234663852886e+38F +# 0 "" +#define __FLT_NORM_MAX__ 3.4028234663852886e+38F +# 0 "" +#define __FLT_MIN__ 1.1754943508222875e-38F +# 0 "" +#define __FLT_EPSILON__ 1.1920928955078125e-7F +# 0 "" +#define __FLT_DENORM_MIN__ 1.4012984643248171e-45F +# 0 "" +#define __FLT_HAS_DENORM__ 1 +# 0 "" +#define __FLT_HAS_INFINITY__ 1 +# 0 "" +#define __FLT_HAS_QUIET_NAN__ 1 +# 0 "" +#define __FP_FAST_FMAF 1 +# 0 "" +#define __FLT_IS_IEC_60559__ 2 +# 0 "" +#define __DBL_MANT_DIG__ 53 +# 0 "" +#define __DBL_DIG__ 15 +# 0 "" +#define __DBL_MIN_EXP__ (-1021) +# 0 "" +#define __DBL_MIN_10_EXP__ (-307) +# 0 "" +#define __DBL_MAX_EXP__ 1024 +# 0 "" +#define __DBL_MAX_10_EXP__ 308 +# 0 "" +#define __DBL_DECIMAL_DIG__ 17 +# 0 "" +#define __DBL_MAX__ ((double)1.7976931348623157e+308L) +# 0 "" +#define __DBL_NORM_MAX__ ((double)1.7976931348623157e+308L) +# 0 "" +#define __DBL_MIN__ ((double)2.2250738585072014e-308L) +# 0 "" +#define __DBL_EPSILON__ ((double)2.2204460492503131e-16L) +# 0 "" +#define __DBL_DENORM_MIN__ ((double)4.9406564584124654e-324L) +# 0 "" +#define __DBL_HAS_DENORM__ 1 +# 0 "" +#define __DBL_HAS_INFINITY__ 1 +# 0 "" +#define __DBL_HAS_QUIET_NAN__ 1 +# 0 "" +#define __DBL_IS_IEC_60559__ 2 +# 0 "" +#define __LDBL_MANT_DIG__ 53 +# 0 "" +#define __LDBL_DIG__ 15 +# 0 "" +#define __LDBL_MIN_EXP__ (-1021) +# 0 "" +#define __LDBL_MIN_10_EXP__ (-307) +# 0 "" +#define __LDBL_MAX_EXP__ 1024 +# 0 "" +#define __LDBL_MAX_10_EXP__ 308 +# 0 "" +#define __DECIMAL_DIG__ 17 +# 0 "" +#define __LDBL_DECIMAL_DIG__ 17 +# 0 "" +#define __LDBL_MAX__ 1.7976931348623157e+308L +# 0 "" +#define __LDBL_NORM_MAX__ 1.7976931348623157e+308L +# 0 "" +#define __LDBL_MIN__ 2.2250738585072014e-308L +# 0 "" +#define __LDBL_EPSILON__ 2.2204460492503131e-16L +# 0 "" +#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L +# 0 "" +#define __LDBL_HAS_DENORM__ 1 +# 0 "" +#define __LDBL_HAS_INFINITY__ 1 +# 0 "" +#define __LDBL_HAS_QUIET_NAN__ 1 +# 0 "" +#define __LDBL_IS_IEC_60559__ 2 +# 0 "" +#define __FLT32_MANT_DIG__ 24 +# 0 "" +#define __FLT32_DIG__ 6 +# 0 "" +#define __FLT32_MIN_EXP__ (-125) +# 0 "" +#define __FLT32_MIN_10_EXP__ (-37) +# 0 "" +#define __FLT32_MAX_EXP__ 128 +# 0 "" +#define __FLT32_MAX_10_EXP__ 38 +# 0 "" +#define __FLT32_DECIMAL_DIG__ 9 +# 0 "" +#define __FLT32_MAX__ 3.4028234663852886e+38F32 +# 0 "" +#define __FLT32_NORM_MAX__ 3.4028234663852886e+38F32 +# 0 "" +#define __FLT32_MIN__ 1.1754943508222875e-38F32 +# 0 "" +#define __FLT32_EPSILON__ 1.1920928955078125e-7F32 +# 0 "" +#define __FLT32_DENORM_MIN__ 1.4012984643248171e-45F32 +# 0 "" +#define __FLT32_HAS_DENORM__ 1 +# 0 "" +#define __FLT32_HAS_INFINITY__ 1 +# 0 "" +#define __FLT32_HAS_QUIET_NAN__ 1 +# 0 "" +#define __FP_FAST_FMAF32 1 +# 0 "" +#define __FLT32_IS_IEC_60559__ 2 +# 0 "" +#define __FLT64_MANT_DIG__ 53 +# 0 "" +#define __FLT64_DIG__ 15 +# 0 "" +#define __FLT64_MIN_EXP__ (-1021) +# 0 "" +#define __FLT64_MIN_10_EXP__ (-307) +# 0 "" +#define __FLT64_MAX_EXP__ 1024 +# 0 "" +#define __FLT64_MAX_10_EXP__ 308 +# 0 "" +#define __FLT64_DECIMAL_DIG__ 17 +# 0 "" +#define __FLT64_MAX__ 1.7976931348623157e+308F64 +# 0 "" +#define __FLT64_NORM_MAX__ 1.7976931348623157e+308F64 +# 0 "" +#define __FLT64_MIN__ 2.2250738585072014e-308F64 +# 0 "" +#define __FLT64_EPSILON__ 2.2204460492503131e-16F64 +# 0 "" +#define __FLT64_DENORM_MIN__ 4.9406564584124654e-324F64 +# 0 "" +#define __FLT64_HAS_DENORM__ 1 +# 0 "" +#define __FLT64_HAS_INFINITY__ 1 +# 0 "" +#define __FLT64_HAS_QUIET_NAN__ 1 +# 0 "" +#define __FLT64_IS_IEC_60559__ 2 +# 0 "" +#define __FLT32X_MANT_DIG__ 53 +# 0 "" +#define __FLT32X_DIG__ 15 +# 0 "" +#define __FLT32X_MIN_EXP__ (-1021) +# 0 "" +#define __FLT32X_MIN_10_EXP__ (-307) +# 0 "" +#define __FLT32X_MAX_EXP__ 1024 +# 0 "" +#define __FLT32X_MAX_10_EXP__ 308 +# 0 "" +#define __FLT32X_DECIMAL_DIG__ 17 +# 0 "" +#define __FLT32X_MAX__ 1.7976931348623157e+308F32x +# 0 "" +#define __FLT32X_NORM_MAX__ 1.7976931348623157e+308F32x +# 0 "" +#define __FLT32X_MIN__ 2.2250738585072014e-308F32x +# 0 "" +#define __FLT32X_EPSILON__ 2.2204460492503131e-16F32x +# 0 "" +#define __FLT32X_DENORM_MIN__ 4.9406564584124654e-324F32x +# 0 "" +#define __FLT32X_HAS_DENORM__ 1 +# 0 "" +#define __FLT32X_HAS_INFINITY__ 1 +# 0 "" +#define __FLT32X_HAS_QUIET_NAN__ 1 +# 0 "" +#define __FLT32X_IS_IEC_60559__ 2 +# 0 "" +#define __SFRACT_FBIT__ 7 +# 0 "" +#define __SFRACT_IBIT__ 0 +# 0 "" +#define __SFRACT_MIN__ (-0.5HR-0.5HR) +# 0 "" +#define __SFRACT_MAX__ 0X7FP-7HR +# 0 "" +#define __SFRACT_EPSILON__ 0x1P-7HR +# 0 "" +#define __USFRACT_FBIT__ 8 +# 0 "" +#define __USFRACT_IBIT__ 0 +# 0 "" +#define __USFRACT_MIN__ 0.0UHR +# 0 "" +#define __USFRACT_MAX__ 0XFFP-8UHR +# 0 "" +#define __USFRACT_EPSILON__ 0x1P-8UHR +# 0 "" +#define __FRACT_FBIT__ 15 +# 0 "" +#define __FRACT_IBIT__ 0 +# 0 "" +#define __FRACT_MIN__ (-0.5R-0.5R) +# 0 "" +#define __FRACT_MAX__ 0X7FFFP-15R +# 0 "" +#define __FRACT_EPSILON__ 0x1P-15R +# 0 "" +#define __UFRACT_FBIT__ 16 +# 0 "" +#define __UFRACT_IBIT__ 0 +# 0 "" +#define __UFRACT_MIN__ 0.0UR +# 0 "" +#define __UFRACT_MAX__ 0XFFFFP-16UR +# 0 "" +#define __UFRACT_EPSILON__ 0x1P-16UR +# 0 "" +#define __LFRACT_FBIT__ 31 +# 0 "" +#define __LFRACT_IBIT__ 0 +# 0 "" +#define __LFRACT_MIN__ (-0.5LR-0.5LR) +# 0 "" +#define __LFRACT_MAX__ 0X7FFFFFFFP-31LR +# 0 "" +#define __LFRACT_EPSILON__ 0x1P-31LR +# 0 "" +#define __ULFRACT_FBIT__ 32 +# 0 "" +#define __ULFRACT_IBIT__ 0 +# 0 "" +#define __ULFRACT_MIN__ 0.0ULR +# 0 "" +#define __ULFRACT_MAX__ 0XFFFFFFFFP-32ULR +# 0 "" +#define __ULFRACT_EPSILON__ 0x1P-32ULR +# 0 "" +#define __LLFRACT_FBIT__ 63 +# 0 "" +#define __LLFRACT_IBIT__ 0 +# 0 "" +#define __LLFRACT_MIN__ (-0.5LLR-0.5LLR) +# 0 "" +#define __LLFRACT_MAX__ 0X7FFFFFFFFFFFFFFFP-63LLR +# 0 "" +#define __LLFRACT_EPSILON__ 0x1P-63LLR +# 0 "" +#define __ULLFRACT_FBIT__ 64 +# 0 "" +#define __ULLFRACT_IBIT__ 0 +# 0 "" +#define __ULLFRACT_MIN__ 0.0ULLR +# 0 "" +#define __ULLFRACT_MAX__ 0XFFFFFFFFFFFFFFFFP-64ULLR +# 0 "" +#define __ULLFRACT_EPSILON__ 0x1P-64ULLR +# 0 "" +#define __SACCUM_FBIT__ 7 +# 0 "" +#define __SACCUM_IBIT__ 8 +# 0 "" +#define __SACCUM_MIN__ (-0X1P7HK-0X1P7HK) +# 0 "" +#define __SACCUM_MAX__ 0X7FFFP-7HK +# 0 "" +#define __SACCUM_EPSILON__ 0x1P-7HK +# 0 "" +#define __USACCUM_FBIT__ 8 +# 0 "" +#define __USACCUM_IBIT__ 8 +# 0 "" +#define __USACCUM_MIN__ 0.0UHK +# 0 "" +#define __USACCUM_MAX__ 0XFFFFP-8UHK +# 0 "" +#define __USACCUM_EPSILON__ 0x1P-8UHK +# 0 "" +#define __ACCUM_FBIT__ 15 +# 0 "" +#define __ACCUM_IBIT__ 16 +# 0 "" +#define __ACCUM_MIN__ (-0X1P15K-0X1P15K) +# 0 "" +#define __ACCUM_MAX__ 0X7FFFFFFFP-15K +# 0 "" +#define __ACCUM_EPSILON__ 0x1P-15K +# 0 "" +#define __UACCUM_FBIT__ 16 +# 0 "" +#define __UACCUM_IBIT__ 16 +# 0 "" +#define __UACCUM_MIN__ 0.0UK +# 0 "" +#define __UACCUM_MAX__ 0XFFFFFFFFP-16UK +# 0 "" +#define __UACCUM_EPSILON__ 0x1P-16UK +# 0 "" +#define __LACCUM_FBIT__ 31 +# 0 "" +#define __LACCUM_IBIT__ 32 +# 0 "" +#define __LACCUM_MIN__ (-0X1P31LK-0X1P31LK) +# 0 "" +#define __LACCUM_MAX__ 0X7FFFFFFFFFFFFFFFP-31LK +# 0 "" +#define __LACCUM_EPSILON__ 0x1P-31LK +# 0 "" +#define __ULACCUM_FBIT__ 32 +# 0 "" +#define __ULACCUM_IBIT__ 32 +# 0 "" +#define __ULACCUM_MIN__ 0.0ULK +# 0 "" +#define __ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK +# 0 "" +#define __ULACCUM_EPSILON__ 0x1P-32ULK +# 0 "" +#define __LLACCUM_FBIT__ 31 +# 0 "" +#define __LLACCUM_IBIT__ 32 +# 0 "" +#define __LLACCUM_MIN__ (-0X1P31LLK-0X1P31LLK) +# 0 "" +#define __LLACCUM_MAX__ 0X7FFFFFFFFFFFFFFFP-31LLK +# 0 "" +#define __LLACCUM_EPSILON__ 0x1P-31LLK +# 0 "" +#define __ULLACCUM_FBIT__ 32 +# 0 "" +#define __ULLACCUM_IBIT__ 32 +# 0 "" +#define __ULLACCUM_MIN__ 0.0ULLK +# 0 "" +#define __ULLACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULLK +# 0 "" +#define __ULLACCUM_EPSILON__ 0x1P-32ULLK +# 0 "" +#define __QQ_FBIT__ 7 +# 0 "" +#define __QQ_IBIT__ 0 +# 0 "" +#define __HQ_FBIT__ 15 +# 0 "" +#define __HQ_IBIT__ 0 +# 0 "" +#define __SQ_FBIT__ 31 +# 0 "" +#define __SQ_IBIT__ 0 +# 0 "" +#define __DQ_FBIT__ 63 +# 0 "" +#define __DQ_IBIT__ 0 +# 0 "" +#define __TQ_FBIT__ 127 +# 0 "" +#define __TQ_IBIT__ 0 +# 0 "" +#define __UQQ_FBIT__ 8 +# 0 "" +#define __UQQ_IBIT__ 0 +# 0 "" +#define __UHQ_FBIT__ 16 +# 0 "" +#define __UHQ_IBIT__ 0 +# 0 "" +#define __USQ_FBIT__ 32 +# 0 "" +#define __USQ_IBIT__ 0 +# 0 "" +#define __UDQ_FBIT__ 64 +# 0 "" +#define __UDQ_IBIT__ 0 +# 0 "" +#define __UTQ_FBIT__ 128 +# 0 "" +#define __UTQ_IBIT__ 0 +# 0 "" +#define __HA_FBIT__ 7 +# 0 "" +#define __HA_IBIT__ 8 +# 0 "" +#define __SA_FBIT__ 15 +# 0 "" +#define __SA_IBIT__ 16 +# 0 "" +#define __DA_FBIT__ 31 +# 0 "" +#define __DA_IBIT__ 32 +# 0 "" +#define __TA_FBIT__ 63 +# 0 "" +#define __TA_IBIT__ 64 +# 0 "" +#define __UHA_FBIT__ 8 +# 0 "" +#define __UHA_IBIT__ 8 +# 0 "" +#define __USA_FBIT__ 16 +# 0 "" +#define __USA_IBIT__ 16 +# 0 "" +#define __UDA_FBIT__ 32 +# 0 "" +#define __UDA_IBIT__ 32 +# 0 "" +#define __UTA_FBIT__ 64 +# 0 "" +#define __UTA_IBIT__ 64 +# 0 "" +#define __REGISTER_PREFIX__ +# 0 "" +#define __USER_LABEL_PREFIX__ +# 0 "" +#define __GNUC_STDC_INLINE__ 1 +# 0 "" +#define __NO_INLINE__ 1 +# 0 "" +#define __STRICT_ANSI__ 1 +# 0 "" +#define __CHAR_UNSIGNED__ 1 +# 0 "" +#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 +# 0 "" +#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 +# 0 "" +#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 +# 0 "" +#define __GCC_ATOMIC_BOOL_LOCK_FREE 2 +# 0 "" +#define __GCC_ATOMIC_CHAR_LOCK_FREE 2 +# 0 "" +#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2 +# 0 "" +#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2 +# 0 "" +#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2 +# 0 "" +#define __GCC_ATOMIC_SHORT_LOCK_FREE 2 +# 0 "" +#define __GCC_ATOMIC_INT_LOCK_FREE 2 +# 0 "" +#define __GCC_ATOMIC_LONG_LOCK_FREE 2 +# 0 "" +#define __GCC_ATOMIC_LLONG_LOCK_FREE 1 +# 0 "" +#define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1 +# 0 "" +#define __GCC_DESTRUCTIVE_SIZE 64 +# 0 "" +#define __GCC_CONSTRUCTIVE_SIZE 64 +# 0 "" +#define __GCC_ATOMIC_POINTER_LOCK_FREE 2 +# 0 "" +#define __HAVE_SPECULATION_SAFE_VALUE 1 +# 0 "" +#define __GCC_HAVE_DWARF2_CFI_ASM 1 +# 0 "" +#define __PRAGMA_REDEFINE_EXTNAME 1 +# 0 "" +#define __SIZEOF_WCHAR_T__ 4 +# 0 "" +#define __SIZEOF_WINT_T__ 4 +# 0 "" +#define __SIZEOF_PTRDIFF_T__ 4 +# 0 "" +#define __ARM_FEATURE_DSP 1 +# 0 "" +#define __ARM_FEATURE_QBIT 1 +# 0 "" +#define __ARM_FEATURE_SAT 1 +# 0 "" +#undef __ARM_FEATURE_CRYPTO +# 0 "" +#define __ARM_FEATURE_UNALIGNED 1 +# 0 "" +#undef __ARM_FEATURE_QRDMX +# 0 "" +#undef __ARM_FEATURE_CRC32 +# 0 "" +#undef __ARM_FEATURE_DOTPROD +# 0 "" +#undef __ARM_FEATURE_COMPLEX +# 0 "" +#define __ARM_32BIT_STATE 1 +# 0 "" +#undef __ARM_FEATURE_MVE +# 0 "" +#undef __ARM_FEATURE_CMSE +# 0 "" +#undef __ARM_FEATURE_LDREX +# 0 "" +#define __ARM_FEATURE_LDREX 7 +# 0 "" +#define __ARM_FEATURE_CLZ 1 +# 0 "" +#undef __ARM_FEATURE_NUMERIC_MAXMIN +# 0 "" +#define __ARM_FEATURE_SIMD32 1 +# 0 "" +#define __ARM_SIZEOF_MINIMAL_ENUM 1 +# 0 "" +#define __ARM_SIZEOF_WCHAR_T 4 +# 0 "" +#undef __ARM_ARCH_PROFILE +# 0 "" +#define __ARM_ARCH_PROFILE 77 +# 0 "" +#define __arm__ 1 +# 0 "" +#undef __ARM_ARCH +# 0 "" +#define __ARM_ARCH 7 +# 0 "" +#define __APCS_32__ 1 +# 0 "" +#define __GCC_ASM_FLAG_OUTPUTS__ 1 +# 0 "" +#define __thumb__ 1 +# 0 "" +#define __thumb2__ 1 +# 0 "" +#define __THUMBEL__ 1 +# 0 "" +#undef __ARM_ARCH_ISA_THUMB +# 0 "" +#define __ARM_ARCH_ISA_THUMB 2 +# 0 "" +#define __ARMEL__ 1 +# 0 "" +#define __VFP_FP__ 1 +# 0 "" +#undef __ARM_FP +# 0 "" +#define __ARM_FP 4 +# 0 "" +#undef __ARM_FP16_FORMAT_IEEE +# 0 "" +#undef __ARM_FP16_FORMAT_ALTERNATIVE +# 0 "" +#undef __ARM_FP16_ARGS +# 0 "" +#undef __ARM_FEATURE_FP16_SCALAR_ARITHMETIC +# 0 "" +#undef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC +# 0 "" +#undef __ARM_FEATURE_FP16_FML +# 0 "" +#define __ARM_FEATURE_FMA 1 +# 0 "" +#undef __ARM_NEON__ +# 0 "" +#undef __ARM_NEON +# 0 "" +#undef __ARM_NEON_FP +# 0 "" +#define __THUMB_INTERWORK__ 1 +# 0 "" +#define __ARM_ARCH_7EM__ 1 +# 0 "" +#define __ARM_PCS_VFP 1 +# 0 "" +#define __ARM_EABI__ 1 +# 0 "" +#undef __FDPIC__ +# 0 "" +#define __ARM_ARCH_EXT_IDIV__ 1 +# 0 "" +#define __ARM_FEATURE_IDIV 1 +# 0 "" +#define __ARM_ASM_SYNTAX_UNIFIED__ 1 +# 0 "" +#undef __ARM_FEATURE_COPROC +# 0 "" +#define __ARM_FEATURE_COPROC 15 +# 0 "" +#undef __ARM_FEATURE_CDE +# 0 "" +#undef __ARM_FEATURE_CDE_COPROC +# 0 "" +#undef __ARM_FEATURE_MATMUL_INT8 +# 0 "" +#undef __ARM_FEATURE_BF16_SCALAR_ARITHMETIC +# 0 "" +#undef __ARM_FEATURE_BF16_VECTOR_ARITHMETIC +# 0 "" +#undef __ARM_BF16_FORMAT_ALTERNATIVE +# 0 "" +#define __GXX_TYPEINFO_EQUALITY_INLINE 0 +# 0 "" +#define __ELF__ 1 +# 0 "" +#define __USES_INITFINI__ 1 +# 1 "src/usart.c" +# 1 "src/rcc.h" 1 + +#define RCC_H_ + +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 1 3 +# 14 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 3 +#define _INTTYPES_H + +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/newlib.h" 1 3 + + + + + + +#define __NEWLIB_H__ 1 + + +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_newlib_version.h" 1 3 + + + +#define _NEWLIB_VERSION_H__ 1 + +#define _NEWLIB_VERSION "4.3.0" +#define __NEWLIB__ 4 +#define __NEWLIB_MINOR__ 3 +#define __NEWLIB_PATCHLEVEL__ 0 +# 11 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/newlib.h" 2 3 +# 27 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/newlib.h" 3 +#define _ATEXIT_DYNAMIC_ALLOC 1 + + + + + +#define _FSEEK_OPTIMIZATION 1 + + +#define _FVWRITE_IN_STREAMIO 1 + + +#define _HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1 + + + +#define _HAVE_INITFINI_ARRAY 1 + + +#define _HAVE_LONG_DOUBLE 1 +# 355 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/newlib.h" 3 +#define _LDBL_EQ_DBL 1 + + + + + +#define _MB_CAPABLE 1 + + +#define _MB_LEN_MAX 8 +# 373 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/newlib.h" 3 +#define _REENT_CHECK_VERIFY 1 + + +#define _RETARGETABLE_LOCKING 1 + + +#define _UNBUF_STREAM_OPT 1 + + + +#define _WANT_IO_C99_FORMATS 1 + + + + + + + +#define _WANT_IO_LONG_LONG 1 +# 408 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/newlib.h" 3 +#define _WANT_REGISTER_FINI 1 + + +#define _WANT_USE_GDTOA 1 + + + + + +#define _WIDE_ORIENT 1 +# 17 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 2 3 +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/config.h" 1 3 + +#define __SYS_CONFIG_H__ + +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/ieeefp.h" 1 3 +# 77 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/ieeefp.h" 3 +#define __IEEE_LITTLE_ENDIAN +# 91 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/ieeefp.h" 3 +#define _SUPPORTS_ERREXCEPT + + + + + + +#define __DOUBLE_TYPE double +#define __FLOAT_TYPE float +# 515 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/ieeefp.h" 3 +#define __OBSOLETE_MATH_DEFAULT 1 + + +#define __OBSOLETE_MATH __OBSOLETE_MATH_DEFAULT +# 5 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/config.h" 2 3 +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" 1 3 +# 22 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" 3 +#define _SYS_FEATURES_H +# 33 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" 3 +#define __GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) + + + + + + +#define __GNUC_PREREQ__(ma,mi) __GNUC_PREREQ(ma, mi) +# 249 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" 3 +#define __ATFILE_VISIBLE 0 + + + + + +#define __BSD_VISIBLE 0 + + + + + +#define __GNU_VISIBLE 0 + + + + +#define __ISO_C_VISIBLE 2011 +# 277 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" 3 +#define __LARGEFILE_VISIBLE 0 + + + + + +#define __MISC_VISIBLE 0 +# 299 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" 3 +#define __POSIX_VISIBLE 0 + + + + + +#define __SVID_VISIBLE 0 +# 319 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" 3 +#define __XSI_VISIBLE 0 +# 331 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" 3 +#define __SSP_FORTIFY_LEVEL 0 +# 6 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/config.h" 2 3 +# 224 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/config.h" 3 +#define _POINTER_INT long + + + + + +#undef __RAND_MAX + + + +#define __RAND_MAX 0x7fffffff +# 248 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/config.h" 3 +#define __EXPORT + + + +#define __IMPORT + + + + + + +#define _READ_WRITE_RETURN_TYPE int + + + + + +#define _READ_WRITE_BUFSIZE_TYPE int +# 290 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/config.h" 3 +#define _USE_GDTOA +# 18 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 2 3 +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 1 3 +# 10 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define _SYS__INTSUP_H + + + + + +#define __STDINT_EXP(x) __ ##x ##__ +# 35 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 + + + + + + + + +#undef signed +#undef unsigned +#undef char +#undef short +#undef int +#undef __int20 +#undef __int20__ +#undef long +#define signed +0 +#define unsigned +0 +#define char +0 +#define short +1 +#define __int20 +2 +#define __int20__ +2 +#define int +2 +#define long +4 +# 67 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define _INTPTR_EQ_INT + + + + + + +#define _INT32_EQ_LONG + + + + + + + +#define __INT8 "hh" +# 93 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define __INT16 "h" +# 104 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define __INT32 "l" +# 113 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define __INT64 "ll" + + + + + + +#define __FAST8 +# 129 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define __FAST16 + + + + + + +#define __FAST32 +# 147 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define __FAST64 "ll" + + + +#define __LEAST8 "hh" +# 162 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define __LEAST16 "h" +# 173 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define __LEAST32 "l" +# 182 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#define __LEAST64 "ll" + +#undef signed +#undef unsigned +#undef char +#undef short +#undef int +#undef long + + + + + +# 194 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#undef __int20 + +# 195 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" 3 +#undef __int20__ + + +# 19 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 2 3 +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_ansi.h" 1 3 + + + + + + + +#define _ANSIDECL_H_ +# 31 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_ansi.h" 3 +#define _BEGIN_STD_C +#define _END_STD_C +#define _NOTHROW + + + +#define _LONG_DOUBLE long double + + + + + +#define _ATTRIBUTE(attrs) __attribute__ (attrs) +# 69 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_ansi.h" 3 +#define _ELIDABLE_INLINE static __inline__ + + + +#define _NOINLINE __attribute__ ((__noinline__)) +#define _NOINLINE_STATIC _NOINLINE static +# 20 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 2 3 +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdint.h" 1 3 4 +# 9 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdint.h" 3 4 +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 1 3 4 +# 10 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define _STDINT_H + +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 1 3 4 + + + + + +#define _MACHINE__DEFAULT_TYPES_H +# 15 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +#define __EXP(x) __ ##x ##__ +# 26 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +#define __have_longlong64 1 + + + + + + +#define __have_long32 1 + + + + + + + + +# 41 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +typedef signed char __int8_t; + +typedef unsigned char __uint8_t; + + + +#define ___int8_t_defined 1 + + + + + + + +typedef short int __int16_t; + +typedef short unsigned int __uint16_t; + + + +#define ___int16_t_defined 1 +# 77 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +typedef long int __int32_t; + +typedef long unsigned int __uint32_t; + + + +#define ___int32_t_defined 1 +# 103 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +typedef long long int __int64_t; + +typedef long long unsigned int __uint64_t; + + + +#define ___int64_t_defined 1 +# 134 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +typedef signed char __int_least8_t; + +typedef unsigned char __uint_least8_t; + + + +#define ___int_least8_t_defined 1 +# 160 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +typedef short int __int_least16_t; + +typedef short unsigned int __uint_least16_t; + + + +#define ___int_least16_t_defined 1 +# 182 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +typedef long int __int_least32_t; + +typedef long unsigned int __uint_least32_t; + + + +#define ___int_least32_t_defined 1 +# 200 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +typedef long long int __int_least64_t; + +typedef long long unsigned int __uint_least64_t; + + + +#define ___int_least64_t_defined 1 + + + + + + + +typedef long long int __intmax_t; + + + + + + + +typedef long long unsigned int __uintmax_t; + + + + + + + +typedef int __intptr_t; + +typedef unsigned int __uintptr_t; +# 244 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" 3 4 +#undef __EXP +# 13 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 2 3 4 + +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_stdint.h" 1 3 4 +# 10 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_stdint.h" 3 4 +#define _SYS__STDINT_H +# 20 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_stdint.h" 3 4 +typedef __int8_t int8_t ; +#define _INT8_T_DECLARED + + +typedef __uint8_t uint8_t ; +#define _UINT8_T_DECLARED + +#define __int8_t_defined 1 + + + + +typedef __int16_t int16_t ; +#define _INT16_T_DECLARED + + +typedef __uint16_t uint16_t ; +#define _UINT16_T_DECLARED + +#define __int16_t_defined 1 + + + + +typedef __int32_t int32_t ; +#define _INT32_T_DECLARED + + +typedef __uint32_t uint32_t ; +#define _UINT32_T_DECLARED + +#define __int32_t_defined 1 + + + + +typedef __int64_t int64_t ; +#define _INT64_T_DECLARED + + +typedef __uint64_t uint64_t ; +#define _UINT64_T_DECLARED + +#define __int64_t_defined 1 + + + +typedef __intmax_t intmax_t; +#define _INTMAX_T_DECLARED + + + +typedef __uintmax_t uintmax_t; +#define _UINTMAX_T_DECLARED + + + +typedef __intptr_t intptr_t; +#define _INTPTR_T_DECLARED + + + +typedef __uintptr_t uintptr_t; +#define _UINTPTR_T_DECLARED +# 15 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 2 3 4 + + + + + + +typedef __int_least8_t int_least8_t; +typedef __uint_least8_t uint_least8_t; +#define __int_least8_t_defined 1 + + + +typedef __int_least16_t int_least16_t; +typedef __uint_least16_t uint_least16_t; +#define __int_least16_t_defined 1 + + + +typedef __int_least32_t int_least32_t; +typedef __uint_least32_t uint_least32_t; +#define __int_least32_t_defined 1 + + + +typedef __int_least64_t int_least64_t; +typedef __uint_least64_t uint_least64_t; +#define __int_least64_t_defined 1 +# 51 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 + typedef int int_fast8_t; + typedef unsigned int uint_fast8_t; +#define __int_fast8_t_defined 1 + + + + + + + + typedef int int_fast16_t; + typedef unsigned int uint_fast16_t; +#define __int_fast16_t_defined 1 + + + + + + + + typedef int int_fast32_t; + typedef unsigned int uint_fast32_t; +#define __int_fast32_t_defined 1 + + + + + + + + typedef long long int int_fast64_t; + typedef long long unsigned int uint_fast64_t; +#define __int_fast64_t_defined 1 +# 128 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INTPTR_MIN (-__INTPTR_MAX__ - 1) +#define INTPTR_MAX (__INTPTR_MAX__) +#define UINTPTR_MAX (__UINTPTR_MAX__) +# 152 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT8_MIN (-__INT8_MAX__ - 1) +#define INT8_MAX (__INT8_MAX__) +#define UINT8_MAX (__UINT8_MAX__) + + + + + + + +#define INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1) +#define INT_LEAST8_MAX (__INT_LEAST8_MAX__) +#define UINT_LEAST8_MAX (__UINT_LEAST8_MAX__) +# 174 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT16_MIN (-__INT16_MAX__ - 1) +#define INT16_MAX (__INT16_MAX__) +#define UINT16_MAX (__UINT16_MAX__) + + + + + + + +#define INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1) +#define INT_LEAST16_MAX (__INT_LEAST16_MAX__) +#define UINT_LEAST16_MAX (__UINT_LEAST16_MAX__) +# 196 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT32_MIN (-__INT32_MAX__ - 1) +#define INT32_MAX (__INT32_MAX__) +#define UINT32_MAX (__UINT32_MAX__) +# 212 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1) +#define INT_LEAST32_MAX (__INT_LEAST32_MAX__) +#define UINT_LEAST32_MAX (__UINT_LEAST32_MAX__) +# 230 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT64_MIN (-__INT64_MAX__ - 1) +#define INT64_MAX (__INT64_MAX__) +#define UINT64_MAX (__UINT64_MAX__) +# 246 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1) +#define INT_LEAST64_MAX (__INT_LEAST64_MAX__) +#define UINT_LEAST64_MAX (__UINT_LEAST64_MAX__) +# 262 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1) +#define INT_FAST8_MAX (__INT_FAST8_MAX__) +#define UINT_FAST8_MAX (__UINT_FAST8_MAX__) +# 278 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1) +#define INT_FAST16_MAX (__INT_FAST16_MAX__) +#define UINT_FAST16_MAX (__UINT_FAST16_MAX__) +# 294 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1) +#define INT_FAST32_MAX (__INT_FAST32_MAX__) +#define UINT_FAST32_MAX (__UINT_FAST32_MAX__) +# 310 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1) +#define INT_FAST64_MAX (__INT_FAST64_MAX__) +#define UINT_FAST64_MAX (__UINT_FAST64_MAX__) +# 326 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INTMAX_MAX (__INTMAX_MAX__) +#define INTMAX_MIN (-INTMAX_MAX - 1) + + + + + + + +#define UINTMAX_MAX (__UINTMAX_MAX__) + + + + + + + +#define SIZE_MAX (__SIZE_MAX__) + + + + + +#define SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1) +#define SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX)) + + + +#define PTRDIFF_MAX (__PTRDIFF_MAX__) + + + +#define PTRDIFF_MIN (-PTRDIFF_MAX - 1) + + + + +#define WCHAR_MIN (__WCHAR_MIN__) +# 374 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define WCHAR_MAX (__WCHAR_MAX__) +# 384 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define WINT_MAX (__WINT_MAX__) + + + + +#define WINT_MIN (__WINT_MIN__) + + + + + + +#define INT8_C(x) __INT8_C(x) +#define UINT8_C(x) __UINT8_C(x) +# 408 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT16_C(x) __INT16_C(x) +#define UINT16_C(x) __UINT16_C(x) +# 420 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT32_C(x) __INT32_C(x) +#define UINT32_C(x) __UINT32_C(x) +# 433 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INT64_C(x) __INT64_C(x) +#define UINT64_C(x) __UINT64_C(x) +# 449 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" 3 4 +#define INTMAX_C(x) __INTMAX_C(x) +#define UINTMAX_C(x) __UINTMAX_C(x) +# 10 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdint.h" 2 3 4 + + + +#define _GCC_WRAP_STDINT_H +# 21 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 2 3 +#define __need_wchar_t +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stddef.h" 1 3 4 +# 267 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stddef.h" 3 4 +#define __wchar_t__ +#define __WCHAR_T__ +#define _WCHAR_T +#define _T_WCHAR_ +#define _T_WCHAR +#define __WCHAR_T +#define _WCHAR_T_ +#define _BSD_WCHAR_T_ +#define _WCHAR_T_DEFINED_ +#define _WCHAR_T_DEFINED +#define _WCHAR_T_H +#define ___int_wchar_t_h +#define __INT_WCHAR_T_H +#define _GCC_WCHAR_T +#define _WCHAR_T_DECLARED +#define __DEFINED_wchar_t +# 295 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stddef.h" 3 4 +#undef _BSD_WCHAR_T_ +# 329 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stddef.h" 3 4 +typedef unsigned int wchar_t; +# 349 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stddef.h" 3 4 +#undef __need_wchar_t +# 410 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stddef.h" 3 4 +#undef __need_NULL +# 23 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 2 3 + + + + + +#define __STRINGIFY(a) #a + + +#define __PRI8(x) __INT8 __STRINGIFY(x) +#define __PRI8LEAST(x) __LEAST8 __STRINGIFY(x) +#define __PRI8FAST(x) __FAST8 __STRINGIFY(x) +# 46 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 3 +#define __SCN8(x) __INT8 __STRINGIFY(x) +#define __SCN8LEAST(x) __LEAST8 __STRINGIFY(x) +#define __SCN8FAST(x) __FAST8 __STRINGIFY(x) + + + +#define PRId8 __PRI8(d) +#define PRIi8 __PRI8(i) +#define PRIo8 __PRI8(o) +#define PRIu8 __PRI8(u) +#define PRIx8 __PRI8(x) +#define PRIX8 __PRI8(X) + + + + +#define SCNd8 __SCN8(d) +#define SCNi8 __SCN8(i) +#define SCNo8 __SCN8(o) +#define SCNu8 __SCN8(u) +#define SCNx8 __SCN8(x) + + + + +#define PRIdLEAST8 __PRI8LEAST(d) +#define PRIiLEAST8 __PRI8LEAST(i) +#define PRIoLEAST8 __PRI8LEAST(o) +#define PRIuLEAST8 __PRI8LEAST(u) +#define PRIxLEAST8 __PRI8LEAST(x) +#define PRIXLEAST8 __PRI8LEAST(X) + + + + +#define SCNdLEAST8 __SCN8LEAST(d) +#define SCNiLEAST8 __SCN8LEAST(i) +#define SCNoLEAST8 __SCN8LEAST(o) +#define SCNuLEAST8 __SCN8LEAST(u) +#define SCNxLEAST8 __SCN8LEAST(x) + + + +#define PRIdFAST8 __PRI8FAST(d) +#define PRIiFAST8 __PRI8FAST(i) +#define PRIoFAST8 __PRI8FAST(o) +#define PRIuFAST8 __PRI8FAST(u) +#define PRIxFAST8 __PRI8FAST(x) +#define PRIXFAST8 __PRI8FAST(X) + + + + +#define SCNdFAST8 __SCN8FAST(d) +#define SCNiFAST8 __SCN8FAST(i) +#define SCNoFAST8 __SCN8FAST(o) +#define SCNuFAST8 __SCN8FAST(u) +#define SCNxFAST8 __SCN8FAST(x) + + + + +#define __PRI16(x) __INT16 __STRINGIFY(x) +#define __PRI16LEAST(x) __LEAST16 __STRINGIFY(x) +#define __PRI16FAST(x) __FAST16 __STRINGIFY(x) +#define __SCN16(x) __INT16 __STRINGIFY(x) +#define __SCN16LEAST(x) __LEAST16 __STRINGIFY(x) +#define __SCN16FAST(x) __FAST16 __STRINGIFY(x) + + +#define PRId16 __PRI16(d) +#define PRIi16 __PRI16(i) +#define PRIo16 __PRI16(o) +#define PRIu16 __PRI16(u) +#define PRIx16 __PRI16(x) +#define PRIX16 __PRI16(X) + +#define SCNd16 __SCN16(d) +#define SCNi16 __SCN16(i) +#define SCNo16 __SCN16(o) +#define SCNu16 __SCN16(u) +#define SCNx16 __SCN16(x) + + +#define PRIdLEAST16 __PRI16LEAST(d) +#define PRIiLEAST16 __PRI16LEAST(i) +#define PRIoLEAST16 __PRI16LEAST(o) +#define PRIuLEAST16 __PRI16LEAST(u) +#define PRIxLEAST16 __PRI16LEAST(x) +#define PRIXLEAST16 __PRI16LEAST(X) + +#define SCNdLEAST16 __SCN16LEAST(d) +#define SCNiLEAST16 __SCN16LEAST(i) +#define SCNoLEAST16 __SCN16LEAST(o) +#define SCNuLEAST16 __SCN16LEAST(u) +#define SCNxLEAST16 __SCN16LEAST(x) + + +#define PRIdFAST16 __PRI16FAST(d) +#define PRIiFAST16 __PRI16FAST(i) +#define PRIoFAST16 __PRI16FAST(o) +#define PRIuFAST16 __PRI16FAST(u) +#define PRIxFAST16 __PRI16FAST(x) +#define PRIXFAST16 __PRI16FAST(X) + +#define SCNdFAST16 __SCN16FAST(d) +#define SCNiFAST16 __SCN16FAST(i) +#define SCNoFAST16 __SCN16FAST(o) +#define SCNuFAST16 __SCN16FAST(u) +#define SCNxFAST16 __SCN16FAST(x) + + +#define __PRI32(x) __INT32 __STRINGIFY(x) +#define __SCN32(x) __INT32 __STRINGIFY(x) +#define __PRI32LEAST(x) __LEAST32 __STRINGIFY(x) +#define __SCN32LEAST(x) __LEAST32 __STRINGIFY(x) +#define __PRI32FAST(x) __FAST32 __STRINGIFY(x) +#define __SCN32FAST(x) __FAST32 __STRINGIFY(x) + +#define PRId32 __PRI32(d) +#define PRIi32 __PRI32(i) +#define PRIo32 __PRI32(o) +#define PRIu32 __PRI32(u) +#define PRIx32 __PRI32(x) +#define PRIX32 __PRI32(X) + +#define SCNd32 __SCN32(d) +#define SCNi32 __SCN32(i) +#define SCNo32 __SCN32(o) +#define SCNu32 __SCN32(u) +#define SCNx32 __SCN32(x) + + +#define PRIdLEAST32 __PRI32LEAST(d) +#define PRIiLEAST32 __PRI32LEAST(i) +#define PRIoLEAST32 __PRI32LEAST(o) +#define PRIuLEAST32 __PRI32LEAST(u) +#define PRIxLEAST32 __PRI32LEAST(x) +#define PRIXLEAST32 __PRI32LEAST(X) + +#define SCNdLEAST32 __SCN32LEAST(d) +#define SCNiLEAST32 __SCN32LEAST(i) +#define SCNoLEAST32 __SCN32LEAST(o) +#define SCNuLEAST32 __SCN32LEAST(u) +#define SCNxLEAST32 __SCN32LEAST(x) + + +#define PRIdFAST32 __PRI32FAST(d) +#define PRIiFAST32 __PRI32FAST(i) +#define PRIoFAST32 __PRI32FAST(o) +#define PRIuFAST32 __PRI32FAST(u) +#define PRIxFAST32 __PRI32FAST(x) +#define PRIXFAST32 __PRI32FAST(X) + +#define SCNdFAST32 __SCN32FAST(d) +#define SCNiFAST32 __SCN32FAST(i) +#define SCNoFAST32 __SCN32FAST(o) +#define SCNuFAST32 __SCN32FAST(u) +#define SCNxFAST32 __SCN32FAST(x) + + + +#define __PRI64(x) __INT64 __STRINGIFY(x) +#define __SCN64(x) __INT64 __STRINGIFY(x) + +#define __PRI64LEAST(x) __LEAST64 __STRINGIFY(x) +#define __SCN64LEAST(x) __LEAST64 __STRINGIFY(x) +#define __PRI64FAST(x) __FAST64 __STRINGIFY(x) +#define __SCN64FAST(x) __FAST64 __STRINGIFY(x) + + +#define PRId64 __PRI64(d) +#define PRIi64 __PRI64(i) +#define PRIo64 __PRI64(o) +#define PRIu64 __PRI64(u) +#define PRIx64 __PRI64(x) +#define PRIX64 __PRI64(X) + +#define SCNd64 __SCN64(d) +#define SCNi64 __SCN64(i) +#define SCNo64 __SCN64(o) +#define SCNu64 __SCN64(u) +#define SCNx64 __SCN64(x) + + + +#define PRIdLEAST64 __PRI64LEAST(d) +#define PRIiLEAST64 __PRI64LEAST(i) +#define PRIoLEAST64 __PRI64LEAST(o) +#define PRIuLEAST64 __PRI64LEAST(u) +#define PRIxLEAST64 __PRI64LEAST(x) +#define PRIXLEAST64 __PRI64LEAST(X) + +#define SCNdLEAST64 __SCN64LEAST(d) +#define SCNiLEAST64 __SCN64LEAST(i) +#define SCNoLEAST64 __SCN64LEAST(o) +#define SCNuLEAST64 __SCN64LEAST(u) +#define SCNxLEAST64 __SCN64LEAST(x) + + + +#define PRIdFAST64 __PRI64FAST(d) +#define PRIiFAST64 __PRI64FAST(i) +#define PRIoFAST64 __PRI64FAST(o) +#define PRIuFAST64 __PRI64FAST(u) +#define PRIxFAST64 __PRI64FAST(x) +#define PRIXFAST64 __PRI64FAST(X) + +#define SCNdFAST64 __SCN64FAST(d) +#define SCNiFAST64 __SCN64FAST(i) +#define SCNoFAST64 __SCN64FAST(o) +#define SCNuFAST64 __SCN64FAST(u) +#define SCNxFAST64 __SCN64FAST(x) + + + + + + + +#define __PRIMAX(x) __STRINGIFY(ll ##x) +#define __SCNMAX(x) __STRINGIFY(ll ##x) + + + + + +#define PRIdMAX __PRIMAX(d) +#define PRIiMAX __PRIMAX(i) +#define PRIoMAX __PRIMAX(o) +#define PRIuMAX __PRIMAX(u) +#define PRIxMAX __PRIMAX(x) +#define PRIXMAX __PRIMAX(X) + +#define SCNdMAX __SCNMAX(d) +#define SCNiMAX __SCNMAX(i) +#define SCNoMAX __SCNMAX(o) +#define SCNuMAX __SCNMAX(u) +#define SCNxMAX __SCNMAX(x) +# 294 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" 3 +#define __PRIPTR(x) __STRINGIFY(x) +#define __SCNPTR(x) __STRINGIFY(x) + + +#define PRIdPTR __PRIPTR(d) +#define PRIiPTR __PRIPTR(i) +#define PRIoPTR __PRIPTR(o) +#define PRIuPTR __PRIPTR(u) +#define PRIxPTR __PRIPTR(x) +#define PRIXPTR __PRIPTR(X) + +#define SCNdPTR __SCNPTR(d) +#define SCNiPTR __SCNPTR(i) +#define SCNoPTR __SCNPTR(o) +#define SCNuPTR __SCNPTR(u) +#define SCNxPTR __SCNPTR(x) + + +typedef struct { + intmax_t quot; + intmax_t rem; +} imaxdiv_t; + +struct _reent; + + + + + +extern intmax_t imaxabs(intmax_t); +extern imaxdiv_t imaxdiv(intmax_t __numer, intmax_t __denomer); +extern intmax_t strtoimax(const char *__restrict, char **__restrict, int); +extern intmax_t _strtoimax_r(struct _reent *, const char *__restrict, char **__restrict, int); +extern uintmax_t strtoumax(const char *__restrict, char **__restrict, int); +extern uintmax_t _strtoumax_r(struct _reent *, const char *__restrict, char **__restrict, int); +extern intmax_t wcstoimax(const wchar_t *__restrict, wchar_t **__restrict, int); +extern intmax_t _wcstoimax_r(struct _reent *, const wchar_t *__restrict, wchar_t **__restrict, int); +extern uintmax_t wcstoumax(const wchar_t *__restrict, wchar_t **__restrict, int); +extern uintmax_t _wcstoumax_r(struct _reent *, const wchar_t *__restrict, wchar_t **__restrict, int); +# 5 "src/rcc.h" 2 + + +# 6 "src/rcc.h" +struct rcc { + volatile uint32_t CR; + volatile uint32_t PLLCFGR; + volatile uint32_t CFGR; + volatile uint32_t CIR; + volatile uint32_t AHB1RSTR; + volatile uint32_t AHB2RSTR; + volatile uint32_t RESERVED0[2]; + volatile uint32_t APB1RSTR; + volatile uint32_t APB2RSTR; + volatile uint32_t RESERVED1[2]; + volatile uint32_t AHB1ENR; + volatile uint32_t AHB2ENR; + volatile uint32_t RESERVED2[2]; + volatile uint32_t APB1ENR; + volatile uint32_t APB2ENR; + volatile uint32_t RESERVED3[2]; + volatile uint32_t AHB1LPENR; + volatile uint32_t AHB2LPENR; + volatile uint32_t RESERVED4[2]; + volatile uint32_t APB1LPENR; + volatile uint32_t APB2LPENR; + volatile uint32_t RESERVED5[2]; + volatile uint32_t BDCR; + volatile uint32_t CSR; + volatile uint32_t RESERVED6[2]; + volatile uint32_t SSCGR; + volatile uint32_t PLLI2SCFGR; + volatile uint32_t DCKCFGR; +}; + +#define RCC_BASE_ADDR (0x40023800U) +#define RCC ((struct rcc *) RCC_BASE_ADDR) + + + +#define RCC_CR_PLLRDY_BIT 25 +#define RCC_CR_PLLRDY_LOCKED (1 << RCC_CR_PLLRDY_BIT) + + +#define RCC_CR_PLLON_BIT 24 +#define RCC_CR_PLLON_ON (1 << RCC_CR_PLLON_BIT) + + +#define RCC_CR_CSS_BIT 19 +#define RCC_CR_CSS_ON (1 << RCC_CR_CSS_BIT) + + + +#define RCC_CR_HSERDY_BIT 17 +#define RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT) + + +#define RCC_CR_HSEON_BIT 16 +#define RCC_CR_HSEON_ON (1 << RCC_CR_HSEON_BIT) + + +#define RCC_CR_HSIRDY_BIT 1 +#define RCC_CR_HSIRDY_READY (1 << RCC_CR_HSIRDY_BIT) + + +#define RCC_CR_HSION_BIT 0 +#define RCC_CR_HSION_ON (1 << RCC_CR_HSION_BIT) + + +#define RCC_PLLCFGR_PLLQ_BIT 24 +#define RCC_PLLCFGR_PLLQ_MASK (0b1111) +#define RCC_PLLCFGR_PLLQ(q) ((q & RCC_PLLCFGR_PLLQ_MASK) << RCC_PLLCFGR_PLLQ_BIT) + +#define RCC_PLLCFGR_PLLSRC_BIT 22 +#define RCC_PLLCFGR_PLLSRC_HSE (1 << RCC_PLLCFGR_PLLSRC_BIT) +#define RCC_PLLCFGR_PLLSRC_HSI (0 << RCC_PLLCFGR_PLLSRC_BIT) + +#define RCC_PLLCFGR_PLLP_BIT 16 +#define RCC_PLLCFGR_PLLP_MASK (0b11) +#define RCC_PLLCFGR_PLLP(p) ((p & RCC_PLLCFGR_PLLP_MASK) << RCC_PLLCFGR_PLLP_BIT) + +#define RCC_PLLCFGR_PLLN_BIT 6 +#define RCC_PLLCFGR_PLLN_MASK (0b111111111) +#define RCC_PLLCFGR_PLLN(n) ((n & RCC_PLLCFGR_PLLN_MASK) << RCC_PLLCFGR_PLLN_BIT) + +#define RCC_PLLCFGR_PLLM_BIT 0 +#define RCC_PLLCFGR_PLLM_MASK (0b111111) +#define RCC_PLLCFGR_PLLM(m) ((m & RCC_PLLCFGR_PLLM_MASK) << RCC_PLLCFGR_PLLM_BIT) + + + +#define RCC_CFGR_PPRE_DIV_NONE 0 +#define RCC_CFGR_PPRE_DIV_2 (0b100) + + +#define RCC_CFGR_MCO1_HSI (0b00) +#define RCC_CFGR_MCO1_HSE (0b10) +#define RCC_CFGR_MCO1_PLL (0b11) + +#define RCC_CFGR_MCO1_BIT 21 +#define RCC_CFGR_MCO1_MASK (0b11) + +#define RCC_CFGR_MCO1PRE_DIV5 (0b111) +#define RCC_CFGR_MCO1PRE_DIV4 (0b110) +#define RCC_CFGR_MCO1PRE_DIV2 (0b100) + +#define RCC_CFGR_MCO1PRE_BIT 24 +#define RCC_CFGR_MCO1PRE_MASK (0b111) + + +#define RCC_CFGR_PPRE2_BIT 13 +#define RCC_CFGR_PPRE2_MASK (0b111) + + +#define RCC_CFGR_PPRE1_BIT 10 +#define RCC_CFGR_PPRE1_MASK (0b111) + + +#define RCC_CFGR_HPRE_DIV_NONE 0 + +#define RCC_CFGR_HPRE_BIT 4 +#define RCC_CFGR_HPRE_MASK (0b1111) + + +#define RCC_CFGR_SWS_PLL (0b10) + +#define RCC_CFGR_SWS_BIT 2 +#define RCC_CFGR_SWS_MASK (0b11) + + +#define RCC_CFGR_SW_PLL (0b10) + +#define RCC_CFGR_SW_BIT 0 +#define RCC_CFGR_SW_MASK (0b11) +#define RCC_CFGR_SW(clock) ((clock & RCC_CFGR_SW_MASK) << RCC_CFGR_SW_BIT) + + + +#define RCC_AHB1ENR_GPIOAEN_BIT 0 +#define RCC_AHB1ENR_GPIOAEN_ENABLE (1 << RCC_AHB1ENR_GPIOAEN_BIT) + + +#define RCC_APB1ENR_PWREN_BIT 28 +#define RCC_APB1ENR_PWREN_CLOCK_ENABLE (1 << RCC_APB1ENR_PWREN_BIT) + +#define RCC_APB1ENR_USART2EN_BIT 17 +#define RCC_APB1ENR_USART2EN_ENABLE (1 << RCC_APB1ENR_USART2EN_BIT) + +#define RCC_APB1ENR_TIM4_BIT 2 +#define RCC_APB1ENR_TIM4_ENABLE (1 << RCC_APB1ENR_TIM4_BIT) +# 2 "src/usart.c" 2 +# 1 "src/gpio.h" 1 + +#define GPIO_H_ + +# 1 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdbool.h" 1 3 4 +# 29 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdbool.h" 3 4 +#define _STDBOOL_H + + + +#define bool _Bool + +#define true ((_Bool)+1u) +#define false ((_Bool)+0u) +# 50 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdbool.h" 3 4 +#define __bool_true_false_are_defined 1 +# 5 "src/gpio.h" 2 + + +struct gpio { + volatile uint32_t MODER; + volatile uint32_t OTYPER; + volatile uint32_t OSPEEDR; + volatile uint32_t PUPDR; + volatile uint32_t IDR; + volatile uint32_t ODR; + volatile uint32_t BSRR; + volatile uint32_t LCKR; + volatile uint32_t AFRL; + volatile uint32_t AFRH; +}; + + +#define GPIO_AF_MCO_1 (0b0000) +#define GPIO_AF_USART2_RX (0b0111) +#define GPIO_AF_USART2_TX (0b0111) + +#define GPIO_BASE_ADDR (0x40020000U) +#define GPIO_PORT_OFFSET (0x400U) +#define GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADDR + (GPIO_PORT_OFFSET * port))) + + +#define PORT(port) (((port) - 'A') << 8) + +#define PIN(port,num) (PORT(port) | num) + +#define PINNUM(pin) (pin & 0b1111) + +#define PINPORT(pin) (pin >> 8) + +typedef enum { + GPIO_MODE_INPUT, + GPIO_MODE_OUTPUT, + GPIO_MODE_AF, + GPIO_MODE_ANALOG +} GPIO_MODE; + +void gpio_set_mode(uint16_t pin, GPIO_MODE mode); +void gpio_set_af(uint16_t pin, uint8_t af); +void gpio_write(uint16_t pin, +# 47 "src/gpio.h" 3 4 + _Bool +# 47 "src/gpio.h" + val); +# 3 "src/usart.c" 2 +# 1 "src/usart.h" 1 + +#define USART_H_ + + + +struct usart { + volatile uint32_t SR; + volatile uint32_t DR; + volatile uint32_t BRR; + volatile uint32_t CR1; + volatile uint32_t CR2; + volatile uint32_t CR3; + volatile uint32_t GTPR; +}; + +#define USART2_BASE_ADDR (0x40004400U) +#define USART2 ((struct usart *) USART2_BASE_ADDR) + + + +#define USART_SR_TXE_BIT 7 +#define USART_SR_TXE_TRANSMITTED (1 << USART_SR_TXE_BIT) + + +#define USART_SR_TC_BIT 6 +#define USART_SR_TC_COMPLETED (1 << USART_SR_TC_BIT) + + + +#define USART_SR_RXNE_BIT 5 +#define USART_SR_RXNE_READY (1 <AHB1ENR |= (1 << ((('A') - 'A') << 8)); + + + + uint16_t txPin = (((('A') - 'A') << 8) | 2); + gpio_set_mode(txPin, GPIO_MODE_AF); + gpio_set_af(txPin, (0b0111)); + + uint16_t rxPin = (((('A') - 'A') << 8) | 3); + gpio_set_mode(rxPin, GPIO_MODE_AF); + gpio_set_af(rxPin, (0b0111)); + + + uint16_t clockOutPin = (((('A') - 'A') << 8) | 8); + gpio_set_mode(clockOutPin, GPIO_MODE_AF); + gpio_set_af(clockOutPin, (0b0000)); + + ((struct rcc *) (0x40023800U))->CFGR &= ~((0b11) << 21); + + ((struct rcc *) (0x40023800U))->CFGR |= ((0b11) << 21); + ((struct rcc *) (0x40023800U))->CFGR &= ~((0b111) << 24); + ((struct rcc *) (0x40023800U))->CFGR |= ((0b110) << 24); + + + ((struct rcc *) (0x40023800U))->APB1ENR |= (1 << 17); + + + ((struct usart *) (0x40004400U))->CR1 = 0; + ((struct usart *) (0x40004400U))->CR2 = 0; + ((struct usart *) (0x40004400U))->CR3 = 0; +# 54 "src/usart.c" + ((struct usart *) (0x40004400U))->BRR &= ~((0b111111111111) << 4); + ((struct usart *) (0x40004400U))->BRR |= (0x1A << 4); + ((struct usart *) (0x40004400U))->BRR &= ~((0b111) << 0); + ((struct usart *) (0x40004400U))->BRR |= (0x0 << 4); + + + ((struct usart *) (0x40004400U))->CR1 |= (1 << 3); + ((struct usart *) (0x40004400U))->CR1 |= (1 << 2); +} + +void usart2_start(void) { + ((struct usart *) (0x40004400U))->CR1 |= (1 << 13); +} + +void usart2_write_byte(uint8_t c) { + + ((struct usart *) (0x40004400U))->DR = c; + + + + while (!(((struct usart *) (0x40004400U))->SR & (1 << 6))); +} + +void usart2_write(char *buf) { + while (*buf) usart2_write_byte(*buf++); +} diff --git a/build/usart.o b/build/usart.o new file mode 100644 index 0000000000000000000000000000000000000000..2fd6f00dc13f422b5bed250224b69f9c29fda969 GIT binary patch literal 48832 zcmb<-^>JflWMqH=Mg|QA1doAX!X~f`s|lFWVDMw`1(SV7s=3=9l5P_``t1A`ruZO_2K-~eSiGB7YWF)%PRY;D@Wu-?X7 zI@{XI`2!=fa59tf?}pzUOo|e2|G)qH|GR@7%3@aD-LM-jz8fyipT3`$XnBHptzguRr%)H^GG_`p0lLBM-<2EUi{mkY&{ z6L`I6XYhC_e_&^xoWSMHvv^v0>geb zZ|Mx?4-U)>+CMKa>}S}|V-D8=G7lV{6$xw)sxzWwsuH9tAmLb@Azi_s{pBJ^2gC(k z%nS^y42&$G#KirSgMmSIngj#Gg;)j#9*__cW@2R9Ey}>aV#3S7z@#k>ic%&7 zNo8PQ;8?@Jz`$FSoXpU}!p0%R#K6Gp9K^uFz60c9##ed_3@jWVHVb2kDgy%xCy33# z?CcrDz`_M$^Dw5xGBB`kgV+L$yZjg!Sa?8e5ymOv3=Ay1T1*TK5{zt)3=AxMAaMo8 zG9v~C7Jd+0g>fE8jQ~iE2IFQQ1_l;EkhlTkVOa(S79kMZgmDE(jW9@!1*0p-91)PX z17o-d0|SdFi0#7oNQ!}hMGU0IgYgGQTpT1Gz_^o_fq_K=#13IR0y0Muq$Ywf!is@` zMG7RIz$jzNz`!C6Vy7^&N;5F9$bi&jFxDtBFtEsi#0!|6gM%1YF*^qtF|a}6h}k*Fn1Kx%N8UyZ3~an0 zcS8FuH(sfXl==jvyV$3@!>FYnUdM zGl<4oFfcGWfR!kK0&0#}geNFGz#^d1m~jrfydVPuH^_BN6U*4Y=`t|zLpUYu-W&`J zA`ngy0|O&312dl$w>7t=qNt~^1vdi&lL`Yjw;eY#9|Hq3F9S0NiX@8|OgXowFarat z1_Lvn3^xM<8!H2d&u#*eR%8Sj$Kxr?B*DPIVG5Sv)MK=lWahI{WCh8wsY}{OG72*= zaIu1H0BhiesOJ`BROJ)qX6BRT3l$e+6cDczXJFugx`~5?&@M5qyk{ zp28pozaoRDus$~fg8&Po9XB_(r!Yd1pfDpdAF?hXsCz&@=T?^#WE5g^kf;H>NtmAj zq?v(11e=;Fuo_W42C#Qfv{y+oFo|*2%h~LNLg@c zJ{c^oWCIeJ1{QxK1!DjA1CcY#K_ss&h`a?hnUfpD)?fjVb4@@bk0prY6atZdIYFck zD19+Ffz_N-0EwhZgUBLw5XtNVB9*|tP;&#ZXMoi!fZe|xtZN!8NW8%VL{2gSk&bL2 zGEWmk-VXzjj{YE08tliSC=fdX?CW(2Aa))DBA*$9$V1v7GG7oxzHNtH z0=r5SEV6?Uq$U`w(vBCz{sIoSRIu-~^g$xm4M3!29Eh9?HZ6MW6~!~7J<_P7dWmx1wd+S!1lI)!{i)T&3|yp zu>|Lu`CySAFnb{fNPQ>ROkr@ESq_f1H(>TTuwTN#q3sGzGf`mKC1xO9Q@}AR5B41w z*bS3JLE<*xIMM;jrh(H&KG-i6;82XPS2o7OS zaJqf11CliX$Dk=VrtX5x=`{t3cY}Ss860k`V7JW$$K4!oT;BxeqZi;1C<2G}dT=_4 z1hXr^Ztw=He+xDZ)E;ML_zNycRKR{e4$k%Kz;P!6b_qK;g)DLa*?w3FMD7Et?>uur#u{df_aqmO`7P9E5V)8H64js}_E2)3mU ztoH>tRK3BWp$HBKVQ^eO1eYqH&IKz&IJi7a0q2E-V7rvSDMSgJk0ydsejPaXIfLVr z1Dx-6gF|m6IMpeE({mZPH%k$Q1dg4jV86@+r~gmjlyDXt zhOXdr$PO-7L&2rrY;a7;gX7|KILJL*5g;Xi@u)lVLQ}0@EDg6wb0{I<5DviM*RtiqZ z31ELogTvMdoYz)?!#o3Qnm;(@JO!ta0&t4@2e!Q)9ODzfDdZS9x4r_Ka~E8;OaPnA z2afS%aHx8K)lUJ3e+D@GEx|P)AJ}&v!6w&$-E0N+qdz!}tpn%l>ELj)2B&jdaLp(M z_G3O+r5QM!XG((n1!`2XGGu{cL>C-B`Cxl@fmI%e1*z!;yQ&r(%aLH8J_o1L6mUB1 z0>^kAI2{&)MgD@rN(Nm1ECi>h+u$%!1=rW^;9TGj_OAyx4NL*o!t24cMjN9 z|G+--2d9Kn;Bbfo>q-FoXfZf6zJN`O1J}Yk!RDL%n2TAFO^l zIQA96aeW3H3s&GfD*$$%eib6C8Se;E>+} zRv)g%z`({}08TlFLO|@rwjfd&%w`M+u|I-UGT4LI+L|D;$pA!pf=z1#hx|!3kjP1J z_%ngSq#vB?t<^!|^FISEx{qV&l4oOADmiP!F9@auutp5K;mWKx+BvP#J=JWBA+LKNFhZK`IQ+& zDrDTy;MF!Mkf%Ph=%%n(@! z$;!I~)Ny7N{UOc3z$_*R5k)4MnOIqw?hAt~7D5qcW`l597(j`TWg93#vh4*GChVc0 zNavUcswOxOfkv4?Dx?`f5vw&Bp%HJs{fLffJ{ri1u7AmSsFnN#x|DOkZuJ7tJqdhI#Ub<8K-d(l!t#Z9t3Ir z&-fXXVq2N&Kv}el=@rN`Q<;=Oew@u@2g-Y^nJ$5frHxFLpccY@CVPZVSnN>C-bi0K%p>jSchD;4B< zfdCT*1~zRTP} zpjJWQB#`SX%s`%NWRwK?zk@L!#GA~>05Who<6=0vV;K11eoq*Mnr$vq3ey?kP~f7|sBNv~e^j0a+dav2CkBWq|z#kYik4fofV$ zHW2Bz8I=Bl_d%)~23B!NP`t?g0F`^n8K6v~xdmj0sXHj`*dGK1jHfcFEfo9&lmr_X zUx5;2BjZs}6f`k*feN%4j0GSU&19Sl%3QM;4}r?tMT~Dip|_av2Pi0)Fs6fw>vfD> zpa5IXxEa*I*}!-R6f`>+nL!Psos7+(6tRo(1t@HeFdhTxJIcre;vHk03d-D97;_XE z7+9||>VT+gjQyZy&of3DPy{_^v<8(2FBmU^c;6V`ffC1e#=NZ!* zkeRQU3P2(8jcEcX12ix*f@+vnW*Jbz>R}cE<(Xb)Sy1%NU|tRi|C!A9K*?bV^G8ta zv6T5L$hRArtw4_7#QX(RSRG`(2P%OMF?)kX;Xw(hn`t8`+#V1CQyMo zgUJ$qW#y_{(is20D=w3mZ{fo&G^KG1Xp$RRRjprTHGImmE@9#AQu zcpju(?=Yy;(3c0bEDgFq$-qPr6iTKJAkxeMl(Eb$K!vVFFG$2v8l>0G5|mZ#lR>0| zHK;}I=m$!vPH~{x-Tf-aMIMJiG4ELp3Q4adkiWgXK_#6}EvQ}(yaW;t`UlEG!S6t2 zRtP639zzvCc_=aw#E$X>wN#?nKp`CC2@0~<08k{yiGo_0$;&|5J!K^*)ug@#<JFtAQwlm(eTk?}n!Wldt7 z11j()GkSm`WeTGnh?>gS0czq-XG{f!%nU|lP!P{#lm!_!i*X^y`?DF>fI@j5qc|wQ z<}kqI5Ik9#Cj*VGIW)imi+c zpz)V&jK!dYvYqiX$niTE4}z+nU5wK}VYZubJ1DUCFun%`)?UV|py1xexD;gHLB{={ z(*6+R9gvR>Gu{G~Ax9V=gUX(xj3+_VF~=fe)P&4c_qYEgG z&M-~^C6^0~y`aFl$k+t(*kwk3P@2BNI31+qD&rVgWgM~v@5ssAyf5lHR{<8DxNykPtd z3eT5}GeFcU#?v6%Uo##DC6qUen?OPEma!3(%ic5cgF@*8;~Y?|d}N#gvi%d|4N!P~ zW;_OJynJW83`#^l7{frN)KA8HpcwnbSOJQF-;8k}>JMWj$SwaEgFwOapHa<}fq}Jw zDITPJO(^^n9F`4N)DA`P5@&Sd}RHnTk zzfWUg2j%@4Om9Jsn8~yV6q~b{B0(OT&14SBU2~YMLB+{3roW(YSNQL}pd7H4sS}iz)-g>66>004lt3CbG9`gh`6i|^5Ve`<2grskOvxaXTbb&) zK>8UNSXCuK(WDju>YZzC1F6v#2IX757*LSuyMbcQXgw&;8&3uWhItYwLs^)D5~%fj zP{n7%0&=vyJxJCe3zPtzw}HaTWjUx!bpHrSb{-c&WsT<)P)_rn2r7+zzJtVy#-zb*%)jBN~IwMpngwiIjF7=e+_a^#1c@*M5=4WLyi%LM@EkpwMn(ya`J6?To3Q zbkM=53(6)vjPjs>>t*Bz)npSG{Xpq%BBLazrkczs46(E18sjsNv!*k~f`<7) zxllF^l-Lv>f^vxRHIPeGj)B6>XjwEg=0snD5}?>>kf``3kk2Kbfzq2)IVgstZ-HtC zxvii?qhJmy)0CEhiVBsppowje4NR{=BMSm1AkPSTgThaAHQ2;^ppcVn2gR6_Cn!b8 zrGsi|c?D1_O!*kdT$LnHI#(|RxlY3s6t3E}Aph%VfU=~11W1j69Y~kaVo+=t{{>An zOao;`1{Q|Np!ros#@~Fr42+N^1dI$ImOOYa3bYUaH0eKqfq~&80|SE}BWRvWo{3+0 z7f2bHI0O;{HE5adg2Wz!h*u!u6C(oy%U=+|#sr$11kL3sf@b_cGla~hAg(<~!W|Uc z0U%Z+h?N8)SS1)(LC$0lV^y?c)wW^fabRWEk7VVEf>6<5N->I6!v>@PMB0Mc5Yir` zMcJNJQ-M`kABkiZ(qq-MVO5RF)*<(DXw}k zFIGlxCRPSU#$ac^3LjU;;1EMIh4}bjXFo$TFju2OlOf#GFC^aA(@#MoJ|4!7kJn^~ zk9To(_Vji1iFfgIkB?U{G-rs95A|@2cXRR#iH}#XUs5l@-#C6 z@ia0u8A|htGt=`@QxuXj5{nq(bomd_i`_$19lVS(+G_nVOlHT9_Cb znV6ZHr0NIz#0`;(h#`z2n`2TwN86 zz%B_034%ByAS4LnhWL1}A)$W3p6-6GE+8MkUE<*w9PjDp=IQ4d5($+EcJ?zi0=vIL zQz1Sc#44$umU3h#@rCF(@S7DJUr3 zEy&S1#M9p|-q$hM8*G3fI2?jKqg?&nAR!74R#57Wk9TqM0f)PxLA+~3KzzJ{v4I8L zo4$^IA<&#*Y77zunGFi@_;>{kT?0MSATR-PUno4$K)e>=h6Vz3jg3Nme7r&75)4gW zNJ;~AEkZp&lEGjPz!DZHKSEKa?PffH3IEI>U$elgH900m`0 zkY_%)C=3YlG&Ix52gQ<`Pl&M*TA62wTJ-pU69=N;0VQM~a4PZigC-FTT|)ySaH4`p zprsO!CoSTgHIg+Ik{Q4m)6fj=zl{8%5(Q9*1_XJgAUQ7u>O3iUcDALqkyU7y$`vNC^oo=pr=1S;omR z*frkK#U)5V!=S>%z`)4Z!oVODWG5)}6_heElt2j+#DO^#9{+}#yk4C#0Q5v2E-dG7$S-#Lo<*sKrs$V1K^ShA_R(YP+rLi0L+9-XF`JpTt}Fhz`_Jv27?Ju6hiA#Z22W1$g=`&ScN7iWGs+^1k46G zG{8S7M57?Ts6sTD^So)H&)P1Pftlw(DgS^&@C=Wu}wCrP|!_FE6qzT$;{8w zElvf~#R|GLl~eBI>y+}!*;NVo^Zdjz}s`++MhLo-mS zKuN_A4kThjQPVHDoP#v6K!E~}Q4L*V19MPfb@vN(j(3f4bq)pBexPLORo2~^YhiB%M#HS?|mlzwxm&B)}re%T}aG)X%maEK6;*lyEP{9sPECHaz;^G+= z@8|F5ssL&T#Dk22##elX0w@htK$>U4&VG<22}(Oqv49{?sFK* z3X);b+E3;lL6ES6H4cy}c96e4{Xj)Jq_kB~R#xy~h>wR~al9GerjX7g*Sy1Zh7y&6seH|k-Nfs06QGI#R2}&^2D!Q@fWixs*Fc#OR7@dqT5x1=e0*?-3n-pE6hJ8_ z9xMr|FF-{DNCrs=l8O*12GY7gR9#3p85|X0t>8S4R*b-k99Xh2HbRS!03RPnI|~#> zAYXy=JuEno8+lk-X`lkgfFa(`Kg1&lG=>0)PHIW(`gFyAEuVVzX zG6shvtW;1y4oZ~R26gNpp@p0%;-O&%@;t2V77!lf>KE?}Zr)+i>ym;BqA( z$Ti3{P$M@nOD8uo4^&q{CE`KVl%biXg0=!w#Mjf$KPWz4!Om7e1Ec|5kwH{wfb?oI z#D_rocM1%kP75eVLXh%6d^o5%<>`-Tse`KyaLX+s9-~tS3I|Xo1|<`uV1NmMTiDPX z398+|(F4hqU?wP|p`>?EU^xeY(ulubyuY6UqJaw+g$4{br9%vXH4jjmOaVcjrC@n* zaRY9Jg1L~w1kwe7c8v^8L3uv~TuML+juc3{Ex^YIQvUk*1ZWh10=_^&4cy*FmH`)u z;D81>A4LY{ScrAdTw`d)0B^(uJNtoZL2ygL&fOCk54QqDauSLElCA+7d7JJ^YSzE zax(K$L z2I^LW!ZJQQ$TP$>-YL`#WF*+H;BIbwJc#e_1|7u$k12xt#E_cG*a)>Qh305b6Bpu4 zSc3)Bn}=HuE+RoZP-n%_!^sd#X}nbpull)_6DVWa5ECD7Tkmc1yX!`Xb3zro0%|_7AF=#doiFi zfi%Ku2}vy$@yK-^@~8*A)&K`I*r#B}focs{V+9r$;Mxn;gU$!{GC|n@(t3gp8-X$* zqyhwY-oY^q9Z@ty4E2F}T;RbilnSW=6mTF*Ky6VF8+CjXQSQP*08(@cyS%69(c##h3;~9eE%n;PUgY?Eg=?PSS(3_7T$HR2&JB9du`qDM0;z<8H7r1J1{wShb`6Yo4h~T;WdN7b z(2^y{H6%314^gmy@&GvQ!NnDLWFO206$x-J1&4!La^OnJKojKh2uK$d+8vG11m$H& zvkP3Lfto+yf)+gd?H?Kv5E=rnI>EgOSpNc)8^8jfDh-qnK>-EIYtRZ0$_2@ShtOg9 z$_O-~ixOxG@sOerQlg*^;RN^xdqyA?Rq^0nH>d+|W`fp%hk6OE`UKaUp~0@8sSwW) zH%~uLa5{^R2M>=x5*>K34AMS?x)R#OL+vzxdTK_HWDk=7*PKSKe(^ZF5^xpJY86zm zJBP$O`UOKB0_xX7OYGoy4+T(sKvEaD_yb1@Bw8yFxd}8B53N;@iZgK40?P!Z;MNhS zY5+|XfTGk9t1~?yGYK#SP*(;7IlB8g#s|5&xVnM5`>qio;BgdC2M;oB1NW&O9{0uIgu@9|+2G5|SIbz%dl)ykd z2GpT5P$dUSj^JztYLh?)^TCY{FoEJ^Nc6;`j}9A{n1Dxzk@8V6xL^R4S>Uq86Wlz< zJ|xc&ACH(pgeG@rYZjb3L0JcqX;Blqn@fPFb9_7~(4b`x*cQ-meh>q+iqr;|Og^9? zAB+|dQt<}Oh|uv8*N6ZOP-ETKF+x)lT0uDn8O8^>q9$B$Xv9Nhz)1l#NDoea;LM4X zZBxLdNh#PHkfsuNgb18oA>B(z*B>-ygFLqgs`J8w90O3QqSDN~5<|2267Wa>sI3KR z?0~HWX9A=)0Jud0A9IBVj|XVz0MzyYHNZhx2-0T))!c|qFW7;gqya6qz{3d)@!%o_ zWIM`mAb4mTl*AydFhc_)6HxI9?xBE;g*OPm{gdD@PZ#u3$^xx?0ySDe{X1xV7Owzp zeK@+sgTvh@J|qHEP#YM6=Ih`o4>TPJ8Z-q-85$s(IF1p}k{IMj5RM1SK`Iug6odmQ zf|2@Kpj_-85fSg`M6%;g>;&W0Hi@{Na5?G)d z0reKB;To@CsApneXk=+&VrF7&WMW}xZkVcTVhWl}1siSwnQwvn5j+x)Jh-Fy#QQpi_=fs`I*=CNDjn)7P;h~Q5FYi2R0A3s0Tou@TnNtEARefVfT9?w zJB?%}Z1fFfT|=;ke-P@b25=$(O$&ggtU*;QxIY4Jc!NU>T)2R(t$-9cAU2u|Bxgfg zu+Ss4pJd{Bi79wGz{(d2_uVm=}jf$rav@WjB z@t|ZH@9P@k;SXBd18RLB=Vp+yjEG!i`b0A14sDbQghbRekw1J%yRk?iaf1uCdehsb;#F~mR%5`0`EK*=ov zl3JkyiV@({8UYIsjR;8c2NfBvfuQODRQQ2xgmx)lMIurk9Mrx*Y6wAwG$ENEdx*w^ zmdaT`k~z4|3uc0xfR@)m#T_DDqKuVej$?y|%AwQ3umZ|J&(sIJ3dtu3G)M}HAFy4h z^SI#54KA3`%2jB64~|L$@TdnUaR%rbntDT)uAszcu(Mw&qyr6|<1K}Bpph~Kq*{ln zg7!(l^%JNv0{3xT!X1O$jN+Z$JmVdMeZlbv>eZsR7hwwvJV8AT@M0?uus=P5G$E50 zC>@#jc$9t?q_+S~f1a++@t{#sXbJ((UW4Krmh61PTtUNMpiV^uIBy|FO~7lxz-mE* zvTpuCzK$XBp02JS4WRr4DnlV1tYYxO9uzl$3S*>}Q*e+oxb0+Q1Q~WiG<<`Q8op_X zImJi~J_AtLK~p5Cn)C#%as(w$N^f)13+!3h>Nz6frV!HP5JL=t4)0y26EQVc3_z{w9% zwwzWpyJ4f0aWzGySs$=J1QXBjv%8E9T{+;j-1dz*%QZF z#`t*00Ow%X@EU4y170nMInW*tTFDA_8+`Gf5qOCVctH=y8K9CMriz$$zp)WRdO>D> zd~s??d~SY9DxxGuozOupR|t09K@AOXbq8*kLc$wX(?OeTpf(`5BZr6q>=R_*8Z-hN zap1NKQb#ue+^qtq705ghtgQ@69}p2x2MgSVL+Uz%CnP{w9$NT=26#c41!aI2TuMS0 z6oZo}#7xk#FyxT|P(A`xwDG~=;0y$6n}W(sP_(0z%24gl>2|2iL9QTwxhfbV7AzwM z5g-%F&^QEjNx{(?kF@R+Jf9Zof-+VNPkU&SI-o8JXmJ}-ahM4%AR$d9NUH(VB8-Ri zv!LZJsLTc709`|~P;YSS3}iHD>HxYj1T>D|;tcDqf+lD$r)0*HukdXl> z%g4uqqa5ldNHu|D9X4nR7qvwJ%ZH%62*Ti5UU2ybU11vR7y>S_p(7S3-C+2VJ80nm z?#V=e0|VTP0oA;qk_8kWAz)!}h=93}ECp^e!}z$zMWKZ%sCWl0dWu&tGy;_skbW&{ zS&<2@{8PZTK^y@tJ;1|;NDEqE(GF^78S9xC7+Dw@o0ypyTbLSISeT`18(V-n@6cF- z<}Pp_I23ykXBHa704cRWO%c$ddr$@dS1#b5Ie6WZf)Z%aC3JoXIuHS0Y=V?`z>Y<2 zHHAX^W{~Iwb<{ykNXHP@2+xpsmqK%$f|cx_5x?X zQfSct?!rJz98lXO*x4P_Zw0vvsfYvBpzx*XplkrbpvE<*{R1u_!3h=A@r8Oh05awY zP57X47rN3BC5?e+dqAZOq_hkUiVul!1s7@1UxlsPIGb6=-@m zC^!V99F}NcQ*Mw3B({nSl31WES!i}LHUuXYNXG(H$$%mS!h<9h)aE&8cL_s$Jg9FC zTLx_a?y!K150E~j9t&Iylpr8I<$xeh@E{8~I>GfFD2afIAa!#N-oZRDJad~ z6ma6oL=gk`YC)|8kQtC}K8OV_mXK?;_;_g90m+Pzg$v*c02G#>pojD*G5W=zaDn$d zKshl!9t~vJC-J z*ccndBN{B&hZVu=?m+1cG~gZY2FiZ0bsz|>;MS&@F=*`vD3wCi2!QHmP<(*h2yQxo zc;GpF(4>@$tFuo$Xq5#htAj!V6qDeL9vtEVUJc^`%16+sgC<=_P2d7wKnf|IoP6RT zTcN;-4&Jph#J;W{+_wV_hJYsbFoxsZeEc0lAd^Pm^~}fxIa+T8)G|V;{NXm^Y6XB> zc%WhdQgkA<2#_{;fwC;PA%;980@^PIE{#CT*yH`(+=5+0pc@Rpdkdg-8*E7+Xx}(Cj+29e|e7AWb)DVT;mq1K0hKEmWYY z0TcwN16!a4u#mN;&}M*wl8K(No`Dj`mynSyP+A1#Oh}FbH)0?QRuNg7As)0p1ybrl z{f1OfLtBub#Ri6E;7MR`bi!6ugVuM0hF`$#T~N+~^^Sd9f?OkD6Z^#_kaaDf#S_rP z5AqRMJ*bE57~~!dYL+=WgI6b+np%Q;+t898>Qtm*24h1XP-zD(+TkPq(83)Smf+?A zqC`X=DFE9JZJ&C&c!q(SJdhj{?jPhrxX=N$wV-x^GB+$2qTAyd0ZQf|705O^`v(Mp znpvixb>~h=TpGril701%pqEkD0r|D+&O~mjRB{9aPmd( z8pX#4djy5R+eL(4-R5F1k=Zr%<=};E*6!N8fn=0Fcu_$pSV(nW(9t zoCxZi2E*4f8JaPGCi@{}XFPc5BOayD1_cMWs@S+H|D*?QgH^|l9GZ?fE(aqD( z6B;=o;5>%j(sK*}E!9DpNd(0Wv?mA7MyTyzXu?9viQrTPn!EvL7DP!8=7Prjr+4@Lmt7N3K|BW)znxdAqfIDfa>WN0Ej~W6C>LBBfD1WLU zL;*au0E!_<7REVg;0cm}L>shZ0WEHU_7*_3Qj{vJz_}ussOtN+&~4T zzq&>go+DT|9j~qZ~n-k-&K#+#^G(kD!6*91K}m zVrU5-)diJ4pdJRuF`yw3$lxkU%N9J+3Q`B@dV@nD9$d|Ul9jO$sGjKeY1U1W$gdp8DP<@TjcL8T@P%96mbp=k-!2zz$p+4aB5+Cg7<{BU7=o1QwL)4jV zb5NFn6uXF!1m{msAcMRM>yKh=;x{yfY~eRF^#(OMLFon7%yABi3<&WDS9Z`9IN;VL zC=Nl*E^r(|2J^scU=TKgWuUt?z@wC)m;iU`jSRtoj8xDEY7~OD8x&%0HwXkr0Jbe0 z;AQ==RZGwzgODIczhGa_kPufF$P#u1aO}oIrJ<=4sRssbL4d;ulFX1hqM-gR%$uMP zgv2+b>j;TsoZ}(!klpsM1#Y0C1X@=+ItPY&27!)kfb8c94R(c&>VxL@Agz6jiRO6N zVr!J8!XQ&28~RWh9-vCg$k+ruh#_^UD>PU@82~B#L6XqG0X4#r>KI&ue&De!Fo9AA zfm1v*JVB#+u<;7iPy?kgkUi*4BXh{!9&l;_ZAe3`YX<3njqO1TDd-dnD4Bt42=FK- zhzISXgW7+f%n6$SfprZrLKi;t3W{t{TL4(tnXR|a&H22>#^xOB{7KR3UW6R>;{lMU;2l)vcEeKD6t2+gh)CZch z1~~`Si?AVKa6=0*mkV+$2!j_IfF^Z8&1k&FBgzuUHh<8%9n5kDJedh{GO6)Vc@g^PVwMSfhN`v z_(%(A=MZQj3}plkx;zCU2AzV=hm6#LO#wR$T>pZ(;IW^0P~QZ)JSpDa&nFU8<{@>Z z;VoFC25@|QMq*iNJg9U4VKZ>D^mU4Nb_@Ww8$cx;w0Qwp_XXOf1L|ym5+W=Ug4p0L z38+W`tw}(QR8L<}GXT`df)xv(h(}I`ptuELNO}ZCFg(SAhk3!113?TRhrmiI7#mVi zBhPJt%1dyu1ggY9%?U)&1m1B0sxiUSrdS*9kiEOeLz3W32J#sw-=U0&K+kgl&sf1) z$dC=8paEkfrJw~ZkVFGr&jFr51D79=(N(am=pAG5s1$e+zo#E)4L>N6fPxwk_aGjq z2o3P`1E0H~lUEAb3kV8sFke%lMgb%Q8~Vu1%LMJ{2}L~)2dSqF8UO(0Uzl&e1BKAc z0f{sm9T{lf3>3Dmpf#!BAt!M02Rge5lrZBRgMu6*L2JRB{UDR=2!BA*Fep&Koo!G5 zcxOw?cu4#Ng9}Pf6@*b6#6wn3LO0`pPI&?w3C^#O9076?Eg4;F%Ct5DQ4 zcfebq5Cfs007psH(4r7D^o-g|^b7TM4f1pbmL_&<7o$1e*Nz3=Vb#w@4vf3Gi+vFoDz%1#hDSbtXUwACy?YT~2dXUr@^o zw3`R%U?T8JJ;~5_khT&^g96kvL@^D#)(1Xrhr9$4T%dsxBj~6s>@(%y$r(_T zK{~01p!5N&lhEQ9bR<>~c-sTC&jxCj!i#lq9f{mkfmctU!A&FN1PU&2ASZl*Yd6qn z52SAZ*|raAT!4~0yu$=G3c1|@G657upy~$_MBst}OrQi7c&!CwZVubzD7XLu4L5)m z+=ItM!otB@W5ENCppjQke{iu3?h8X2o;aprL9=wAj0G!&on1id&LB(npsi)d`r1-( z+JTharHDxzP@~-0Io`!JI3y_488o^E9smTLAO>kwf>H)(R01XLLB%TQG&Lgy4UOWG zqSE9N1@Hzw1uacTH`55QUkDax;1gXyo(5%Q7e`o!5S$WVi5s-q0Tk*;jb+Ftdqf!n z9y$aiQjmi*z^!&D50q0tn&FL;c*uZh5@hBZoNeIg1{@lQDhG1>5~wQ+8mokylL6v^ z8_KW|Nyyg2AXgv92v---Xp&<{NRX#fXo#x@Xd8bq=)6D>1HPXh#3=^(A0>vslL3%I z8r=GD^mFv_cV~c{GY2Zd(AHlfFYX4r2dRAtO^wj7K=43e5g+6l0@}(P0%~c37gc%s zxr37x$T{GW*fk;~9yA>SE{;LE;VS_V9H_&v9N++N+Jd)GgM%KNTcC#*fu@OI4ISu0 z49M{{h@uMAiU2jc!0`_j22ZzwxuAv@I3Hn*5P?_5K+6|MSb$CjiVTi-_V;u1bO*1G zLGSZ}PhXgLBXqQSF1kY*Do z_kxx;LC#)@kJrde)XB{Rr9*IA0wN3&RLF%)dZLYN!%rlH78T&k2udCB;v~o!ECye< zg;qF2&rJZ$5V<(Vd-w;3Ku_2NRd*^FsX`K|}YhF5qPC9uWZ^-S_l!^N)8840ZGY9qS1_Y6CQ804`23 z5;AB_0?2q!RRSN!gPw^8E=z*LHNdBxfyU*)3~0w4DhaM*;C*(OAao1~+Q9S$_p{)~ zghECSK*xT9`<&pZBs9N*t5;A94D2+N)D9X&hfVB&=g5#pO2a|tQTPXWy81z;?%+`j zaRRuj2U-XQ8Xy1<$YMEO!OVo1=_1hFh^vpM3%GcJhBBmCqyWmdkW)+`{bOSz1;}AX zpvZF!_63~}7~&WaAL{4n=7~r#;5Y}D%;0(ouCz)VPhA=mwoVM$Ow z5~+4ZtC&G9fTeC1|B!$ne-{RDjxsiaR}R=r2I&JW6Ap6&b#p)iq9Es?q#5vx9z3TY zhj$SCKqJsRHF&-OwGR&(%>o^ZictxJS1-XzQHB5?A5WuTP!a=oUeIPYKxH<#mIa3q z5)V`~Re(JO9w&hek-!_Su%xMH>I2;-0NN)2Uk?Z>*OBUD@IaITc*_oC`~?;S;5Y#r z4ce~_N?yUC0gxFj>kE44$WH)^Ln}HV+b3W{HfWNdMlWcb z22x@{&RvG=R|iEtXjvcZ09;dO(+Jee02QzBiGJt?eWa)h0GCt{^_mRv!Jz@5k&NJY z*PtNR2xr#-q~(8zW;vt>qvnQ#05~NKAq{6cCre7c}7*Pw~-Y zfH(prra{L#L-G`KK)?(%XbtJkU}>0v&qn}9F_xY&sMibH9^@G0ix@zGxE(defc6^2 zBOMbB>Ix<0=jX(Ow)Mt?_j<%97NsH$t3zx9O+Z3MQWOl0!OcnNm=wH84q8&8rKthR z$ps}v@g$bhy2LzH3}+yK`mBr#~nO^ z0_(DaIpF3lIE7+Vls;fB;QS3%3e$%WfoKM;=mBpsL|xJY>iU2k4G9FuL@aozFgOJw zii1+72p%!JsBR>2{i zL21OGpOK%Ns-KvXTA`nupOUJdU!JF5T#{>Sq??wQlara3u3Ma#mjVubuwmekhvXIL z(oSf+MVPw<=z@;X1ZPO_8e`BAdyrxPe6BU54nk_WfJm)`Twy|5^N?LGpuPrb&k#~hgTn-@5Pc9Av=0)JWue8e0W@Q4gAay-jD&(R9B9-4 z9IB8O1!4{|KFHNa0hCkW1r>b56J(1R?C^RIlnox>vIcD(4Cs_qP#_?@3GzH5yMhkC z@(fV`6)NDdZSZ1bP#8gmdO%4NOe`au{pGYD!{B4f~Mc1WibG~5TByaA^L*hmdL$b+1n5hDRb$;qH`08n88 zFKVEZIG~0;_#^|QIRo&d0m$1hcfb}PLz<3|@iA;8E})SKNQ)0PVh7!_iZ-z5?BW^^ zS%C-22#^#3PPjgV=F{S$WCs1b%nJSDlKi4n{mLQ>%S=PV z+~TS-qr@sh%OWGQ9Ak5%s`SLn%(5)QWZm@SWL=Q8skuq1DJiKbVEgroQgaOTLBe_Y zd8xXoiAkCInR&@Mr75ZUxrxacnR%(SwWPSRn5Gs`%kZ4cB>nW{WVE0HMWLP{EW{u) zJD_u^Qc}|rOLI!%ODYRei}f-X;)_dCGV@CGG8l@Ill3ydyZ7`mpz1R~n=4@|^HR%m zGLt}BAguVZ)S}|d{5-u3hUEObw9It942I0q)YP;By$pu5)Wnj~B8Ux{c_qcAAi?;= zyy8r~38-^@9SkSFfcIiFfcIu|Ns9#BLh;`#|9OzbgM?Q{r zraneTJ^@EwcBXPZ4o6;I&?RnQc?JfsdPhE%c1A~Db`M@&C(w10Dlka~1_lEL1_p>c z*aUw*7DuQmh+ddd&~=R{b_IZ~VsJEOU|>iDrA!7!P0%$r=B~QF3~apYzMM>4Y(gv| zjG~O<%o2=}j8cr!j53UJY)atkzF_8pXk-BvhL8V2Vld3iAP8fEX=Vl?FbyM^8H8a> zFwM*$!oUe;!3Ys>82*598ARYL5QCXP3{AZlSUn;P#X!p7n3+KwO}#i+y$)Q3IGhDy zFf&M?sh0o=!!a|16r2rWFf$-*hVW%U6dW@%$ivwn1~Y>qh=OBg24^@M#9(G{1yOL! z%%BWsgBZ*Vpeyn~EC^<10A1z-VS`9!22iYmSP;z20J`W0!UmDdpqnv43@B!1(1)@h z6f=V%gaIX)89)gJ%3)w&U}i8yaKLk@Oc^Lq44<_E}-!F8UCa21z-k)X=VmDFbyM^LD$g2 zINOp0-5Q7*4=x%mUsDa8_AqH`VVyHZ*Oci2~V1U*%$qXtb3@RxM z<+&z$@#yu7o{64WilL!lVvkN@B8+QJO)LsfnSX1y}>Dy3#W@*RxDXHZwP}NHaP9^yBNIJCgVa>R#1umd(-aGH^JKGBV`Gz4GgAx0w8X?D6BCFI z&~j36g{fy~pl4!{l$e&3WM*M(X<(Xcl9HHcVrpiZXknU|nwn%}W&(B=v|`n>&`V5B zOi3}ZG&Zp`vM@5WNHjMyGcr#xGPE=_Ff%t#h4=#02S;uM=$YwRnpzr}nk1*0rWsh8 z8=IsinwuJ$C0kggS|lYI874s;2CJ_@4ofyNNlP?NOfybOHZ(UdGcz+vN-{OIG)}ZM zFi*8GF$6mduEEGyFU8c@z{EV!%p%Ps(ZbZw+&s;~Aj!nYD8!VnuOD3b-Ml zXJlrsXO@zZXkw9Okz|mXl4fXPXli6^Y+`O{X_=B@nVM{F3AQ3LuLRmc(KE8pGqW&B zOf)w)HcK^6O-{BRI@V)GcbUz;0E0j4>F%ggaKS*g5-@r zm+FZzFo15$1@S>O6Nm=c2cn~(@`+G74N8|l>1rt51f@aO?}7A9h4L3d>9tV$8kBwn zrGG(bHqh04AooLQIVi0KrOlwU6O;yD?AbsIbelnEa2Bi-} z=^Ie`EtLKOqWKsYq?j2PK>FpOv>J%!W?*mv(P9h?o*JX&_pR z0bH(w#2cV|P|e09z`y{iBbZnjKqWl`69=SS&BV>XpaBYhK4|)3WdOHKLGs{q!wpr( z#{jNTLFot77XXp^@_y#k^^^$mzNgUZ`LY0!=JAaPJT z2Socp#Y3PpEZrqQ`LJ}C1LYS%=?W-a2c=t}bQhF{rN?Pd{v0U12uiPj((9n~7AU<7 zN*{pI$Ds5XD18Y^-+3L9k z36x$1r8hw7ZBTj-lm=hLDaOEX0?I!JrLRC~Q2P^#nH0XX>kUdAB{8LaG)b0j} zUxV`RK05>Q$WN~=I=EhudOrOlwU z4U~qJXP|Z~$b3JjIILWYg7OofG^~8ff%1!>bOn^IgVHTfx(iBAfYQ^T^c*O?2uiPj z((9n~7AU<7N*{pI$Ds5XD18Y^-+9Vl%Cr7fVe9h7!~(q2$H07{2J=@=-T1f?^ebRLv0fznk_x&cbJLFpbS zJqb$BfYS4z^b#n&3QBK)(%Yc)9w>bXN}qtz=b-czD18e`KY-HDp!6Fk{Rv9{fYSe< zGz%*vT)Ch$=uUZ1`VxckWuUYYl-7XKdQjQ~N?So`2Po|ZrG21u5R{I9(s58a1xjZ@ z=>jNS2BmADbQ6^BfYN19xQ4V2ylrFTH-eNg%cls*NeFF@&QQ2Gv( zegvgoK2TBV;X$dGT2c=b@v=)>$fYN4A+6GEHL1_;t z?FXeppmY?JPJq&BP&x-n7eVO?C|w7oTcC6ol%4>kr$OmCPPvvzd`9gP@0Jy5}q7Tnh#2gKxru`tpKIfptKH@ zHiFU?P}&YkyFh6#C>;Q$!=Q8wlum-u8BjV8N|!+CDk$9mrQ4u%50st+rDs6tc~E)@ zlwJj;H$draP1R;-4V3-_rGG%_e^8o*0}`%WP+9;= zi$Q4_D6IsgHK4Q}ls19VR#4gjO1nX6A1ECJr6Ztp9F$Ih(pgZt07{oZ=^7~A1f@Hm zbRU$S0;Oj`=><@F8I)cFr8hz89Z-57ls*EbPeJJmQ2H8_z5}HnLFpGz`W=-10;PXJ zY0yv?IRA4(!j%U~3qffKC@lx2RiLyMls16UW>DG&N;^Sm4=C*ir9+@}6qHVY(rHjS z2TB(~=?W-a2c=t}bQhGK0Hvov={Zn(5tLp5rPo2}El_$Fls*8Zk3s1(Q2G*-z5%80 zLFp$@`W2M^0Hwb{=|51Ki3<{*98j7MN{c{gDJZP~rPZLc4wN>6(iTwK4obT~X)h=p z0HwpAbPSYEg3=jKIuA;hKTD3m@6 zqQw~)E`w+Z28O#JT8x3=DTtP2V0Z_jr5G5#fM{t3hQA!g7z{zQ7z2X^ly(5oiVO^HAXor>RT&s^L9`kJc%&GV{y`(UAR06i1foGREFc;*GXkPnq5V2S>OeCeAoZ~RF=%E2 z#J7Oz2hALS_@EJR5bX;UhxLo2q5LE$oe8B2pfn+O!20Q+85fZGxYWb?^`My^kUH?V zkr-m!2sAzg5(mwMfM{5M-V^GM04N;}rNQG6V$g90G3Yo0DE^@G;PELj2JlP|$UNA% z0ca)$#K+}M^mu@UFK7k`qz^Q+1EOK>1kJ>N_^@#eWrTd{YY#am|Ax}Abj}Wqe_kjp z45cNZv^7P&v2J8K`1Q&rRAYCY77ve0F*usrANzcNPl>+mD{lSHG62e<_4vGp>zn8j)u~( zd9_R^AGFR2RIZdm`LKEERwy4fpEeoFCpH}rs}9y5!qvWq^^2%&9<};e;C`VxWL*T4 zIs*f^->lBSpa-g-)fpJT>lf4+7{Kjrb?7<24?uo^MuXU;y{~)EO9N zLB*GVXjTRWbx=HWFo4(Nf#%=A>lOH*{b3F0{5&fI19&_@gMk4&U(Uh65CPJ!!N3p$ zqPZCu8bGuL0|U6-2UjUipg_&AhQpBK_oS&PUng{Y6*jA8yJXoSAH3w>Y zT2W$dDubS5kgpzS|2%jzeKCVxdQpBUXv_q%;*Kz>&&YtX3K%s00a^c@ie7HEYb z2&1b5t*e2l1EpP%8W2WT2WtPr)PYvFg4BR8x;jugfT;tm_XVi|VRUsV&~@7&_vtb) zFo4v6FuFQW7{JT}cT!d7v@~qy~i1)!jid4>YC)QUk*1>RuqJ1C;?FH6SbvS^5c@jsqvwFJKZuz*fM5 zR$_zJdBT>1qN@YRfpmdZScBG%5mE<=Ly#U&e;1?=Y#vAe#DS(O5EGOZL2KSY=^ezE z=!dN92c#tx|iKx`0($${1_ zA=_Ip5weC0WG`qe8fGu3UkuX&(hr)S1C8N=*dPp(+seQIn&JVk{{xB7mSz+k`#iCpfa-d}m$ViYJ2n#Vn_oaXY85kJ0 zv@$S&+H6oRxZMe2gVwhq*9#IGA@Kq72WSm2%pag}RAvSSP_q=IjUl8BvKAi9f%*f) z2HB0|9EOfI1_sbtFHk!gWG2Ww(3)qEok-O;!;EeQ2GH7QkQpEhG6zJ1=5>+PMQmhX N0IfL($$>CT9RQup^w0nR literal 0 HcmV?d00001 diff --git a/src/flash.h b/src/flash.h index aa17358..6201b15 100644 --- a/src/flash.h +++ b/src/flash.h @@ -25,7 +25,7 @@ struct flash { #define FLASH_ACR_ICEN_ENABLE (1 <MODER &= ~(0x0011 << (pn * 2)); // Clear existing setting. Each pin uses 2 bits - gpio->MODER |= (mode & 0b011) << (pn * 2); // Set new mode. Each pin uses 2 bits + gpio->MODER &= ~(0b11 << (pn * 2)); // Clear existing setting. Each pin uses 2 bits + gpio->MODER |= (mode & 0b11) << (pn * 2); // Set new mode. Each pin uses 2 bits +} + +void gpio_set_af(uint16_t pin, uint8_t af) { + struct gpio *gpio = GPIO(PINPORT(pin)); + int pn = PINNUM(pin); + if (pn < 8) { + gpio->AFRL &= ~(0b1111 << (pn * 4)); // Each pin uses 4 bits + gpio->AFRL |= (af & 0b1111) << (pn * 4); + } else { + gpio->AFRH &= ~(0b1111 << (pn * 4)); // Each pin uses 4 bits + gpio->AFRH |= (af & 0b1111) << (pn * 4); + } } void gpio_write(uint16_t pin, bool val) { diff --git a/src/gpio.h b/src/gpio.h index dbe3e33..8aa8c07 100644 --- a/src/gpio.h +++ b/src/gpio.h @@ -17,13 +17,19 @@ struct gpio { volatile uint32_t AFRH; // Alternative function high register }; +// AFRH, AFRL registers +#define GPIO_AF_MCO_1 (0b0000) // Alternative function 0 (AF0) +#define GPIO_AF_USART2_RX (0b0111) // Alternative function 7 (AF7) +#define GPIO_AF_USART2_TX (0b0111) // Alternative function 7 (AF7) + #define GPIO_BASE_ADDR (0x40020000U) #define GPIO_PORT_OFFSET (0x400U) #define GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADDR + (GPIO_PORT_OFFSET * port))) -#define BIT(x) (1 << x) +// Create a 8bit number from a port +#define PORT(port) (((port) - 'A') << 8) // Create a 16bit number from a port and pin -#define PIN(port, num) ((((port) - 'A') << 8) | num) +#define PIN(port, num) (PORT(port) | num) // get the lower byte from a PIN #define PINNUM(pin) (pin & 0b1111) // get the upper byte from a PIN @@ -37,6 +43,7 @@ typedef enum { } GPIO_MODE; void gpio_set_mode(uint16_t pin, GPIO_MODE mode); +void gpio_set_af(uint16_t pin, uint8_t af); void gpio_write(uint16_t pin, bool val); #endif diff --git a/src/main.c b/src/main.c index 2479373..f3c98bd 100644 --- a/src/main.c +++ b/src/main.c @@ -6,6 +6,7 @@ #include "flash.h" #include "pwr.h" #include "timer.h" +#include "usart.h" #define exit 42 @@ -23,6 +24,9 @@ static void system_clock_init(void) { // Turn on HSE RCC->CR |= RCC_CR_HSEON_ON; + // Turn on clock security system + RCC->CR |= RCC_CR_CSS_ON; + // Wait indefinitely for HSE to be ready // TODO indicate error/timeout somehow? while (!(RCC->CR & RCC_CR_HSERDY_READY)); @@ -60,9 +64,10 @@ static void system_clock_init(void) { FLASH->ACR |= FLASH_ACR_DCEN_ENABLE; FLASH->ACR |= FLASH_ACR_ICEN_ENABLE; + // TODO breaks with these flash settings on; turning off for now // Set latency to be 3 wait states (TODO: understand why exactly 3) - FLASH->ACR &= ~(FLASH_ACR_LATENCY_MASK << FLASH_ACR_LATENCY_BIT); - RCC->CFGR |= (FLASH_ACR_LATENCY_3_WAIT_STATES << FLASH_ACR_LATENCY_BIT); + /* FLASH->ACR &= ~(FLASH_ACR_LATENCY_MASK << FLASH_ACR_LATENCY_BIT); */ + /* RCC->CFGR |= (FLASH_ACR_LATENCY_3_WAIT_STATES << FLASH_ACR_LATENCY_BIT); */ // Use PLL as system clock RCC->CFGR |= RCC_CFGR_SW(RCC_CFGR_SW_PLL); @@ -75,11 +80,13 @@ static void system_clock_init(void) { int main(void) { (void) system_clock_init(); (void) tim4_init(); + (void) usart2_init(); (void) tim4_start(); + (void) usart2_start(); uint16_t led = PIN('C', 13); // Blue LED - RCC->AHB1ENR |= BIT(PINPORT(led)); // Enable GPIO clock for LED + RCC->AHB1ENR |= (1 << PINPORT(led)); // Enable GPIO clock for LED gpio_set_mode(led, GPIO_MODE_OUTPUT); // Set blue LED to output mode uint16_t counter = TIM4->CNT; @@ -89,6 +96,8 @@ int main(void) { led_on = !led_on; gpio_write(led, led_on); + usart2_write("hello, world!\n"); + counter = TIM4->CNT; } }; diff --git a/src/rcc.h b/src/rcc.h index 153e57a..2a8ca11 100644 --- a/src/rcc.h +++ b/src/rcc.h @@ -46,6 +46,11 @@ struct rcc { #define RCC_CR_PLLON_BIT 24 #define RCC_CR_PLLON_ON (1 << RCC_CR_PLLON_BIT) +// Clock security system +#define RCC_CR_CSS_BIT 19 +#define RCC_CR_CSS_ON (1 << RCC_CR_CSS_BIT) + + // HSE clock ready flag #define RCC_CR_HSERDY_BIT 17 #define RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT) @@ -69,6 +74,7 @@ struct rcc { #define RCC_PLLCFGR_PLLSRC_BIT 22 #define RCC_PLLCFGR_PLLSRC_HSE (1 << RCC_PLLCFGR_PLLSRC_BIT) +#define RCC_PLLCFGR_PLLSRC_HSI (0 << RCC_PLLCFGR_PLLSRC_BIT) #define RCC_PLLCFGR_PLLP_BIT 16 // Bits [17:16] #define RCC_PLLCFGR_PLLP_MASK (0b11) @@ -87,6 +93,21 @@ struct rcc { #define RCC_CFGR_PPRE_DIV_NONE 0 #define RCC_CFGR_PPRE_DIV_2 (0b100) +// Microcontroller clock output 1 +#define RCC_CFGR_MCO1_HSI (0b00) +#define RCC_CFGR_MCO1_HSE (0b10) +#define RCC_CFGR_MCO1_PLL (0b11) + +#define RCC_CFGR_MCO1_BIT 21 // Bits [22:21] +#define RCC_CFGR_MCO1_MASK (0b11) + +#define RCC_CFGR_MCO1PRE_DIV5 (0b111) +#define RCC_CFGR_MCO1PRE_DIV4 (0b110) +#define RCC_CFGR_MCO1PRE_DIV2 (0b100) + +#define RCC_CFGR_MCO1PRE_BIT 24 // Bits [26:24] +#define RCC_CFGR_MCO1PRE_MASK (0b111) + // APB2 #define RCC_CFGR_PPRE2_BIT 13 // Bits [15:13] #define RCC_CFGR_PPRE2_MASK (0b111) @@ -114,10 +135,18 @@ struct rcc { #define RCC_CFGR_SW_MASK (0b11) #define RCC_CFGR_SW(clock) ((clock & RCC_CFGR_SW_MASK) << RCC_CFGR_SW_BIT) +// AHB1ENR Register +// GPIOA AHB1ENR +#define RCC_AHB1ENR_GPIOAEN_BIT 0 +#define RCC_AHB1ENR_GPIOAEN_ENABLE (1 << RCC_AHB1ENR_GPIOAEN_BIT) + // APB1ENR Register #define RCC_APB1ENR_PWREN_BIT 28 #define RCC_APB1ENR_PWREN_CLOCK_ENABLE (1 << RCC_APB1ENR_PWREN_BIT) +#define RCC_APB1ENR_USART2EN_BIT 17 +#define RCC_APB1ENR_USART2EN_ENABLE (1 << RCC_APB1ENR_USART2EN_BIT) + #define RCC_APB1ENR_TIM4_BIT 2 #define RCC_APB1ENR_TIM4_ENABLE (1 << RCC_APB1ENR_TIM4_BIT) diff --git a/src/usart.c b/src/usart.c new file mode 100644 index 0000000..337aa2b --- /dev/null +++ b/src/usart.c @@ -0,0 +1,79 @@ +#include "rcc.h" +#include "gpio.h" +#include "usart.h" + +void usart2_init(void) { + // Enable clock for GPIOA as USART2 is on PORT A pins + RCC->AHB1ENR |= (1 << PORT('A')); + + // Configure PA2 and PA3 (USART2 pins) to use alternative functions + // file:///home/alex/sync/org/stm32-sand/stm32f411ce.pdf#page=48 + uint16_t txPin = PIN('A', 2); + gpio_set_mode(txPin, GPIO_MODE_AF); + gpio_set_af(txPin, GPIO_AF_USART2_TX); + + uint16_t rxPin = PIN('A', 3); + gpio_set_mode(rxPin, GPIO_MODE_AF); + gpio_set_af(rxPin, GPIO_AF_USART2_RX); + + // Configure PA8 to output HSE (MCO1) + uint16_t clockOutPin = PIN('A', 8); + gpio_set_mode(clockOutPin, GPIO_MODE_AF); + gpio_set_af(clockOutPin, GPIO_AF_MCO_1); + + RCC->CFGR &= ~(RCC_CFGR_MCO1_MASK << RCC_CFGR_MCO1_BIT); + /* RCC->CFGR |= (RCC_CFGR_MCO1_HSE << RCC_CFGR_MCO1_BIT); */ + RCC->CFGR |= (RCC_CFGR_MCO1_PLL << RCC_CFGR_MCO1_BIT); + RCC->CFGR &= ~(RCC_CFGR_MCO1PRE_MASK << RCC_CFGR_MCO1PRE_BIT); + RCC->CFGR |= (RCC_CFGR_MCO1PRE_DIV4 << RCC_CFGR_MCO1PRE_BIT); + + // Enable USART + RCC->APB1ENR |= RCC_APB1ENR_USART2EN_ENABLE; + + // Clear control registers + USART2->CR1 = 0; + USART2->CR2 = 0; + USART2->CR3 = 0; + + // Calculate Baud rate: + // baud = f_clck / (8 * (2 - OVER8) * USARTDIV) => + // (8 * (2 - OVER8) * USARTDIV) = f_clock / baud => + // baud * (8 * (2 - OVER8) * USARTDIV) = f_clock => + // USARTDIV = (f_clock / (baud * (8 * (2 - OVER8))) + + // Target Baud rate = 115200, f_clock = 48MHz, OVER8 = 0 + // USARTDIV = (48E6 / (115200 * (8 * 2))) = 26.0416666 + // mantissa = 26 = 0x1A + // fraction = 0.041666 * 16 = 0.666656 ~= 1 + + // baud = 48E6 / (8 * 2 * 26) = 115384.61538461539 + // error of 0.16% (115384.61538461539 / 115200 ) = 1.001602564102564 + // + // skipping fractional part as error rate is good. + + USART2->BRR &= ~(USART_BRR_MANTISSA_MASK << USART_BRR_MANTISSA_BIT); + USART2->BRR |= (0x1A << USART_BRR_MANTISSA_BIT); + USART2->BRR &= ~(USART_BRR_FRACTION_MASK << USART_BRR_FRACTION_BIT); + USART2->BRR |= (0x0 << USART_BRR_MANTISSA_BIT); + + // Enable transmitter and receiver + USART2->CR1 |= USART_CR1_TE_ENABLE; + USART2->CR1 |= USART_CR1_RE_ENABLE; +} + +void usart2_start(void) { + USART2->CR1 |= USART_CR1_UE_ENABLE; +} + +void usart2_write_byte(uint8_t c) { + // Send data + USART2->DR = c; + + // Wait indefinitely for transmission to be ready for data + /* while ((USART2->SR & USART_SR_TXE_TRANSMITTED) == 0); */ + while (!(USART2->SR & USART_SR_TC_COMPLETED)); +} + +void usart2_write(char *buf) { + while (*buf) usart2_write_byte(*buf++); +} diff --git a/src/usart.h b/src/usart.h new file mode 100644 index 0000000..63757cc --- /dev/null +++ b/src/usart.h @@ -0,0 +1,59 @@ +#ifndef USART_H_ +#define USART_H_ + +#include + +struct usart { + volatile uint32_t SR; // Status register + volatile uint32_t DR; // Data register + volatile uint32_t BRR; // Baud rate register + volatile uint32_t CR1; // Control register 1 + volatile uint32_t CR2; // Control register 2 + volatile uint32_t CR3; // Control register 3 + volatile uint32_t GTPR; // Guard time and prescaler registe +}; + +#define USART2_BASE_ADDR (0x40004400U) +#define USART2 ((struct usart *) USART2_BASE_ADDR) + +// SR Register +// Transmission data register empty +#define USART_SR_TXE_BIT 7 +#define USART_SR_TXE_TRANSMITTED (1 << USART_SR_TXE_BIT) + +// Transmission complete +#define USART_SR_TC_BIT 6 +#define USART_SR_TC_COMPLETED (1 << USART_SR_TC_BIT) + + +// Read data register not empty +#define USART_SR_RXNE_BIT 5 +#define USART_SR_RXNE_READY (1 <