From 592717d900a08991634df99d6a86b9351016086c Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Thu, 26 Dec 2024 15:02:52 +0100 Subject: [PATCH] wip working usart, not receiving over tty --- README.md | 19 + build/final.elf | Bin 55116 -> 62308 bytes build/final.elf.map | 358 ++- build/gpio.S | 351 +-- build/gpio.i | 34 +- build/gpio.o | Bin 42328 -> 42888 bytes build/main.S | 1195 +++++---- build/main.i | 121 +- build/main.o | Bin 48600 -> 51016 bytes build/startup.S | 32 +- build/startup.i | 2 +- build/startup.o | Bin 33192 -> 33188 bytes build/timer.S | 296 ++- build/timer.i | 14 +- build/timer.o | Bin 44612 -> 44832 bytes build/usart.S | 6214 +++++++++++++++++++++++++++++++++++++++++++ build/usart.i | 2297 ++++++++++++++++ build/usart.o | Bin 0 -> 48444 bytes flake.nix | 7 +- src/gpio.h | 28 +- src/main.c | 5 + src/rcc.h | 8 + src/timer.c | 2 +- src/timer.h | 4 +- src/usart.c | 77 + src/usart.h | 63 + todo.txt | 2 + 27 files changed, 10185 insertions(+), 944 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..76f1008 --- /dev/null +++ b/README.md @@ -0,0 +1,19 @@ +# Falling sand on the STM32F411CE + +## Building +Run +```sh +make build +``` + +## Probe for the board +Run +```sh +st-info --probe +``` + +## Flashing +Run +```sh +make flash +``` diff --git a/build/final.elf b/build/final.elf index 72a7ae973eff74ae76774e019bb5abccd9df6700..bdc732fa6744efde8d437efb6e06879255af4bd9 100755 GIT binary patch literal 62308 zcmb<-^>JflWMqH=CI$@#5U-bofy0D>fg$Gu0|NsK1FH#x0s|w127@qz5Lli;0IY+9 zfq{XegN=a!gjqpC5OEM|6px0$Xb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD z44M#NQULY!=dv(xpks6=!sJ2XF!o5GLH?yTZrIYgfnhzf8<*Sf24T1A!rvXzT(dVZ ze{B$MFrLlyJK=W+^9O$B-3h-lq%(G91ThFIGX7%vbjexD;dh1sz(NDd?; z*b)`9njnaEhn5bcTnQ@)rkZ;RH8t=?qsdXE58zTROwh%lS)#v2X&zetU1} z4CXHk#thm&FW7iXXIOhFe`qKcPO$Wj&aeQfVh&C)^Nz|e^)&MqcJ@v%_MV+#lb=u4Mke$Xs1mRaxC3 z=mygL{U56b!w1=)%wRL_J%_rFgTbMKje!G_T7uPeSjteeB@W#|=*3T;8`cIK7-da4=s^VE4YA z!RF=sfra^U0#c}e(i{Vm1A_}JTyAHufNTp!QMDf;-wZB;eiw3h{jLm7VA#(F$}t}r zm_hj!6rVis(gds?oPH}3*dA18M9EYoNLPT;)t&#<8PXLD+Fve$ba0sOb!*tmz>txe zlasHbP@Z3ulfuQoz`)4Fz`)AD$O0;7IRrTv7-X}Y85p>O7#Mg!LP(gAk=_ssm_u|J7?=%2 zA{iJMxE6o}yo^AGi#9SaFmV54WMI%>Vdt=9WME)AZpgsEu?FN~rWz*(22K!@g-KYO zfq@Iei5NDAD$p0x!3=B*x${q|1%nZzl zA`A>Hw#*;REvSoHdLL46Fs2c?`T#Qy3T+m?q}2mL=ve@G65O zm?q}3gFMK$8RWZ(B@B#=On-tI82DKBGB7akKU8O6U}R&P!N|ao1U3w85SuL2Ac0q4 zc^#1JU?#CcO%g1~V_@W9uL4_Hz`#(&0!ajtj0_CC;6$)15t0a0LBYwuz#zuRz|bwm zz`zVi1k8{`z{~_r1T092fSC!L2$&&>fCVWLFhddnGb9l(bAS^8A2boLu!AC=1u5cL zkRqNFFTqrs>N(kloOH(-1o$-uxO1Y(;o=7Q7+gVb0sN`uT10f{>>-VbMBU=aneT^Qp* z>cv26JQ!I(>cv6g0gN?a3=Aw1Aa)32IY?X*q$YwfB9?)HMG7RIz{nKCz`!C6Vy7@> zg3OTtsmWlR8^yrDA`22PU~&!)VqlR2u}c^mLFUMV)KoAY0Qp4$B;LSyDv^PKMG?eq zVdMj;Q3A0$7{FcyDHj0cDnqS{qjL}g8#Ip8qZt_3pmC%EVngF7IEaA_5=BfP)zBFFmdL=s z28kgCu7dI+1`hVUAQPQ~7}y~Of<4O)F_3}#eIx@z0LKny1_mbQAVUTYn3^CX1`dcC z#{PH)1`dd&jBe2k3>;8fgM%12Aht5Ox(6|EKx}0!j$~lq;01+^1Y;$L4Ney_j2<9k zz=5T}@HeVZj&$5*Guhv0;n{vBBxWf$?Y}0|N&*UAQp0fXtBusqtXs1*rk23m*oK ziAf9$oVF*K85meW1cMOEd1g>1<*;L6VBi21H>?hCK(ZYS3=FIw76UV+5a9q7AFTGA zpqvku1Vu6f`~MgQ22LyX3Q!oSuy2WHVBoZ5zY21Svhcca1_nl7R#2(Y!_2@j2VCf6 zvoJ7-X}jo28L7yR*-+#mV-iWE~v8MnUKuDz?jJg zQo_m%ntP;lG*04FmQlcS&VZ8x>3OV#_f#ZQ{wE#3un4xikqZVKV)dHN5T7Zp% z30fpjuO1L0q8H&}%LiGSh4RQ4VxKsow=Z4e+te`;V z0hh0=Y#bu65|$OIgk?o4VOfz%SXQuEJWRns46H~cEGtq8%ZgOOvLcnRtVks+D^dx| zid4d~B9*YLNF^*QQVGk7RKl_%m9VTxB`hma3CoI9!m>h3ST;~eDDs4bfdkZ2Vw}SU zDhpYburP3d$|lA+47t!uQDJY164U%oajVDBN%!q*vns1$hjA89D#)rua3~Z2m%fJU}eK2~n`LHo?Xn|`n z1yIeARGP-%EeT>WO)O#HXHjDYrG0RVMBp%}-g9D;VPoJh0P6?<=}2a9QUKMpOcTo) zI6y5ByFaY3495X#gRru&GI0C=YhYkhVc_Pr<7Vb#U|`~9VCJ(@WU=P9R220Tw%}%9 zU={-jaa(g+a(fChFtBJaF!RZ9Gcd5SGB9&kDKbJNm?S{H0E-}NW;X$81}jn&@Dv8A z;t*t1au)qL?4+q#jms016{Hky~BTQy3D=HQ-a}K!QsFR zHV2$epq@YvOf^Vg@-uKNvVhVDJ2p>pKyBe*VBmy#k_+ZZZczqxNd^W;c!467+f&$H z5|ku)kz$4$5;1(JLY~5)*y2YOgakyDBm;v0Hi;TZ1_nXYz=P=k1-=kBBZv!P3PYHn zV4^I=LDCHy)HUGX1f?pFJ)n#MYJ_6Re8`~&PjcLr+#siM!Ge(+7K}XT8I#g%0(CT! zv5>URj#0pH;Px0Nw&cKtNDiQk1IbHJkMY1f#tZWpAGWxHBy)aPW)Q%p22$cMsDOGI z;1&va=#K$5j078-0!uM4K-IA_ffl2J#9;k4SPu{+2EsaE^P1UU>R??PSf^(Wv^xY+ z3&IflxjA6!VNEJnQwyX9gh6XznHU_nVd`Kt0j!3ARVA=W2&4yuMM2#*28iF-!JcD> zcugEx0_2+`OzdFKFfvFZOMyMW4t72}#PKLbg5ApwaV@Cx#R{_v>_A3#u>07-u49L| zjTJPg0vZxzWMz2e1sZUZ&;pUKjX`9yD2S{9i@Rup*oMv^a*GIv4D+YTUr&Gcd^kP9dpa8{dLe?gqQZKoO);4IJab;52Xm zoLUUjLE_WEaghnOaUwX@PJm-j0UWk&;PiPx8Km-<42U!Zr=|B`y~*Ankt^U(4Fsn~ zF&>bJ9XLJj2g@!4$7U%wbIRP@D*H=#De|4 z9GtIjg5xd%oI7&CDTEcAkG#NX=?+-s1aO%2fa7Z_*!@4iAuJCz;RHA@_kv@m32ggm zuuo5c{pbu9xdTo)o4_VCfaBBcBBO4IFpg;Pl)HE*WluL+`#5NY@T< z`s@OymUG~c_XEe>Q!|k4U2wW`1?RXGU^kS2kYVMO91EMi{P~J4_x-DflKUYa9Xkkrxt0jX?wvWKRA3|fX%6v1DSaS9R8p&VOE9+ zu)mbR=7)mASrA-4^nuNp33mB@a7vyD_E#lXjSx6&pMt|&8yvHT!6xqjrw~QW32357^$_;JDKVn^p*Rk03Zku7T71Kd`Ue!6Bv& z)~f`rr?SAYya4Rer(hq+gVSL-IL7CI)1e+%BoLgsE`jslDR7EP0-G!XP9g5#T(AM` z-zsovuo+wnp981iIrNPIFl95Vet>?L4Vb%IS+Fae4Dbq0|)1VLoA zA}BSQi7+s*G0YVJkq@OnBs(~rl=FgQUx8iz4xBgp!1k^Irq?hG1_U|$O&S$XTF7#LVsMa3mSqdENSJpv#T zMFm0nnFQD$ih>v{EbPo;3=AwR44{O{@*Y%xumysGn!OejtsEhsf{1gyH8^!Luu5Bj zqEImwR0OMdfD(lI98hFy&jn>Ly(&;dK4xkKm47dpnn4A~8>SPWI`u1)B`CswFx7*? z^EXonCCHe+C5d&YPe)NXpkXay=pelW6u zjQ_*MS=Vo`xq3h85*F}Ug!yOeMKwCbB&CuApdtTMu1G3 z%;*lXVmhNSsMKD>SOYR(Eu%F^{WeBrP;sz>5$yJzj9|y_Vg$Q>HzU~jdl@Hpaz0eJ}6Bo-U1~eeR)u^XIlwMLcwLARG6CsDqMRQTR{1D8DlZXoIQ;9 z6d4#;&oOd?0{;u+dv2()T->0VP*fQdGm@7;0U@mbGEngZsOD6?3o6Uit3Zb9vVy|L zPzO{a8JB}BvfKj-b=w)BTyCEWveZQjRP%UBg3^v(FDU&5?*T2l0foPKE66>vB_QW0 z-v_xylLzD(({~_o`*omT@QeYqH-h^>Nw9&j5L65`GWLN2rHOGB$buP+^FS_|$@meJ zxn?m6fZ}=)BQwZRiy2RY{IZ1c52&bL$Cw2Qu=R|OKxuLVBNHg)?_hKWQ9BurfLyeT zaULiJjxc(F(#lcBc_3#WV>|%L+*cT7K-u9c;~h{*e2wuNsNwO9@eIf<&l&YV<-rR^ zeNcFPV|)in9N!tGLAL*3;acJDSORgiDDGaUuhjXRj`gPLc@n3_NiJkBHus#4A~34%iD zI+F}267Dipg5v8Q6KFz~^%0W_sAzh|)CS7uubBcsA@PmrBq#$kFw27qwpL~tPzvZ_ zHV5UIUgp)Hv^0bHJ}CTWG8cl9!xH8QkOP-8&j5L4BXc{*@tc_EgF^Qp^IuR2bclJW zCCC^C2G(w-Hy~&AFqMO%vzO@!i0WhN1KHWnlne6X1SWYI(n?lQe( zXJBBP#jFe&Heq0u$pDo_@*W_=6+VGtR`EJ0O7s*#ZC3sFAeR`N0wn{JQcygYP63f- z5umhat_mu2EgphIEVqGF+9iUrs(m+zbSMUes-rt7r8+GF)!**RK`!$62uhQlvp^x~ zbq$nky!U|u&?gC0RtJiKR0air0wP!(6v-iPKrQ&t6(Cndx`5&|DhQN^qM1PL?3mRc zcgEI&LNksR)Q(JE0?O_wuRv)wl@TPK_5ox|dLGEeoSUFFT&_JRHRSyOCFuNBpj28Q z4YIM&1e82VK7dkHDGw;>$|689SAG`6t~d)S0V|V0?Tl)1P|mEG1xnMk>Y&i8QvkJ} z>Su$}ZWE(E$kEM=cR)6@FeZYOwK7_QTG?%kN}yEU&bShkT00r#K*e(xqa4W9-Hcm6 zQP{&+1Zr*dg7%~{uufpy1IpSH88?Aa)+EM2P=Pm@u>%w-QyB9=)KtdVprT|t<0Fv1 z8H|CTAfCy{3NmaKV<0F$%x07aRi^V8&w#YgXM7Cu=>o=RP&Qo1m<)OS z5VfAM6co}M7|($8ZDvdWh2R#(W>BKo%J>EpciR|egA&Si#*-k&?_j(Hsy%iwDuY6N zH=`RUnD;P(7QV6WWz+-(_ddq&Ao~t7-UIOtG5UjibeJ&-lr)YoCW2!5D5E=wI>zV# zivJUgx}ZFLl5rYH>p-#ck&zE%-zUaqPYKH~$@ zB&ORSA5CUD4@x#un5sZwHkIi<$Su>DYC+}345ko}BW5yf1;yqprmvt(F`LNNb%1ETF}YN zFgg^?z{)T>6g@f=JvtOUIut!R6g@f=JvtOUIut!R6g}96qPbv0(cG}1Xdcv|XkOS* zG#_jznjdv2S^zc_EeIQm7GmZUCTS>I1a&A{6fqPnq68X~W@UwpNi(ytu}3I_MA+Hc z=Ybg<9PDSn3{Fn=cOV8Uw>M~84tRu->3KK<1FLFtC<6nl+L0s%23D=Acm@Vm?XUy} z23EbILCC6LM0Tp;x|Z6NWwTOjdzWspcC zBL~RnCPx2ISf^?p$QJ%TAYB6NAlpS^Ky1+qpb(RI4>DhJK1h>{CrDQAA;@0&DWGsx zNQ!}(5&*J;n>m?*ft9Bjq=MfJq(W#Nh%I~$q+euV1Wa{3$StyZARFXrNTS>YWrR`BWxW)3!1@Y)z=8Q9vRB7M+u zpc5dHnU@3FtHZj4hy~ocqRpZjDzEBb0&T1wZK#hn)IkebMjPr3qYd@ZhWcnjeYBxI z+E5>DsE;<(2VFy*6+C6Z%)$nnmSKlY%W$Ah%W%S`Ww>C|GTf-sGCa@*yf80pT859A zlONs-AZCYv0P?g9d#N>O;)RJ7GT#E}0*p?rkUzD;1UkKDv}ZEfGa2offR=`i_DmQ? zdnThjlhK~ZXwPJ{XENF|8MHkUc397Z1J*O)MD3Yy!Fnd#u$~DIYR`lh)-&OQ^-TDg zIR!}SnFwO-nXrO4fH1QNLDrA4t9yWYEX-_>g<+5$%fRjq5dv-UVPIkC1Rd$b$oQL& zmw^#-RVnDaUPeZFHqZe}>I@7F+6)W~6Brm6J~A*c_<>HaWt3;)7u*F>1||-I#4dr3 zrM&|Zdki`#{T+z-4k9?27#NsA2PZN~gIH=H!T@y8)MbzZKm>~gXq%`bh+s8hU}XZG z<0Q@++{~(G!z$p#DyYcHu3*cmq{k|)$0}sQ%CEr6Zp$j6$Esn&s;I}xugA)0%f!aO z$jGX}z{&(V{)w4~5usf{kyXNm)m)E(iG`8PhJlHNNsm>Vfr*8MO@WmUMBA`3f+&5k z84o~?Vqjqa9TLn$dZ>tbgHD136Npd=0*QfxCIZAt01;^*A`e7R6kMtdtW2QOtw26j zG+@=XVO6vT1)HKRm;|#q9ayzMo>ySi2T^*gTo6jp2&x963qpdz)D|4F%3u=0wnt(s zgLL6CQ`wMJ(}q>q7EIcMNJWSV(FhX|dJQ2CF$Yl!td1Z`k5$nSWC5cs6CWr_1sGVF zK<9QbpJ8BRWwzDVH_&J0F<@1+Wwq2}HS}Utv|-g&U}e^4HH%{9(PL#-WK}m{)zxEV z)dLA~O<-k?%wW~EW98OkWo52XVB%n4WPAo*+Q-6>NOZ~vrFu~6X9A^s&N5K6feAz$ zgVQmHUQi#_cmv3%U;^P&aB2o8UoulJs~7_-6X;+yQC3KjRkmleZh>s8TaEy0z@(hWOSFm6R2=dHya|{kKGf{|-4+!!!GXe25GC_Jh z{X%>lBjTMkk~I~Q6_k|~e0&(<bomd_i``$19lVS(+G_nVOlHT9_Cb znV6ZHr0NIz#0`;(h#`z2n`2TwN86 zz%B|134%B$AS4Ll7O)|qe!-sZey%PcpTJ$>;TRn6>F4I@=NS?Sl?ZnBGd2SIqe4?5 zJ|4s}HUb4&NRX$WyQfRYf$~J0l}U={(kZC3I-L10lLP9KHdz$&VHHT=m7_8u(O|;378A< zO+ZMHi>I4gJSccUy3ErcfFa(;-_JeX#Xr=^$5kOGKQCP&CBHN&CzT<+ATyr<6w6>! zEI{F@prIQdk1XUE5g)Iht6-?f5FhI47h-G_9|DShAIBh97X=2eT9AbxjBF{y>a;W; z9|rdTPycvde;3zyM>mG}_>jPOPe?*BfCo301O<&uXMexoP+wOCLr@xn1`RZw85L)yEyrP!^+Sg-Zdg1K3>7tzyjo= zAV+6#x{r@n(9ku|GYtY0phydaM=r#^2sbnkplfUt>f_@La%?a(9Uv(U(6tEl07(YB zfh~c01eAZE*&^K2CB!2>9+DCqgM8!NTpdF~gIwdC+zid)gPk3H9E0K=gFHh#d|g94 zok5;M2~PhY7uTTp0GEJxS3eg|M^N%HHZcSR6exkkheQUr#>Xp^<`rkA=cT47fKFWj z#VRy4gMtH;+tGv|ncmYc!~$jjRC{tpVi73Bd_c*<*Arx$p`M|+sfneDv8jQDk&%&w zxoN7dv4tBru0ml!0#<3DX8;KdH?VfpBw)!9AMXQ>AWuJN>}cp38W@3+AymTAF9ccu znHqz_8|*$vu>wh!hGuZ*X5<%@fIS-!H>m14b3!CK(PubdmsteP|w`b+|1J0 z(AdPn%*fc#)I3$&*uVl(=y(SE$2-S|c?NreGLn&jp&_VTiGY^`0YRS75+VX*F33R& zN*NhSh#U|E&Idup@s4f^8U{&*1|W5y(1wRBJZhj}3o0i(96<#{q@Q!Vv%hbEV~}gS zqn}HBaJXYYyrF_2A_E(m!6FczfgwVm2n3ZKAeUNziY#Y83lJMrZh&&9W4x1Nuxq@d zi%XD#hCzjifq{{Mfq_9N%yseL@&RU+0wkY-?FE?v5eKCkkhKUAkgf6Yp*}t+iQUWu z6lf_RX9NU!T7aVf9Mi6Wpd6_H4%1AyG_1}5r%*E!Sd4;8F)#s2!qEB&Tj~x7@~nUx zR-p-Uv;|Tqf!Pp;f|FrHJgDRk4E1ykiT49%A43MDauwuBBrZf_u(KbiMgi9f!6=o1 zTd=FEcf5ZwLASI-yUr0bm5XghziUYYk%u7v8i7y8wtN0R- zZg8#xWm-t#r=e?TWU9&F?iZ@yY!snjXryPXXQ*IgU}S7yW@M(Io10uvYMY#2RFYbu zn`@$=n_H4mnwzAco12!CpID-sn3QRokyw-h5-2FOO)Drf(Jd~}1!Xqf+{B{f4BNz_ z+%of2-CXUo0tMZ4V+Gyx^pqq8U4H`w-QtoI+hn5(1>Ll?(!Au7%=|pv;#4qQte~5g zl30?6%+Jf$O)AaIDap)J&`rzB*G;VI1$|8KPil1d4E!1Pb9m zV$Rbyz&|JiREve8CQ@*51uYjm{o>&@goduMfjKBwxch}V$Gb+jI){Q{H6GNE2nHt^ zUsnaC&=5CW3nhm5_{_YL__W005@VzIlK7O=v`kQ$3#!Rr8O6*b9;L(wr$KP+!L2j~ z)k$EJpm7(Up#Vxl6_Dl(Jn@0j5mYQ7$P7%OSwXb` zQiBE5GzDibP!w{##>LEgqM1)8t z@Qehlr;ze8I0C?0!MPl@n23iJDX_Ev4q=ev!5JLpYe=yR%F>|b4YVx;ZAuw~6FS7b zVD%`@1&csj>lzUNihWRmg(p2w3iERf_wjU!2emzr6R4pXTou?+VQvBOZlJajND<6G zN;#m!?&$|=?ce0#RGy|gIohOauc(3ax?Qlj*f>Fg?C>WY)DrhS} zMSMN|{Db1-73^#kG(Z|O5h^r5dNmp1Lm+(>qi!C(j7$y8 zjV(+qObyJ93=Ba%OaluaO;Gs?s=1&&Vvu`-o&6yGh2&pQUl7T^;Bq@69#NWtj5aVa zF*7i+G%__XHZ(R&)ipG8Gd8MVh=_cK;LaSVQGqDt zL%|^k>L>WS#RvF%`h~cH(z6M;Bm`*$1wK-)fe9feFHmz8+H-UA_xC~RgF`%SW`g2n za8?I(4xvqBBb25ws0ZZd3hD(jfKnv1NCA~?NL)z4295$yK@IIL7#e|!wSXW`P~8G9 zei2DLCr3e9xdK#lfQ$i!0<`G}Zc%~>cxnen0HPHOQXH=UYKNhA{Q`8&OhSEpf!>T2+A)LLU@oQ=;IjV?&{|0;|lL18i0~RKG=Eakw)pta5P0qe4;6ueAEVz4iZct8K^k~j z4GwUykHJm?mDRAg03}yY-2n0_C?=re5#ZrJT^PqP0@n0G4ktHXM{wr@Tww->xHuy> z;lODO;u^i&nn<-2^(iY6sWL4F!0z4*rou-5N8h`*DzNfXr4eS zdqB+_Q1(D8e_$fs}BN{s2flsCa|;+t3tT zo*|78BUSX^hyt~!Kv9TPKEUc_hIp7g!LEVv&cPuHrVPmWJIFO8G{_H;y+J7voGihG z1$eX-%mt;!fFREZNPh>~w*e2ZxF8LE1v~peS{UH+1XRU=TKXs*j7&sB3EUtCWnq~6 z!2+OM42msKAb@mgAZkgF5P0Z21l|oYGy=}VnFvNpL zb-<-0q&x%XAy|(Qt(J@j^>rY9I?(V9s>$GvI4tGBhbW5C>x&I0KEBK#Mg{k5~a*k$_?u#AAq$M;vbm!Cr%w$jD-#(14WF#zsi9ilIKBc!3P8q9<1Hm@>Fv0%bH%I6|iL!0JF{ zCDL>rC{H0gW~gUqX=Gq&WMOG)YG7_*Xk?nIYYqw$P&$V8dxAaugU}`)J^jFA9y)oY zxu78g4KPnrL03WDQ5`%?V4Pu!LEd5NiYXgB!Rl|Am@N2Kt%wE4H5^>KpPu@Gbifke|)^Z zQ?S2}Ylv&SuVaXZ0vbQw#nsI*)F%WsUj>>zK$|#5YP1`JA_d%wMT94q3of;x15cm= z3mnO=5h3xOE}miFIvZ4@g5wCBCO|bRXf6xnesHoyBxi8R6B>xrHUf2=;Eg`eh(Bmz z6IBq|e(1mqL?Nhd0Z%;VgROydMnHWRr(hSzXjXg(xH%0f`5;*dJnw~G(1S(|L5>B_ zR)A(f5Y13X9|NQTJoJiO<3PF_;3fdPkT8l54R#C)F^Ug~05!7>AkA#Z;5KSu4X*1V zuvB)=e)*vC7F<7ph6fLBtUx(SZva z7gy(aQ2LGcbq(?G2Q4)K^{zn?4Q++RgS+T%zTi>|QpKVh1c_JZbP%FQ0++QGp&mh? z`mF-&1#sILl=&bdF7e=@CX6`=)h;57%}?iRQ$hMEhRxbg!53%0nOt2xJH1=`Uprmgbq`IdNt57VAnuUAr5MJf>H^zl?`nr zD=WGz;}+0M#_$(NY&z zXZTzLcu*4BeFV)0fR_Y;st<6qgS?ABlt3zsjX;?VybupmYCxBCLA?wqK5?w_1X%%SF0tVYj-X`;cnm%Q97d3li3o5QL3&wWVQ@f!VhYr!X7CRV zaCLP7ji-PcyD)KlV|(E7=y=d-6Hs)3b)c3UncxJR0=5m}2ykl-JZgqK=?|SC1~;go zaR$v&;DIjas1JI11>V*6EYAUB+G-# zAW)ACy-Nr6q@O!{$_PAy1R0ogfvu8KfG&ZC%=SQ*K!b7+IQ^7@5;!<7A~FQ1Qbi46 z1tk+bV?6`V`Up^M4Xzs@#S}PEgDMMT3@MC3;o$~arr`l^N`OjKXv+{ey&x}p_JMi| zw&)qOLIYaRKq3xQ1Y?=*hE7T&W;amEHAuPwuaSbP@B|HP;xfw&I*|qMtr^35YeC4p zHSiQTD2-sOibD1sxJ~8^nojZn=Vc#%|A6=q|9BryCuc_=$Y1~{tUzf8Hj4vk8e$uy zg-mlm+o;f7Wo!seL7?shB$7dq1mQta5Ng94v?`q;J|5Kdg{=ZL0QXVASstVhsgnX1 z10@+qM>ZhH6FlLCsKY>s2vn=XhDp$5pp95alNH*qO#vsrOcXJ2Clk~{fSLzgpAIgB zP%AHJ5dz7RkeUEo3xLWyP+J$$S;Uxr09CPI55cmR0%8FMC<{ZI#NcR(R{$5e;6;w0 zh8v`bfHa;A?skA?;1!gW!K2xrEJH2W)p_ypPLUz5@sK5G@t_eI z@TzAY&yWxwSNM7~NLgZRgtRIH`|urjiUgF7K%>O*pp56|AL0?@AFcpue1RwP!Hz)W zb5L-DCR0H5WjtsC9n|{(2R3L;C#V#NhlVpWok2=(7x>%}q_lDJiHGcW0H+Xm4+~dG z2`b8A^FxNH3rD~`U$BQk6NaDyQvtjz6S)XR>r;TbcPKS6+2(V6c8@hOPjQYJhSp#M{WlX*{?|2byO#Gy@MQqSmKAENP`jXQQSgdfbbDMQK#L1ODv)h-_74aGHEK*5aE$tb zofGU46asHYfO2}MpHrwCG#P+ae?wHk%i%;#1?5CgKnKHDbAWV#d-d@sg&4>^;5H1X z0*B{c*dk=`%D^C3ch6wZLM=B>KTohlp!9>8p+J-Ipj8ei(@~(nfj0ZVi3qjX2aQ>@ zA2G!ymi`9JcHfsVamu!$Hjeluc^jvJ=z1VH_4(5wY?{ty)07-m5e8>nanE!To>A49Iuz^lGNEdfx9274LY zfduhDQ%s=2FGQ*brT73(KTxToQ2<_9T#%WkU}vXb0j(B|jo>v8sQLqyub`y~3XlKy6=-npJ)H4XQ zH#HtykR!$?p&d6f6U><_c+(1H@f#?qLmI;6$z2JqMihzIQxfND-qQikmu1?4}r^9k7!?nJ6B>ak$k7@fkJKOswNc&uLQ$$mX!?fw z#R62!ffss!y#g-fK;}Y{Qm6;gge!U}1KErO${?WP1EdKw`Upv=pfn0=96@G6;XK50 zOPDr9`UYu(=Ri=@t(+EWV3`p}97 zvWx_@3>#L0ffF!n)&$h_2gMv{^#F2|IJyOSfa*fDhygXpkufCty%|8`G+^bBVhWOw zz$1J?3?PSq3O7(O0AoX{3vft)V*{SMAR&aBy+CC(c;7PC77b)F7@BE8p#jagAYVaB zb66h@G=It9D4r_;~PeGGu@l+4rDD5|ESuolymkeuJ|rWV9M=Df+@X(2NGi zHxNI7&OiY1AVm}?d*x3)XXaXGdh}BYvJr&4HPe5x_z>Wi# znMm0(MU%lF6!+j|3y^j`q~b*!YETMkzkp|}z?Okh29yV?D4Z89_JiaBa6bXu zeuwM=KyJW;c5#A?LrQ3%WR4~TN$sJ*NJV=*WE%(a&;~*iqId?UXO!}@xF}g4G#{&% zjJANlFVxpH$kQ2=(|kSsAPqX)+p%G#Fr@MTTLUJ*MKtnoFequF_UAxx32t?pyZVCK z259a8_dT$kFaX=OkJb@{9%TTku0btF)FF0oK0}%zhK}VR8l;fY5gz8C3gEaHad^uXYedL zIH$vAseQl;qrh`6ASb|EcNj}ZAssqUCl=hNfmCQXW-CCQWl*Mo6>!cjpj8!+E(o;D zH#CD!-7*A(2Dm_qE0p*E7c-z31aGbeIhY~dF(f3&(RRgqNuNZV*42S{WxCi1C zgBsGH{d!QVAX|7r$pB=$1~?3$JWyH$H+Bro;4uM7lE_g3sSY7+NU&~5rw_J96Ep$@ zJ|8E@)yFZy)df6y2WqxL3sCSF6iRS_N53Ei5~zn6@95{~H325JlcvK)J5dr z2`<>m2*?-=*g^2c4WMH?f?PvDo2EiQtsn4gyr-W#xRMDCb_Jcl;~4_3`arcID2O2o zO`v^X2nXsM)NN4U#m?}i7Gx6_te%EW@+p8vk`cKVRNsLb0^ke|76y;^gSn8V0Az_F zw7db&M}u}!M+V0``}?_hx`X#lGsMG|T*t>ND4`vq0Gb614h{g-%ORd_k@4WoOWWtH(*HyXX{3P=(DV{GSwJdqNYAwbl$t=BFQ6MC zK|{Ep!wVogo8#j(auaoOGeId7Jc|tx1_>(ULKYL0f{g?heh|yyTTBoM7t(Nn=c6EJ za5)2?iAO70pgSeOD?Xj$J^X`1prl#<}<5YSGs0?j#r3_>YkKx^{ip-l})X#yFS03FB# zJJQJ;+*JUNYoa*`Tv&suVz9Z;vKggA04cOVxe0mfB^~jSr6W3vrBy5B2kO^F%};cylE<(SXw-$mfu#0ml?1LxJ0KU?wEMkjpX12p7J# z6l!vF@ec_I@^@hXCvsyWcnOKkWRS~2>$1Y!AZ=NA5=9QzAO_G>33&gqhXQyB0_uKB z$XX)M$yAufcY)@HVI>W?kqYTpL9>bhxB&#ND8L~AD$}4mP;mrVz6)+8LxwisjU3p3 zn4YN*bWJ5_Q6(tDg98zkV!<4+R?rSFP~r#<4S@7apo1A`SrM|c5j1QEicdEmM|bEp zt6*>o5!Cnq#UD5}!9@Uw2eu%{6*OM#?BVL{4Jz_H-9TLvP!|HE0vz;Ue}H(Pq7@ot z0pPW(Aa8?HEn-LjrTzzX@Ie~E#(+}|hzBtSbkH0$G(ojIBv+vM3bI5LHWq~@32N7X zh9to41EgjUs2u~J#sQaK;DKgn!T=q)0huI3Xn{0xT?4^qGk{8Ohz7`52x56NB=bPp zn-*{zK#m7T7i?(`D7GMq5TODYhk>;15z}(!3;~{gexbfd1IKC#21$nCmGGcK3~Vkq z@W62Z=7I)JAT>9n27^!c;wTs(D|(@GK+qrl&8SaE`uBOo0m{fzwFRQ<%9)C&FN{FGGv{PH~g;*wlrBi*#b zoSe+Oblu{_ycAHA2U4U#Ln6Z5EkGA?ZV)(SM8qSlU<5Vspu0qn+9{yWK=>Qfr~nmY zpezn{G`O7u;(`1OTNr~T18#If8f1_IEI`dbN7$}VaP9?HKJdx_5|XIF0b8{SElvy= zAlXeDe2Nidhy|2rK^-7)kV0xP#Q1%DkgE^4JOfqmU={FX&!`9FA&(71^B|T}r9gpz z@FvLfpbEIe2(rWo6d;J+D#%8J2q=j`$DWX@eB6CNP)<_-Z^HvsJKzc%F^%o&! zBB&yP4I4nWouG|sIJ>yUL#FY;J_VZxPJ2itW4CAr>_ZkTF{6A zywfP&DJTfCrLI!V$q zM8O2?VdtQDk6_U0D&T!BW(+RAjzJI!kmBHQjpUsCm@j z7m)?Q&Tw`PGGuUe4l)K2P^%y&2FC~Z_<(k8flfYj^l&or32^m;*y#uj{ebWwSHE~? z@X!^qf5CR6Dgs*uwmk@BuD@TrzaLUiJHtfb>H>Uxz^)JQ@d?l<0C}tc>M3LyRG*>9 zU^B^A1H7p-7tY;Gi%xU_c~kjpF3Q zoK#Sxff)*F3J5uHD1j3rk{CDyKyC$_8XOKvBjAuU&}0bl^o@58GK>f1Dp2Y-09%id zycCQqP$a-XY=o8*QBo#c1;lo!-;Lq^G-Ysh_627T-ykE9GhBnfD+nR_kPbbAjF}mj zn1BlcByR+Rg9cVMfjkl9ic&HtfXxDX50c$AK~W4&2PK)gsYMLMmBl5gx$)pk9iN$( zS;7EL7l>UL;9?E54FfEWa1a{Q*I>}GqL7`MAfF&5o&d0K4585vDv&^hEF?;tT$~|g1H7O@&)@Lk3+ghEe%BzE zNaSn*jvj~!AQ^DHAVSDL%r(d&-U5G$ShGXL5mlVM~uKp2pnp`;b1KW3?-SlCh^53iA5!#6pje_g7P9zxPwwLyiU+$ zNX{?KD@iQ^DTS5qAcGA}7=nYH-GdNCLP&%w*aC9~s6(;D3rME{1E^#O3JwVZGa$Ji zlqXP1T#x`LeL*t`IM$271R_U zDGgN9!O{ zNEECItPWJ4feNa4P#!RX6e|Xr;1~iGw4jm%5~|M5LC^#MN}QgcBnUd>3R-3(5+_&& zZa%0?2DL>%D+wH3{lJlG0F7r*l!V~S@}QHmV9g4UD?p}zqXtxLf#bv+ksd)lFa#H# zU>|@AZjc^W!T>dgz>1-%2~>gxY7~NEt`M`j3j`YkjxtaXA?pFTUlZ#5;GlR=G7SlG z^b7X&3<+^{LCJhjX?RE=83W339>K0qrx&7~+$Pi@{x4>MGYW#fKw=V^#EwAg++V` zB&;ALG{oYQDoawqNdp{?ddUp#Apt=Q?#|9u3L1_@xeB1;y+iWzbCNR>GxH#adVhV%Of@wjl86()861rn7#I>$6O%F-7&So`*O++T$Ie9pO;yoUtE%3l&W7@WMP?UXqa1E zRc4e}WoTJsWR_!WZd8??n3-9YWtgm+o}8=;a%yUBQff*{Y6{rRdPS)@hWa4ky!^aW zU64cdGxL&jN>ftxa}$#@GV@YtYe{isF-N&4x@$!I|ZigrCiScrl5je`;! zEcKRD7Ni#IWiZ4Sm!xFomFQ(aRAhisEKDvhwLB*?38VbaxzFWXxv3FgQ1|jNG}6a-lc+QNSX)fPAn<`=U7;tfyg8?@Gvki{Qv*|KO+NE z4Id9Lg9-x#%wS~TNMc}MaO7iYXLRI~aO7pr;$v~-<#jsF2T}o32fDq?2UT4>vO0A0 zWf&M35*Qd5KzD$-Fv85|WoMcKF&ZWhx=Q!#Q~NBnZe7B&FwOb3=E*Fpd66Y zg+ZLo0CGD>9(47S0+PH3R34joIiMToSQ$8eAgO06glGVn2a*Tff`rXHP#l2dL3be; z!1aSe${*S9AiW@UpevBH!0I4=2dfO=<8b8V1w|<~3!@IX zIgANxBPcDwUD{5?~T$9_VH6Lp9+bXe@{SA) z40Bl+I6x7g#K6Shj>Zo~<420 z6r}zkB%nZC1_1^ZhBs*HKcVseqw!f7QNvddi4QVg5s429e@!&L2^!xTQpCXB14`En z3`|fyBSQe1`Y1GhA{svvjbDgjJ~KltntT%@1H)1l1`bfU4sw4Fn*0Pt1_n(Q1`bdi z1CpPECcg}gzZ#9d5skkGjeio&eW05ek<%OKnonf@TQvP&(fGg6_>4@b@x_P62VDZ$ z%gn$5s&hg9Q$UjkT@8tBzag5uB^uuejqi`f4`yOu@MUA*0M$nz`#^V$BAcIrralXe zUjV**6;f}4^w*%tH$ti?jv0&$41x@d3^UN=m!k1Eqw#m6@sBexFg#^Jp(D?t+`0UK6@gsu9S7c^jkY!`w0M+v#{~DvoTchzk(D@<2M=BD8(F5M{jthR+MBKFr=g=m8Qq%=I3RWxrXtj1@R!-0Hmm>#1L#X;zXxRqh#aw)FK8*_p!Jj(}*D@ zH_=QfV>NisFJyQ;2b}u}^Ss719v}In@|s2uKcOh$*Onjbf}B z1FTyB>(pi%B^!dA0lESTY6-Z_Z3gM$g8IhDJ!X&{hNkg`P)`{#6r|>*#21$_K+GwF z1_H!E<>e{qASakW<|-0XPN-X~sF#IpTmZ=v z;5h}u_@tt2P;#*ZxxfhI0*D9V!Hz(hbto>#G(mQh5y-oS@yW>$x}+#QJ~=-ZWR#&H z*in}8V2{H>0VRc)z#I(r4P+1^(plp<1c6Jdd64zdttfH^~6ZYFptDl<77WT^>= zK(WJwfkCghGPfi#i9xTpqzFQ1z*w2ZMbJSK2ECHhiV_Ar(BKP$UQ%%}gB~QOW#*;j z!`O*QNkyq;a9&YjUV18AVNqUsPG)floS&PRTm;t%S^^2vS6ouWpa;5eEH$r$LC-PB zR}Zw58@#R?t{J2rl>cCQ(uxvuQy~oyVn}HQ25|cvQlv9*FbFU(fXa24URZAfboDo= z8U^((KyB+8f(#5FV3G`=b~HqXF4R0|uSKCl3?dFAL1uv1py3@*`w^xNB!-M(>MWq< z!Q?>ZZG?6JKw>a;E@1;HSD zL3k>fy65*87+fJrz$8cw2+w0+0QDdXz=8}63_AB27))Rss2L#cIw%`vZ^C^Bh6&I_ z0g?xq1;YEF>Of*3{NW)30|$~iSdsv#MG|KC@tA?ZfCJQCU|;~H5s*62SOKW_2~7ha i;}|sFFfddg34qK2Nr3uzNWu&Y-ZLcve9c7zbHtelZAl;1y5EK6t0Jf zFfcGMz}R%8>rtJA?nD~$K^|sc*sLX($7EUkgW9}b^*m8%;hy`{6OI)u0;Z4z{2 zRO)gNbQAUBb{0;q?qF1uaQpxLpjjx``BGbuYVFmQsHEKJ&3 z3=CW#CI{1AR|W=d5R-@9(xq+BQ607 zmJ}ui1}2s*ZVU{}49s7I85mepnf(|U82G=aFfcIkvi)LY;P3&3!kmMQ3=FIVnRyJn zQd1Zh7?>vJv6dy~Fz_maB$(4_x_jEqcaK@1E6EPELk7z7p785kJZ z*k&*?a3q0E1DnJq3pGhd3oNe#avl@ZBzCAt!UcH@j2!G$U^@#K7`#{@sX&{Nfq@sC z3iM+c80vjh85mSS!OXzGAjZhRU@peMz|6>I4oVM<9H7*}3`rd)QwJY3b+E95QUnW9ieNECN)qfKUvU&ACo}Z0Fo43>If#LU9h6QO z7|kLX7+5$!Y!*iIu*vcAV)c(>85mf&K|%tI!Z8dCEIc5#2xEO10|N`M022d)1mp22 z1_l;BkhlV47{~~I5L<<@6Qo7}q(+008>CkdByPZ163)QDA_QWaFir-k5eBKTV7ve_ zM+7A9z{m;`7hMp|z`)?bXb#dK22$j~s0ES`2Pq0*JQu>iz#;)+hcM0siA#diL@?%q z43YwgCosl?93%~5r!YE#%#i`9$zarqnC!10R=*siO&%mv!Ds+dssK{jz-SNhw<3t$ z!e|0gqXc4iFo3-VQZ4|>O^giepfD7KBwWpf1_m}rxHE7}){s_W z=Bx>y>?^Iv_bi%$frAs|G7iR*5tD1A6{Wnx85lTtK|&IYfgmZB@TK zgn@wr9L6S$l~D`~9HJnl7L02^;$k4S4dX@-8yv(Aj8?G>3>@Gfc42aH4r1Vt1gY_0 zj0dR!2eA(W7brVwoMmQUVCw)CIv^GUGbD>~fijo+OPE|e8z_VrxL-stFsN{Q#WFA` z3o(Q-FfjVCg7Q!gGXn?62*x?qEDQ|7IjJcOj6pmg5vGYnJYtay3}H}S8IMLR14B4F z$S$Udr3@lX;S3CnJiH!E3>+?u3=E8O7+OGO0s|vUJ`)22J2)?@#MOg}WCjKYXkPrl z#K2Il%)r11$%~ATya+9+86o)(S~|n>AE;PmgycWe(wPI2{}`e951QqC85kHi7cnp} z%wS+(;3}OwPgbmcY8(RtV85oTUKa8R)D~7&th< zrIJ8DNJNyaf`x%Y04ySC1QKCm6JcTCNCAs9feN^aI0gm|;TlkxGcYLVQ@{Lz zh95IH`~(&IDaGAi0C=>1}K*|JGq%wgOQ6@+#LdpbIq%wgOsZ3x+Dic_d z$^=%VGJzGTOkjnU32dMoE^>i|fkOeDFxfzPon-r$ zYOiI=;3>?&z|PCS%weU-V$E%-DC#L}!OZ|_?lSXPDKdhD1U!YABqsmXR5Rw|=Cpa~)$7=g$iA|R3%EFPl;V&8BCk?vseNA4hYjaxm4x+n@F z4Xi+9t_Fyl9S9<4fa+L=hqfR#s|ARBA_yWMgT*cEKx{6sUV9-Bdy6=TeBlBj%fXKL zXa-`pflYqK31XjP29c}uLF5W!hI$58hW-2?&QlH$`Bwl$z5pv~v<9(%gAMIr1F^%L zK;%TQ8eXuoJi!i11v^3$+$6jXCKc>KDv#@e$TU_Ec~J#Ks(OP+F;@_|E|7tto|Qq` z55#G<1d%MkAo3_Lh+JU6fEuoCbPiK>Qx2FvigF^YvACWBLQNI zgF`|aOnOU$M7DuL#Tx9fw?PaHto01L{Xr59<{)xEIAFJdBm6GdxHVw%6u5#-2CH1c z4N_@t0wNp0{+j}hU0xlK$e92Txg2boF<9j+un7)elMBEmw}32WSPu3~eLFa)@3?`q z*~o)PHxCebRvAR@1}77KH4u9fIB``=f!ONcaGI|OVpoC5KVb4H*y3+sE0e%JRt2Y| z6a|nhC`0;hvuaEd9Y2ODh*j*ohLLI4j-(2do#^`d{GK z4FN}1Jvce%8-R382m4zeZ01|A$Rlv{9R)}Cb0={6p9yy9W^jOafn#nKm^~Hjh{a$H zSHYS=;~}gJZQuYe1^a#uIDcn>BWMOVI$FW0d%;<>9vo)%OyDGz0XEJFEG-Q7aT_?R{07IU066;H*aNvIhC+AzHAV+)!r>!qwaanN6=&1+CUkx~C zp9dEv{NQv@3eJ|+U>|#ejhh3uav3;;TERh`3Qhs`VCSZSeg6oo_a8X9$%7p#2sWn{ zY}prZ;`ISX<$iER)s_UO|0jAN*Bt>DBTv9#@EI(f2u?Vr;9S5D_Q6(gFx~=3${KL_ z-v%xRSArvJ9XLAPgNs-_ACQ^x&LFZD>~uA-_g;e2M?YB2P62TGe*-RXet{FkEpReP z0UNpq98Z;CgD%N}3_1vof^2YVhyeTSB)CRk0SDN*Veo;f&$>3|)*4V>YvK%rI7@DrTBdBG{*95_a$z$x|sSm|!C z#Rg&^-!B1^g#Zp>%K(I}Xl@CSXVG1cwSII32iy^MWJT$NAt=K?7_=Ew~Ed2U~9sPIT$uaxfO0 z8j`^waThFZ3-(eZI6VG@D?~dNrF9gA8fHOIGG!Rqc{{Cen%a^>E9Hr;i@JB z0~#f$nxP?&4GfHIoidr&5N%;XI!j9xNnf%5VjCRfW|0L+ zw6RpmK~;)ngCbP%1gN#4(E=(Pelp$zsrk>S0ZO2)Os7D3zKcm4ltZR6-2)||*-V_E zuwTtoe;4HbjZ7CorT%^2&0O>FqRUU|`a( z2aSuf8E^zKFt8ckWMW`oGr9^&-NsFz3~SN=B2D>0`QNMpRF0Tefy#S}Fi`AUx`E0` zD-}>Kab6C}NnU3`WlB&K$fvQtLB({&PEa{n_ybfLSBQap*T}d7KNB)AV+$JfXXW`TW4ta zv0VcNHh(23BT0#Y5|&~%C?)Beg32IU1yDK)&ITpLTxn2ir-!i;6fMgbl|bg~VH8qi zU|>DR$N&oeFO2iJp~iCU0+pSjTR^!{GPNF*?CFl7BMn|T(y|73KUUG7#D+TsCA6-pdee%I1!XEH!yw&Ie7=81t=TrWLyD?k6nyk zL6LBTF%FbojxyE@gSf{SZ-6rS6~kk5z{M>70;M-K{4{0$rTh9-%rhnSlz zK;|$ouy!-mgQ}h$rW{a|_A=cBQGHCyK$iA1$$)%0fyo>c4-=WDfE+uCX#$9v%p?SI z!jyWZYEYV<%JdSHu%Bw3$pHpi*}hlZp-l1KV<@hoGACF4KB; z1_riS%;Abqm&n9|3O)JxAk!5%K+QG9X`q5n?*ypy(4Pl#iot$RQZTUwg_CI%h^#mB z1*J&yC!lKDVmV02G8LrME)0}q?HfR(gC(f&ceDXzT&G8%D#v{e$VnaxK(X(63*-|o zT~NyP_6G%_&u35}5*P+j8I%DEir_|2;T4hyiptP*kh3Cpg4j{@PeDmMItP>tVuC=0 zL975MK;!0tnia|3plD7x2THlAQ$PtI%^hS-`Z|!6InE$MbGLv}M4msWIg@V$vAnTr^Ifzs+? zMomyjyOgmB6e!CWzk!Ob<&3tVcFPLJ1N9)Utz?t|nYN1YFQ~j*!}uALde$=D1XT>{ z7+-^^^^EsHVX=Xc0hAp!GqQsMaSNj-C}C`63l!I%t61iKh# zfC7Ctqctd?_b@VmB5N<>4N!pZW8~KY<-dcBy`X%5i17i)6^9uWLFwZN;|@?Ebd+%( zh&smT07?TV7~g>8PBN;4>bX;l?w~|+nvo0Sv@?viK)ef#S)ky$$ao3lv&)RTL1B1> zF$ARKDx)&UFV`47LH@kSD8>isFWqA71!ck8jEta|xx;7ziu${Z-$04$9^-M4jt7i( zAa_4xv;h@qj~I(VvHh6w2Z;BC(E}7CFBp%3g7hV0Er@!>xC)e_Uo%#K($pKq7oeo` zmaz|%*WNSgfWqkm<2puA`Tvn|KFIn{j9Q=|{mfVc3a{^s4?!vE2V)p0cmHH;2c@}R zjNBkM{bu|K^2{GbYfvEmV~hj^(0@h|Q0{DC;sB{^Wby|UcTG%bAe*|F3PG8yo9QMf zJx*kj2ZhrlrT~za>L)Xmfzr+tCQVSVO=T(o`Fnz*C#YOm#v}uB?{X#%P)bzJxQW!rit z8IZjjnWlr1`lfoO)gXE^(_E0!Ell@8NpCAt8YjpA1_oBy6`%yJm*s0yYDpcE})2`aQj|A5>iCJ(BcBy>TlrS^bAUd98I7UiNKr8X02BAb~3Jjx47 ze+;A#^MbmMR2k(3jn|Sf%uBUV-g;IBa)x=SHp*MiK-MrX)kb;i$s6XS+9+>5s5oUH zd6*YevocU)loy=-Ngw6~rGKi7@`BPo8N<8`tPIo{<*jFBAZM7Dm4Qm5y!8xZ4f9fM zl((L|VP2|@^45bYJqD78c|nyj12sl@!Rep$VO~)Br^+ZVDE*T$%*(*aK%G(EdR7K< zhIv^Ts5Hu3&p_5NFV#kQ>&YADrP?Sjc>IBZ$~DE(7qloyo# z$r$FP+9+>5D+4*hyi^n3s_gHp@2YV=p z!OC?m0<>%c)Q@B04P#(nRlN%8HmbEmFfg!cU5sX6VAZyWVPIg@dmaPo80m|IGBB_j z-H&8oU^Na0DKhg8VPIf2*9Wn!j>a-Duv*teF)*;&iGxJ!l|gK$3m{$2HXsXJZh%DG z)`Mi-l|UAF{tsthVD;(;>Gie&sq_s2vHhY!>ir8qY65?Q98n+C38I4AK#IcGfD}b| zgN%z70K6vXIyg5$hVd7INP#IJg(4S0mWzG?g^YwK$O)1k zL7HT)fn??EK;rVRK^7{sfmZ#2gFGGNNN$ce1_oB1&mafz?*ge1k^`w0RsdNoava>< zWME)r3au0OSIQ9RLe+x?MHpzfQiebm3S2SLa-|F?*Wl?wfzm%sSIQ9R zLe;Y}&~~K^fi6@%1C3Y85a>eH(|V;0fi4ti=L;(X4Ohw#=t6KSOfQihR*nUfXN+hJf}=3!z5uQp)jU}FWZCt;Qm zV2AdnD)m4epYwW?9in9+ogx*oZw$@f`7R~J<01Gm_VCesMbygX9_y6Xh&|R zgDM4juV_bZr`NMG(0xTaayz}Af&MGnk=yC@1F)hUxt%@`E80QjG_0KtPXBaX(T?0s z2c>^{uV_bZr`NMG(0xTaayz}Af&MGnk=yC@1F)hUxt(4QTA#x}-xckk^bc#NgVR5q zSF|Iy(?RK<-YeRX+v)YJ40K=7j@(YKXE+C10m4Af7469F^!fo<(T?0suLrFYVxaGe zc2N3HCOsyVM0FBsFZAJn-AtA&#xv@f}UW`Ac9<1@`IhJ%D~D5I>&*TdvaFU1CG-SjI7MI`UaCj$_=<#bu(DG^;lVDm{=!I zD%bQy4nk1yfr60<6oj0h9Z8H}0^wkgXCXlY4lYm-vVy~mRf2()Nn|odg*#)#W=^VZYDGb6QD$yxUPlhdyy zOulu^Y_idHsmaOL=T7Fm(KGq?jpE6sm-r{IySZR;^)0K(TDPNR!B)BYIXd~cDrgug z*w`q5MVy1;on8GV>t7O^9Dj**^1a(UlmFaSpB#JViyGMGpm>j9&mfmbu+@ePZa$8| z9`PRW3Ji`OPKH6jAwiR$-#t6|`Mq9AtbxN&T$DUH;6d!>=l7p8iWHY57L}A1=p{3h zWag$8=_P}*?E8mv89OHTKGJ3snY{CnI%CD;hmSzX=IMF zJEJ2ny9Y0?({a9uiIS7~pZqlh?WhN>WoBStV&G$7U`SzM03GuI-nkFjWC7Z150eM+ zJ0{yc?Vfz&sR$#_p{r`CJ)ko0!=^2c4YZCNb;7@qrgBGDlsrIfR2p<9SH{G zgAOf0<_Dsw4`yJf2cIPd(-48C0CX712dISt3?KjJqsiBz@mm-e7-m9`UlL+qVwi*` zKZ}8Z0d&F{=-3mG`~rr0$YEwM2P{R?u!(_z;WzYjD3AuwIZwzw0u4zb^Upwn3KU%o z0t_q+*U`+oi^hLdk0$UQjSt#R2(tj>03JqE2aBNb<g}D=D>X@^7Tv%r%?o$7;d2PAE5C;d!>*a^af4-CmNrP ziGiV)8FC;I$b;NWNKshNz{DVkEWp6TAcMwNLF4P9@vYGKc4&MjG`j@h_tBK^xqVJ@5=o{xcf?H=G~M0Je~W87WQ}m>5LS_>yRRMKrz|8ebd4pDg>v zWpd`5$(uRf7BPyX6_hfhR+MC#fJq~U;(|=W$rJ8LOg`|gb940jQbwi-=E;{nC^3By znJo8FY%XfnkC5pVxNIQWisbyY1V)X3=9^N QH9sq}c3fs)I1SPc0I8OgO8@`> diff --git a/build/final.elf.map b/build/final.elf.map index 64b9935..ffd0fa8 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 0x88 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 0x13e build/usart.o + .debug_macro 0x00000000 0x22 build/usart.o + .debug_macro 0x00000000 0x82 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,7 +157,7 @@ LOAD build/timer.o 0x08000000 interrupt_vector_table 0x08000198 . = ALIGN (0x4) -.text 0x08000198 0x358 +.text 0x08000198 0x4f0 0x08000198 . = ALIGN (0x4) *(.text) *(.text.*) @@ -134,113 +170,128 @@ LOAD build/timer.o *fill* 0x08000246 0x2 .text.system_clock_init 0x08000248 0x144 build/main.o - .text.main 0x0800038c 0x88 build/main.o + .text.main 0x0800038c 0x9c build/main.o 0x0800038c main .text.init_memory - 0x08000414 0x64 build/startup.o - 0x08000414 init_memory - .text.reset 0x08000478 0x10 build/startup.o - 0x08000478 reset + 0x08000428 0x64 build/startup.o + 0x08000428 init_memory + .text.reset 0x0800048c 0x10 build/startup.o + 0x0800048c 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 + 0x0800049c 0x8 build/startup.o + 0x0800049c exti0 + 0x0800049c debug_monitor + 0x0800049c rcc + 0x0800049c x + 0x0800049c sdio + 0x0800049c usage_fault + 0x0800049c tim1_up_tim10 + 0x0800049c usart1 + 0x0800049c i2c3_er + 0x0800049c spi2 + 0x0800049c dma1_stream1 + 0x0800049c bus_fault + 0x0800049c spi5 + 0x0800049c exti3 + 0x0800049c dma2_stream5 + 0x0800049c tim2 + 0x0800049c dma1_stream6 + 0x0800049c default_handler + 0x0800049c i2c1_er + 0x0800049c hard_fault + 0x0800049c usart6 + 0x0800049c exti15_10 + 0x0800049c usart2 + 0x0800049c pend_sv + 0x0800049c i2c1_ev + 0x0800049c wwdg + 0x0800049c adc + 0x0800049c rtc_alarm + 0x0800049c spi3 + 0x0800049c exti1 + 0x0800049c mem_manage + 0x0800049c dma2_stream1 + 0x0800049c dma1_stream2 + 0x0800049c dma2_stream3 + 0x0800049c sv_call + 0x0800049c tim3 + 0x0800049c otg_fs + 0x0800049c dma1_stream5 + 0x0800049c dma2_stream6 + 0x0800049c flash + 0x0800049c tamp_stamp + 0x0800049c i2c3_ev + 0x0800049c rtc_wkup + 0x0800049c dma2_stream0 + 0x0800049c pvd + 0x0800049c fpu + 0x0800049c exti4 + 0x0800049c exti2 + 0x0800049c spi1 + 0x0800049c dma1_stream0 + 0x0800049c tim1_brk_tim9 + 0x0800049c i2c2_ev + 0x0800049c otg_fs_wkup + 0x0800049c spi4 + 0x0800049c dma2_stream2 + 0x0800049c tim1_cc + 0x0800049c tim1_trg_com_tim11 + 0x0800049c exti9_5 + 0x0800049c dma1_stream3 + 0x0800049c dma2_stream4 + 0x0800049c i2c2_er + 0x0800049c dma2_stream7 + 0x0800049c dma1_stream7 + 0x0800049c nmi + 0x0800049c systick + 0x0800049c tim4 + 0x0800049c tim5 + 0x0800049c dma1_stream4 .text.tim4_init - 0x08000490 0x40 build/timer.o - 0x08000490 tim4_init + 0x080004a4 0x40 build/timer.o + 0x080004a4 tim4_init .text.tim4_start - 0x080004d0 0x20 build/timer.o - 0x080004d0 tim4_start + 0x080004e4 0x20 build/timer.o + 0x080004e4 tim4_start + .text.usart2_init + 0x08000504 0xf8 build/usart.o + 0x08000504 usart2_init + .text.usart2_start + 0x080005fc 0x20 build/usart.o + 0x080005fc usart2_start + .text.usart2_write_byte + 0x0800061c 0x30 build/usart.o + 0x0800061c usart2_write_byte + .text.usart2_write + 0x0800064c 0x2a build/usart.o + 0x0800064c usart2_write *(.rodata) + *fill* 0x08000676 0x2 + .rodata 0x08000678 0xe build/main.o *(.rodata.*) - 0x080004f0 . = ALIGN (0x4) - 0x080004f0 _data_addr = LOADADDR (.data) + 0x08000688 . = ALIGN (0x4) + *fill* 0x08000686 0x2 + 0x08000688 _data_addr = LOADADDR (.data) -.glue_7 0x080004f0 0x0 - .glue_7 0x080004f0 0x0 linker stubs +.glue_7 0x08000688 0x0 + .glue_7 0x08000688 0x0 linker stubs -.glue_7t 0x080004f0 0x0 - .glue_7t 0x080004f0 0x0 linker stubs +.glue_7t 0x08000688 0x0 + .glue_7t 0x08000688 0x0 linker stubs -.vfp11_veneer 0x080004f0 0x0 - .vfp11_veneer 0x080004f0 0x0 linker stubs +.vfp11_veneer 0x08000688 0x0 + .vfp11_veneer 0x08000688 0x0 linker stubs -.v4_bx 0x080004f0 0x0 - .v4_bx 0x080004f0 0x0 linker stubs +.v4_bx 0x08000688 0x0 + .v4_bx 0x08000688 0x0 linker stubs -.iplt 0x080004f0 0x0 - .iplt 0x080004f0 0x0 build/main.o +.iplt 0x08000688 0x0 + .iplt 0x08000688 0x0 build/main.o -.rel.dyn 0x080004f0 0x0 - .rel.iplt 0x080004f0 0x0 build/main.o +.rel.dyn 0x08000688 0x0 + .rel.iplt 0x08000688 0x0 build/main.o -.data 0x20000000 0x0 load address 0x080004f0 +.data 0x20000000 0x0 load address 0x08000688 0x20000000 . = ALIGN (0x4) 0x20000000 _data_start = . *(.data) @@ -248,10 +299,10 @@ LOAD build/timer.o 0x20000000 . = ALIGN (0x4) 0x20000000 _data_end = . -.igot.plt 0x20000000 0x0 load address 0x080004f0 +.igot.plt 0x20000000 0x0 load address 0x08000688 .igot.plt 0x20000000 0x0 build/main.o -.bss 0x20000000 0x0 load address 0x080004f0 +.bss 0x20000000 0x0 load address 0x08000688 0x20000000 . = ALIGN (0x4) 0x20000000 _bss_start = . *(.bss) @@ -261,19 +312,21 @@ 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 0xeb1 + .debug_info 0x00000000 0x205 build/gpio.o + .debug_info 0x00000205 0x47e build/main.o + .debug_info 0x00000683 0x188 build/startup.o + .debug_info 0x0000080b 0x335 build/timer.o + .debug_info 0x00000b40 0x371 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 0x547 + .debug_abbrev 0x00000000 0x119 build/gpio.o + .debug_abbrev 0x00000119 0x14b build/main.o + .debug_abbrev 0x00000264 0x127 build/startup.o + .debug_abbrev 0x0000038b 0xb5 build/timer.o + .debug_abbrev 0x00000440 0x107 build/usart.o -.debug_aranges 0x00000000 0xa8 +.debug_aranges 0x00000000 0xe0 .debug_aranges 0x00000000 0x28 build/gpio.o .debug_aranges @@ -282,9 +335,11 @@ LOAD linker stubs 0x00000050 0x30 build/startup.o .debug_aranges 0x00000080 0x28 build/timer.o + .debug_aranges + 0x000000a8 0x38 build/usart.o .debug_rnglists - 0x00000000 0x6c + 0x00000000 0x92 .debug_rnglists 0x00000000 0x19 build/gpio.o .debug_rnglists @@ -293,8 +348,10 @@ LOAD linker stubs 0x00000034 0x1f build/startup.o .debug_rnglists 0x00000053 0x19 build/timer.o + .debug_rnglists + 0x0000006c 0x26 build/usart.o -.debug_macro 0x00000000 0x3ba0 +.debug_macro 0x00000000 0x48a9 .debug_macro 0x00000000 0xb56 build/gpio.o .debug_macro 0x00000b56 0x22 build/gpio.o .debug_macro 0x00000b78 0x75 build/gpio.o @@ -309,33 +366,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 0x88 build/gpio.o + .debug_macro 0x0000168b 0xb89 build/main.o + .debug_macro 0x00002214 0x144 build/main.o + .debug_macro 0x00002358 0x46 build/main.o + .debug_macro 0x0000239e 0x2e build/main.o + .debug_macro 0x000023cc 0x22 build/main.o + .debug_macro 0x000023ee 0x82 build/main.o + .debug_macro 0x00002470 0xb02 build/startup.o + .debug_macro 0x00002f72 0x56 build/startup.o + .debug_macro 0x00002fc8 0x51 build/startup.o + .debug_macro 0x00003019 0xb5c build/timer.o + .debug_macro 0x00003b75 0x13e build/timer.o + .debug_macro 0x00003cb3 0xb74 build/usart.o + .debug_macro 0x00004827 0x82 build/usart.o -.debug_line 0x00000000 0x4b9 +.debug_line 0x00000000 0x666 .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 0x00000116 0x1e4 build/main.o + .debug_line 0x000002fa 0xea build/startup.o + .debug_line 0x000003e4 0xdf build/timer.o + .debug_line 0x000004c3 0x1a3 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 0x63e6 + .debug_str 0x00000000 0x5508 build/gpio.o + 0x56b0 (size before relaxing) + .debug_str 0x00005508 0xe17 build/main.o + 0x6477 (size before relaxing) + .debug_str 0x0000631f 0x88 build/startup.o + 0x3cdc (size before relaxing) + .debug_str 0x000063a7 0xc build/timer.o + 0x5bc2 (size before relaxing) + .debug_str 0x000063b3 0x33 build/usart.o + 0x60ec (size before relaxing) .comment 0x00000000 0x45 .comment 0x00000000 0x45 build/gpio.o @@ -343,6 +406,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 +418,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 0x208 .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 0x0000016c 0x9c build/usart.o diff --git a/build/gpio.S b/build/gpio.S index e9c50e4..a59bc5e 100644 --- a/build/gpio.S +++ b/build/gpio.S @@ -182,16 +182,16 @@ gpio_write: .file 4 "src/gpio.h" .section .debug_info,"",%progbits .Ldebug_info0: - .4byte 0x216 + .4byte 0x201 .2byte 0x5 .byte 0x1 .byte 0x4 .4byte .Ldebug_abbrev0 - .uleb128 0x9 - .4byte .LASF894 + .uleb128 0x8 + .4byte .LASF908 .byte 0x1d - .4byte .LASF895 - .4byte .LASF896 + .4byte .LASF909 + .4byte .LASF910 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -199,17 +199,17 @@ gpio_write: .uleb128 0x1 .byte 0x1 .byte 0x6 - .4byte .LASF863 + .4byte .LASF877 .uleb128 0x1 .byte 0x1 .byte 0x8 - .4byte .LASF864 + .4byte .LASF878 .uleb128 0x1 .byte 0x2 .byte 0x5 - .4byte .LASF865 + .4byte .LASF879 .uleb128 0x3 - .4byte .LASF868 + .4byte .LASF882 .byte 0x2 .byte 0x39 .byte 0x1c @@ -217,13 +217,13 @@ gpio_write: .uleb128 0x1 .byte 0x2 .byte 0x7 - .4byte .LASF866 + .4byte .LASF880 .uleb128 0x1 .byte 0x4 .byte 0x5 - .4byte .LASF867 + .4byte .LASF881 .uleb128 0x3 - .4byte .LASF869 + .4byte .LASF883 .byte 0x2 .byte 0x4f .byte 0x1b @@ -231,21 +231,21 @@ gpio_write: .uleb128 0x1 .byte 0x4 .byte 0x7 - .4byte .LASF870 + .4byte .LASF884 .uleb128 0x1 .byte 0x8 .byte 0x5 - .4byte .LASF871 + .4byte .LASF885 .uleb128 0x1 .byte 0x8 .byte 0x7 - .4byte .LASF872 - .uleb128 0xa + .4byte .LASF886 + .uleb128 0x9 .byte 0x4 .byte 0x5 .ascii "int\000" .uleb128 0x3 - .4byte .LASF873 + .4byte .LASF887 .byte 0x2 .byte 0xe8 .byte 0x16 @@ -253,123 +253,114 @@ gpio_write: .uleb128 0x1 .byte 0x4 .byte 0x7 - .4byte .LASF874 + .4byte .LASF888 .uleb128 0x3 - .4byte .LASF875 + .4byte .LASF889 .byte 0x3 .byte 0x24 .byte 0x14 .4byte 0x3f .uleb128 0x3 - .4byte .LASF876 + .4byte .LASF890 .byte 0x3 .byte 0x30 .byte 0x14 .4byte 0x59 - .uleb128 0x6 + .uleb128 0xa .4byte 0xa0 .uleb128 0x3 - .4byte .LASF877 + .4byte .LASF891 .byte 0x3 .byte 0x52 .byte 0x15 .4byte 0x81 .uleb128 0xb - .4byte .LASF893 - .byte 0x30 + .4byte .LASF907 + .byte 0x28 .byte 0x4 .byte 0x7 .byte 0x8 .4byte 0x139 .uleb128 0x2 - .4byte .LASF878 + .4byte .LASF892 .byte 0x8 .4byte 0xac .byte 0 .uleb128 0x2 - .4byte .LASF879 + .4byte .LASF893 .byte 0x9 .4byte 0xac .byte 0x4 .uleb128 0x2 - .4byte .LASF880 + .4byte .LASF894 .byte 0xa .4byte 0xac .byte 0x8 .uleb128 0x2 - .4byte .LASF881 + .4byte .LASF895 .byte 0xb .4byte 0xac .byte 0xc - .uleb128 0x7 + .uleb128 0x6 .ascii "IDR\000" .byte 0xc .4byte 0xac .byte 0x10 - .uleb128 0x7 + .uleb128 0x6 .ascii "ODR\000" .byte 0xd .4byte 0xac .byte 0x14 .uleb128 0x2 - .4byte .LASF882 + .4byte .LASF896 .byte 0xe .4byte 0xac .byte 0x18 .uleb128 0x2 - .4byte .LASF883 + .4byte .LASF897 .byte 0xf .4byte 0xac .byte 0x1c .uleb128 0x2 - .4byte .LASF884 + .4byte .LASF898 .byte 0x10 - .4byte 0x149 + .4byte 0xac .byte 0x20 .uleb128 0x2 - .4byte .LASF885 + .4byte .LASF899 .byte 0x11 - .4byte 0x149 - .byte 0x28 + .4byte 0xac + .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 .byte 0x4 - .byte 0x20 + .byte 0x38 .byte 0xe - .4byte 0x175 + .4byte 0x160 .uleb128 0x4 - .4byte .LASF886 + .4byte .LASF900 .byte 0 .uleb128 0x4 - .4byte .LASF887 + .4byte .LASF901 .byte 0x1 .uleb128 0x4 - .4byte .LASF888 + .4byte .LASF902 .byte 0x2 .uleb128 0x4 - .4byte .LASF889 + .4byte .LASF903 .byte 0x3 .byte 0 .uleb128 0x3 - .4byte .LASF890 + .4byte .LASF904 .byte 0x4 - .byte 0x25 + .byte 0x3d .byte 0x3 - .4byte 0x14e - .uleb128 0xf - .4byte .LASF897 + .4byte 0x139 + .uleb128 0xd + .4byte .LASF911 .byte 0x1 .byte 0xd .byte 0x6 @@ -377,7 +368,7 @@ gpio_write: .4byte .LFE1-.LFB1 .uleb128 0x1 .byte 0x9c - .4byte 0x1c1 + .4byte 0x1ac .uleb128 0x5 .ascii "pin\000" .byte 0xd @@ -390,14 +381,14 @@ gpio_write: .ascii "val\000" .byte 0xd .byte 0x23 - .4byte 0x1c1 + .4byte 0x1ac .uleb128 0x2 .byte 0x91 .sleb128 -19 - .uleb128 0x8 - .4byte .LASF893 + .uleb128 0x7 + .4byte .LASF907 .byte 0xe - .4byte 0x1c8 + .4byte 0x1b3 .uleb128 0x2 .byte 0x91 .sleb128 -12 @@ -405,12 +396,12 @@ gpio_write: .uleb128 0x1 .byte 0x1 .byte 0x2 - .4byte .LASF891 - .uleb128 0x10 + .4byte .LASF905 + .uleb128 0xe .byte 0x4 .4byte 0xbd - .uleb128 0x11 - .4byte .LASF898 + .uleb128 0xf + .4byte .LASF912 .byte 0x1 .byte 0x6 .byte 0x6 @@ -426,23 +417,23 @@ gpio_write: .uleb128 0x2 .byte 0x91 .sleb128 -18 - .uleb128 0x12 - .4byte .LASF892 + .uleb128 0x10 + .4byte .LASF906 .byte 0x1 .byte 0x6 .byte 0x2c - .4byte 0x175 + .4byte 0x160 .uleb128 0x2 .byte 0x91 .sleb128 -19 - .uleb128 0x8 - .4byte .LASF893 + .uleb128 0x7 + .4byte .LASF907 .byte 0x7 - .4byte 0x1c8 + .4byte 0x1b3 .uleb128 0x2 .byte 0x91 .sleb128 -12 - .uleb128 0x13 + .uleb128 0x11 .ascii "pn\000" .byte 0x1 .byte 0x8 @@ -528,13 +519,6 @@ gpio_write: .byte 0 .byte 0 .uleb128 0x6 - .uleb128 0x35 - .byte 0 - .uleb128 0x49 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x7 .uleb128 0xd .byte 0 .uleb128 0x3 @@ -553,7 +537,7 @@ gpio_write: .uleb128 0xb .byte 0 .byte 0 - .uleb128 0x8 + .uleb128 0x7 .uleb128 0x34 .byte 0 .uleb128 0x3 @@ -572,7 +556,7 @@ gpio_write: .uleb128 0x18 .byte 0 .byte 0 - .uleb128 0x9 + .uleb128 0x8 .uleb128 0x11 .byte 0x1 .uleb128 0x25 @@ -593,7 +577,7 @@ gpio_write: .uleb128 0x17 .byte 0 .byte 0 - .uleb128 0xa + .uleb128 0x9 .uleb128 0x24 .byte 0 .uleb128 0xb @@ -604,6 +588,13 @@ gpio_write: .uleb128 0x8 .byte 0 .byte 0 + .uleb128 0xa + .uleb128 0x35 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 .uleb128 0xb .uleb128 0x13 .byte 0x1 @@ -622,24 +613,6 @@ gpio_write: .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 .uleb128 0x3e @@ -658,7 +631,7 @@ gpio_write: .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0xf + .uleb128 0xd .uleb128 0x2e .byte 0x1 .uleb128 0x3f @@ -685,7 +658,7 @@ gpio_write: .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0x10 + .uleb128 0xe .uleb128 0xf .byte 0 .uleb128 0xb @@ -694,7 +667,7 @@ gpio_write: .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0x11 + .uleb128 0xf .uleb128 0x2e .byte 0x1 .uleb128 0x3f @@ -719,7 +692,7 @@ gpio_write: .uleb128 0x19 .byte 0 .byte 0 - .uleb128 0x12 + .uleb128 0x10 .uleb128 0x5 .byte 0 .uleb128 0x3 @@ -736,7 +709,7 @@ gpio_write: .uleb128 0x18 .byte 0 .byte 0 - .uleb128 0x13 + .uleb128 0x11 .uleb128 0x34 .byte 0 .uleb128 0x3 @@ -3552,7 +3525,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.482807a1c0512cd436d5862f3edb1adc,comdat .Ldebug_macro15: .2byte 0x5 .byte 0 @@ -3566,10 +3539,10 @@ gpio_write: .uleb128 0x15 .4byte .LASF857 .byte 0x5 - .uleb128 0x16 + .uleb128 0x18 .4byte .LASF858 .byte 0x5 - .uleb128 0x18 + .uleb128 0x19 .4byte .LASF859 .byte 0x5 .uleb128 0x1a @@ -3578,8 +3551,50 @@ gpio_write: .uleb128 0x1c .4byte .LASF861 .byte 0x5 - .uleb128 0x1e + .uleb128 0x1d .4byte .LASF862 + .byte 0x5 + .uleb128 0x1e + .4byte .LASF863 + .byte 0x5 + .uleb128 0x21 + .4byte .LASF864 + .byte 0x5 + .uleb128 0x22 + .4byte .LASF865 + .byte 0x5 + .uleb128 0x23 + .4byte .LASF866 + .byte 0x5 + .uleb128 0x25 + .4byte .LASF867 + .byte 0x5 + .uleb128 0x26 + .4byte .LASF868 + .byte 0x5 + .uleb128 0x27 + .4byte .LASF869 + .byte 0x5 + .uleb128 0x2c + .4byte .LASF870 + .byte 0x5 + .uleb128 0x2d + .4byte .LASF871 + .byte 0x5 + .uleb128 0x2e + .4byte .LASF872 + .byte 0x5 + .uleb128 0x30 + .4byte .LASF873 + .byte 0x5 + .uleb128 0x32 + .4byte .LASF874 + .byte 0x5 + .uleb128 0x34 + .4byte .LASF875 + .byte 0x5 + .uleb128 0x36 + .4byte .LASF876 .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: @@ -3624,7 +3639,7 @@ gpio_write: .ascii "__PTRDIFF_MAX__ 0x7fffffff\000" .LASF541: .ascii "_LONG_DOUBLE long double\000" -.LASF893: +.LASF907: .ascii "gpio\000" .LASF591: .ascii "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)\000" @@ -3632,7 +3647,7 @@ gpio_write: .ascii "_UINT32_T_DECLARED \000" .LASF90: .ascii "__INTMAX_MAX__ 0x7fffffffffffffffLL\000" -.LASF888: +.LASF902: .ascii "GPIO_MODE_AF\000" .LASF335: .ascii "__TQ_IBIT__ 0\000" @@ -3696,6 +3711,8 @@ gpio_write: .ascii "PRIXFAST32 __PRI32FAST(X)\000" .LASF525: .ascii "__INT8 \"hh\"\000" +.LASF860: + .ascii "GPIO_MODER_MODER3_AF (0b10)\000" .LASF47: .ascii "__UINT8_TYPE__ unsigned char\000" .LASF368: @@ -3704,6 +3721,8 @@ gpio_write: .ascii "INT_LEAST16_MAX (__INT_LEAST16_MAX__)\000" .LASF703: .ascii "SCNiFAST8 __SCN8FAST(i)\000" +.LASF856: + .ascii "GPIOA_BASE_ADDR (0x40020000U)\000" .LASF120: .ascii "__UINT_LEAST16_MAX__ 0xffff\000" .LASF616: @@ -3746,11 +3765,13 @@ gpio_write: .ascii "__need_wchar_t\000" .LASF199: .ascii "__FLT32_MIN_EXP__ (-125)\000" -.LASF894: +.LASF908: .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" +.LASF864: + .ascii "GPIO_AFRL_AFRL3_BIT 12\000" .LASF595: .ascii "INT16_MAX (__INT16_MAX__)\000" .LASF502: @@ -3831,7 +3852,7 @@ gpio_write: .ascii "__INT64 \"ll\"\000" .LASF138: .ascii "__INTPTR_MAX__ 0x7fffffff\000" -.LASF858: +.LASF872: .ascii "GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADD" .ascii "R + (GPIO_PORT_OFFSET * port)))\000" .LASF499: @@ -3867,7 +3888,7 @@ gpio_write: .ascii "PRId64 __PRI64(d)\000" .LASF302: .ascii "__UACCUM_IBIT__ 16\000" -.LASF867: +.LASF881: .ascii "long int\000" .LASF818: .ascii "PRIXFAST64 __PRI64FAST(X)\000" @@ -3903,6 +3924,8 @@ gpio_write: .ascii "__GCC_ATOMIC_BOOL_LOCK_FREE 2\000" .LASF554: .ascii "___int64_t_defined 1\000" +.LASF863: + .ascii "GPIO_MODER_MODER2_AF (0b10)\000" .LASF432: .ascii "__ARM_NEON__\000" .LASF587: @@ -3963,7 +3986,7 @@ gpio_write: .ascii "PRIoLEAST16 __PRI16LEAST(o)\000" .LASF458: .ascii "__NEWLIB__ 4\000" -.LASF886: +.LASF900: .ascii "GPIO_MODE_INPUT\000" .LASF720: .ascii "SCNi16 __SCN16(i)\000" @@ -3973,7 +3996,7 @@ gpio_write: .ascii "__FLT_DECIMAL_DIG__ 9\000" .LASF562: .ascii "_UINT8_T_DECLARED \000" -.LASF863: +.LASF877: .ascii "signed char\000" .LASF805: .ascii "PRIuLEAST64 __PRI64LEAST(u)\000" @@ -3985,7 +4008,7 @@ gpio_write: .ascii "__ARM_FEATURE_FMA 1\000" .LASF364: .ascii "__GNUC_STDC_INLINE__ 1\000" -.LASF890: +.LASF904: .ascii "GPIO_MODE\000" .LASF256: .ascii "__FRACT_FBIT__ 15\000" @@ -4007,9 +4030,11 @@ gpio_write: .ascii "__SACCUM_MAX__ 0X7FFFP-7HK\000" .LASF219: .ascii "__FLT64_MAX_10_EXP__ 308\000" +.LASF868: + .ascii "GPIO_AFRL_AFRL2_MASK (0b1111)\000" .LASF65: .ascii "__UINT_FAST32_TYPE__ unsigned int\000" -.LASF864: +.LASF878: .ascii "unsigned char\000" .LASF3: .ascii "__STDC_UTF_32__ 1\000" @@ -4057,13 +4082,13 @@ gpio_write: .ascii "__int_fast64_t_defined 1\000" .LASF837: .ascii "__PRIPTR(x) __STRINGIFY(x)\000" -.LASF875: +.LASF889: .ascii "uint16_t\000" .LASF417: .ascii "__thumb2__ 1\000" .LASF321: .ascii "__ULLACCUM_FBIT__ 32\000" -.LASF891: +.LASF905: .ascii "_Bool\000" .LASF366: .ascii "__STRICT_ANSI__ 1\000" @@ -4081,7 +4106,7 @@ gpio_write: .ascii "__PRAGMA_REDEFINE_EXTNAME 1\000" .LASF36: .ascii "__WCHAR_TYPE__ unsigned int\000" -.LASF887: +.LASF901: .ascii "GPIO_MODE_OUTPUT\000" .LASF357: .ascii "__USA_IBIT__ 16\000" @@ -4119,7 +4144,7 @@ gpio_write: .ascii "__SCN64(x) __INT64 __STRINGIFY(x)\000" .LASF646: .ascii "_GCC_WRAP_STDINT_H \000" -.LASF868: +.LASF882: .ascii "__uint16_t\000" .LASF224: .ascii "__FLT64_EPSILON__ 2.2204460492503131e-16F64\000" @@ -4147,7 +4172,7 @@ gpio_write: .ascii "INTMAX_MAX (__INTMAX_MAX__)\000" .LASF601: .ascii "INT32_MAX (__INT32_MAX__)\000" -.LASF859: +.LASF873: .ascii "BIT(x) (1 << x)\000" .LASF469: .ascii "_MB_LEN_MAX 8\000" @@ -4165,6 +4190,8 @@ gpio_write: .ascii "_END_STD_C \000" .LASF852: .ascii "true ((_Bool)+1u)\000" +.LASF865: + .ascii "GPIO_AFRL_AFRL3_MASK (0b1111)\000" .LASF599: .ascii "UINT_LEAST16_MAX (__UINT_LEAST16_MAX__)\000" .LASF123: @@ -4177,7 +4204,7 @@ gpio_write: .ascii "__FLT_EPSILON__ 1.1920928955078125e-7F\000" .LASF376: .ascii "__GCC_ATOMIC_SHORT_LOCK_FREE 2\000" -.LASF860: +.LASF874: .ascii "PIN(port,num) ((((port) - 'A') << 8) | num)\000" .LASF806: .ascii "PRIxLEAST64 __PRI64LEAST(x)\000" @@ -4243,6 +4270,8 @@ gpio_write: .ascii "__FP_FAST_FMAF 1\000" .LASF628: .ascii "SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)\000" +.LASF869: + .ascii "GPIO_AFRL_AFRL2_USART2_TX (0b0111)\000" .LASF564: .ascii "_INT16_T_DECLARED \000" .LASF245: @@ -4285,6 +4314,8 @@ gpio_write: .ascii "INT64_C(x) __INT64_C(x)\000" .LASF615: .ascii "INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1)\000" +.LASF862: + .ascii "GPIO_MODER_MODER2_MASK (0b11)\000" .LASF106: .ascii "__INT_LEAST8_MAX__ 0x7f\000" .LASF383: @@ -4333,7 +4364,7 @@ gpio_write: .ascii "___int8_t_defined 1\000" .LASF248: .ascii "__SFRACT_MIN__ (-0.5HR-0.5HR)\000" -.LASF870: +.LASF884: .ascii "long unsigned int\000" .LASF349: .ascii "__SA_IBIT__ 16\000" @@ -4349,7 +4380,7 @@ gpio_write: .ascii "__ARM_FP16_FORMAT_IEEE\000" .LASF48: .ascii "__UINT16_TYPE__ short unsigned int\000" -.LASF897: +.LASF911: .ascii "gpio_write\000" .LASF569: .ascii "__int32_t_defined 1\000" @@ -4361,8 +4392,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 +4424,7 @@ gpio_write: .ascii "SCNx8 __SCN8(x)\000" .LASF208: .ascii "__FLT32_DENORM_MIN__ 1.4012984643248171e-45F32\000" -.LASF898: +.LASF912: .ascii "gpio_set_mode\000" .LASF125: .ascii "__UINT64_C(c) c ## ULL\000" @@ -4407,6 +4436,8 @@ gpio_write: .ascii "__USFRACT_FBIT__ 8\000" .LASF191: .ascii "__LDBL_EPSILON__ 2.2204460492503131e-16L\000" +.LASF857: + .ascii "GPIOA ((struct gpio *) GPIOA_BASE_ADDR)\000" .LASF729: .ascii "PRIXLEAST16 __PRI16LEAST(X)\000" .LASF622: @@ -4415,7 +4446,7 @@ gpio_write: .ascii "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 2\000" .LASF789: .ascii "__PRI64FAST(x) __FAST64 __STRINGIFY(x)\000" -.LASF877: +.LASF891: .ascii "uintptr_t\000" .LASF168: .ascii "__DBL_MAX_EXP__ 1024\000" @@ -4463,7 +4494,7 @@ gpio_write: .ascii "PRIX32 __PRI32(X)\000" .LASF773: .ascii "SCNxLEAST32 __SCN32LEAST(x)\000" -.LASF880: +.LASF894: .ascii "OSPEEDR\000" .LASF711: .ascii "__SCN16LEAST(x) __LEAST16 __STRINGIFY(x)\000" @@ -4493,7 +4524,7 @@ gpio_write: .ascii "__ULACCUM_MIN__ 0.0ULK\000" .LASF461: .ascii "_ATEXIT_DYNAMIC_ALLOC 1\000" -.LASF869: +.LASF883: .ascii "__uint32_t\000" .LASF188: .ascii "__LDBL_MAX__ 1.7976931348623157e+308L\000" @@ -4503,7 +4534,7 @@ gpio_write: .ascii "__FLT_RADIX__ 2\000" .LASF454: .ascii "_INTTYPES_H \000" -.LASF871: +.LASF885: .ascii "long long int\000" .LASF401: .ascii "__ARM_FEATURE_CMSE\000" @@ -4539,6 +4570,8 @@ gpio_write: .ascii "__WCHAR_T \000" .LASF223: .ascii "__FLT64_MIN__ 2.2250738585072014e-308F64\000" +.LASF866: + .ascii "GPIO_AFRL_AFRL3_USART2_RX (0b0111)\000" .LASF553: .ascii "___int32_t_defined 1\000" .LASF83: @@ -4608,7 +4641,7 @@ gpio_write: .ascii "\000" .LASF582: .ascii "__int_fast16_t_defined 1\000" -.LASF878: +.LASF892: .ascii "MODER\000" .LASF482: .ascii "__FLOAT_TYPE float\000" @@ -4619,9 +4652,9 @@ gpio_write: .ascii "L)\000" .LASF607: .ascii "INT64_MAX (__INT64_MAX__)\000" -.LASF874: +.LASF888: .ascii "unsigned int\000" -.LASF873: +.LASF887: .ascii "__uintptr_t\000" .LASF459: .ascii "__NEWLIB_MINOR__ 3\000" @@ -4653,7 +4686,7 @@ gpio_write: .ascii "__CHAR_BIT__ 8\000" .LASF143: .ascii "__FLT_EVAL_METHOD__ 0\000" -.LASF865: +.LASF879: .ascii "short int\000" .LASF685: .ascii "PRIdLEAST8 __PRI8LEAST(d)\000" @@ -4779,6 +4812,8 @@ gpio_write: .ascii "__UFRACT_IBIT__ 0\000" .LASF399: .ascii "__ARM_32BIT_STATE 1\000" +.LASF861: + .ascii "GPIO_MODER_MODER2_BIT 4\000" .LASF107: .ascii "__INT8_C(c) c\000" .LASF267: @@ -4791,12 +4826,14 @@ gpio_write: .ascii "SCNuFAST16 __SCN16FAST(u)\000" .LASF801: .ascii "SCNx64 __SCN64(x)\000" -.LASF862: +.LASF876: .ascii "PINPORT(pin) (pin >> 8)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" .LASF645: .ascii "UINTMAX_C(x) __UINTMAX_C(x)\000" +.LASF859: + .ascii "GPIO_MODER_MODER3_MASK (0b11)\000" .LASF623: .ascii "UINT_FAST64_MAX (__UINT_FAST64_MAX__)\000" .LASF515: @@ -4839,7 +4876,7 @@ gpio_write: .ascii "__ORDER_LITTLE_ENDIAN__ 1234\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF872: +.LASF886: .ascii "long long unsigned int\000" .LASF611: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" @@ -4869,6 +4906,8 @@ gpio_write: .ascii "SCNdFAST32 __SCN32FAST(d)\000" .LASF339: .ascii "__UHQ_IBIT__ 0\000" +.LASF858: + .ascii "GPIO_MODER_MODER3_BIT 7\000" .LASF60: .ascii "__INT_FAST16_TYPE__ int\000" .LASF631: @@ -4917,11 +4956,11 @@ gpio_write: .ascii "SCNdFAST8 __SCN8FAST(d)\000" .LASF576: .ascii "_UINTPTR_T_DECLARED \000" -.LASF885: +.LASF899: .ascii "AFRH\000" .LASF314: .ascii "__ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK\000" -.LASF884: +.LASF898: .ascii "AFRL\000" .LASF273: .ascii "__ULFRACT_MIN__ 0.0ULR\000" @@ -4935,7 +4974,7 @@ gpio_write: .ascii "__INT32_TYPE__ long int\000" .LASF118: .ascii "__UINT_LEAST8_MAX__ 0xff\000" -.LASF883: +.LASF897: .ascii "LCKR\000" .LASF520: .ascii "__int20__ +2\000" @@ -4981,7 +5020,7 @@ gpio_write: .ascii "__QQ_IBIT__ 0\000" .LASF763: .ascii "PRIdLEAST32 __PRI32LEAST(d)\000" -.LASF879: +.LASF893: .ascii "OTYPER\000" .LASF811: .ascii "SCNuLEAST64 __SCN64LEAST(u)\000" @@ -5001,11 +5040,11 @@ gpio_write: .ascii "__GNUC_MINOR__ 3\000" .LASF57: .ascii "__UINT_LEAST32_TYPE__ long unsigned int\000" -.LASF895: +.LASF909: .ascii "src/gpio.c\000" .LASF405: .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" -.LASF856: +.LASF870: .ascii "GPIO_BASE_ADDR (0x40020000U)\000" .LASF38: .ascii "__INTMAX_TYPE__ long long int\000" @@ -5057,7 +5096,7 @@ gpio_write: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" .LASF23: .ascii "__SIZEOF_SIZE_T__ 4\000" -.LASF857: +.LASF871: .ascii "GPIO_PORT_OFFSET (0x400U)\000" .LASF50: .ascii "__UINT64_TYPE__ long long unsigned int\000" @@ -5067,6 +5106,8 @@ gpio_write: .ascii "__INT64_C(c) c ## LL\000" .LASF699: .ascii "PRIuFAST8 __PRI8FAST(u)\000" +.LASF867: + .ascii "GPIO_AFRL_AFRL2_BIT 8\000" .LASF190: .ascii "__LDBL_MIN__ 2.2250738585072014e-308L\000" .LASF445: @@ -5075,7 +5116,7 @@ gpio_write: .ascii "__ACCUM_IBIT__ 16\000" .LASF509: .ascii "unsigned\000" -.LASF881: +.LASF895: .ascii "PUPDR\000" .LASF835: .ascii "SCNuMAX __SCNMAX(u)\000" @@ -5085,7 +5126,7 @@ gpio_write: .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF359: .ascii "__UDA_IBIT__ 32\000" -.LASF892: +.LASF906: .ascii "mode\000" .LASF586: .ascii "INTPTR_MAX (__INTPTR_MAX__)\000" @@ -5099,7 +5140,7 @@ gpio_write: .ascii "__UHQ_FBIT__ 16\000" .LASF443: .ascii "__ARM_FEATURE_COPROC\000" -.LASF889: +.LASF903: .ascii "GPIO_MODE_ANALOG\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" @@ -5137,7 +5178,7 @@ gpio_write: .ascii "__FAST8 \000" .LASF496: .ascii "__XSI_VISIBLE 0\000" -.LASF882: +.LASF896: .ascii "BSRR\000" .LASF794: .ascii "PRIu64 __PRI64(u)\000" @@ -5225,7 +5266,7 @@ gpio_write: .ascii "PRIx32 __PRI32(x)\000" .LASF278: .ascii "__LLFRACT_MIN__ (-0.5LLR-0.5LLR)\000" -.LASF876: +.LASF890: .ascii "uint32_t\000" .LASF689: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" @@ -5273,13 +5314,13 @@ gpio_write: .ascii "__INT_LEAST16_TYPE__ short int\000" .LASF326: .ascii "__QQ_FBIT__ 7\000" -.LASF861: +.LASF875: .ascii "PINNUM(pin) (pin & 0b1111)\000" .LASF768: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF866: +.LASF880: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -5327,6 +5368,8 @@ gpio_write: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF280: .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" +.LASF910: + .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..c3ed08a 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,10 +1995,34 @@ 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 GPIOA_BASE_ADDR (0x40020000U) +#define GPIOA ((struct gpio *) GPIOA_BASE_ADDR) + + +#define GPIO_MODER_MODER3_BIT 7 +#define GPIO_MODER_MODER3_MASK (0b11) +#define GPIO_MODER_MODER3_AF (0b10) + +#define GPIO_MODER_MODER2_BIT 4 +#define GPIO_MODER_MODER2_MASK (0b11) +#define GPIO_MODER_MODER2_AF (0b10) + + +#define GPIO_AFRL_AFRL3_BIT 12 +#define GPIO_AFRL_AFRL3_MASK (0b1111) +#define GPIO_AFRL_AFRL3_USART2_RX (0b0111) + +#define GPIO_AFRL_AFRL2_BIT 8 +#define GPIO_AFRL_AFRL2_MASK (0b1111) +#define GPIO_AFRL_AFRL2_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))) @@ -2020,9 +2044,9 @@ typedef enum { void gpio_set_mode(uint16_t pin, GPIO_MODE mode); void gpio_write(uint16_t pin, -# 40 "src/gpio.h" 3 4 +# 64 "src/gpio.h" 3 4 _Bool -# 40 "src/gpio.h" +# 64 "src/gpio.h" val); # 5 "src/gpio.c" 2 diff --git a/build/gpio.o b/build/gpio.o index 81c99fcbae6b6417a239de18d30f01cf704eb081..7613394fd6b1ed8827d7f18f8b5af7f9a8e085aa 100644 GIT binary patch delta 7503 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 H7{&wu=)#4a diff --git a/build/main.S b/build/main.S index 347c88a..e25b4ba 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,189 @@ 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 orr r3, r3, #65536 str r3, [r2] - .loc 1 25 9 + .loc 1 26 9 nop .L2: - .loc 1 25 42 discriminator 1 + .loc 1 26 42 discriminator 1 ldr r3, .L5 ldr r3, [r3] - .loc 1 25 47 discriminator 1 + .loc 1 26 47 discriminator 1 and r3, r3, #131072 - .loc 1 25 10 discriminator 1 + .loc 1 26 10 discriminator 1 cmp r3, #0 beq .L2 - .loc 1 29 33 + .loc 1 30 33 ldr r3, .L5 ldr r3, [r3] ldr r2, .L5 - .loc 1 29 38 + .loc 1 30 38 bic r3, r3, #16777216 str r3, [r2] - .loc 1 32 33 + .loc 1 33 33 ldr r3, .L5 ldr r3, [r3, #4] ldr r2, .L5 - .loc 1 32 43 + .loc 1 33 43 orr r3, r3, #4194304 str r3, [r2, #4] - .loc 1 35 33 + .loc 1 36 33 ldr r3, .L5 ldr r2, [r3, #4] ldr r1, .L5 - .loc 1 35 43 + .loc 1 36 43 ldr r3, .L5+8 orrs r3, r3, r2 str r3, [r1, #4] - .loc 1 38 33 - ldr r3, .L5 - ldr r3, [r3, #8] - ldr r2, .L5 - .loc 1 38 40 - bic r3, r3, #240 - str r3, [r2, #8] .loc 1 39 33 ldr r3, .L5 - ldr r2, .L5 ldr r3, [r3, #8] + ldr r2, .L5 .loc 1 39 40 + bic r3, r3, #240 str r3, [r2, #8] - .loc 1 42 33 + .loc 1 40 33 ldr r3, .L5 - ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 42 40 - bic r3, r3, #7168 + ldr r3, [r3, #8] + .loc 1 40 40 str r3, [r2, #8] .loc 1 43 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 .loc 1 43 40 - orr r3, r3, #4096 + bic r3, r3, #7168 str r3, [r2, #8] - .loc 1 46 33 + .loc 1 44 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 46 40 - bic r3, r3, #57344 + .loc 1 44 40 + orr r3, r3, #4096 str r3, [r2, #8] .loc 1 47 33 ldr r3, .L5 + ldr r3, [r3, #8] + ldr r2, .L5 + .loc 1 47 40 + bic r3, r3, #57344 + str r3, [r2, #8] + .loc 1 48 33 + ldr r3, .L5 ldr r2, .L5 ldr r3, [r3, #8] - .loc 1 47 40 + .loc 1 48 40 str r3, [r2, #8] - .loc 1 50 33 + .loc 1 51 33 ldr r3, .L5 ldr r3, [r3] ldr r2, .L5 - .loc 1 50 38 + .loc 1 51 38 orr r3, r3, #16777216 str r3, [r2] - .loc 1 54 9 + .loc 1 55 9 nop .L3: - .loc 1 54 42 discriminator 1 + .loc 1 55 42 discriminator 1 ldr r3, .L5 ldr r3, [r3] - .loc 1 54 47 discriminator 1 + .loc 1 55 47 discriminator 1 and r3, r3, #131072 - .loc 1 54 10 discriminator 1 + .loc 1 55 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 + orr r3, r3, #1024 str r3, [r2] - .loc 1 61 35 + .loc 1 59 35 ldr r3, .L5+12 ldr r3, [r3] ldr r2, .L5+12 - .loc 1 61 41 + .loc 1 59 41 + orr r3, r3, #512 + str r3, [r2] + .loc 1 62 35 + ldr r3, .L5+12 + ldr r3, [r3] + ldr r2, .L5+12 + .loc 1 62 41 bic r3, r3, #15 str r3, [r2] - .loc 1 62 33 + .loc 1 63 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 62 40 + .loc 1 63 40 orr r3, r3, #272 orr r3, r3, #1 str r3, [r2, #8] - .loc 1 65 33 - ldr r3, .L5 - ldr r3, [r3, #8] - ldr r2, .L5 - .loc 1 65 40 - bic r3, r3, #3 - 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 + bic r3, r3, #3 str r3, [r2, #8] - .loc 1 70 9 - nop -.L4: - .loc 1 70 42 discriminator 1 + .loc 1 67 33 ldr r3, .L5 ldr r3, [r3, #8] - .loc 1 70 49 discriminator 1 + ldr r2, .L5 + .loc 1 67 40 + orr r3, r3, #2 + str r3, [r2, #8] + .loc 1 71 9 + nop +.L4: + .loc 1 71 42 discriminator 1 + ldr r3, .L5 + ldr r3, [r3, #8] + .loc 1 71 49 discriminator 1 lsrs r3, r3, #2 - .loc 1 70 55 discriminator 1 + .loc 1 71 55 discriminator 1 and r3, r3, #3 - .loc 1 70 65 discriminator 1 + .loc 1 71 65 discriminator 1 cmp r3, #2 bne .L4 - .loc 1 73 33 + .loc 1 74 33 ldr r3, .L5 ldr r3, [r3] ldr r2, .L5 - .loc 1 73 38 + .loc 1 74 38 bic r3, r3, #1 str r3, [r2] - .loc 1 74 1 + .loc 1 75 1 nop mov sp, r7 .cfi_def_cfa_register 13 @@ -236,6 +236,10 @@ system_clock_init: .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 +249,7 @@ system_clock_init: .type main, %function main: .LFB1: - .loc 1 76 16 + .loc 1 77 16 .cfi_startproc @ args = 0, pretend = 0, frame = 8 @ frame_needed = 1, uses_anonymous_args = 0 @@ -257,56 +261,60 @@ main: .cfi_def_cfa_offset 16 add r7, sp, #0 .cfi_def_cfa_register 7 - .loc 1 77 3 - bl system_clock_init .loc 1 78 3 + bl system_clock_init + .loc 1 79 3 bl tim4_init .loc 1 80 3 + bl usart2_init + .loc 1 82 3 bl tim4_start - .loc 1 82 12 + .loc 1 83 3 + bl usart2_start + .loc 1 85 12 movw r3, #525 strh r3, [r7, #2] @ movhi - .loc 1 83 33 + .loc 1 86 33 ldr r3, .L10 ldr r3, [r3, #48] - .loc 1 83 57 + .loc 1 86 57 ldrh r2, [r7, #2] lsrs r2, r2, #8 uxth r2, r2 mov r1, r2 - .loc 1 83 49 + .loc 1 86 49 movs r2, #1 lsls r2, r2, r1 mov r1, r2 - .loc 1 83 33 + .loc 1 86 33 ldr r2, .L10 - .loc 1 83 43 + .loc 1 86 43 orrs r3, r3, r1 str r3, [r2, #48] - .loc 1 84 3 + .loc 1 87 3 ldrh r3, [r7, #2] movs r1, #1 mov r0, r3 bl gpio_set_mode - .loc 1 86 54 + .loc 1 89 54 ldr r3, .L10+4 ldr r3, [r3, #36] - .loc 1 86 12 + .loc 1 89 12 strh r3, [r7, #6] @ movhi - .loc 1 87 7 + .loc 1 90 7 movs r3, #0 strb r3, [r7, #5] .L9: - .loc 1 89 39 + .loc 1 92 39 ldr r3, .L10+4 ldr r2, [r3, #36] - .loc 1 89 45 + .loc 1 92 45 ldrh r3, [r7, #6] subs r3, r2, r3 - .loc 1 89 5 + .loc 1 92 5 cmp r3, #249 bls .L9 - .loc 1 90 3 + .loc 1 93 3 ldrb r3, [r7, #5] @ zero_extendqisi2 cmp r3, #0 ite ne @@ -315,29 +323,33 @@ main: uxtb r3, r3 eor r3, r3, #1 uxtb r3, r3 - .loc 1 90 10 + .loc 1 93 10 strb r3, [r7, #5] ldrb r3, [r7, #5] and r3, r3, #1 strb r3, [r7, #5] - .loc 1 91 3 + .loc 1 94 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 96 3 + ldr r0, .L10+8 + bl usart2_write + .loc 1 98 45 ldr r3, .L10+4 ldr r3, [r3, #36] - .loc 1 93 11 + .loc 1 98 11 strh r3, [r7, #6] @ movhi - .loc 1 89 5 + .loc 1 92 5 b .L9 .L11: .align 2 .L10: .word 1073887232 .word 1073743872 + .word .LC0 .cfi_endproc .LFE1: .size main, .-main @@ -350,18 +362,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 +382,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 +400,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 +414,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 +430,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 +457,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 +475,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 +595,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 +626,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 0x38 .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 0x3d .byte 0x3 .4byte 0x215 - .uleb128 0x9 - .4byte .LASF979 + .uleb128 0xb + .4byte .LASF1018 .byte 0x18 .byte 0x6 .4byte 0x29a @@ -654,13 +667,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 +691,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 +715,8 @@ main: .4byte 0xa0 .byte 0x4 .byte 0 - .uleb128 0x9 - .4byte .LASF983 + .uleb128 0xb + .4byte .LASF1022 .byte 0x50 .byte 0x8 .4byte 0x3b8 @@ -720,13 +733,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 +757,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 +799,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 +835,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 0x3d + .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 0x40 + .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 0x3f + .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 0x3a + .uleb128 0x7 + .4byte .LASF1039 + .byte 0x8 .byte 0x24 - .uleb128 0xb - .4byte .LASF999 + .uleb128 0x7 + .4byte .LASF1040 + .byte 0x9 + .byte 0x39 + .uleb128 0x7 + .4byte .LASF1041 + .byte 0x8 .byte 0x23 - .uleb128 0x12 - .4byte .LASF1005 + .uleb128 0x13 + .4byte .LASF1047 .byte 0x1 - .byte 0x4c + .byte 0x4d .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 0x55 .byte 0xc .4byte 0x88 .uleb128 0x2 .byte 0x91 .sleb128 -14 .uleb128 0xc - .4byte .LASF1000 - .byte 0x56 + .4byte .LASF1042 + .byte 0x59 .byte 0xc .4byte 0x88 .uleb128 0x2 .byte 0x91 .sleb128 -10 .uleb128 0xc - .4byte .LASF1001 - .byte 0x57 + .4byte .LASF1043 + .byte 0x5a .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 +1008,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 +1023,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 +1198,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 +1235,7 @@ main: .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0x13 + .uleb128 0x14 .uleb128 0x34 .byte 0 .uleb128 0x3 @@ -1205,7 +1252,7 @@ main: .uleb128 0x18 .byte 0 .byte 0 - .uleb128 0x14 + .uleb128 0x15 .uleb128 0x2e .byte 0 .uleb128 0x3 @@ -2630,76 +2677,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 +2772,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 +2819,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 +4107,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.723e44a04c73f618b9d2a2287322c677,comdat .Ldebug_macro15: .2byte 0x5 .byte 0 @@ -4194,46 +4247,100 @@ main: .uleb128 0x73 .4byte .LASF899 .byte 0x5 - .uleb128 0x76 + .uleb128 0x77 .4byte .LASF900 .byte 0x5 - .uleb128 0x77 + .uleb128 0x78 .4byte .LASF901 .byte 0x5 - .uleb128 0x79 + .uleb128 0x7b .4byte .LASF902 .byte 0x5 - .uleb128 0x7a + .uleb128 0x7c .4byte .LASF903 + .byte 0x5 + .uleb128 0x7e + .4byte .LASF904 + .byte 0x5 + .uleb128 0x7f + .4byte .LASF905 + .byte 0x5 + .uleb128 0x81 + .4byte .LASF906 + .byte 0x5 + .uleb128 0x82 + .4byte .LASF907 .byte 0 - .section .debug_macro,"G",%progbits,wm4.gpio.h.2.d78c96d470f4347bf35ed0e3d72ef81e,comdat + .section .debug_macro,"G",%progbits,wm4.gpio.h.2.482807a1c0512cd436d5862f3edb1adc,comdat .Ldebug_macro16: .2byte 0x5 .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF904 - .byte 0x5 - .uleb128 0x14 - .4byte .LASF905 - .byte 0x5 - .uleb128 0x15 - .4byte .LASF906 - .byte 0x5 - .uleb128 0x16 - .4byte .LASF907 - .byte 0x5 - .uleb128 0x18 .4byte .LASF908 .byte 0x5 - .uleb128 0x1a + .uleb128 0x14 .4byte .LASF909 .byte 0x5 - .uleb128 0x1c + .uleb128 0x15 .4byte .LASF910 .byte 0x5 - .uleb128 0x1e + .uleb128 0x18 .4byte .LASF911 + .byte 0x5 + .uleb128 0x19 + .4byte .LASF912 + .byte 0x5 + .uleb128 0x1a + .4byte .LASF913 + .byte 0x5 + .uleb128 0x1c + .4byte .LASF914 + .byte 0x5 + .uleb128 0x1d + .4byte .LASF915 + .byte 0x5 + .uleb128 0x1e + .4byte .LASF916 + .byte 0x5 + .uleb128 0x21 + .4byte .LASF917 + .byte 0x5 + .uleb128 0x22 + .4byte .LASF918 + .byte 0x5 + .uleb128 0x23 + .4byte .LASF919 + .byte 0x5 + .uleb128 0x25 + .4byte .LASF920 + .byte 0x5 + .uleb128 0x26 + .4byte .LASF921 + .byte 0x5 + .uleb128 0x27 + .4byte .LASF922 + .byte 0x5 + .uleb128 0x2c + .4byte .LASF923 + .byte 0x5 + .uleb128 0x2d + .4byte .LASF924 + .byte 0x5 + .uleb128 0x2e + .4byte .LASF925 + .byte 0x5 + .uleb128 0x30 + .4byte .LASF926 + .byte 0x5 + .uleb128 0x32 + .4byte .LASF927 + .byte 0x5 + .uleb128 0x34 + .4byte .LASF928 + .byte 0x5 + .uleb128 0x36 + .4byte .LASF929 .byte 0 .section .debug_macro,"G",%progbits,wm4.flash.h.2.51d6f0499046dca8c8d7cee08875e55f,comdat .Ldebug_macro17: @@ -4241,37 +4348,37 @@ main: .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF912 + .4byte .LASF930 .byte 0x5 .uleb128 0xf - .4byte .LASF913 + .4byte .LASF931 .byte 0x5 .uleb128 0x10 - .4byte .LASF914 + .4byte .LASF932 .byte 0x5 .uleb128 0x14 - .4byte .LASF915 + .4byte .LASF933 .byte 0x5 .uleb128 0x15 - .4byte .LASF916 + .4byte .LASF934 .byte 0x5 .uleb128 0x18 - .4byte .LASF917 + .4byte .LASF935 .byte 0x5 .uleb128 0x19 - .4byte .LASF918 + .4byte .LASF936 .byte 0x5 .uleb128 0x1c - .4byte .LASF919 + .4byte .LASF937 .byte 0x5 .uleb128 0x1e - .4byte .LASF920 + .4byte .LASF938 .byte 0x5 .uleb128 0x1f - .4byte .LASF921 + .4byte .LASF939 .byte 0x5 .uleb128 0x20 - .4byte .LASF922 + .4byte .LASF940 .byte 0 .section .debug_macro,"G",%progbits,wm4.pwr.h.2.b22d01f8fafa27268c4600cc8f787804,comdat .Ldebug_macro18: @@ -4279,51 +4386,117 @@ main: .byte 0 .byte 0x5 .uleb128 0x2 - .4byte .LASF923 + .4byte .LASF941 .byte 0x5 .uleb128 0xb - .4byte .LASF924 + .4byte .LASF942 .byte 0x5 .uleb128 0xc - .4byte .LASF925 + .4byte .LASF943 .byte 0x5 .uleb128 0xf - .4byte .LASF926 + .4byte .LASF944 .byte 0x5 .uleb128 0x12 - .4byte .LASF927 + .4byte .LASF945 .byte 0x5 .uleb128 0x13 - .4byte .LASF928 + .4byte .LASF946 .byte 0x5 .uleb128 0x14 - .4byte .LASF929 + .4byte .LASF947 .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 .LASF948 .byte 0x5 .uleb128 0x1d - .4byte .LASF931 + .4byte .LASF949 .byte 0x5 .uleb128 0x1e - .4byte .LASF932 + .4byte .LASF950 .byte 0x5 .uleb128 0x20 - .4byte .LASF933 + .4byte .LASF951 .byte 0x5 .uleb128 0x21 - .4byte .LASF934 + .4byte .LASF952 + .byte 0 + .section .debug_macro,"G",%progbits,wm4.usart.h.2.c32df0bd7cfa17e6f790f44d3d6388d5,comdat +.Ldebug_macro20: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x2 + .4byte .LASF953 + .byte 0x5 + .uleb128 0x10 + .4byte .LASF954 + .byte 0x5 + .uleb128 0x11 + .4byte .LASF955 + .byte 0x5 + .uleb128 0x15 + .4byte .LASF956 + .byte 0x5 + .uleb128 0x16 + .4byte .LASF957 + .byte 0x5 + .uleb128 0x19 + .4byte .LASF958 + .byte 0x5 + .uleb128 0x1a + .4byte .LASF959 + .byte 0x5 + .uleb128 0x1e + .4byte .LASF960 + .byte 0x5 + .uleb128 0x1f + .4byte .LASF961 + .byte 0x5 + .uleb128 0x23 + .4byte .LASF962 + .byte 0x5 + .uleb128 0x24 + .4byte .LASF963 + .byte 0x5 + .uleb128 0x27 + .4byte .LASF964 + .byte 0x5 + .uleb128 0x28 + .4byte .LASF965 + .byte 0x5 + .uleb128 0x2b + .4byte .LASF966 + .byte 0x5 + .uleb128 0x2c + .4byte .LASF967 + .byte 0x5 + .uleb128 0x2f + .4byte .LASF968 + .byte 0x5 + .uleb128 0x30 + .4byte .LASF969 + .byte 0x5 + .uleb128 0x33 + .4byte .LASF970 + .byte 0x5 + .uleb128 0x34 + .4byte .LASF971 + .byte 0x5 + .uleb128 0x36 + .4byte .LASF972 + .byte 0x5 + .uleb128 0x37 + .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 +4509,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 +4539,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" @@ -4380,8 +4553,10 @@ main: .ascii "__WCHAR_MAX__ 0xffffffffU\000" .LASF513: .ascii "__int20__\000" -.LASF902: +.LASF906: .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 +4567,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 +4575,8 @@ main: .ascii "__SFRACT_FBIT__ 7\000" .LASF94: .ascii "__INTMAX_WIDTH__ 64\000" +.LASF953: + .ascii "USART_H_ \000" .LASF448: .ascii "__ARM_FEATURE_BF16_SCALAR_ARITHMETIC\000" .LASF331: @@ -4408,7 +4585,7 @@ main: .ascii "__ORDER_PDP_ENDIAN__ 3412\000" .LASF34: .ascii "__SIZE_TYPE__ unsigned int\000" -.LASF903: +.LASF907: .ascii "RCC_APB1ENR_TIM4_ENABLE (1 << RCC_APB1ENR_TIM4_BIT)" .ascii "\000" .LASF620: @@ -4447,6 +4624,8 @@ main: .ascii "RCC_BASE_ADDR (0x40023800U)\000" .LASF525: .ascii "__INT8 \"hh\"\000" +.LASF913: + .ascii "GPIO_MODER_MODER3_AF (0b10)\000" .LASF47: .ascii "__UINT8_TYPE__ unsigned char\000" .LASF368: @@ -4455,6 +4634,8 @@ main: .ascii "INT_LEAST16_MAX (__INT_LEAST16_MAX__)\000" .LASF703: .ascii "SCNiFAST8 __SCN8FAST(i)\000" +.LASF909: + .ascii "GPIOA_BASE_ADDR (0x40020000U)\000" .LASF790: .ascii "__SCN64FAST(x) __FAST64 __STRINGIFY(x)\000" .LASF616: @@ -4467,9 +4648,9 @@ main: .ascii "_LDBL_EQ_DBL 1\000" .LASF675: .ascii "PRIi8 __PRI8(i)\000" -.LASF918: +.LASF936: .ascii "FLASH_ACR_ICEN_ENABLE (1 <> 8)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" +.LASF904: + .ascii "RCC_APB1ENR_USART2EN_BIT 17\000" .LASF889: .ascii "RCC_CFGR_PPRE1_MASK (0b111)\000" .LASF645: .ascii "UINTMAX_C(x) __UINTMAX_C(x)\000" +.LASF912: + .ascii "GPIO_MODER_MODER3_MASK (0b11)\000" .LASF623: .ascii "UINT_FAST64_MAX (__UINT_FAST64_MAX__)\000" .LASF554: @@ -5705,19 +5933,21 @@ 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: .ascii "RCC_PLLCFGR_PLLQ(q) ((q & RCC_PLLCFGR_PLLQ_MASK) <<" .ascii " RCC_PLLCFGR_PLLQ_BIT)\000" +.LASF957: + .ascii "USART_SR_TXE_TRANSMITTED (1 << USART_SR_TXE_BIT)\000" .LASF787: .ascii "__PRI64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF677: @@ -5741,7 +5971,7 @@ main: .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" @@ -5773,10 +6003,12 @@ main: .ascii "SCNdFAST32 __SCN32FAST(d)\000" .LASF339: .ascii "__UHQ_IBIT__ 0\000" +.LASF911: + .ascii "GPIO_MODER_MODER3_BIT 7\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: @@ -5788,14 +6020,16 @@ main: .ascii " RCC_PLLCFGR_PLLN_BIT)\000" .LASF56: .ascii "__UINT_LEAST16_TYPE__ short unsigned int\000" -.LASF926: +.LASF944: .ascii "PWR_SCALE3 (0b11)\000" .LASF573: .ascii "_INTMAX_T_DECLARED \000" -.LASF988: +.LASF1027: .ascii "CCER\000" .LASF40: .ascii "__CHAR16_TYPE__ short unsigned int\000" +.LASF959: + .ascii "USART_SR_TC_COMPLETED (1 << USART_SR_TC_BIT)\000" .LASF231: .ascii "__FLT32X_DIG__ 15\000" .LASF740: @@ -5850,18 +6084,20 @@ 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: +.LASF939: .ascii "FLASH_ACR_LATENCY_MASK (0b1111)\000" -.LASF974: +.LASF1013: .ascii "GPIO_MODE_INPUT\000" .LASF743: .ascii "SCNoFAST16 __SCN16FAST(o)\000" +.LASF1040: + .ascii "usart2_init\000" .LASF345: .ascii "__UTQ_IBIT__ 0\000" .LASF348: @@ -5870,8 +6106,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 +6122,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 +6150,23 @@ main: .ascii "__UINT_LEAST32_TYPE__ long unsigned int\000" .LASF405: .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" -.LASF905: +.LASF923: .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" +.LASF960: + .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,7 +6206,7 @@ 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" @@ -5986,24 +6226,28 @@ main: .ascii "_FVWRITE_IN_STREAMIO 1\000" .LASF183: .ascii "__LDBL_MIN_10_EXP__ (-307)\000" +.LASF920: + .ascii "GPIO_AFRL_AFRL2_BIT 8\000" .LASF190: .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" +.LASF955: + .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: @@ -6012,6 +6256,8 @@ main: .ascii "RCC_PLLCFGR_PLLM_MASK (0b111111)\000" .LASF365: .ascii "__NO_INLINE__ 1\000" +.LASF958: + .ascii "USART_SR_TC_BIT 6\000" .LASF710: .ascii "__SCN16(x) __INT16 __STRINGIFY(x)\000" .LASF606: @@ -6022,19 +6268,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: +.LASF950: .ascii "TIM4 ((struct timer *) TIM4_BASE_ADDR)\000" .LASF95: .ascii "__SIG_ATOMIC_MAX__ 0x7fffffff\000" .LASF608: .ascii "UINT64_MAX (__UINT64_MAX__)\000" +.LASF901: + .ascii "RCC_AHB1ENR_GPIOAEN_ENABLE (1 << RCC_AHB1ENR_GPIOAE" + .ascii "N_BIT)\000" .LASF471: .ascii "_RETARGETABLE_LOCKING 1\000" -.LASF915: +.LASF933: .ascii "FLASH_ACR_DCEN_BIT 10\000" .LASF453: .ascii "__USES_INITFINI__ 1\000" @@ -6106,11 +6355,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 +6397,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,9 +6411,9 @@ 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: .ascii "RCC_PLLCFGR_PLLN_BIT 6\000" @@ -6172,13 +6421,13 @@ main: .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: +.LASF931: .ascii "FLASH_BASE_ADDR (0x40023C00U)\000" .LASF745: .ascii "SCNxFAST16 __SCN16FAST(x)\000" @@ -6224,13 +6473,13 @@ main: .ascii "__PRI16(x) __INT16 __STRINGIFY(x)\000" .LASF159: .ascii "__FLT_HAS_DENORM__ 1\000" -.LASF910: +.LASF928: .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 +6487,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,7 +6497,9 @@ main: .ascii "__HQ_FBIT__ 15\000" .LASF854: .ascii "__bool_true_false_are_defined 1\000" -.LASF907: +.LASF964: + .ascii "USART_CR1_UE_BIT 13\000" +.LASF925: .ascii "GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADD" .ascii "R + (GPIO_PORT_OFFSET * port)))\000" .LASF798: @@ -6255,9 +6508,11 @@ main: .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: +.LASF930: .ascii "FLASH_H_ \000" .LASF412: .ascii "__ARM_ARCH\000" @@ -6275,7 +6530,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 +6540,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 +6578,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,6 +6596,8 @@ main: .ascii "__DBL_MANT_DIG__ 53\000" .LASF272: .ascii "__ULFRACT_IBIT__ 0\000" +.LASF857: + .ascii "RCC ((struct rcc *) RCC_BASE_ADDR)\000" .LASF892: .ascii "RCC_CFGR_HPRE_MASK (0b1111)\000" .LASF72: @@ -6345,7 +6606,7 @@ main: .ascii "__INT_LEAST64_TYPE__ long long int\000" .LASF103: .ascii "__UINT16_MAX__ 0xffff\000" -.LASF924: +.LASF942: .ascii "PWR_BASE_ADDR (0x40007000U)\000" .LASF446: .ascii "__ARM_FEATURE_CDE_COPROC\000" diff --git a/build/main.i b/build/main.i index 1404660..e46b82c 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 "" @@ -2097,9 +2097,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,10 +2127,34 @@ 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 GPIOA_BASE_ADDR (0x40020000U) +#define GPIOA ((struct gpio *) GPIOA_BASE_ADDR) + + +#define GPIO_MODER_MODER3_BIT 7 +#define GPIO_MODER_MODER3_MASK (0b11) +#define GPIO_MODER_MODER3_AF (0b10) + +#define GPIO_MODER_MODER2_BIT 4 +#define GPIO_MODER_MODER2_MASK (0b11) +#define GPIO_MODER_MODER2_AF (0b10) + + +#define GPIO_AFRL_AFRL3_BIT 12 +#define GPIO_AFRL_AFRL3_MASK (0b1111) +#define GPIO_AFRL_AFRL3_USART2_RX (0b0111) + +#define GPIO_AFRL_AFRL2_BIT 8 +#define GPIO_AFRL_AFRL2_MASK (0b1111) +#define GPIO_AFRL_AFRL2_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))) @@ -2144,9 +2176,9 @@ typedef enum { void gpio_set_mode(uint16_t pin, GPIO_MODE mode); void gpio_write(uint16_t pin, -# 40 "src/gpio.h" 3 4 +# 64 "src/gpio.h" 3 4 _Bool -# 40 "src/gpio.h" +# 64 "src/gpio.h" val); # 6 "src/main.c" 2 # 1 "src/flash.h" 1 @@ -2237,12 +2269,75 @@ 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); # 9 "src/main.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 << (led >> 8)); @@ -2322,19 +2419,21 @@ int main(void) { uint16_t counter = ((struct timer *) (0x40000800U))->CNT; -# 87 "src/main.c" 3 4 +# 90 "src/main.c" 3 4 _Bool -# 87 "src/main.c" +# 90 "src/main.c" led_on = -# 87 "src/main.c" 3 4 +# 90 "src/main.c" 3 4 ((_Bool)+0u) -# 87 "src/main.c" +# 90 "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..3687611e2a2dc5a7e5be3416f8deb57c674e7256 100644 GIT binary patch delta 22242 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 delta 19968 zcmX@n$9&^A(*y;1gN+Ozz-j^_88jFI83Gs>85kIp7#J9o85kxSpWQ6M=)&mQu(fFe z!}|Z<|NVzyhflo9)eVx~(%DrVLR^zJ3A!;VbvX#SiF$E63ny21Fe*y8fz%3lM`!(R zU{J0uP6f%Z zu(NA2FfenlzBK?*>}k#n416rCnRz7)%q;BD<_ruhrcw+H%qk-G3=9k`@52}vm<>cC z85kJYr!X)ua1Qmtm4ShU6U63Va`p^jVBrF>c^DaD z7#LW%L2Lm=RzC&?79J2=gmIQQ0|N`M022d)1Y@Zq0|N^mNL+!@%9w$Hg&)LLVO#=I zBLGsP!T8#nfq_L3ByPayBg??RBDA2Mfq}t zY!}8`QVa|%VjwjhjFzGd3@qXx@c_o1ybKI15+HU6<0+6ik{~q^jK$Ur3@lP0@dU;l zrVI=$(jayU<6n?DG9Wb>jL}Lq3=Ax?Ac+Dd=ind)7C8{Rgpo~xfq_LHq^N@NlOY2G zivmczfpK;i0|Sd9h~2`tSak9~7O6OP1||juL3Tz%1_lOJ1wI=l1_suB9w3gpGy?-8 zt1%M;0~71g00stT29_)_1_oADW>F>v2F?&>1_lYXSs-ag=O6|)c95|Qj6VJh3~bN{ z`Kdm+j8%cxGMs^d4HD)I9FrHbDlv0jk)3>kRgo{*gMonq5@U>)G$(&&Rg_|vW?=2?xEM&A4dW9K8yvh2 zjJaWx=dp>^yKpfuaDYS8hk@(3CIf@US!Mzy_OgZfLj z94I&#xOw#%7*x2QhA}WG3z-QsFfjVCR)KN^0|Nud1jaemEDQ|7IjJcOj6pmg5vGYn zJYj|m3}H~7co|PZ2m?bnJIF4kiKPr8OXV0C7>5b2`} zB6DIvWI8B?F+6nxv7gw3$RZICd6J2Np`Mk&#vR1rumzEK!4glTKx{8R5P8D_M7{*e zz6Klp0qm>`%ph?~QxK_a1tJrLK;&Ca5II#CM7{#6*{lF!3rmB@R(24X<_#j}f=sSw z_~Q!VTnB4V1N$HzTm;Iqg2cH!KxCLPh~#4fkzJY~@^~nS>;XHm9_&lINRY@fu)pub zf!GuHLF5Xs`7B^7g>^t8%LGB>Ef)}3&jglE2D>Xt3ncVA97L9Z1L_Re)githkqj{T zKn}##w*--_U?Yx#Eh~!#i70_}^??JN-vA`S2X@wfMi6@um=po4wBrSd{I3TGohI0S z8ipXDX<%|q42T^MHcpoZ#GViVBKg5ar^SQVF<^@g!NJ}M4(c!9bl|8Al05`Y8MzuD zwm6u52kgBDaN1fU3ljeyR}Z4()j;GURS;PNW*-4ttPXbjcd(Boz=7PL0#dWe1Vr8e zr-P5+6l1Fm5;+Tw4tcPZd0fE{sG6eO}6oC$5gvfMHt z5hHL47XtgK9vo&C;4nC14U#F%9865cH;P|^?19C(g*aBg2F>(d$h-`55{o@14-T|w3 z0Oyo)aJD=J&Mz;)X`%+4vDbl00B6M#a0%Z6b}28|pb&5} zJP6Lm;^4TP2TDW?dEn4023zw9oIH!cCCVkREF;+B4d7hB3--WXa41fT1E>ED;PT%F zTn;`1#}+R*I+lfjd?NrUUcgCgCOGD9f{WqP;Pl}MRuc%0^#*VirQ`_GH6NTxq`+oc zg3YuCm#Y62L9+bd=vW9!4fPCBV4r;km(S=@&~)!4V(h*gMDTT4qjHU znorYKcnrH>bdKEa8TnA^`WN?yi1ADtZ5o~ldIMyeF1J)0$ zVJbKZ=7FQY8(bfTgZ+0CY_ta0(cWNRE&?YsX|M@7;E4~`WDu!~B;7M}(yjRGf=CtyRhz%e}??AHn4r1}C}E9!$|-4>h}zk@|2 z!3lOhI4i1y9dQ<%rx@)(R>pzzf;rg3$>78uAq`Id&%i19C^+};1($K|V86}+$J}Xf zNCbmJf(2aQ)Puw07uYy$aB8Rp*OMmTD4P#XG4H_^oCB97m%)0Eg4NFir+^l4bh{dW z(|WJir}ye2V0y1PBDMMAmfQywqfR}-RnTwkp)M96Wkj#QStV}vV zpx!AjRD_j}oq<7xfdQsMh#x8;EC6MQ2r_dDv2wXhmKTwg)dltcSVi|pGcYiV2}4vs zNM5V|75%a()^!sJ1Fh7GWCN>iY}&Nkm{*SDfJ*< z&Sr7|MapWX+aULEWa0p|6ZSJr0+msxnTms;&UnCh%!Yx1?HS`?P;2QGqXVeO_`z5P za>F0S8jx?BnSO(6n@*+!poYaFrf*tMy)&Qkaoj_2Msn-RK7qIEg zuxDUk($CB*VPG@38Oy-HX1Ichfq~7a5ERnJCqON2lXy@@HeCVAZDyXJg38B@)(RrQ6FK+dn|1o^J9o-qm(0v(KY zAfqNT+JWqt&S(p2mMvnu3MyFEGPZy;Y-2PB6$v{S!LHxQ2zLH1MzHgDGlJc}hY{?7 zy^J7NvmIgtd*m=9$S2_R#c>Ce(d6AgC4xc<$O^^!ZJ@eGbuXwC*UkWCC|3)RBR%(m zidV06A87coodX3nKL^MFDJf7;E6xX{B>k(PGS1csl#GH!KvA4~9n`?;Vf+H}@iIn7 zkU4u8t3c)PImUia_D7A+^Pa9%1z@y3CKPVl%hR_K^1Z^BPbO&Fx~;B%0@D!nSdiC`FZb3W4I_8{<1r0{PB(1mv_IjJ2Q!LmN{ds2FKyk^}`q2U9=Dq0^XxL6yjK zrmZ0BXD~VXfU44EOcJ0b%yOoOphUfb$r9AY*~U}`^6z%0RiN5%2h&DStR7=>1iA1y zlNqRTJkQhu%CFa%j)T&}U8b9$KEpkxZJ_e{5z{4506k-}1vR2yGlhY|;v3UZPyjVB z9{_o_U8c1h3=C|unD?tfT_WQNN;C2+K!z(U0F?%cw?NwU_&^Cy-w_nv27V@> zrmV?3P+XXTDi~I?JD}FExhJUnwO9ZOK+8{{lx`OS%Ch!#Akx7c)Y^7@1p@kT zyC}%J9O&1d7DRpk zaiVHLSt*(w6v#1#piql#14VS42dMp+><^0OlroTWQ{_P7X}q9BkzNh5GA9<)^~>D^ zN)dU#LE)D#0!pd{5+ExJ1wbMt7NAnU^eQMk%XWZLS$TawC@L$~gQP28g4|mj32H0X ztOk_@we6q)tWyF-Sv@Bxw>L4~1$nKR@g*qZv@lkIl(jN$1_fvvV;-pRZ)fZSCD~5K z_n@TH#ds3b`s`+`1=-re7zt`)^)d>9B5DGodOgU3iHu)C$!ij03#jOu%*X?Zg(-}m zKv{JvqajHDbjCd(jWZazK%qR7@f;}m%wkjp1;A{^DIkZ>WBd=&KA*7$B)5Q(1(eno zGR^}DE@HF=IeRgqI;fyn%Gd=8lx2)9BB1=YoG}kn*sWmv2~x9?@iHjnS25lPm3M0x zCxZ&uwTwqV6~j8lB_KoBGhPCP#RkS?P^r3^Q4|)#pD%f^2P6h?{9!7CVQ2yJ?_#G7D`xrlhEIi2g4OC(uVmt!!(_zNf zpu*$`<5N%}bd>Qlh&sl21{9Ac7&n5F&PhgDP(62w@gu0ZKh1a#RM4DZ{0(ZTTwqKA z1=mGJZcy^N%%}iL*jE@0L9V~b_(2Dh{;x6ifl|~>#)qIdyv2AGlm%}yih?5M4&w$; zv3{5FI4H&5W6T0+e83n7N@Nci-+>bLBSr^MY(Hi^1G4uCqdh1_UNHUvh3HGhnIP&F zV+hFl*NjY{MEizuI;aYG%P0%VLG|w$wLk&&fpG)KPahedgRK9==n4wb&y0&e;q{%7 z8`P)x!I%q5G(Q>TL22$6<3EsNeltD+QGXb9LDv6c3;_kuf5t-~vm2O}fm$JrOgBKK zQWH}O$f7PLF;FJ!X8H|Ej}z;eHiLp~5>o-lPm`H4KxtX)Kyu5Nq(JUn&h!CPbgW|949WnjnVx~1y@qKk zNZ(qfrJ(e*j;RS$wykHX_X63wkx31dNzMHfr@nH0#F82NdOhGM%7VJ6-@I$K307O3QIK^kh8VoL1t;kfyzC-^`OAj&j3ZV zQ3fc>8P}VElCW7nsE#ye1$oJe0ThzfZlEM;w*wTM_M1ROr;{hBK63sFibI!cpv>sD z7F1}vbAVE)rxYksy%vFzqW5Qz1-?H(*~qU9TB00O$x3B|d?YgklyT((VO1QHJ1BJc%Rre^U^_^ih#M$SMU_C+k^~nhX-dk1 zqF<&77c@h{~{=egt9?NRoDk)fJm1F zOu0VDr?S65iCXR~s8m+~^^#Z>7x^UZO@66% zW%F_MLMGPu_)t&3$vh?!lNUKCPM)OYwE2^k6(eVHW_n&~ih{PmW^J8)jGOe_I438W zAK2_?@sN45ugwd_&F*%JjGLF(S29kvaqMOZ2=XkQ92g+XRH`}of}`VPTc^jup`Lyr zzK#*`A@MG*&OVMot}Y6jjh)vsZgRcJwE44p0rTVu-Ww;!`z)9|xm|fPzwc!xP5q4g z+*JL@foK)S^ih|Ul%-qzxlH$z|{ezi6wnj{LbP}Ch z8l=8?eb5Hh$wd*7EY z2=cVhh|t`eo+HP&c~kC5rpfIEF_RUYg(p8OSh9Iz;WEa}Q;Lh3C(D-C8G(ZpWR9~& zvZg{Z12{fh{T!WqTop776>Mx2z#@nk(wzLRJYaJ`g%soFC6yAKldm>~PPS{FwE1qc zE#qd#)_lgvhubc1-r26jD2X*h7>bLMC-3i!-5l0g!8rL^R}~|}WdCkk#*WFo-K9*z z43ocf8|ZR?5)T}UF>o_5fM?WQKna&Yj6s$GG@lDqFj=ujSr#PH02N?h5Qnos4Ccuj zdlVUECSUH+pX}79z^JrYxmTW1&6wGlTEu!~Kek zPBWPy4g$?03NeT?%wtBV6JTIqSb@ghjK)96yg6;+Sth?Eb2Ecf^RzTmBeN7!bAyyr z!(;=Kl$2z%w8T`iv@{Eb@>~pG)D(kM z;}mnF)HDmj)X9xgvP}|AlTwonQd2EbjVvuK63vqgjSMY}4APQJQcY4V6U`WM6EpJ| zN-}dz;xqFyOTetj8B-PN*%%lYxY!vOK(!5*9|Hp)i0{w904lV&0vH%dK>R=k22kWM z@iH)g`jAXQ3=E*A9EcWUU|;~zQXrZiviyNbkbyxB#1~*-&;`*#3=E)U5+HTfP(G+= zWfEejXYhjxghFXhr3O-%0p;gI=`twY0;M~lG-%i!q<#;Se*#KBfYNWE^baV_0!mFn z3=9Hbx}JeS2Fze!(16k=P}%`X`#|XkD4hbO3!rojlp!|nW z`Yn_eV1`7Q3^M~mJxC#Fh#EwvKqU&GbPbg5fYMW-^cpC=6H0?7ctQHFLiwP{ToC^Q zl>ZG%gO;i=aWXK-vp^i6%fe6(PCPbH0cQ}+%D@0hluSGf44_QK#LB<`suDpO!HJKR zfk6ZmmzlV{#yISmI28%BMl;94K7`r7NIx9h8P8+Ab)60+gNxTB8Cocn(xx5tLp5rPo2} zEl_$Fls*8Zk3s1(Q2G*-z5%80LFp$@`W2M^0Hy1{K^cFbG!ry2azJU&Oc=<4B2c~* zlvaS!YEW7SN*h6G3n*;|rNM=`5Cel3lpg@0>lwlz42Bpeodl&bpmZLTE`icjP`Uw1 zw?XM1C_M>E&w$eNp!5p0j1AD=_^qB7Lla%KxCY7D%HER6+?#gPLC;aXl#C1WJP%V<2(R zyby?XgNpk==^!W_0j1-hbPANtg3<+`MI9gm%Af)@P`U|9cR*=afieZk2d^sk${r=au&CTRY@1{Jsir5{1*7f|{gl>P#xe?e&mXu-k; zrFo#V5R{gH(sEE*1xjl{X#-|x{x^dP*g$C~DD45I{h%~xT@}b@pqWSzod6Y2gVH%r zx(G^FK3dN636zEv(e>zM^dG1KCQwl<#K6D-rTL(=2$YtB(h5*o4NB`kX(K3Y0j2GrvD18M=--6N)p!72+{RT>Zg3>>r^gk%g!V0N#xIi>0|ASV( zfZ|vTBp}4VAOoe9ptJ^*)`QX}P}&MgJ3whSDD4BKgP?Q-l#YYaDNs6#6VOKfC^lL(s!Wr zBPjg>O232BU!e3aC=F^bfE>ui1_@doC@ln~C7`q%lvaV#T5Qn#ZvYiAgVHuo+6hW~ zKxscH9Rj7JpmYM1PJ_}pP`U_8S3v1HDBS|3yFl%4kjp1P1*SpiIZ%2LlwJX)*Fotm zP9Xp1}*kU z2TD(Z(lem+JSe>cOxH6otO7F_7(jDNAfIi6^7laLLr@wt9SM>@2jyRZ(zl@W11S9r zO22{9pP=*)DE$vgvv4plfa`xQ5ChaBfzo17S_VohL1_&rtp}w|ptKc~c7W1uP}&Dd z2SMowC>;l-Q#hdcKMN{Q0Hw>IbPbelg3=vOx(`ZEfzq>}^a3co3`(zo(wm_44k*13 zN+02X=KoVrfeTRj8kD{Rr5{1*7f|{gl>P#xe?e&mPDo;9gVH=uS_n!@KxsKBt-=Y- z|5{K111N0#a92BmYLbP<%UfYNnPx}_e<=z`J{p!75- zJqJoJg3>FX^g1ZL1xoLN(g&dQF(`coN?(G~H=y)AC|&;q%6J8(KS1ekQ2Gy)X5xYb zEeDk5gVG{US_(=lKxs874O)Q-$~8t%z6F%FgV6O1pw-_X1zr#Vh5#rX2Bl-5bP|-# zfYNzTx&%sBLFoo4-3Fz5p!6gtJp)S51Jm^k3`@Wa28LBodNY*X1Er6EXki8h&>Cwd z5e9}UAifX-187kzlPCkjQxIQ_f#EfX7H44i0-_}t82*B2Nd^Yc+!e@!Lfi}tOi~OC z(jZ!zfk6>O*UK<4Xn+_(3=H~E+8jj7GBDVJXgLN3HxMn)z~B#}6&M&IK(rzQLn4S) zVqnMu(aH=A#UNURfuRaSgGR%lT{_S>8pr{HP(Em!48#YGo`L)StWXJj3PBo_q3U4W zXwbF#0RY!1<}4xaaiv;8p=Ev9)J*HV33B&gI3~z^l3u* zumJ{hC?A(Y#bNz_P+WivfCaHWRHG@Bh7FrJLiwQe6(IGnAP$C#gBGTM#N(lS(3Tz$ zKO4#~gwo|uy1o|5Xok|TVYPlJA2z%O8=zPW6<-CVLA#(p7VLoX_d{vez{FW7{|c18 z4W%DJ=z0d&NW^!D0K-2hjWfug^5`K33wrdB!*5PK19(^&$6UnmV5yXA%sJPJW+NhqxVrPZM{Y{=FW z$_HVyDYl90^4HnPeL9S7tB(V+Y< z2x15^Fi1dY*z_1|NL3dqZUUu28(KjQb%OFep)_nHH5|&1gVL!`ItNM@Lut?mD!Be{ zgbH*(>3%3Z4NA|2(y*b^)lmK>D7_O(AAr)wp)?UiIAs2h2!-HE3Re@2xUwEwQ4g*E z2{n_cQq~JGFklq*u=YPa%6d?mK`-j-(aU;Dqk=^J^$f(;+awwcHy6J?r1n3!52p%U zxuD9x0Pf|gGBAMFRWYeDFc^WVQB}yw2oN8O!FDb@18@H3kN7 zKb~{)yB!{r?RLJZ2ld22V+OEAE+A!~nRd{mxH{-i2Pj5Y2MQRNIt{2A(DFNUb)cpq zOdTi{fYg96R2?X5K&*~nU|@hL1jPzS5eP#SLKHDDFr*-<)5c>lXt)7po(@iR^^h2V zDFiKK0a*&d=oW((1i{pSk_$);2&1b59gqQ22kP~K)POL$I?z!GJRtvrf*LfI08#|P z=nB^$`4}`B15yLR=;}bdbC|`TbPQ4h!szObAemQhj5BB$7(hKPn1P^l0Wu7P(G9$V zWFV-N2B`sIbagL~)PXwOEDQ{34A>NcRyV>d292(O)POL$fuNORFm<4G4N?Qbpb;C; zF)g4G9ZxO8FpV5q%5{pp*}aKG0|zNIPf&6=*mKq#dLNgl{l0F!+HaK^*96HxLul zCE;XXfScFQ$H0&QQp>==APJ2Xka?h@1Zo~A*)cGHW?zuq4V7d7^~7OpkOf(j5AGAU z1PuluTk~Q9q)-4kTL#G*Q1V9BJ!!Jwe(`!xM-5pw!$in}9guF&Kpn_mAV-2mj*xYO zc5O6(h8jT*LGm1!AC;uW06hMpq#w=uY0aU)&O|9lQpWfk9va zA`U=BJDPR|$VnOu4E~cD4~W;J>$X?`idcx{pw&aTbRQ9cR1^@GK$ZuB*y!dRSiryl z%E+L=0gXnYnHL3j&N~qX(2+PGGr$-Ya_9zrSirylszE>of|44VfpGJ@CVxDD88{IO zA&Cp58&;yC#1%9U+a^06#MC`wAp?T}BP4KOmxSXgCQe1{lsMFff2d z`H&n4@&8H&2GBeyymC=k&%gkxenBn-&D_8Y1Pw=l3$>? zpf&@DhN)9&VqgH7162m9h{5koCm1`rLA}1HQfvaU|)kYTC`5ybxe&nr= ((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..aae1189 100644 --- a/build/timer.S +++ b/build/timer.S @@ -136,10 +136,10 @@ tim4_start: .byte 0x4 .4byte .Ldebug_abbrev0 .uleb128 0x7 - .4byte .LASF956 + .4byte .LASF960 .byte 0x1d - .4byte .LASF957 - .4byte .LASF958 + .4byte .LASF961 + .4byte .LASF962 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -147,17 +147,17 @@ tim4_start: .uleb128 0x3 .byte 0x1 .byte 0x6 - .4byte .LASF904 + .4byte .LASF908 .uleb128 0x3 .byte 0x1 .byte 0x8 - .4byte .LASF905 + .4byte .LASF909 .uleb128 0x3 .byte 0x2 .byte 0x5 - .4byte .LASF906 + .4byte .LASF910 .uleb128 0x4 - .4byte .LASF909 + .4byte .LASF913 .byte 0x2 .byte 0x39 .byte 0x1c @@ -165,13 +165,13 @@ tim4_start: .uleb128 0x3 .byte 0x2 .byte 0x7 - .4byte .LASF907 + .4byte .LASF911 .uleb128 0x3 .byte 0x4 .byte 0x5 - .4byte .LASF908 + .4byte .LASF912 .uleb128 0x4 - .4byte .LASF910 + .4byte .LASF914 .byte 0x2 .byte 0x4f .byte 0x1b @@ -179,15 +179,15 @@ tim4_start: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF911 + .4byte .LASF915 .uleb128 0x3 .byte 0x8 .byte 0x5 - .4byte .LASF912 + .4byte .LASF916 .uleb128 0x3 .byte 0x8 .byte 0x7 - .4byte .LASF913 + .4byte .LASF917 .uleb128 0x8 .byte 0x4 .byte 0x5 @@ -195,15 +195,15 @@ tim4_start: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF914 + .4byte .LASF918 .uleb128 0x4 - .4byte .LASF915 + .4byte .LASF919 .byte 0x3 .byte 0x24 .byte 0x14 .4byte 0x3f .uleb128 0x4 - .4byte .LASF916 + .4byte .LASF920 .byte 0x3 .byte 0x30 .byte 0x14 @@ -224,13 +224,13 @@ tim4_start: .4byte 0xa0 .byte 0 .uleb128 0x1 - .4byte .LASF917 + .4byte .LASF921 .byte 0x4 .byte 0x8 .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF918 + .4byte .LASF922 .byte 0x4 .byte 0x9 .4byte 0xa0 @@ -242,115 +242,115 @@ tim4_start: .4byte 0xa0 .byte 0xc .uleb128 0x1 - .4byte .LASF919 + .4byte .LASF923 .byte 0x4 .byte 0xb .4byte 0xa0 .byte 0x10 .uleb128 0x1 - .4byte .LASF920 + .4byte .LASF924 .byte 0x4 .byte 0xc .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF921 + .4byte .LASF925 .byte 0x4 .byte 0xd .4byte 0x212 .byte 0x18 .uleb128 0x1 - .4byte .LASF922 + .4byte .LASF926 .byte 0x4 .byte 0xe .4byte 0xa0 .byte 0x20 .uleb128 0x1 - .4byte .LASF923 + .4byte .LASF927 .byte 0x4 .byte 0xf .4byte 0xa0 .byte 0x24 .uleb128 0x1 - .4byte .LASF924 + .4byte .LASF928 .byte 0x4 .byte 0x10 .4byte 0x212 .byte 0x28 .uleb128 0x1 - .4byte .LASF925 + .4byte .LASF929 .byte 0x4 .byte 0x11 .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF926 + .4byte .LASF930 .byte 0x4 .byte 0x12 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF927 + .4byte .LASF931 .byte 0x4 .byte 0x13 .4byte 0x212 .byte 0x38 .uleb128 0x1 - .4byte .LASF928 + .4byte .LASF932 .byte 0x4 .byte 0x14 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF929 + .4byte .LASF933 .byte 0x4 .byte 0x15 .4byte 0xa0 .byte 0x44 .uleb128 0x1 - .4byte .LASF930 + .4byte .LASF934 .byte 0x4 .byte 0x16 .4byte 0x212 .byte 0x48 .uleb128 0x1 - .4byte .LASF931 + .4byte .LASF935 .byte 0x4 .byte 0x17 .4byte 0xa0 .byte 0x50 .uleb128 0x1 - .4byte .LASF932 + .4byte .LASF936 .byte 0x4 .byte 0x18 .4byte 0xa0 .byte 0x54 .uleb128 0x1 - .4byte .LASF933 + .4byte .LASF937 .byte 0x4 .byte 0x19 .4byte 0x212 .byte 0x58 .uleb128 0x1 - .4byte .LASF934 + .4byte .LASF938 .byte 0x4 .byte 0x1a .4byte 0xa0 .byte 0x60 .uleb128 0x1 - .4byte .LASF935 + .4byte .LASF939 .byte 0x4 .byte 0x1b .4byte 0xa0 .byte 0x64 .uleb128 0x1 - .4byte .LASF936 + .4byte .LASF940 .byte 0x4 .byte 0x1c .4byte 0x212 .byte 0x68 .uleb128 0x1 - .4byte .LASF937 + .4byte .LASF941 .byte 0x4 .byte 0x1d .4byte 0xa0 @@ -362,25 +362,25 @@ tim4_start: .4byte 0xa0 .byte 0x74 .uleb128 0x1 - .4byte .LASF938 + .4byte .LASF942 .byte 0x4 .byte 0x1f .4byte 0x212 .byte 0x78 .uleb128 0x1 - .4byte .LASF939 + .4byte .LASF943 .byte 0x4 .byte 0x20 .4byte 0xa0 .byte 0x80 .uleb128 0x1 - .4byte .LASF940 + .4byte .LASF944 .byte 0x4 .byte 0x21 .4byte 0xa0 .byte 0x84 .uleb128 0x1 - .4byte .LASF941 + .4byte .LASF945 .byte 0x4 .byte 0x22 .4byte 0xa0 @@ -396,7 +396,7 @@ tim4_start: .uleb128 0x5 .4byte 0x202 .uleb128 0xc - .4byte .LASF942 + .4byte .LASF946 .byte 0x50 .byte 0x5 .byte 0x6 @@ -415,13 +415,13 @@ tim4_start: .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF943 + .4byte .LASF947 .byte 0x5 .byte 0x9 .4byte 0xa0 .byte 0x8 .uleb128 0x1 - .4byte .LASF944 + .4byte .LASF948 .byte 0x5 .byte 0xa .4byte 0xa0 @@ -439,19 +439,19 @@ tim4_start: .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF945 + .4byte .LASF949 .byte 0x5 .byte 0xd .4byte 0xa0 .byte 0x18 .uleb128 0x1 - .4byte .LASF946 + .4byte .LASF950 .byte 0x5 .byte 0xe .4byte 0xa0 .byte 0x1c .uleb128 0x1 - .4byte .LASF947 + .4byte .LASF951 .byte 0x5 .byte 0xf .4byte 0xa0 @@ -481,31 +481,31 @@ tim4_start: .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF948 + .4byte .LASF952 .byte 0x5 .byte 0x14 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF949 + .4byte .LASF953 .byte 0x5 .byte 0x15 .4byte 0xa0 .byte 0x38 .uleb128 0x1 - .4byte .LASF950 + .4byte .LASF954 .byte 0x5 .byte 0x16 .4byte 0xa0 .byte 0x3c .uleb128 0x1 - .4byte .LASF951 + .4byte .LASF955 .byte 0x5 .byte 0x17 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF952 + .4byte .LASF956 .byte 0x5 .byte 0x18 .4byte 0xa0 @@ -517,21 +517,21 @@ tim4_start: .4byte 0xa0 .byte 0x48 .uleb128 0x1 - .4byte .LASF953 + .4byte .LASF957 .byte 0x5 .byte 0x1a .4byte 0xa0 .byte 0x4c .byte 0 .uleb128 0x6 - .4byte .LASF954 + .4byte .LASF958 .byte 0x14 .4byte .LFB1 .4byte .LFE1-.LFB1 .uleb128 0x1 .byte 0x9c .uleb128 0x6 - .4byte .LASF955 + .4byte .LASF959 .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.a17300cb822ec078eaa06c79bfd3d786,comdat .Ldebug_macro14: .2byte 0x5 .byte 0 @@ -3638,43 +3638,53 @@ tim4_start: .uleb128 0x73 .4byte .LASF894 .byte 0x5 - .uleb128 0x76 + .uleb128 0x77 .4byte .LASF895 .byte 0x5 - .uleb128 0x77 + .uleb128 0x78 .4byte .LASF896 .byte 0x5 - .uleb128 0x79 + .uleb128 0x7b .4byte .LASF897 .byte 0x5 - .uleb128 0x7a + .uleb128 0x7c .4byte .LASF898 + .byte 0x5 + .uleb128 0x7e + .4byte .LASF899 + .byte 0x5 + .uleb128 0x7f + .4byte .LASF900 + .byte 0x5 + .uleb128 0x81 + .4byte .LASF901 + .byte 0x5 + .uleb128 0x82 + .4byte .LASF902 .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 .LASF903 .byte 0x5 .uleb128 0x1d - .4byte .LASF900 + .4byte .LASF904 .byte 0x5 .uleb128 0x1e - .4byte .LASF901 + .4byte .LASF905 .byte 0x5 .uleb128 0x20 - .4byte .LASF902 + .4byte .LASF906 .byte 0x5 .uleb128 0x21 - .4byte .LASF903 + .4byte .LASF907 .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 +3695,7 @@ tim4_start: .ascii "__UHA_FBIT__ 8\000" .LASF815: .ascii "PRIiFAST64 __PRI64FAST(i)\000" -.LASF905: +.LASF909: .ascii "unsigned char\000" .LASF225: .ascii "__FLT64_DENORM_MIN__ 4.9406564584124654e-324F64\000" @@ -3731,7 +3741,7 @@ tim4_start: .ascii "__WCHAR_MAX__ 0xffffffffU\000" .LASF514: .ascii "__int20__\000" -.LASF897: +.LASF901: .ascii "RCC_APB1ENR_TIM4_BIT 2\000" .LASF18: .ascii "__SIZEOF_LONG_LONG__ 8\000" @@ -3757,7 +3767,7 @@ tim4_start: .ascii "__ORDER_PDP_ENDIAN__ 3412\000" .LASF34: .ascii "__SIZE_TYPE__ unsigned int\000" -.LASF898: +.LASF902: .ascii "RCC_APB1ENR_TIM4_ENABLE (1 << RCC_APB1ENR_TIM4_BIT)" .ascii "\000" .LASF621: @@ -3822,8 +3832,6 @@ 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: @@ -3846,7 +3854,7 @@ tim4_start: .ascii "__need_wchar_t\000" .LASF199: .ascii "__FLT32_MIN_EXP__ (-125)\000" -.LASF956: +.LASF960: .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" @@ -3865,7 +3873,7 @@ tim4_start: .ascii "__int_fast32_t_defined 1\000" .LASF133: .ascii "__INT_FAST64_WIDTH__ 64\000" -.LASF953: +.LASF957: .ascii "DMAR\000" .LASF660: .ascii "___int_wchar_t_h \000" @@ -3916,13 +3924,13 @@ tim4_start: .ascii "SCNo32 __SCN32(o)\000" .LASF541: .ascii "_NOTHROW \000" -.LASF948: +.LASF952: .ascii "CCR1\000" -.LASF949: +.LASF953: .ascii "CCR2\000" -.LASF950: +.LASF954: .ascii "CCR3\000" -.LASF951: +.LASF955: .ascii "CCR4\000" .LASF307: .ascii "__LACCUM_IBIT__ 32\000" @@ -3946,7 +3954,7 @@ tim4_start: .ascii "__INT64 \"ll\"\000" .LASF138: .ascii "__INTPTR_MAX__ 0x7fffffff\000" -.LASF932: +.LASF936: .ascii "AHB2LPENR\000" .LASF500: .ascii "__RAND_MAX\000" @@ -3956,7 +3964,7 @@ tim4_start: .ascii "INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)\000" .LASF614: .ascii "INT_FAST8_MAX (__INT_FAST8_MAX__)\000" -.LASF896: +.LASF898: .ascii "RCC_APB1ENR_PWREN_CLOCK_ENABLE (1 << RCC_APB1ENR_PW" .ascii "REN_BIT)\000" .LASF487: @@ -3989,7 +3997,7 @@ tim4_start: .ascii " RCC_PLLCFGR_PLLP_BIT)\000" .LASF302: .ascii "__UACCUM_IBIT__ 16\000" -.LASF908: +.LASF912: .ascii "long int\000" .LASF720: .ascii "SCNd16 __SCN16(d)\000" @@ -4066,7 +4074,7 @@ tim4_start: .ascii "__SIZEOF_LONG__ 4\000" .LASF754: .ascii "PRIi32 __PRI32(i)\000" -.LASF929: +.LASF933: .ascii "APB2ENR\000" .LASF822: .ascii "SCNoFAST64 __SCN64FAST(o)\000" @@ -4080,7 +4088,7 @@ tim4_start: .ascii "__FLT32X_MIN_EXP__ (-1021)\000" .LASF816: .ascii "PRIoFAST64 __PRI64FAST(o)\000" -.LASF931: +.LASF935: .ascii "AHB1LPENR\000" .LASF406: .ascii "__ARM_FEATURE_SIMD32 1\000" @@ -4092,7 +4100,7 @@ tim4_start: .ascii "PRIoLEAST16 __PRI16LEAST(o)\000" .LASF459: .ascii "__NEWLIB__ 4\000" -.LASF941: +.LASF945: .ascii "DCKCFGR\000" .LASF721: .ascii "SCNi16 __SCN16(i)\000" @@ -4102,7 +4110,7 @@ tim4_start: .ascii "__FLT_DECIMAL_DIG__ 9\000" .LASF563: .ascii "_UINT8_T_DECLARED \000" -.LASF904: +.LASF908: .ascii "signed char\000" .LASF806: .ascii "PRIuLEAST64 __PRI64LEAST(u)\000" @@ -4136,19 +4144,19 @@ tim4_start: .ascii "__FLT64_MAX_10_EXP__ 308\000" .LASF874: .ascii "RCC_PLLCFGR_PLLN_MASK (0b111111111)\000" -.LASF957: +.LASF961: .ascii "src/timer.c\000" -.LASF924: +.LASF928: .ascii "RESERVED1\000" -.LASF927: +.LASF931: .ascii "RESERVED2\000" .LASF3: .ascii "__STDC_UTF_32__ 1\000" -.LASF933: +.LASF937: .ascii "RESERVED4\000" .LASF241: .ascii "__FLT32X_DENORM_MIN__ 4.9406564584124654e-324F32x\000" -.LASF938: +.LASF942: .ascii "RESERVED6\000" .LASF152: .ascii "__FLT_MAX_10_EXP__ 38\000" @@ -4168,6 +4176,8 @@ tim4_start: .ascii "SCNoLEAST32 __SCN32LEAST(o)\000" .LASF891: .ascii "RCC_CFGR_SW_PLL (0b10)\000" +.LASF906: + .ascii "TIM_CR1_CEN_BIT 0\000" .LASF798: .ascii "SCNd64 __SCN64(d)\000" .LASF828: @@ -4186,33 +4196,36 @@ tim4_start: .ascii "__int_fast64_t_defined 1\000" .LASF838: .ascii "__PRIPTR(x) __STRINGIFY(x)\000" -.LASF915: +.LASF919: .ascii "uint16_t\000" .LASF417: .ascii "__thumb2__ 1\000" .LASF321: .ascii "__ULLACCUM_FBIT__ 32\000" -.LASF895: +.LASF897: .ascii "RCC_APB1ENR_PWREN_BIT 28\000" +.LASF900: + .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: +.LASF934: .ascii "RESERVED3\000" .LASF22: .ascii "__SIZEOF_LONG_DOUBLE__ 8\000" -.LASF936: +.LASF940: .ascii "RESERVED5\000" -.LASF945: +.LASF949: .ascii "CCMR1\000" -.LASF946: +.LASF950: .ascii "CCMR2\000" .LASF36: .ascii "__WCHAR_TYPE__ unsigned int\000" -.LASF899: +.LASF903: .ascii "TIMER_H_ \000" .LASF470: .ascii "_MB_LEN_MAX 8\000" @@ -4242,8 +4255,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 +4269,9 @@ tim4_start: .ascii "__SCN64(x) __INT64 __STRINGIFY(x)\000" .LASF647: .ascii "_GCC_WRAP_STDINT_H \000" -.LASF909: +.LASF913: .ascii "__uint16_t\000" -.LASF926: +.LASF930: .ascii "AHB2ENR\000" .LASF805: .ascii "PRIoLEAST64 __PRI64LEAST(o)\000" @@ -4272,7 +4285,7 @@ tim4_start: .ascii "__UINT8_MAX__ 0xff\000" .LASF575: .ascii "_UINTMAX_T_DECLARED \000" -.LASF942: +.LASF946: .ascii "timer\000" .LASF184: .ascii "__LDBL_MAX_EXP__ 1024\000" @@ -4316,7 +4329,7 @@ tim4_start: .ascii "__FLT_EPSILON__ 1.1920928955078125e-7F\000" .LASF770: .ascii "SCNdLEAST32 __SCN32LEAST(d)\000" -.LASF921: +.LASF925: .ascii "RESERVED0\000" .LASF807: .ascii "PRIxLEAST64 __PRI64LEAST(x)\000" @@ -4352,7 +4365,9 @@ tim4_start: .ascii "__MISC_VISIBLE 0\000" .LASF306: .ascii "__LACCUM_FBIT__ 31\000" -.LASF937: +.LASF689: + .ascii "PRIuLEAST8 __PRI8LEAST(u)\000" +.LASF941: .ascii "BDCR\000" .LASF211: .ascii "__FLT32_HAS_QUIET_NAN__ 1\000" @@ -4414,7 +4429,7 @@ tim4_start: .ascii "RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT)\000" .LASF763: .ascii "SCNx32 __SCN32(x)\000" -.LASF918: +.LASF922: .ascii "CFGR\000" .LASF558: .ascii "___int_least32_t_defined 1\000" @@ -4484,7 +4499,7 @@ tim4_start: .ascii "___int8_t_defined 1\000" .LASF248: .ascii "__SFRACT_MIN__ (-0.5HR-0.5HR)\000" -.LASF911: +.LASF915: .ascii "long unsigned int\000" .LASF349: .ascii "__SA_IBIT__ 16\000" @@ -4502,7 +4517,7 @@ tim4_start: .ascii "__UINT16_TYPE__ short unsigned int\000" .LASF868: .ascii "RCC_PLLCFGR_PLLSRC_BIT 22\000" -.LASF944: +.LASF948: .ascii "DIER\000" .LASF657: .ascii "_WCHAR_T_DEFINED_ \000" @@ -4510,8 +4525,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: @@ -4608,11 +4621,11 @@ tim4_start: .ascii "PRIX32 __PRI32(X)\000" .LASF774: .ascii "SCNxLEAST32 __SCN32LEAST(x)\000" -.LASF954: +.LASF958: .ascii "tim4_start\000" .LASF704: .ascii "SCNiFAST8 __SCN8FAST(i)\000" -.LASF917: +.LASF921: .ascii "PLLCFGR\000" .LASF5: .ascii "__GNUC__ 12\000" @@ -4640,7 +4653,7 @@ tim4_start: .ascii "__ULACCUM_MIN__ 0.0ULK\000" .LASF462: .ascii "_ATEXIT_DYNAMIC_ALLOC 1\000" -.LASF910: +.LASF914: .ascii "__uint32_t\000" .LASF188: .ascii "__LDBL_MAX__ 1.7976931348623157e+308L\000" @@ -4650,7 +4663,7 @@ tim4_start: .ascii "__FLT_RADIX__ 2\000" .LASF455: .ascii "_INTTYPES_H \000" -.LASF912: +.LASF916: .ascii "long long int\000" .LASF401: .ascii "__ARM_FEATURE_CMSE\000" @@ -4670,7 +4683,7 @@ tim4_start: .ascii "WINT_MAX (__WINT_MAX__)\000" .LASF823: .ascii "SCNuFAST64 __SCN64FAST(u)\000" -.LASF939: +.LASF943: .ascii "SSCGR\000" .LASF137: .ascii "__UINT_FAST64_MAX__ 0xffffffffffffffffULL\000" @@ -4698,7 +4711,7 @@ tim4_start: .ascii "___int32_t_defined 1\000" .LASF83: .ascii "__INT_WIDTH__ 32\000" -.LASF923: +.LASF927: .ascii "APB2RSTR\000" .LASF409: .ascii "__ARM_ARCH_PROFILE\000" @@ -4750,15 +4763,17 @@ tim4_start: .ascii "__ARM_NEON_FP\000" .LASF280: .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" -.LASF935: +.LASF939: .ascii "APB2LPENR\000" +.LASF907: + .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: +.LASF904: .ascii "TIM4_BASE_ADDR (0x40000800U)\000" .LASF261: .ascii "__UFRACT_FBIT__ 16\000" @@ -4778,7 +4793,7 @@ tim4_start: .ascii "L)\000" .LASF608: .ascii "INT64_MAX (__INT64_MAX__)\000" -.LASF914: +.LASF918: .ascii "unsigned int\000" .LASF857: .ascii "RCC_CR_HSERDY_BIT 17\000" @@ -4864,7 +4879,7 @@ tim4_start: .ascii "__STRINGIFY(a) #a\000" .LASF356: .ascii "__USA_FBIT__ 16\000" -.LASF934: +.LASF938: .ascii "APB1LPENR\000" .LASF480: .ascii "__IEEE_LITTLE_ENDIAN \000" @@ -4972,6 +4987,8 @@ tim4_start: .ascii "SCNx64 __SCN64(x)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" +.LASF899: + .ascii "RCC_APB1ENR_USART2EN_BIT 17\000" .LASF884: .ascii "RCC_CFGR_PPRE1_MASK (0b111)\000" .LASF646: @@ -4990,13 +5007,13 @@ tim4_start: .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1\000" .LASF734: .ascii "SCNuLEAST16 __SCN16LEAST(u)\000" -.LASF922: +.LASF926: .ascii "APB1RSTR\000" .LASF298: .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" .LASF393: .ascii "__ARM_FEATURE_CRYPTO\000" -.LASF928: +.LASF932: .ascii "APB1ENR\000" .LASF742: .ascii "SCNdFAST16 __SCN16FAST(d)\000" @@ -5026,7 +5043,7 @@ tim4_start: .ascii ")\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF913: +.LASF917: .ascii "long long unsigned int\000" .LASF612: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" @@ -5073,7 +5090,7 @@ tim4_start: .ascii "__UINT_LEAST16_TYPE__ short unsigned int\000" .LASF574: .ascii "_INTMAX_T_DECLARED \000" -.LASF947: +.LASF951: .ascii "CCER\000" .LASF40: .ascii "__CHAR16_TYPE__ short unsigned int\000" @@ -5129,7 +5146,7 @@ tim4_start: .ascii "__int20__ +2\000" .LASF655: .ascii "_WCHAR_T_ \000" -.LASF943: +.LASF947: .ascii "SMCR\000" .LASF829: .ascii "PRIoMAX __PRIMAX(o)\000" @@ -5137,6 +5154,8 @@ tim4_start: .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" .LASF744: .ascii "SCNoFAST16 __SCN16FAST(o)\000" +.LASF895: + .ascii "RCC_AHB1ENR_GPIOAEN_BIT 0\000" .LASF345: .ascii "__UTQ_IBIT__ 0\000" .LASF348: @@ -5199,7 +5218,7 @@ tim4_start: .ascii "__ARM_ARCH_7EM__ 1\000" .LASF428: .ascii "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC\000" -.LASF925: +.LASF929: .ascii "AHB1ENR\000" .LASF295: .ascii "__USACCUM_EPSILON__ 0x1P-8UHK\000" @@ -5239,7 +5258,7 @@ tim4_start: .ascii "__DBL_DIG__ 15\000" .LASF275: .ascii "__ULFRACT_EPSILON__ 0x1P-32ULR\000" -.LASF920: +.LASF924: .ascii "AHB2RSTR\000" .LASF672: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" @@ -5269,14 +5288,12 @@ tim4_start: .ascii "unsigned\000" .LASF381: .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" -.LASF906: +.LASF910: .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: @@ -5297,12 +5314,15 @@ tim4_start: .ascii "__ARM_FEATURE_COPROC\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" -.LASF901: +.LASF905: .ascii "TIM4 ((struct timer *) TIM4_BASE_ADDR)\000" .LASF95: .ascii "__SIG_ATOMIC_MAX__ 0x7fffffff\000" .LASF609: .ascii "UINT64_MAX (__UINT64_MAX__)\000" +.LASF896: + .ascii "RCC_AHB1ENR_GPIOAEN_ENABLE (1 << RCC_AHB1ENR_GPIOAE" + .ascii "N_BIT)\000" .LASF472: .ascii "_RETARGETABLE_LOCKING 1\000" .LASF453: @@ -5415,13 +5435,13 @@ tim4_start: .ascii "__ULLFRACT_MIN__ 0.0ULLR\000" .LASF652: .ascii "_T_WCHAR_ \000" -.LASF952: +.LASF956: .ascii "BDTR\000" .LASF382: .ascii "__GCC_CONSTRUCTIVE_SIZE 64\000" .LASF665: .ascii "_BSD_WCHAR_T_\000" -.LASF940: +.LASF944: .ascii "PLLI2SCFGR\000" .LASF277: .ascii "__LLFRACT_IBIT__ 0\000" @@ -5429,9 +5449,9 @@ tim4_start: .ascii "UINT16_C(x) __UINT16_C(x)\000" .LASF757: .ascii "PRIx32 __PRI32(x)\000" -.LASF955: +.LASF959: .ascii "tim4_init\000" -.LASF916: +.LASF920: .ascii "uint32_t\000" .LASF873: .ascii "RCC_PLLCFGR_PLLN_BIT 6\000" @@ -5491,7 +5511,7 @@ tim4_start: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF907: +.LASF911: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -5531,7 +5551,7 @@ tim4_start: .ascii "SCNuFAST32 __SCN32FAST(u)\000" .LASF523: .ascii "long +4\000" -.LASF919: +.LASF923: .ascii "AHB1RSTR\000" .LASF724: .ascii "SCNx16 __SCN16(x)\000" @@ -5541,6 +5561,8 @@ tim4_start: .ascii "__SCN64LEAST(x) __LEAST64 __STRINGIFY(x)\000" .LASF340: .ascii "__USQ_FBIT__ 32\000" +.LASF962: + .ascii "/home/alex/code/own/stm32-falling-sand\000" .LASF797: .ascii "PRIX64 __PRI64(X)\000" .LASF249: diff --git a/build/timer.i b/build/timer.i index 74f1085..2ba9e1b 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 "" @@ -2082,9 +2082,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 +2128,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); diff --git a/build/timer.o b/build/timer.o index e731214da19a61f4d65ab74f6402af0d8b146ae2..ef13007a9fb6e5ec660b6e4ea289dd4b14157fd8 100644 GIT binary patch delta 7344 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 XzPDD5X-dOnwsmT(4T~8V{)6NI2Jh%4 delta 7129 zcmZ2*kLk!ArU?p6OBQcbQfI91=U`xv6%%J*kkepb;9)=o%#3V#q6`eoj2ul23=GUn ztna)T7+6$g7#Nr=WxT;c>`Gw_49qO7*Z3J2Sd#P@7?}K}Q$aE;>~iW149py?d-XsR zd!_>e0|yIhW?l&cGYk8969xtrcS!~=24)ozdj4MnH+(D$P7>L~B2O@9#fJiu`{`Em+q=aKIj50Eq;Goy83nS;q(xIT;2b&wP%mdc!DB`RP+atEovaL z44g_HXn@(^v^7Bn#NG)u!A=FlW(1M-46{KL!+o&DSzxy}f_;1!?4bEdAf@Htz$^r( zgJf`uanuBfJAQVE^dA`r()JM?qtC!eObaX<#|skQ0Zu+sz#*p(7I_Y4dvkzf_kqoH1E(8y zF#8*r{SNGz1$rPgmEd%ATEUsn0WA9-oIV=CzL^6K zr$gW{^9P5)EpY5U2Zw~O8%VDWIKX|uIZMD6BvJ%Uyz*e{KQn>T|8sCGeg+%FZURzd zEC3>(frG9dEFu85OdG7S-2)`M5bRJ6aDX2Mre@2At;Sg5xX)EL#Q+WNWYybwVJON5R?Y zI@o$uuwPGsec1*U(FK$RI9osul-_L_atebc5sG z6`Wyif|FGuI7fto{apw)ZUR`=5}f`gfc?4{9HCO+>?aLo?*%8lC~%@?0H?MZP(rR} z2mzN$t>B<804EbkaNutN)e;QvEJ4na0$VT>EFJ_-8HwQddj$4J5?DMQoVZ%R9+(c! zFAQMQ9KlwGg7c0CIHZ4rMMA(4R4)tmy}2^Tnm^#=)(&>50@$EkV9Snz^YIgKFzy6r z)F5zZNr0`{15Tb2h9DE(f@LMZiSZgZZ!T#V4 z1{u)@E?)kFlUN$q$_wD)^B_2VYycO-r@*m(9~|JSb|77gz^Q~6Z0LG$xw!yrnj|bL*LQHR_k#Ue2u`c5;KV2lj`f@1Y&iuiVgOEJ(crS-4cLUc z;82kPSKpD~yif)9aV5A^umKleDc~r!2Nlot45r{jw+!qj0dQ(~1rCYRVDUR(KXrq{ zgAE)`%HY(H2sX$Z9A&cL)W8Z(Xh*;)JQ^H|7s1wVmItMeUto`kf+ONL*aJFXht^*K z$Nf!kvf2!;ideyhUI3?qGvF|A2d8Z{a2$UF2Ve_0@UMW?&(vXHU}IPW)|C|iV$ZS$ zk*EDZWIzyz6a;7Q(>5S>oH~d+tp_5z>%qo70N3R&RX{@f!7kkmDjXONfc=!G3KD+- zE(3OeeP(C{5)lLInhf?+7PxfV15Wcv;4~2c4zmD+yZeLKZhlQ1CyE~|N!^X~`9KMb<0Ghs;=Bgx<$!Xpv==Bi6;nXvm`VgFZK&S? z1)DZAD8}{vgR;_NCLK@$e#yiSa@rdvO;B3=%JdNw_&=BygS_^eDHxRA|1+6^w6!x= z@-Z;5&S0)T0ur6gyc$%*E@UcADvuAJiES81GmzFt9yi36ZpnFV_T+_XTzuF)*-c+k=vl&S_A*>Y7V2FtF)uwqamk(ys?~ zFxd>|MKUn38SZ9cU|=)q0fn@26Q}|=2?gag({rHMG2;UjY36pILf=9HRMuFEgK8nG zy`V(z90$rzUK*hA3i<^Km)Ossn9Vo@Dl7|?K+dmt0rFiV<0X(oI~YwsCe=@7Gy&N$ zo$)xR$Xdkc4=RJ!GKzpSY-0=p<=Y*MVAtznya)W#fDBCK$16iRM4XPhhPlAdr?RWJc>s;r99O-EdN<&_EJ)q&o z_7W7>{8vF$s?={#p{w{0l#=w{fC?hp`=B5Q-U%uLa&LiJK|PF8plDgfcpOyw?_rz? z%Ae;LO+exQh4BPvumI#Du1HWTMpPV>GbN+zK}lZvFDUjEeL(F6Rc(;8`dU!n=yHHa zLl%%t#`&OBWZ42L(rs-(xz0Wb6r3(cKsBuAVvq@bsh~s{?BN3Sfp`TdYGg$~<*l+N zDC=lm0oh^N0&=LmwF#)U@jMG^2?Ps+QgH+08&I-rWUK=POA})Ps1TXK_y$zu&t%L3 zC5c&#iXcN5F+KtX;9|xeP-re;ECiL2>lhnBLAIVT7G&fGMr}~~-@%vzqINQRfU1dI zjK4sUaD*`plsb+w);of@#~43=GWiw84vYnu@00#zB6WmLhA=(1E^MSW2yl)1KOEZg5)}wLO>3k##98V6Q(n*0a-tTX*(#~ zmod!)h17DUW%Zy$y@JUN)DYRm^aYdxwlggNRarZjwt!;w7?Uc1DII>lwp@J&j&eiDYGfaGaH$sK+fO9{0~%Y9b|3;6-9@b zXV`+wVPIhGX5s-E+{45Riqc-D08sq(F`W!zU|{WMiU#>|0#hp}kxpb%1*M}&Oglhs zp3L+Z)KHjG&!hxOMN^sjKxOJQCT5UJrZX)DDV@Po1~POe(^HU3W-)o{Gcd3%XZixF zKkqW7b1*Ql&0@Z%40VZ2I;hZ-KMpcoVLzxeP-Fm!=(T{F5cc4@Kc(fWQ zkYi?mLM@gLRH4T$2emDd4M5SH!Ur-Ubs8u>(= zEKpJ{hyjInp*AQ)OI$&DzO)Dwdu2yKsjPe_C?i&!0?AhD)PtI0)%QUS+8Sk$1+~jS z0a&*W6sz^;KqJCs6U(%4iAF)5drO)E{VPYyl&rSkj5E|^Fe81CSx`zP0V6+00qEo#_OPfp2wI53bOf(o*=mej4MI$v5=7!B)EuC z5#;Q}jK-jXVku(?C=i!1{sR?V%Nct?<uxlB2 zfhvY|jGmwpWR5<&KL@E{SL08UR2b7-H zF=>KqSkGh+>UM2pIt@zdo9dbFgXqmnO(3OPn5Kc0Ze z&IMT?6bmYDf**krbGQX4xks3Tiri=`Pzc8?0XZ~&38;Wbr~##sil%mUuKmlET8dSGd9tDMAl@JRw zl$hi}`el!Ul7O5OsDcKyju}`LWqc;DmeI`CVqjnZ)qIl~7#O}VFfar%GB7YP$}{l` z?qy_PU<4CKL1Nb!85o!!fW)4GhY@|$`-J57H6jCrKTuo8*Kig@>F2+ zXH#j$&0gkr7$@u6No_W;{L8Z0-EIN9rhZ0#ZmND_PHKgIa(+sxetvnLezIh-pH@~k|V)r*sOfoe~wMa8HwJP#(*CTFcvV`{0MJZYU8(~j!NyVj{O-Kd}ZXq}qGl0^&* M|3Q;1P|OIW0qab#LI3~& diff --git a/build/usart.S b/build/usart.S new file mode 100644 index 0000000..fdf12ba --- /dev/null +++ b/build/usart.S @@ -0,0 +1,6214 @@ + .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 = 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 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 34 + ldr r3, .L2+4 + ldr r3, [r3] + ldr r2, .L2+4 + .loc 1 11 42 + bic r3, r3, #48 + str r3, [r2] + .loc 1 12 34 + ldr r3, .L2+4 + ldr r3, [r3] + ldr r2, .L2+4 + .loc 1 12 42 + orr r3, r3, #32 + str r3, [r2] + .loc 1 13 34 + ldr r3, .L2+4 + ldr r3, [r3] + ldr r2, .L2+4 + .loc 1 13 42 + bic r3, r3, #384 + str r3, [r2] + .loc 1 14 34 + ldr r3, .L2+4 + ldr r3, [r3] + ldr r2, .L2+4 + .loc 1 14 42 + orr r3, r3, #256 + str r3, [r2] + .loc 1 17 34 + ldr r3, .L2+4 + ldr r3, [r3, #32] + ldr r2, .L2+4 + .loc 1 17 41 + bic r3, r3, #3840 + str r3, [r2, #32] + .loc 1 18 34 + ldr r3, .L2+4 + ldr r3, [r3, #32] + ldr r2, .L2+4 + .loc 1 18 41 + orr r3, r3, #1792 + str r3, [r2, #32] + .loc 1 19 34 + ldr r3, .L2+4 + ldr r3, [r3, #32] + ldr r2, .L2+4 + .loc 1 19 41 + bic r3, r3, #61440 + str r3, [r2, #32] + .loc 1 20 34 + ldr r3, .L2+4 + ldr r3, [r3, #32] + ldr r2, .L2+4 + .loc 1 20 41 + orr r3, r3, #28672 + str r3, [r2, #32] + .loc 1 23 33 + ldr r3, .L2 + ldr r3, [r3, #64] + ldr r2, .L2 + .loc 1 23 43 + orr r3, r3, #131072 + str r3, [r2, #64] + .loc 1 26 35 + ldr r3, .L2+8 + .loc 1 26 41 + movs r2, #0 + str r2, [r3, #12] + .loc 1 27 35 + ldr r3, .L2+8 + .loc 1 27 41 + movs r2, #0 + str r2, [r3, #16] + .loc 1 28 35 + ldr r3, .L2+8 + .loc 1 28 41 + movs r2, #0 + str r2, [r3, #20] + .loc 1 50 35 + ldr r3, .L2+8 + ldr r3, [r3, #12] + ldr r2, .L2+8 + .loc 1 50 41 + orr r3, r3, #32768 + str r3, [r2, #12] + .loc 1 52 35 + ldr r3, .L2+8 + ldr r3, [r3, #8] + ldr r2, .L2+8 + .loc 1 52 41 + bic r3, r3, #65280 + bic r3, r3, #240 + str r3, [r2, #8] + .loc 1 53 35 + ldr r3, .L2+8 + ldr r3, [r3, #8] + ldr r2, .L2+8 + .loc 1 53 41 + orr r3, r3, #832 + str r3, [r2, #8] + .loc 1 54 35 + ldr r3, .L2+8 + ldr r3, [r3, #8] + ldr r2, .L2+8 + .loc 1 54 41 + bic r3, r3, #7 + str r3, [r2, #8] + .loc 1 55 35 + ldr r3, .L2+8 + ldr r2, .L2+8 + ldr r3, [r3, #8] + .loc 1 55 41 + str r3, [r2, #8] + .loc 1 58 35 + ldr r3, .L2+8 + ldr r3, [r3, #12] + ldr r2, .L2+8 + .loc 1 58 41 + orr r3, r3, #8 + str r3, [r2, #12] + .loc 1 59 35 + ldr r3, .L2+8 + ldr r3, [r3, #12] + ldr r2, .L2+8 + .loc 1 59 41 + orr r3, r3, #4 + str r3, [r2, #12] + .loc 1 60 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 +.L3: + .align 2 +.L2: + .word 1073887232 + .word 1073872896 + .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 62 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 63 35 + ldr r3, .L5 + ldr r3, [r3, #12] + ldr r2, .L5 + .loc 1 63 41 + orr r3, r3, #8192 + str r3, [r2, #12] + .loc 1 64 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 66 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 68 35 + ldr r2, .L9 + .loc 1 68 40 + ldrb r3, [r7, #7] @ zero_extendqisi2 + str r3, [r2, #4] + .loc 1 71 9 + nop +.L8: + .loc 1 71 43 discriminator 1 + ldr r3, .L9 + ldr r3, [r3] + .loc 1 71 48 discriminator 1 + and r3, r3, #128 + .loc 1 71 60 discriminator 1 + cmp r3, #0 + beq .L8 + .loc 1 73 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 75 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 76 9 + b .L12 +.L13: + .loc 1 76 38 discriminator 2 + ldr r3, [r7, #4] + adds r2, r3, #1 + str r2, [r7, #4] + .loc 1 76 16 discriminator 2 + ldrb r3, [r3] @ zero_extendqisi2 + mov r0, r3 + bl usart2_write_byte +.L12: + .loc 1 76 10 discriminator 1 + ldr r3, [r7, #4] + ldrb r3, [r3] @ zero_extendqisi2 + cmp r3, #0 + bne .L13 + .loc 1 77 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 0x36d + .2byte 0x5 + .byte 0x1 + .byte 0x4 + .4byte .Ldebug_abbrev0 + .uleb128 0x9 + .4byte .LASF1004 + .byte 0x1d + .4byte .LASF1005 + .4byte .LASF1006 + .4byte .LLRL0 + .4byte 0 + .4byte .Ldebug_line0 + .4byte .Ldebug_macro0 + .uleb128 0x3 + .byte 0x1 + .byte 0x6 + .4byte .LASF951 + .uleb128 0x4 + .4byte .LASF956 + .byte 0x2 + .byte 0x2b + .byte 0x17 + .4byte 0x3d + .uleb128 0x3 + .byte 0x1 + .byte 0x8 + .4byte .LASF952 + .uleb128 0x3 + .byte 0x2 + .byte 0x5 + .4byte .LASF953 + .uleb128 0x3 + .byte 0x2 + .byte 0x7 + .4byte .LASF954 + .uleb128 0x3 + .byte 0x4 + .byte 0x5 + .4byte .LASF955 + .uleb128 0x4 + .4byte .LASF957 + .byte 0x2 + .byte 0x4f + .byte 0x1b + .4byte 0x65 + .uleb128 0x3 + .byte 0x4 + .byte 0x7 + .4byte .LASF958 + .uleb128 0x3 + .byte 0x8 + .byte 0x5 + .4byte .LASF959 + .uleb128 0x3 + .byte 0x8 + .byte 0x7 + .4byte .LASF960 + .uleb128 0xa + .byte 0x4 + .byte 0x5 + .ascii "int\000" + .uleb128 0x3 + .byte 0x4 + .byte 0x7 + .4byte .LASF961 + .uleb128 0x4 + .4byte .LASF962 + .byte 0x3 + .byte 0x18 + .byte 0x13 + .4byte 0x31 + .uleb128 0x4 + .4byte .LASF963 + .byte 0x3 + .byte 0x30 + .byte 0x14 + .4byte 0x59 + .uleb128 0x5 + .4byte 0x94 + .uleb128 0xb + .ascii "rcc\000" + .byte 0x8c + .byte 0x4 + .byte 0x6 + .byte 0x8 + .4byte 0x202 + .uleb128 0x2 + .ascii "CR\000" + .byte 0x4 + .byte 0x7 + .4byte 0xa0 + .byte 0 + .uleb128 0x1 + .4byte .LASF964 + .byte 0x4 + .byte 0x8 + .4byte 0xa0 + .byte 0x4 + .uleb128 0x1 + .4byte .LASF965 + .byte 0x4 + .byte 0x9 + .4byte 0xa0 + .byte 0x8 + .uleb128 0x2 + .ascii "CIR\000" + .byte 0x4 + .byte 0xa + .4byte 0xa0 + .byte 0xc + .uleb128 0x1 + .4byte .LASF966 + .byte 0x4 + .byte 0xb + .4byte 0xa0 + .byte 0x10 + .uleb128 0x1 + .4byte .LASF967 + .byte 0x4 + .byte 0xc + .4byte 0xa0 + .byte 0x14 + .uleb128 0x1 + .4byte .LASF968 + .byte 0x4 + .byte 0xd + .4byte 0x212 + .byte 0x18 + .uleb128 0x1 + .4byte .LASF969 + .byte 0x4 + .byte 0xe + .4byte 0xa0 + .byte 0x20 + .uleb128 0x1 + .4byte .LASF970 + .byte 0x4 + .byte 0xf + .4byte 0xa0 + .byte 0x24 + .uleb128 0x1 + .4byte .LASF971 + .byte 0x4 + .byte 0x10 + .4byte 0x212 + .byte 0x28 + .uleb128 0x1 + .4byte .LASF972 + .byte 0x4 + .byte 0x11 + .4byte 0xa0 + .byte 0x30 + .uleb128 0x1 + .4byte .LASF973 + .byte 0x4 + .byte 0x12 + .4byte 0xa0 + .byte 0x34 + .uleb128 0x1 + .4byte .LASF974 + .byte 0x4 + .byte 0x13 + .4byte 0x212 + .byte 0x38 + .uleb128 0x1 + .4byte .LASF975 + .byte 0x4 + .byte 0x14 + .4byte 0xa0 + .byte 0x40 + .uleb128 0x1 + .4byte .LASF976 + .byte 0x4 + .byte 0x15 + .4byte 0xa0 + .byte 0x44 + .uleb128 0x1 + .4byte .LASF977 + .byte 0x4 + .byte 0x16 + .4byte 0x212 + .byte 0x48 + .uleb128 0x1 + .4byte .LASF978 + .byte 0x4 + .byte 0x17 + .4byte 0xa0 + .byte 0x50 + .uleb128 0x1 + .4byte .LASF979 + .byte 0x4 + .byte 0x18 + .4byte 0xa0 + .byte 0x54 + .uleb128 0x1 + .4byte .LASF980 + .byte 0x4 + .byte 0x19 + .4byte 0x212 + .byte 0x58 + .uleb128 0x1 + .4byte .LASF981 + .byte 0x4 + .byte 0x1a + .4byte 0xa0 + .byte 0x60 + .uleb128 0x1 + .4byte .LASF982 + .byte 0x4 + .byte 0x1b + .4byte 0xa0 + .byte 0x64 + .uleb128 0x1 + .4byte .LASF983 + .byte 0x4 + .byte 0x1c + .4byte 0x212 + .byte 0x68 + .uleb128 0x1 + .4byte .LASF984 + .byte 0x4 + .byte 0x1d + .4byte 0xa0 + .byte 0x70 + .uleb128 0x2 + .ascii "CSR\000" + .byte 0x4 + .byte 0x1e + .4byte 0xa0 + .byte 0x74 + .uleb128 0x1 + .4byte .LASF985 + .byte 0x4 + .byte 0x1f + .4byte 0x212 + .byte 0x78 + .uleb128 0x1 + .4byte .LASF986 + .byte 0x4 + .byte 0x20 + .4byte 0xa0 + .byte 0x80 + .uleb128 0x1 + .4byte .LASF987 + .byte 0x4 + .byte 0x21 + .4byte 0xa0 + .byte 0x84 + .uleb128 0x1 + .4byte .LASF988 + .byte 0x4 + .byte 0x22 + .4byte 0xa0 + .byte 0x88 + .byte 0 + .uleb128 0xc + .4byte 0xa0 + .4byte 0x212 + .uleb128 0xd + .4byte 0x81 + .byte 0x1 + .byte 0 + .uleb128 0x5 + .4byte 0x202 + .uleb128 0x6 + .4byte .LASF989 + .byte 0x28 + .byte 0x5 + .byte 0x7 + .4byte 0x29c + .uleb128 0x1 + .4byte .LASF990 + .byte 0x5 + .byte 0x8 + .4byte 0xa0 + .byte 0 + .uleb128 0x1 + .4byte .LASF991 + .byte 0x5 + .byte 0x9 + .4byte 0xa0 + .byte 0x4 + .uleb128 0x1 + .4byte .LASF992 + .byte 0x5 + .byte 0xa + .4byte 0xa0 + .byte 0x8 + .uleb128 0x1 + .4byte .LASF993 + .byte 0x5 + .byte 0xb + .4byte 0xa0 + .byte 0xc + .uleb128 0x2 + .ascii "IDR\000" + .byte 0x5 + .byte 0xc + .4byte 0xa0 + .byte 0x10 + .uleb128 0x2 + .ascii "ODR\000" + .byte 0x5 + .byte 0xd + .4byte 0xa0 + .byte 0x14 + .uleb128 0x1 + .4byte .LASF994 + .byte 0x5 + .byte 0xe + .4byte 0xa0 + .byte 0x18 + .uleb128 0x1 + .4byte .LASF995 + .byte 0x5 + .byte 0xf + .4byte 0xa0 + .byte 0x1c + .uleb128 0x1 + .4byte .LASF996 + .byte 0x5 + .byte 0x10 + .4byte 0xa0 + .byte 0x20 + .uleb128 0x1 + .4byte .LASF997 + .byte 0x5 + .byte 0x11 + .4byte 0xa0 + .byte 0x24 + .byte 0 + .uleb128 0x6 + .4byte .LASF998 + .byte 0x1c + .byte 0x6 + .byte 0x6 + .4byte 0x2fb + .uleb128 0x2 + .ascii "SR\000" + .byte 0x6 + .byte 0x7 + .4byte 0xa0 + .byte 0 + .uleb128 0x2 + .ascii "DR\000" + .byte 0x6 + .byte 0x8 + .4byte 0xa0 + .byte 0x4 + .uleb128 0x2 + .ascii "BRR\000" + .byte 0x6 + .byte 0x9 + .4byte 0xa0 + .byte 0x8 + .uleb128 0x2 + .ascii "CR1\000" + .byte 0x6 + .byte 0xa + .4byte 0xa0 + .byte 0xc + .uleb128 0x2 + .ascii "CR2\000" + .byte 0x6 + .byte 0xb + .4byte 0xa0 + .byte 0x10 + .uleb128 0x2 + .ascii "CR3\000" + .byte 0x6 + .byte 0xc + .4byte 0xa0 + .byte 0x14 + .uleb128 0x1 + .4byte .LASF999 + .byte 0x6 + .byte 0xd + .4byte 0xa0 + .byte 0x18 + .byte 0 + .uleb128 0xe + .4byte .LASF1000 + .byte 0x1 + .byte 0x4b + .byte 0x6 + .4byte .LFB3 + .4byte .LFE3-.LFB3 + .uleb128 0x1 + .byte 0x9c + .4byte 0x320 + .uleb128 0x7 + .ascii "buf\000" + .byte 0x4b + .byte 0x19 + .4byte 0x320 + .uleb128 0x2 + .byte 0x91 + .sleb128 -12 + .byte 0 + .uleb128 0xf + .byte 0x4 + .4byte 0x326 + .uleb128 0x3 + .byte 0x1 + .byte 0x8 + .4byte .LASF511 + .uleb128 0x10 + .4byte .LASF1001 + .byte 0x1 + .byte 0x42 + .byte 0x6 + .4byte .LFB2 + .4byte .LFE2-.LFB2 + .uleb128 0x1 + .byte 0x9c + .4byte 0x350 + .uleb128 0x7 + .ascii "c\000" + .byte 0x42 + .byte 0x20 + .4byte 0x88 + .uleb128 0x2 + .byte 0x91 + .sleb128 -9 + .byte 0 + .uleb128 0x8 + .4byte .LASF1002 + .byte 0x3e + .4byte .LFB1 + .4byte .LFE1-.LFB1 + .uleb128 0x1 + .byte 0x9c + .uleb128 0x8 + .4byte .LASF1003 + .byte 0x5 + .4byte .LFB0 + .4byte .LFE0-.LFB0 + .uleb128 0x1 + .byte 0x9c + .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 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 0x3 + .uleb128 0x24 + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3e + .uleb128 0xb + .uleb128 0x3 + .uleb128 0xe + .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 0x35 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x6 + .uleb128 0x13 + .byte 0x1 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0x21 + .sleb128 8 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x7 + .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 0x8 + .uleb128 0x2e + .byte 0 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0x21 + .sleb128 1 + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0x21 + .sleb128 6 + .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 0x9 + .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 0xa + .uleb128 0x24 + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3e + .uleb128 0xb + .uleb128 0x3 + .uleb128 0x8 + .byte 0 + .byte 0 + .uleb128 0xb + .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 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 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 0xf + .uleb128 0xf + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x10 + .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 + .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 .LASF903 + .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.a17300cb822ec078eaa06c79bfd3d786,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 0x36 + .4byte .LASF859 + .byte 0x5 + .uleb128 0x37 + .4byte .LASF860 + .byte 0x5 + .uleb128 0x3a + .4byte .LASF861 + .byte 0x5 + .uleb128 0x3b + .4byte .LASF862 + .byte 0x5 + .uleb128 0x3e + .4byte .LASF863 + .byte 0x5 + .uleb128 0x3f + .4byte .LASF864 + .byte 0x5 + .uleb128 0x42 + .4byte .LASF865 + .byte 0x5 + .uleb128 0x43 + .4byte .LASF866 + .byte 0x5 + .uleb128 0x44 + .4byte .LASF867 + .byte 0x5 + .uleb128 0x46 + .4byte .LASF868 + .byte 0x5 + .uleb128 0x47 + .4byte .LASF869 + .byte 0x5 + .uleb128 0x49 + .4byte .LASF870 + .byte 0x5 + .uleb128 0x4a + .4byte .LASF871 + .byte 0x5 + .uleb128 0x4b + .4byte .LASF872 + .byte 0x5 + .uleb128 0x4d + .4byte .LASF873 + .byte 0x5 + .uleb128 0x4e + .4byte .LASF874 + .byte 0x5 + .uleb128 0x4f + .4byte .LASF875 + .byte 0x5 + .uleb128 0x51 + .4byte .LASF876 + .byte 0x5 + .uleb128 0x52 + .4byte .LASF877 + .byte 0x5 + .uleb128 0x53 + .4byte .LASF878 + .byte 0x5 + .uleb128 0x57 + .4byte .LASF879 + .byte 0x5 + .uleb128 0x58 + .4byte .LASF880 + .byte 0x5 + .uleb128 0x5b + .4byte .LASF881 + .byte 0x5 + .uleb128 0x5c + .4byte .LASF882 + .byte 0x5 + .uleb128 0x5f + .4byte .LASF883 + .byte 0x5 + .uleb128 0x60 + .4byte .LASF884 + .byte 0x5 + .uleb128 0x63 + .4byte .LASF885 + .byte 0x5 + .uleb128 0x65 + .4byte .LASF886 + .byte 0x5 + .uleb128 0x66 + .4byte .LASF887 + .byte 0x5 + .uleb128 0x69 + .4byte .LASF888 + .byte 0x5 + .uleb128 0x6b + .4byte .LASF889 + .byte 0x5 + .uleb128 0x6c + .4byte .LASF890 + .byte 0x5 + .uleb128 0x6f + .4byte .LASF891 + .byte 0x5 + .uleb128 0x71 + .4byte .LASF892 + .byte 0x5 + .uleb128 0x72 + .4byte .LASF893 + .byte 0x5 + .uleb128 0x73 + .4byte .LASF894 + .byte 0x5 + .uleb128 0x77 + .4byte .LASF895 + .byte 0x5 + .uleb128 0x78 + .4byte .LASF896 + .byte 0x5 + .uleb128 0x7b + .4byte .LASF897 + .byte 0x5 + .uleb128 0x7c + .4byte .LASF898 + .byte 0x5 + .uleb128 0x7e + .4byte .LASF899 + .byte 0x5 + .uleb128 0x7f + .4byte .LASF900 + .byte 0x5 + .uleb128 0x81 + .4byte .LASF901 + .byte 0x5 + .uleb128 0x82 + .4byte .LASF902 + .byte 0 + .section .debug_macro,"G",%progbits,wm4.stdbool.h.29.eb124ecb79face0a1d832a352bec45e0,comdat +.Ldebug_macro15: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x1d + .4byte .LASF904 + .byte 0x5 + .uleb128 0x21 + .4byte .LASF905 + .byte 0x5 + .uleb128 0x23 + .4byte .LASF906 + .byte 0x5 + .uleb128 0x24 + .4byte .LASF907 + .byte 0x5 + .uleb128 0x32 + .4byte .LASF908 + .byte 0 + .section .debug_macro,"G",%progbits,wm4.gpio.h.20.b87a0d07dd796043155f078de080ca14,comdat +.Ldebug_macro16: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x14 + .4byte .LASF909 + .byte 0x5 + .uleb128 0x15 + .4byte .LASF910 + .byte 0x5 + .uleb128 0x18 + .4byte .LASF911 + .byte 0x5 + .uleb128 0x19 + .4byte .LASF912 + .byte 0x5 + .uleb128 0x1a + .4byte .LASF913 + .byte 0x5 + .uleb128 0x1c + .4byte .LASF914 + .byte 0x5 + .uleb128 0x1d + .4byte .LASF915 + .byte 0x5 + .uleb128 0x1e + .4byte .LASF916 + .byte 0x5 + .uleb128 0x21 + .4byte .LASF917 + .byte 0x5 + .uleb128 0x22 + .4byte .LASF918 + .byte 0x5 + .uleb128 0x23 + .4byte .LASF919 + .byte 0x5 + .uleb128 0x25 + .4byte .LASF920 + .byte 0x5 + .uleb128 0x26 + .4byte .LASF921 + .byte 0x5 + .uleb128 0x27 + .4byte .LASF922 + .byte 0x5 + .uleb128 0x2c + .4byte .LASF923 + .byte 0x5 + .uleb128 0x2d + .4byte .LASF924 + .byte 0x5 + .uleb128 0x2e + .4byte .LASF925 + .byte 0x5 + .uleb128 0x30 + .4byte .LASF926 + .byte 0x5 + .uleb128 0x32 + .4byte .LASF927 + .byte 0x5 + .uleb128 0x34 + .4byte .LASF928 + .byte 0x5 + .uleb128 0x36 + .4byte .LASF929 + .byte 0 + .section .debug_macro,"G",%progbits,wm4.usart.h.2.c32df0bd7cfa17e6f790f44d3d6388d5,comdat +.Ldebug_macro17: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x2 + .4byte .LASF930 + .byte 0x5 + .uleb128 0x10 + .4byte .LASF931 + .byte 0x5 + .uleb128 0x11 + .4byte .LASF932 + .byte 0x5 + .uleb128 0x15 + .4byte .LASF933 + .byte 0x5 + .uleb128 0x16 + .4byte .LASF934 + .byte 0x5 + .uleb128 0x19 + .4byte .LASF935 + .byte 0x5 + .uleb128 0x1a + .4byte .LASF936 + .byte 0x5 + .uleb128 0x1e + .4byte .LASF937 + .byte 0x5 + .uleb128 0x1f + .4byte .LASF938 + .byte 0x5 + .uleb128 0x23 + .4byte .LASF939 + .byte 0x5 + .uleb128 0x24 + .4byte .LASF940 + .byte 0x5 + .uleb128 0x27 + .4byte .LASF941 + .byte 0x5 + .uleb128 0x28 + .4byte .LASF942 + .byte 0x5 + .uleb128 0x2b + .4byte .LASF943 + .byte 0x5 + .uleb128 0x2c + .4byte .LASF944 + .byte 0x5 + .uleb128 0x2f + .4byte .LASF945 + .byte 0x5 + .uleb128 0x30 + .4byte .LASF946 + .byte 0x5 + .uleb128 0x33 + .4byte .LASF947 + .byte 0x5 + .uleb128 0x34 + .4byte .LASF948 + .byte 0x5 + .uleb128 0x36 + .4byte .LASF949 + .byte 0x5 + .uleb128 0x37 + .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" +.LASF989: + .ascii "gpio\000" +.LASF592: + .ascii "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)\000" +.LASF78: + .ascii "__WINT_MIN__ 0U\000" +.LASF90: + .ascii "__INTMAX_MAX__ 0x7fffffffffffffffLL\000" +.LASF845: + .ascii "PRIXPTR __PRIPTR(X)\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" +.LASF514: + .ascii "__int20__\000" +.LASF901: + .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" +.LASF930: + .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" +.LASF902: + .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" +.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" +.LASF780: + .ascii "PRIXFAST32 __PRI32FAST(X)\000" +.LASF851: + .ascii "RCC_BASE_ADDR (0x40023800U)\000" +.LASF526: + .ascii "__INT8 \"hh\"\000" +.LASF913: + .ascii "GPIO_MODER_MODER3_AF (0b10)\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" +.LASF909: + .ascii "GPIOA_BASE_ADDR (0x40020000U)\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" +.LASF631: + .ascii "PTRDIFF_MAX (__PTRDIFF_MAX__)\000" +.LASF839: + .ascii "__SCNPTR(x) __STRINGIFY(x)\000" +.LASF202: + .ascii "__FLT32_MAX_10_EXP__ 38\000" +.LASF886: + .ascii "RCC_CFGR_HPRE_BIT 4\000" +.LASF683: + .ascii "SCNo8 __SCN8(o)\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" +.LASF1004: + .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" +.LASF917: + .ascii "GPIO_AFRL_AFRL3_BIT 12\000" +.LASF859: + .ascii "RCC_CR_HSEON_BIT 16\000" +.LASF596: + .ascii "INT16_MAX (__INT16_MAX__)\000" +.LASF503: + .ascii "__IMPORT \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" +.LASF879: + .ascii "RCC_CFGR_PPRE_DIV_NONE 0\000" +.LASF660: + .ascii "___int_wchar_t_h \000" +.LASF850: + .ascii "SCNxPTR __SCNPTR(x)\000" +.LASF306: + .ascii "__LACCUM_FBIT__ 31\000" +.LASF844: + .ascii "PRIxPTR __PRIPTR(x)\000" +.LASF639: + .ascii "INT16_C(x) __INT16_C(x)\000" +.LASF250: + .ascii "__SFRACT_EPSILON__ 0x1P-7HR\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" +.LASF894: + .ascii "RCC_CFGR_SW(clock) ((clock & RCC_CFGR_SW_MASK) << R" + .ascii "CC_CFGR_SW_BIT)\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" +.LASF888: + .ascii "RCC_CFGR_SWS_PLL (0b10)\000" +.LASF956: + .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" +.LASF979: + .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" +.LASF898: + .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" +.LASF435: + .ascii "__THUMB_INTERWORK__ 1\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" +.LASF872: + .ascii "RCC_PLLCFGR_PLLP(p) ((p & RCC_PLLCFGR_PLLP_MASK) <<" + .ascii " RCC_PLLCFGR_PLLP_BIT)\000" +.LASF302: + .ascii "__UACCUM_IBIT__ 16\000" +.LASF955: + .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" +.LASF557: + .ascii "___int_least16_t_defined 1\000" +.LASF878: + .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" +.LASF865: + .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" +.LASF893: + .ascii "RCC_CFGR_SW_MASK (0b11)\000" +.LASF916: + .ascii "GPIO_MODER_MODER2_AF (0b10)\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" +.LASF39: + .ascii "__UINTMAX_TYPE__ long long unsigned int\000" +.LASF284: + .ascii "__ULLFRACT_MAX__ 0XFFFFFFFFFFFFFFFFP-64ULLR\000" +.LASF938: + .ascii "USART_SR_RXNE_READY (1 <> 8)\000" +.LASF198: + .ascii "__FLT32_DIG__ 6\000" +.LASF899: + .ascii "RCC_APB1ENR_USART2EN_BIT 17\000" +.LASF884: + .ascii "RCC_CFGR_PPRE1_MASK (0b111)\000" +.LASF646: + .ascii "UINTMAX_C(x) __UINTMAX_C(x)\000" +.LASF912: + .ascii "GPIO_MODER_MODER3_MASK (0b11)\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" +.LASF969: + .ascii "APB1RSTR\000" +.LASF298: + .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" +.LASF393: + .ascii "__ARM_FEATURE_CRYPTO\000" +.LASF975: + .ascii "APB1ENR\000" +.LASF698: + .ascii "PRIiFAST8 __PRI8FAST(i)\000" +.LASF742: + .ascii "SCNdFAST16 __SCN16FAST(d)\000" +.LASF867: + .ascii "RCC_PLLCFGR_PLLQ(q) ((q & RCC_PLLCFGR_PLLQ_MASK) <<" + .ascii " RCC_PLLCFGR_PLLQ_BIT)\000" +.LASF934: + .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" +.LASF869: + .ascii "RCC_PLLCFGR_PLLSRC_HSE (1 << RCC_PLLCFGR_PLLSRC_BIT" + .ascii ")\000" +.LASF155: + .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" +.LASF960: + .ascii "long long unsigned int\000" +.LASF612: + .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" +.LASF150: + .ascii "__FLT_MIN_10_EXP__ (-37)\000" +.LASF890: + .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" +.LASF680: + .ascii "PRIX8 __PRI8(X)\000" +.LASF61: + .ascii "__INT_FAST32_TYPE__ int\000" +.LASF288: + .ascii "__SACCUM_MIN__ (-0X1P7HK-0X1P7HK)\000" +.LASF274: + .ascii "__ULFRACT_MAX__ 0XFFFFFFFFP-32ULR\000" +.LASF875: + .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" +.LASF936: + .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" +.LASF997: + .ascii "AFRH\000" +.LASF314: + .ascii "__ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK\000" +.LASF996: + .ascii "AFRL\000" +.LASF273: + .ascii "__ULFRACT_MIN__ 0.0ULR\000" +.LASF628: + .ascii "SIZE_MAX (__SIZE_MAX__)\000" +.LASF333: + .ascii "__DQ_IBIT__ 0\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" +.LASF744: + .ascii "SCNoFAST16 __SCN16FAST(o)\000" +.LASF1003: + .ascii "usart2_init\000" +.LASF345: + .ascii "__UTQ_IBIT__ 0\000" +.LASF925: + .ascii "GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADD" + .ascii "R + (GPIO_PORT_OFFSET * port)))\000" +.LASF348: + .ascii "__SA_FBIT__ 15\000" +.LASF661: + .ascii "__INT_WCHAR_T_H \000" +.LASF237: + .ascii "__FLT32X_MAX__ 1.7976931348623157e+308F32x\000" +.LASF553: + .ascii "___int16_t_defined 1\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" +.LASF991: + .ascii "OTYPER\000" +.LASF812: + .ascii "SCNuLEAST64 __SCN64LEAST(u)\000" +.LASF644: + .ascii "UINT64_C(x) __UINT64_C(x)\000" +.LASF316: + .ascii "__LLACCUM_FBIT__ 31\000" +.LASF717: + .ascii "PRIu16 __PRI16(u)\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" +.LASF454: + .ascii "RCC_H_ \000" +.LASF405: + .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" +.LASF923: + .ascii "GPIO_BASE_ADDR (0x40020000U)\000" +.LASF38: + .ascii "__INTMAX_TYPE__ long long int\000" +.LASF512: + .ascii "short\000" +.LASF948: + .ascii "USART_BRR_MANTISSA_MASK (0b111111111111)\000" +.LASF937: + .ascii "USART_SR_RXNE_BIT 5\000" +.LASF436: + .ascii "__ARM_ARCH_7EM__ 1\000" +.LASF428: + .ascii "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC\000" +.LASF972: + .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" +.LASF0: + .ascii "__STDC__ 1\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" +.LASF967: + .ascii "AHB2RSTR\000" +.LASF672: + .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" +.LASF882: + .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" +.LASF833: + .ascii "SCNdMAX __SCNMAX(d)\000" +.LASF920: + .ascii "GPIO_AFRL_AFRL2_BIT 8\000" +.LASF190: + .ascii "__LDBL_MIN__ 2.2250738585072014e-308L\000" +.LASF445: + .ascii "__ARM_FEATURE_CDE\000" +.LASF297: + .ascii "__ACCUM_IBIT__ 16\000" +.LASF510: + .ascii "unsigned\000" +.LASF381: + .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" +.LASF993: + .ascii "PUPDR\000" +.LASF836: + .ascii "SCNuMAX __SCNMAX(u)\000" +.LASF932: + .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" +.LASF877: + .ascii "RCC_PLLCFGR_PLLM_MASK (0b111111)\000" +.LASF587: + .ascii "INTPTR_MAX (__INTPTR_MAX__)\000" +.LASF935: + .ascii "USART_SR_TC_BIT 6\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" +.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" +.LASF876: + .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" +.LASF994: + .ascii "BSRR\000" +.LASF795: + .ascii "PRIu64 __PRI64(u)\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" +.LASF881: + .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" +.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" +.LASF987: + .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" +.LASF963: + .ascii "uint32_t\000" +.LASF873: + .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" +.LASF89: + .ascii "__SIZE_WIDTH__ 32\000" +.LASF871: + .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" +.LASF326: + .ascii "__QQ_FBIT__ 7\000" +.LASF928: + .ascii "PINNUM(pin) (pin & 0b1111)\000" +.LASF769: + .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" +.LASF171: + .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" +.LASF954: + .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" +.LASF908: + .ascii "__bool_true_false_are_defined 1\000" +.LASF941: + .ascii "USART_CR1_UE_BIT 13\000" +.LASF911: + .ascii "GPIO_MODER_MODER3_BIT 7\000" +.LASF799: + .ascii "SCNi64 __SCN64(i)\000" +.LASF861: + .ascii "RCC_CR_HSIRDY_BIT 1\000" +.LASF80: + .ascii "__SIZE_MAX__ 0xffffffffU\000" +.LASF1000: + .ascii "usart2_write\000" +.LASF819: + .ascii "PRIXFAST64 __PRI64FAST(X)\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" +.LASF966: + .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" +.LASF1006: + .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" +.LASF710: + .ascii "__PRI16FAST(x) __FAST16 __STRINGIFY(x)\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" +.LASF905: + .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" +.LASF887: + .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..a99d2e7 --- /dev/null +++ b/build/usart.i @@ -0,0 +1,2297 @@ +# 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_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_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_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 GPIOA_BASE_ADDR (0x40020000U) +#define GPIOA ((struct gpio *) GPIOA_BASE_ADDR) + + +#define GPIO_MODER_MODER3_BIT 7 +#define GPIO_MODER_MODER3_MASK (0b11) +#define GPIO_MODER_MODER3_AF (0b10) + +#define GPIO_MODER_MODER2_BIT 4 +#define GPIO_MODER_MODER2_MASK (0b11) +#define GPIO_MODER_MODER2_AF (0b10) + + +#define GPIO_AFRL_AFRL3_BIT 12 +#define GPIO_AFRL_AFRL3_MASK (0b1111) +#define GPIO_AFRL_AFRL3_USART2_RX (0b0111) + +#define GPIO_AFRL_AFRL2_BIT 8 +#define GPIO_AFRL_AFRL2_MASK (0b1111) +#define GPIO_AFRL_AFRL2_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 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_write(uint16_t pin, +# 64 "src/gpio.h" 3 4 + _Bool +# 64 "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 << 0); + + + + ((struct gpio *) (0x40020000U))->MODER &= ~((0b11) << 4); + ((struct gpio *) (0x40020000U))->MODER |= ((0b10) << 4); + ((struct gpio *) (0x40020000U))->MODER &= ~((0b11) << 7); + ((struct gpio *) (0x40020000U))->MODER |= ((0b10) << 7); + + + ((struct gpio *) (0x40020000U))->AFRL &= ~((0b1111) << 8); + ((struct gpio *) (0x40020000U))->AFRL |= ((0b0111) << 8); + ((struct gpio *) (0x40020000U))->AFRL &= ~((0b1111) << 12); + ((struct gpio *) (0x40020000U))->AFRL |= ((0b0111) << 12); + + + ((struct rcc *) (0x40023800U))->APB1ENR |= (1 << 17); + + + ((struct usart *) (0x40004400U))->CR1 = 0; + ((struct usart *) (0x40004400U))->CR2 = 0; + ((struct usart *) (0x40004400U))->CR3 = 0; +# 50 "src/usart.c" + ((struct usart *) (0x40004400U))->CR1 |= (1 << 15); + + ((struct usart *) (0x40004400U))->BRR &= ~((0b111111111111) << 4); + ((struct usart *) (0x40004400U))->BRR |= (0x34 << 4); + ((struct usart *) (0x40004400U))->BRR &= ~((0b111) << 0); + ((struct usart *) (0x40004400U))->BRR |= (0x0 << 0); + + + ((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 << 7)) == 0); + +} + +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..c1649ba2f90e364d1a0c489d0b4ec41913335e70 GIT binary patch literal 48444 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 literal 0 HcmV?d00001 diff --git a/flake.nix b/flake.nix index 7be6eef..557d069 100644 --- a/flake.nix +++ b/flake.nix @@ -16,7 +16,11 @@ devShells = nixpkgs.lib.genAttrs systems (system: let - pkgs = nixpkgs.legacyPackages.${system}; + # pkgs = nixpkgs.legacyPackages.${system}; + pkgs = import nixpkgs { + inherit system; + config.allowUnfree = true; + }; in { default = pkgs.mkShell { @@ -26,6 +30,7 @@ pkgs.stlink pkgs.gdb pkgs.openocd + pkgs.stm32cubemx pkgs.gdbgui ]; }; diff --git a/src/gpio.h b/src/gpio.h index b632b1b..33ef79b 100644 --- a/src/gpio.h +++ b/src/gpio.h @@ -13,10 +13,34 @@ struct gpio { volatile uint32_t ODR; // Port output data register volatile uint32_t BSRR; // Port bit set/reset register volatile uint32_t LCKR; // Port configuration lock register - volatile uint32_t AFRL[2]; // Alternative function low register - volatile uint32_t AFRH[2]; // Alternative function high register + volatile uint32_t AFRL; // Alternative function low register + volatile uint32_t AFRH; // Alternative function high register }; +#define GPIOA_BASE_ADDR (0x40020000U) +#define GPIOA ((struct gpio *) GPIOA_BASE_ADDR) + +// MODER register +#define GPIO_MODER_MODER3_BIT 7 // Bits [7:6] +#define GPIO_MODER_MODER3_MASK (0b11) +#define GPIO_MODER_MODER3_AF (0b10) + +#define GPIO_MODER_MODER2_BIT 4 // Bits [5:4] +#define GPIO_MODER_MODER2_MASK (0b11) +#define GPIO_MODER_MODER2_AF (0b10) + +// AFRL register +#define GPIO_AFRL_AFRL3_BIT 12 // Bits [15:12] +#define GPIO_AFRL_AFRL3_MASK (0b1111) +#define GPIO_AFRL_AFRL3_USART2_RX (0b0111) // Alternative function 7 + +#define GPIO_AFRL_AFRL2_BIT 8 // Bits [11:8] +#define GPIO_AFRL_AFRL2_MASK (0b1111) +#define GPIO_AFRL_AFRL2_USART2_TX (0b0111) // Alternative function 7 + + + +// TODO did I intend to remove GPIO, BIT, PIN etc below with GPIOA, GPIOB etc? #define GPIO_BASE_ADDR (0x40020000U) #define GPIO_PORT_OFFSET (0x400U) #define GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADDR + (GPIO_PORT_OFFSET * port))) diff --git a/src/main.c b/src/main.c index 82c27f9..fc69843 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 @@ -76,8 +77,10 @@ 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 @@ -90,6 +93,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..045b533 100644 --- a/src/rcc.h +++ b/src/rcc.h @@ -114,10 +114,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/timer.c b/src/timer.c index cb794d3..0bec1bd 100644 --- a/src/timer.c +++ b/src/timer.c @@ -18,5 +18,5 @@ void tim4_init(void) { } void tim4_start(void) { - TIM4->CR1 |= TIM4_ENABLE; + TIM4->CR1 |= TIM_ENABLE; } diff --git a/src/timer.h b/src/timer.h index 18eebc4..3b386de 100644 --- a/src/timer.h +++ b/src/timer.h @@ -29,8 +29,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); diff --git a/src/usart.c b/src/usart.c new file mode 100644 index 0000000..6839f03 --- /dev/null +++ b/src/usart.c @@ -0,0 +1,77 @@ +#include "rcc.h" +#include "gpio.h" +#include "usart.h" + +void usart2_init(void) { + // Enable clock for GPIOA + RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN_ENABLE; + + // Configure PA2 and PA3 (USART2 pins) to use alternative functions + // file:///home/alex/sync/org/stm32-sand/stm32f411ce.pdf#page=48 + GPIOA->MODER &= ~(GPIO_MODER_MODER2_MASK << GPIO_MODER_MODER2_BIT); + GPIOA->MODER |= (GPIO_MODER_MODER2_AF << GPIO_MODER_MODER2_BIT); + GPIOA->MODER &= ~(GPIO_MODER_MODER3_MASK << GPIO_MODER_MODER3_BIT); + GPIOA->MODER |= (GPIO_MODER_MODER3_AF << GPIO_MODER_MODER3_BIT); + + // Set pin alternative modes to use USART + GPIOA->AFRL &= ~(GPIO_AFRL_AFRL2_MASK << GPIO_AFRL_AFRL2_BIT); + GPIOA->AFRL |= (GPIO_AFRL_AFRL2_USART2_TX << GPIO_AFRL_AFRL2_BIT); + GPIOA->AFRL &= ~(GPIO_AFRL_AFRL3_MASK << GPIO_AFRL_AFRL3_BIT); + GPIOA->AFRL |= (GPIO_AFRL_AFRL3_USART2_RX << GPIO_AFRL_AFRL3_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_clock / (8 * (2 - OVER8) * USARTDIV); => + // (8 * (2 - OVER8) * USARTDIV) = f_clock / baud; => + // USARTDIV = (f_clock / (baud * (8 * (2 - OVER8))); => + + // Target Baud rate = 115200, f_clock = 48MHz + + // With OVER8 = 1 (oversampling by 8) + // USARTDIV = (48E6 / (115200 * (8 * (2 - 1))) = 52.083 + // mantissa = 52 + // fraction = 0.083 * 8 = 0.664 ~= 1 + + // rounding fraction up: USARTDIV = 53 + // baud = 48E6 / (8 * (52 + 1)) = 113207.54716981133 + // error of 0.1% (115200 / 113207.54716981133) + + // rounding fraction down: USARTDIV = 52 + // baud = 48E6 / (8 * 52) = 115384.61538461539 + // error of 0.001% (115384.61538461539 / 115200) + + USART2->CR1 |= USART_CR1_OVER8_8; + + USART2->BRR &= ~(USART_BRR_MANTISSA_MASK << USART_BRR_MANTISSA_BIT); + USART2->BRR |= (0x34 << USART_BRR_MANTISSA_BIT); + USART2->BRR &= ~(USART_BRR_FRACTION_MASK << USART_BRR_FRACTION_BIT); + USART2->BRR |= (0x0 << USART_BRR_FRACTION_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..c44a0ad --- /dev/null +++ b/src/usart.h @@ -0,0 +1,63 @@ +#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 <