From f6d210b67abde8b630681cdb8b972647181cd6f4 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Fri, 2 Apr 2021 04:23:30 -0400 Subject: [PATCH] minor update --- driver/tests/tex_demo/color.h | 7 +- driver/tests/tex_demo/demo | Bin 270800 -> 270784 bytes driver/tests/tex_demo/kernel.bin | Bin 7644 -> 7644 bytes driver/tests/tex_demo/kernel.c | 3 +- driver/tests/tex_demo/kernel.dump | 989 ++++++++++++++-------------- driver/tests/tex_demo/kernel.elf | Bin 20760 -> 20760 bytes driver/tests/tex_demo/palette64.tga | Bin 12332 -> 16428 bytes driver/tests/tex_demo/utils.cpp | 22 +- 8 files changed, 505 insertions(+), 516 deletions(-) diff --git a/driver/tests/tex_demo/color.h b/driver/tests/tex_demo/color.h index 319ccd9b..708565a3 100644 --- a/driver/tests/tex_demo/color.h +++ b/driver/tests/tex_demo/color.h @@ -62,10 +62,7 @@ struct ColorARGB { this->value = rhs.value; } - uint32_t toRGBA() const { - // swap B/R channels - return (this->value & 0xff00ff00) - | ((this->value >> 16) & 0xff) - | ((this->value & 0xff) << 16); + operator uint32_t() const { + return this->value; } }; \ No newline at end of file diff --git a/driver/tests/tex_demo/demo b/driver/tests/tex_demo/demo index dfc9944fb309411dd9c2e6566e95c697623de168..9f9bfc7a48e4a6b82c3cc159ecd2e5314875cae7 100755 GIT binary patch delta 78480 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%0A2L^ z#Wjj|giFVYFMk8c65N*)6$p`I7w1>X?8=#$t z_R+`G2JK9=zkVE+MR;d1{)M8OoEmguueeR7eCnubIDsMLKgEg zGgz35VCsL346lR52mJgDT#Yc>B#z<%Gnsc7ym?iBrr554vWC;D}P{K}Qu%tvE+}Z|oM0$3b^%lz>`#R3XJ9T48 z5&A4Vx1-N!&%#n_XP=H;6`F$$V99*d9Oi4Pi)wajiIsX_xdXN;pyJrT1__e10%UXd zc26)>TmqTa?)N-2W+rZa4fwMK=5J6%MbifkgSQOO6{Z2{y(MXy5Yxw2_-9(jjL~@Z zCAIp`w4Sv^jjcz+&_7SfQ6*UE1||paCUaR0mpxQ_7pY3*lEUzJc>Y|L&Vu>Yx%jFq zpP!zK$C}>!&Rl$s?#|ukv7UGtI(!~01b1Z~W;zG%FrW4Dw7i_E(_c?7uBhJY1oP?h zSsi=Jmq&Ozwr4&&!;bT*3s?sv@%aK4Wp6nTs?(Qi7UFaCFkX8hzK*UEser^S_!|q^ z%ldi@ZSw8@ExLUII(?nb(9VW0MS7P|5|v~v1M&BhSRa095gYDf@fA*ab2QP3m|Rj2 z9?Y9AW|37>8n>9;MML#1W*r^LFDqC5^25a}iq+%yidhCS7_$U*63nxguu_*V(Jko& zREipl{*BkOOIUAIThBLG=PJ6`F?bix55K{hRtnqCg>W%?J`!+GZGyp4AVjse$fsHq_^2vzH}L0DLw^9yFL0d zN|Mbs^e#HEWRmz&Q*!zM)n;QWpTMNaVQFJEM{j?H`6f&OX7f*~nNvsoxA$J{O;&sI zT#OyUunL)e`O`OV9lzm1kEe$$76akS3+tvbNQ9#Usie_R?VDQ%}rHXysOdb zzO){0luO&mI~IX9nGGk1EW`7cea=6_qwP5+KB{*ZyVBx1_bMa-;K%*QDo8xuGSS4E>pWNIQrS*mD7 zHIG!uRXr9Z3fmQ`?F~fl_C_NiIw(Y##Kde$)mJs%C~OIk?2T$hRA*IEENVH`>S+!2+6Ay>v{{y%L_Usdh*?L{+88>L6MY11 zvsc)DSZOQfkoSc2vr4JR#HWA&P}TMu=Q1wFwa6F z@v>?fbt+QhJguftXB}?bP&Ek}95&lj^JyEZCZWzEs^(ZV4XYBzW@FVj>bk`1Z>*Yx zy85V&imREM>$S<-sKN`?H0H_`8qc?@CSk5zXsWb@xn70&nri0edKH?R)imbH6`ES_ zR87KMx$WPnnuNJth538c%+2*GG*7B&%#|xN4d1Prgt>D2zFRd3bG-`l!_~~GUj4q{ zC7W3Q*KVrnh$`2jX;V!@m21(wSxrNg3(cWTtWot&YcUVpTr~-*T#F{ZnuaP@)l_jr z^{RRg;7_ZWQ@vUoC2y&k1XZp@Gpm}0D%YYpTTMfiYtguFt?G>`*P`iOO+z)TYW(@y zt<0x#7oSR>jNap?wz4`^gySH*!7H}1wx<7&*XQ9=3ve6|PcP9mCHqa`NqBQX!7q(J}mY^c)dp;Fq!viXnOSdY5)#I$PKx7pO88@k`rTL(`f%=BE+LA@i;U zzmi)%Wu-%z$aAK&m2Fvo=iQ-{wPYNB(7(?dRAi;g6@1YWgA%I-nv$#2!rKX!j@UFM z=cl>V9|&zBoikCbxGC^!JB&V^)s(a^GP%*wm+f$x)iovM)7Q&!8zOn(o$d zVI@0zy4&E^mF)cKZgg^IJ5P@0%X4-KZl=ne+J%pt@A5mla3XP^+w5kc^+YRlxV4NN zt~7;jOoRUpYSx#T!pBo1nAxSK@bE{&6B(EAJRttD(j6>@4=rQ<2GMvBmVKCWZBqi^Isdx8= z&UjA(cO_78Qa+}Pg$v*61@`TbmRX~z8eCvs3g?)jwtkH73xzcD#E1Iqs)rSzG-L1+Io5qvhZ3b*1>U%+-tj1l7dO?taZ~+` zqbx$)RQJYB^&>}FjYPVs?p%Sm-nF#w`<`vLv*Tvj*#LG+i(E^SHVtCH?Mu^68RBuxI}*CBn!zEN#YXuWV9OMv_?i55sX|h%BJK)SId3XtK}pZ zKsI$n0?3u*t6nXq0!$~3$gdCGy!NH5<$X>ux>`Q>6borCYG5v_iw1SRKvg1YU>;jZ zf*&DJYXDcv8$e(OXR(x(L`qB4KnZS}KRksR_?A0-V!mzetKK%J{LZH+O+?N*^Sn=R zM_!Z}x6S$DPf!DNuiTgJmG1_Jd*z?QMBFR)RqvHko*LN0N1MvhsrSk$b6KPjc~MJ8 z_sXMAo9~sALF=@3@Q-`t`+A*b-!YSV7nz!uCH~`xPAKjo+l#x%_TnzGy|{~PFYY4S zi@V77;x4kixQpCay^Gvfy^Gvfy^Gvfy^Gvfy^Gvfy^GxV4pNrV?2i~EX}A3uR72~= zfAZa*GF$8Qq-FJQfPt$&Cjn2*(?mHgenNsqv1?!K+(~u6jI&OUWqOLh@Q9ZZ^A$ zo6ThHkcw!5#ijtzNuBE9g^;+}yoFf0+3YHAHVc++HoJLU3PXAm!0#8pCN8LySDCyf;SPDke!NH zB3eG0Zm&Ac60~z0>FaZ+`C{garoS!VRKh&!K~DELoVXb8;%^H$ z(H-Q%bF8tRE?_u)j{AVS&f(TB-N11Ah0%@UBKWpLf=p~+#2*WAddBF+F{K(})kH@d z5oeRgkQ3drqFhSN#EoNJ;YKinKaYfjh0{%A-K;Y;K<7d{2tQp0?T%E<9Nl<$Vv`}B zV^J|T($8dcFIl(fLq70x7UoWuhkf+f<6ZF=Pefvl(>A&Rac>${TN5JE=!?r%c! z9L{9OblK!fRpi{}HxWZ8tnzm93S#Kmu|9tS5BLH#VYy{I#1d0o^&|(XVtsoJisVp? zbA5f=ogkfOz|4^@8S6LgL3)w{HIsfMWzTsHbjftdST8Oa4@WjmLUfiqkEJ}RN^!|J z2mDPaOm|3Y5?Z=tte-LlGrZs1U?kMXwwB;XtiMyu>SieLABHw=aiNc6}D}~SvW&Q3B{BLARM|Y9+ zxQiTco&|}!$f74WZ$^bT+s)gZH{V6pm(#dl&fDRu7QT94aUL&e=`OPVVH7E9`LqE2 zON^lDF7p4W?mNJ%D89aTXYUO+$t49+NC=Qnk`QWu1PFrEP^CzbrqUEdS^yP6y%Z@* zkw_VkNH0o}A`$^bKoIz&APQ1M0TooNsQg6*{C;Q3Z6rRCO5Tog%#QMT;Y`+gjfFIxWX$t6kfR{3b_aWRh0;@>>#{ywG((9q3kfkfLF$1 zhlV6`G8m^5v#4Ma0hogUU>=N&%*W}A@64hd8iTpPjhhKDPe z&jOcuiElvQA~>=`!jXUL4Ux`RtoZR?);q2O$x?9SBqY}&5|w7Ip>C6Oz>%LvN=wl0 zb<_VN=wCwxj-!^qDGvl~sHPj$&!SU;8Gy>|PMQ*^>>!}>W9}G$%6zdqMrh;%C(XpF zQ+h%q(8%yy=Sd0Gaevgue_1W+ej`%w5JoxXlqoUF4uw&E0-O`w++^NH+;!dyY_S;Zop~i76Un-GTOGuXnLg(-#WL!fzMkVrI32DN6 zIX`sbxI(h}S(uw7G`g=D!2Y1!hyTSsq^c$33dpsTPt9NnbAA*FS(U_qhW+hkgt;ke<3$3Yw2`E>78?D@m6DpWiP{w5Qw>MCM(5qHb z0-cvb7{<_RmY}iB+}9DiDPm?OWe+uN7pWSVH1dX8HnFVBB+y-`!&V;>%(!=7L?qbe zScgcTD9j=r#{Xhppan)(K?}7#!!ys~#moIKU@=J3j3xN9inx9tu1JD9hQ`^pzk>JO zh`bAb_Ib#J(+iEawON7XH<3TXpD#URLhOZBv~AlA&qr#z4ibykRfrViDz=52jfcca z(<}{IqNa;-@*d~BXiZveq=@Csff^k7 z+^kw}3gm??FxPF6qzfRqZ9>dgjZ!<-AoohM#%#$_zPvkk70MlY*0y%BB((s^lbh;m zv?b(v2qD)iox{C*a6V$Y%nrQ$IlSvZIQ9^UW4{}0XDE9~o_)?t&LHSI)%AvtNMVfv zx*h`PdPT`{R|V|$JlLVN;FtO1%U0WglANO!sV385XMTGMr5qnGqfG=LH9DQg(4WW$ zo;MR~H<^nj9keZ8CA;*35RSw2XvUIOMx{#4RQqBc>i_9IeD`@X9-pJQaNaE0TyJy~ zr<03DAd}qjpev)))Fmh})trVqjhgZ_S|Dmg5zih*MPBcMS*8gA;)4Vrekt*3!BU>o z1Oeim5)e-b=e+r(CQ9?o7ewO@Trd+{lU8Ekv#K=ab`2BI<8^T%R&l;7wcyFnUHtN< z#MWpI0K9p#wHWl!7{fGdgrtA03HIQ?X3~XGjS%nVgdxal6vz8zM4*dA@zFZy{TZ%-!8y6-mij8X9_{=ZNGMx!dZwfd)C4Wauk}ibbM+eeSJP->iL6Fpk2w!gs zd_7UUD1@)S@r7ABitzOnDg*>pCGQ&$SdIK(^ozXumu6HnAwMfNxQfn-CD>-gyJ=%H z_6YCwrCCLS-z(Pr870ONTC`%u$HXY}h)bV5TfY?Gck?Tt5d}22;(&>8mazoQtvJxb zKUkDO(A#R;0b2vsnm1vIzffPJ?kVQwoSLO^pX4hTrTjY`ZE5{mP4 zUzt$?lUuRD6aHEnifT7@S6f(o^b($M(TwULb=0IPO7_-~Zw|6T?0Tl4+bY(5pK2+! zyw0O#ap^6A&%P)CwW}^FKy9Ur-k4s7{EF;Y74pw6DnMxyKmyc?XsIEH4hEl$(lG*+h7zDwPzg|5 zX#@dkDH<&SwUtJ{iz0&Q7=cQU(Lz0nj_4$>Vt6gk1)w%CBMHf3iV)aPOcAh1f~DV0 z_qbWf!T)nf0cry!ptdqpRs;WwrBL0IE_27%3Q!x^Z8Wd;wF1-z_6XtazE*(R!28eh z;a{8OE6>L5dy!gy7!p3!Qq0qoMB5Zb675C=j;_sje66syffKg#&%ZWPfwc|$2Cy=M zUxiRp5+%Yhq&rDGK6P+t1w$B zRYh9~vz1a!w1zNSDK$h@2(y)vE_6hgt(3Y#8HCwNsVACCn5~oy(E`G3r8FlE2NPy1 zB~wUfiXkzNtmsaPH{poVYX5_3lW6bO6ejlpW+FZ%_<>;*-9Bf9f95~ z#d}@`MAXS2zl?K>uk$6Bu`pW3cU?AHy9mr0Li>B6jym|8C=p(X65*970n>>RFdeO6 z(Xro0gJ;aVbOFQhJ#^e5e}M|S}7d#*N_u56hP=B zxEPkoXMYFll(=Wor{SbCZ>vXa1l4BLrXKwrmvyL_mJuvr&nu7;EMdM!a)TnJoD%m;*YQpXd#3B;1O*Xs19Jy6seb>V9yk3oY0@-+61Llf`UC0rDKAEJyWE6!qGlpbC_k(hkX(rQMl)d zhz&|OMI@(~nvO_NuxG0O=mZ6OE)5A|5)|y2Y;1hOym;h^Hp!kQCMei*3ZzX+P_X9= zM5ZOA@ZvuR*mL_I%%l=;Pbb(jX)M(7AaaHc=Tm<$JH;u0Gxd1sRJa&26!Q#}X@n*6 z-+sVHCtl_$KMH_z=8pp4{OpfdW|@+HVI!oKHyh;bhu|FapB{tetk z?ZH%oPu+Y}10zNvq=|CXj{=1B(VyK2>C+fYD%a6vh`eFbIJ;t|$4G=Ui7=cJAx+md zXM5i1iW%KY0-`A?%qaoUbRFT8fM~id<&=PEx{h;7Kr~&)J0&2RTt%|;MhI?}$T-xx zrV-KwRf&0@zk5aCp?|*u2e6Ju{eoZ)Py0pSq5J$I@X%v_G2=1IUi1r4e%tvrVyVSX z`~uzF;8zhiCG45n*DIYT{9=}jzJ&XtCm`wcDH&5!(M4s^|& zf)z(yx}yyz;a}70(Y3=#_}8>XbRFg-{A*fsx-R7;{A*eZx{h}e{xvO=u9KaFe@$yi z*EOAle@$ye*Y%ujAvmoyT{m_T{57o&UAJ-){57p@h6|C7PQt&YwIfg2$w~OvwDxp; zuaoevX&vdhvy?vF(v40I~HtjznV3NqpSzW@6&=-J$G` z!b6-xvPpm76E7mjHcJsswjSYR5Bx50vN6~2#hY6E!E0t@+-|sxdY!F-;LOD+ZBl*2 zA0w<7pM6b$We;D&;hO}Otv7^a-UT|<-{=slc#Jd^7Pp!;k%e+x8v)JpzGstv6x{Ot)D>%^7om$Nh<0dJAuW z!1Xmm)Eh@@mPMMyd1R=+f1T39;>iSZ&6rAJk_qIRF-=?&$Tj0RaY-Q82C<~M+T~Hpz2Ka08p#B5 zZBTj}I z0InIutTmJ(ZpWC8eEbbFqFPUC$%|CkPc%(3G$oX4#y0j1B@2Z#eS+_~VMf97PTc_3 zE1WxSni=i4Wf{g@)v1)y4tio9>Y!(_!Gv;cm?&ne>t|uJuqMZ3HPrDQ3W_0=Yr`c} zW-b!t@IC=oM$C3T`=&yW^G!=W}SvNFQ^Y*y3>7}K`^J+4nIVDH^ta(o}3Ffo}nDZz&&S)`a z1j!mfU``8Q&UrgnGlk_8bLz;`AP3dNbi)V|Sk54U76TuZ;L%mu~MCYd#vx#=J4!SZ2 zo4P>+>a^9pw?%W*o4}s7AOd^Zf(XuO!<_wzC3tvi+PXaC7Sq*R%zXtE(^FKY-#WLH z{@zj^@{(eT%GgC^?4mMum#B>$wYdkiF>NERxW#07iy8ILV%$>pZXqepq~ey6nsIqc znINTjRl^k^>){sgh-l69EVqCe!LU!Q+F3$?B?LG`I~*dvL*#d$83RQ#7HoFsU+A5G zk$-*{-eaL&@d&skTCnPOw}90%z54bQA;2d3*6|P3_(L?~^@c6A9=3W*+2)o4`}-#` z%{G%d_hh-n?4?D!*2X>|#*~$DYoNc#^ZqJ#o)5h9994M;Ym7#_V2h--IMM2p=iHf2 zdH35Hkx5##BS>XcIgii7)Xr`tW9)E_UP-SGQE`TI)dpPKt0CFp?7SM+0lkqP<{YyS z*Tv{M!dZF)+HZGIq?8dtg@-yQ_d;{k8cbm9_TckawpaQNx0pTRFI<|=jUd>sU&OVM zL`?RmKS4EzqMT9qUo5>hC_@I~3qJNOwN_y*g+y~Y{wyMD6Hra+3Gv4$(JOd1MEpDf zz4dV`J|T=%EgO)HlpO|YoP_n6EelPm1ivKUowiE+!6=qq_7lprqY893E-#*=q2L)P zc-C`#DIhPNtN`#VhU2mCIDsN6w8^8aJ;lINVjJ-^+k{8MdGRy~0ngT#iKp6DygK2- z6AWFT&Z0j1a){^TD>&q-t#?_9N0b#chj^}`herAEIHerX_8(s)p8AV%Y<6BeqO2Z* zr{#JKi0!<~QgTGw_Xs^-f(C}?#Utv|QSbz#b?@fIBii0#E!F3)1?0lK%L?+Ua~Z+Y z73T10UOb}CQ(h%GALHhECodjR=by;ncJxP|mZZ_hZ5ygAQRi0Buzkl2^y$F7cto9N z%_pAMP~uJ>9{6GEuls}1r~MZZ&!6b`P)uh$WhtJ`#4`-{o_)s{XsLf*Jmtc{6Cvb` zK&^7~;_2aJ>0#fKZJb#L`?&_5;+^;sCrd3GC2ILHtf5`UJZcac3F+78QVk|U`%ClU z5t_{sJSTBS{gxMx(CmMN<;6oItvcmVmeA~6!SfrmpOY7l&}_8O{sH)&pM7|Wd0E4M zMNju%jwj>ydY7emg!Zqlqjs4nYe8N-r2Vjqxko)jBylkWr20QzXawxHK7w@tZkFb&1D8;_R zLS3KEi$~bVMBL5x9mQTZjAME6z((qp5oXj7CQ+$t9z_Y)@Un0*m0|i%=EWln<}M+p zG@A86UOd7WR=q^k*$T5s=$1!WLOuNj&t`PuV|noiV>q^j9g#0=!iC{u{)@ zF@}`6&$}$eBUD&V@R%#`K0{tSLWO+<&$T&*u|F>!y3NW?-$Z2Ckp$k37l}I-DSQuE5Y9$%{wm@Uk$m z_o3~#eRynMH`HC|1^bS!Xjgbo@3It+xS`s?0PQ<2Y{g6UdGQE6UtLN(TcD-wdGUz0 z-xQ{L8huf`R~}_iyCT1Yqqm=F3LUlwPw`H}v8Pi-j_w=8NDz*KmiuJ4WOLBuv=RgM z<3_Nb`2bE$?DWvfIR<=tSbacox(;#**iHytJDnW{ zB0aQI2}DAi-&4V1lsU|qmHS2vD{nT>9*>D3Qd-k#D>rVuK7v=LEwTdyt>ACzULx{E&gAgtyO-ad|1aS3@(C;>{Ij<%{*89f^Elu6IQ zS@v+FEWM!8K*~T&DqP^D)ktSVaPS$0IyaSLzyURmq{#(91Ca zs_veyncg3D_dsl*cj{VM%qUq*cUg>zb+pI?oTHTmuof^v=Xl*=mFdkcwh%)3ka$)u z@ROz3;6dzrJ~y5{iBF}5B(N%M-+R140&6Tzy&*YxL1l6Rn-#DZ+Iiq1KH)htf>$fg z%Cb4{@p};BjhrFnS-j8~Uel4)>Ju@B=agrqS=;ycc48{SPnBoAS^RrEy#i}y-sEE| zu%^iRb_FJn@=--`W#Xu!la*MCIP%A>%^;W57&?u|Brf z$66C!MzjHwxx3e@wj9yBR1_KOy$o02dK4FXd0H~7j-%}dB*XX;`3uR6juqON%yJ?K z21_q-;J8Y7r#|)ZVf!K6d;y&^sxoU18-KGh>ngyqlB@JkI$$U+g~y9ms41EHe(Nut->nd%j}J-;GP`3hxe$0?mC)nPTFZ_DTmmo=IO)m<_=&1LPKgXlX_ z)OeTmC=KtsL3N>94C`@-w7w7+{WlcMWgtO>?@`#y5X z1cYYyZbo#!jBa(Y8fbw1fG{VZrrA35sQsWcsmAv0yU{BAM##Wm4{UA#`r*}C!aD4G zc1r?gWa7utNZR}B1-T=8V?JU>wuo4F`?tG!LI#WHPgiGAuH(C8jxn-ctZy z<k&zo$|XI)uPf!&60z>~ zP45WhxiI2U(*-x;ez5Ud zthj@+wS4q^pCT7X&*OHHo)cWO4>as8soPYy4JSOFziwG!b?dEK*FSiOg6ekKztpX_ zYP)F0;cGZUZrqY3*6Ij+%j%2$Pxj;_fE50XoLqvt%bS&NvmQEo4WlLo2C0-tMvs%E|AG?+%8R)_Out}O1XEree2b6 z-nw=Am~4?wzHZB8)3IDBqRE%rx3*RGwBxZp$iif!smUT+(eNS1PuF=;zVvxo7g%YoX^_ z{zKTm_6L4?{kL;1@A&}vgHAN3y`XfEk6yo3u^>VkbKbya9@BA?4r`sYK#zK^R<>PLn6uCg|He<8U zZ2&!1ue_0GH}PJ6`5J1Gk6m-%$^O-5m!C2VJ9g2~bsBqW^z+iCSbpg_!39MxkTUI? zgfizhV>Z{d4N|aY@OpV_{)SqlgV$}X6Z~{rn8C}vPI%=tse^nR>?TDnkc0j3HR%NC zy^RCw{dHU7x%_o|=Lau8-4@B<^@Osoe01wl-f(tyqy4zPoB|= zwhr&?9?U`CeFC`wUhvIA{|PKPfdBXS-Yo(z!bT4SH zPxm%dU)|Dt4R7}>>!#8{mQ;oRW?{fOnSP%p%gw_1Vv9y^7Uqap zcYBR>Qn&O%Rm`h0hiBoHH8X$RI>G#ZO1E+yc6)Z~*6kssgCSaZz8kT}6uCfy*VR{r zZte6U+E=`N8$7RZKlSppQ<@eOnJ#Z@AJ)%KrGLFWUFxmExvxkada2UK2jnPvfpoe1 z71CwAt1P{-cX_px{HN+9GbegB9#hjxE%dgz)Z`iY(C-!X{P2u?B)C#NKm1fim#XK7 zDw?C7AD)#|JbTwF46dpFZ!~?|7;I!2LD<QLjAfz+LMSwZrSv|Q|rrFD+4)Rg!LPai+TDLEgCQI+MuUaDI zdba*fEb!JX4OO1S6nWY_2d>*0w{FX1TM1|Ce&{MyeR~rrw{PvbRO(=a4D^IwKOMYZ zkqfk#n!Hr%maqViES3U2x^44P{<`oC)xCa+^d=_%hZVhzrpw8{T;1!*znr9s z$v@$6e#Ko)KhOO1A>8?%`KhlD&3AtKzc%^zvqy)r$3jj1SKtn$pVyp<=BL^o*D3Np zO{s#9=+^{~E|N~PT4$UkfEP~b=b2NTfzQZKxeT2Drv|9PY)iYH=tyN?euKYO?pQ@G z(BS{lOFX+boaht`^Yrr!P8~3Z@aWY6nrGlI(!uGroaoQZX>#fw_zN>Qxt(abvMs;C zNk2+yq{sytoE}~%ZI+;OtuZ~NpJ#yDhiPwqx-HTH>b3@cKiw8)fO6aHA4&&)1C-XS zsm!lH160Zasat{^M$DJG^*G!5EA!W_6U=wkANc9ENOn>8DINGZTdmvo75Sf>t=rfB zJYVXTpql6A`s?;J>?`DFw?(?ES`>C$m|a!3-M)YoJN@#}Em!0M>2~Klsat}$uE3TR z{XG7*!kYYbd*>Hges+7X5R+E7ZaXXc%E#aKQse^p+eveUZUYD#{P2t19N@i)?D4S0@kA^?FHqz=g#Y>lK|kddc85^BFnmGjARjM4SbO>v$O{yIQF;MFpBuA9 zKCjvA#C7@W_Rh~{{d8L-v)N5b2Y$0zZMbhLa)D;Er)EnpK&btrvv{9D`FjCc&;FnC z0)^cdq!$5PFGzdx(xs0Vn5yUnQs$Z$q@mLB26OOentq<)YRGHeh8h6c|IqT_wx$A4 zwJ5UXfqS@WHcP0$8&^ncT5YIp6}dpe)u>rgw{$E-w;58dXL&#`ZFwB5uWs-B^1x5G zMY22yQ1<0De0l3OM3DXy!H*)&bc^*GqZTl3fLonH_5>9#QI0r#`QKFYrGSq}_S$XT22SuUV!YmHly8Th{NbX6t-iFPnLT1Y;!MpGk?7n>B8W) zwqyO=L17jK?(NvOl@7cnv)+2$ugC?O%U+x;ZI+IrIy=cIr4I7Z?Oa7JkZ!j=D|JgpcrBeM<$8v(=XQGQ)&{a?op9%eF-NA)I-xMbm|M3U zm3`$ijCEJ!0u5v1CrRDX(PslD`0MuOTlwp@NFUMMmfia4wlI%q+`5fW_LYxr;}p3- zx@|sD>Xwd-OByeA>zN~r!T}qeHJGp6-uX3{pKhlKGrqkYM7M5FDjnoAM>wa*1)3u` zCJ5cy>8QQSyyH0Um$7|yS)}u=+uDuw(`Bnd=u$7iUUEru@=~SG5^TAm7f6?fT|$?9 z_fy!7-44(@{X7$c`}gE;sCRy1;HTUonHW3*fI9v18N9L-xj=(g_A{hhyzD}UIqrE% z3ce--oD(=}uX@>q4k(g41^@rP>E2t}4(9FRr`~j@4J`4p%K$}hr0Mcy7kPG*e%VF7 zltHR@(Ak!=$4O?7JzD#`?a>0+GvMbtnfhOQ*+tIy-R}+P$yA|Uc4@54CLeojrO5we zkHJUuc|wEmT`?GBv9feL=*wgIh4I+FBCG{{itK;T0{;nW;VLSuMLlILowbDtyw4?d zo~FIABG=bsX@K9x_7-O?DXfLm6e)X|Ihuz|WTjnK$4D%SJR^N=iu}Z&slL<~zLkJg z0c?F!94)pVmu_|%$ZfZ0q zTNF00zgtH10bIJ-#od1k`{R|}?3q67G+f=PfTJ#tejoGUCwFoyf46dO@hg4UL-J&= zGuqAmu@8H3H@nMQVL!o&RBy9`xO6v`X560InDQ%;;cFjuv#0v7``Vsn-!{w5-p9@E z!mV%fH9pNxU*%D?dBM$3?7p_A*%x{myUT~&*Y-5~m(_*zmUQR*;KN@m&&EE08(7sQ z?hr2Bx^W10{?%k}W0Dr8Z&qDqb}P4xu|6_ug; z>+llKu`10(ZymG9p2mSmegq?2_>Ti3HQSRas z9dTE596yh;s|jnUEacTDqO7m*B4tFD)}Ab@dHLz+iU)Xm1ku81t}s$>t|#XiK6^UO zg6_pvPiIZcB>oNM$mS6-A5SRQc_rK z3Ju1mM@l|VWsmys)7_={X*8av_&t>^dCa@A((mzOGf~;jBl(q?-j!8ePPClH-f$(% zQ`tp6!lVO~nxet?s9G<2_|N(9OAjddzXAWuTlgz{3xDm8y(?Q>@?UuYm2EkKhtKw| zY@j5X*{~@ZbuA^#(@i^lgejX6{50(D!33Iqp3461!>`Ot@YA^Kx`n^laqr41GXsBF z)?_$O$o8(RvMC{qM%f#~WZ|C59`+HYY)bIcD7#bfdny}x!n<$>#KC3-KMk`_-ooG6 zhhLdl_=~7)-C;cSMeoWgn-aokyuCV9R@PJar#`}zO$mM)a9_WLzuYI@m1SO)r2#kV z7XJP|{L0J{=Ag2zhw>(KyemsK6>)@5n9ItfRK@t3poAsMI>WVG@ex+s!*A~d{y+JV zIV{TKT>?FH9yXWR66X(*k_Na1x=wnxhU^Lz$e7C#5{D^XPvP(R@RCi*$|fXc-ojh_ zl($^6C*81%sAxIGpX9Db7ax8yF~x7E>B3H)I?uadWKy!8Wm0ISFy~Pz$WzxZeB_Zy zDR}`jjd=7?zI&dx=E;V11)l^%vs(m?IPKjaGAqqbbB)rs@aOvQlUZqgnuz>17zy}! z6mZjrpUg`0)12gkTlia?@vaY z-j*0P+>c8fBW;OqcI3z-6}IBQg@Hts(M_)M{YH#%x#R0yBST*^j95qswEAGEp&!da zQo!PJNTl%O!tD`_GDBcR3ri1^g@c@dd1U=Y*BG9x#5Z?6OVj{#-_8gP)m` z{u!EoV>U6-mnyC7Y2&0~9+HX~KTayq1u5wR$b`3~z^S#zFJrSXv6A z6C_j4IH`+?qzfy1={S3*hh=#iR1c6cCQ0VG~|TPB-X^+8$Ovvj-TXXdp2TsJd9HuIaYvYCLo$9F%U<4qX!>I%l_n;vL$ryk{I#*{ zetz^Nd<|g`|A~U>JaiGh$T4m#ueOLifUgbASi};O9!K}sw@`!VCixBmbgYjwv~y%= zyZPxwtWV%+ke@}udEPXKbuz!`36vKVmN?%~CS0yUd+CnPr%!%`yU+F3Q?%n9m+M`D^Z9AF;NK zKX`(bZtqAqX)v1^usFa`{tzo)68{{BSW?Msb$y8?mjnZQoc>r@2SpIRLj*&Av7&ZZ z9lKkpjuKV}$6Zz`Uw48nwAQlf{LlgRY2u-$9o;_xs~PaHEj+-w_RMTsfHlozmCd`_ zIH-1Z)b2cQb&`FE9*8-`s>F>OEA?jmWSUl>V+XTqK5QlSIfXAu%pS*=eaUK@Pf;|6 ze|CyRvh7dv)Gt^qcKI1T;d2(pXP;%!nEPj+W@W@R8!&+gwb{~%GCVs;W+*;chK;7k zjN{MX+ZCgxdZe&T(`1hCpY!6tTX~`!V#fk;*{8akIWr|U-rW@y!WT3|n40a$!0>v% zyOwOl9GT#zG3G)k``4Gen3Hp)TIzhxqRgs%{O7u6 zk1Qsx+HBPl8D3Z_bC*~yLmZspZW0@_(krrIm5d0bUglTMu^Q%AJmEa6!(v|b;%mRw z!^d!n8N}5w*GuWwHpmbs9C}K5V3Sv5&Sr|#W=FS3PGhSKQ{V7ndU%^xWKpinaq>;c z>Db{##7Xu-@x$Jd;gYw#h{tz%Mev0Y6kLN3`-%;Y$=svNj~6p{vQlJw4%jHZW^&~# z*cm=@;<(7l(ML}zUu5TE>g`qR3!PvOAogIe}C3rO!(KVFMXe8 z^w(@GK4$aN*DQ*@ZBy(URx`HkdrHcIKy$}MR*l3sAqL;e>GTcjS8AW8|7f9<5M8Oy z`QdM%;qT{v3t0gNc&TsMJ@kp8f#0%L44)<1{4J}Ww&{S9{b`{27K@_1ArSqMPF`V| zjzKIX;v@?sS}15K2YI>6EHXxasmbD&IY~B-vbH|R@43uk*w}-)gDx{xCSdgNds{Yb zlKV(8Yei^oc(nCFSc$gvn++c_d}I?4(j}QM?P5jc{+MJvY|9-~)w=#f>`tw_eX@pj z6^__9=a?B46x>NB!?zt-YIO@5r+nMY(fsC0tD8&vx>r@Yc5>%b{JaYPdQ!@{u0ri# zbojDzI6BnNgLJ4Lsp(KXzjPV;LFVOWWC1!%8ZYBI)NeiLP`_cKL;W_74)vQ;I@E8d z=}^86=<>W4sNcNQp?=F%hY8bVg>O(?wcws3? zGYlQ-b8mFmY=xxj5C=Gk^4%vn>Ep6=s81Zz;a6*<03GV1^K{rAb2$3xa5||v{I@G81>QJAEtV4bJv<~%2-#XNXs_Rf6Ua!MNu3TB5{$has zDuWL7$1il)aHr(g;jp)4T!;FLIXcu|D$-%#Zpp7h)?yFewam)Q&>nlR^4vO{q2fA> zQ0_*D_*Pb<<<^uG?ZVqAx(>%EccjC&_wggk;fHpqbolZ{E3Bx%wfkkoZt@#zt(LJj zRWx4tY#rjWX0yQV_VsfVU5EIH+N^a}daU;KpDVf!zkiSKqWs^h^Z@0+bqK$IWQCO& zR9B_L|Nltw0V=-f01sJdMfK3*fgS*Ks6Vf#L+$)^s6PX!!?6ctvvqiwPk7BL$>Rge z_}qvMRu{8xbL^G)|12ZS=#yu9xG@`>Z~i~aC}C{E+Qt8886}N_JZq0tGWYCjRs>^% z4(0x`$x3vv_z!bqw_872{dTL>Abf@RH4erc+6cL2uW7kT_uu3CSfw`^F7xaCSG2$| zsTs%k;J2+z^8>#5Z7bU4zuX__kj43L8_ZGZ{@V}lsPso4mBl5?!1zw3`|p252TJ)n zB|mSu%L;e-Z@LUuO#YiUIV#W%c&(Y>->~ zZ@Ipt$Su`YtnT5%D&2p-_l8P8z^{-v|Lx{Jv`B-2we{PE&Q|IEd)<3g`cd9#H^ljG zwO0(0;yRD?ZF5(Z?!V7JMWvtSn@ODiV}@@PxyLA9aiv3LG5*gu?osLIc=#SGI<}0O zO|@2<--Nq>8vF2Q-gJ*u-P}hvV+}U@Bffl(HH%@nQ){pF0K>BC#l2Q_%oX`w3Nai1 zg+k0$%fD+?kJU2(4akX%FpTmLi`Bzm&}n)8(!18Z5TG8QpI-#X}#FrsC=3<;ItYrtOycDIwlKdEv zo0h>rduVe&b(!8!k=qM$>jfZ_N}^lJbo8V6ZBpra)}{-+rqcJe^X0F?`yR5Q&H6Iv zA%d9EWu@>x6?17Nd@kPu=9o>2%v86d)5Wg>ze41+ax%A`wdi+G@kZKzK<0{EPqiBs zC4TSlP9VFEDzYAt$}4iS`lOFg!+-pUi^uaQBgR;&b{63n#jgU=NkMwb;o%Akk1R73uf5@Z2-1#nHJ->=e-w~-0WRr=#drw;Ys?OY_%6_dex zuC#)A)?p|r7)_@Z=&42v#Z!kb139&!A|Gon)0LeVBUHMcWd5nLtrpp0-cV#c>(8_|!Q5K`;U?o%wx~p{eio=wIrARM<)nUojTNQ_%jeW0jex}k-wUPn?eOibh2 zWPZU$sTjqtf{{EMWb+BZl{!fY(JOeh^f4A9Jsf*9^}=vtdHq)LD6Mc9b;j zILq(^*knvsMP97#DpW=M#`8`@-VAcMQObx{!X1kI7N0=m%PRM!mNFgf7eAN|$f2txpZG&dqSEzRR9nh7LY(=x3`%nIBh;`8PoWrRvi?sa%ZS?_gYll{gaR$hAuJu`g=CN zLUr2313$KExX!BF{>n3I$kOzB5spIq;#9icPtqd#QB2vexQaiFEic zp8K&CZXV^EKSq_l+ndsVS?ZH)8Zn*bnK#&803@9D46a-#?dBy58c^ zm8ik9j>81*$IwNZ)r-dv)z)m4t{3Ur1kNBm3>M{oCtc#lATGvUONvYGAmxNAado(P z!is*Vha%5YE!jz?mQa>x~3t4 zny2>$w15v)y56|b%_~($^4Dr7C91%vr_%M7f%ep0Rk~hl$Eu2qMtTW!andJNc+57% zq_^#KVK;fFPv8NPVC+=Kk!@t=eo96Qm9F>3bdS#Dn~}|2E`wbnaGg`kdS_2FC#6f_ zdP7W?JzS;hMZCVFW~+3)*zc|?^Oj2YKakv3SIBRQkK0R5t+CpYVEAk1UX`wQ>~uw6 z;>%9LfYvDT8<|p^UTJ;DkAZCe9pre?!SFJtkWjIn>hUsn;fmC#cVl%+pVb`ZV%`^7 zVy-AgyK>0rC-DpB*&wIZ7n8~mqwyh`tZrtbHPT7G-d)z&`tvKuW=;}8>yH%IapjO7 zP{My#>3Sas@?wOp$G-~14NDbAK2uJ?&_Sd(9fv(*UF+eBDu#+I?A2kGshO=o#e!~+l7<#2H@ zcVQXZ0cM8szVWuYfm1KbF0ap*A!_0gZoKVoW^CZG3ARRoyU$ocb?bQF1W+I43lnTf F{|}J3z3Tt~ diff --git a/driver/tests/tex_demo/kernel.bin b/driver/tests/tex_demo/kernel.bin index c45a9ed50d6e06504963afe370ee325ec80c693d..8ee38e84adf585c458b044ddd6423ecdf12577e4 100755 GIT binary patch delta 331 zcmca(eaBjOIx7Ri;Lx*4ije|W^9-o�Wl8ko=EV3OXzz`(rx zD0A~NR%Yg9uFRX+pE9v8b!9Q`_{MbktN4Y>UzZ9PbDUsE=3{4TU&hK3%)szryE;Qd z`vUg6!5`QJnwPgS2e%0*Oy&SNhJhiuiJc|*yQsirb_RvX4;Wq5UcC4PvI8WS&A`e~ ztjh2QL{C=)`l_+Zswy)a|rW^X2WCPw$k*(}CDaz0BvYs;+3?d_A5S)*lLW(jk8 z&NAlw>7cA8$e^q=kwG|8(;=CGlS!DxW%6uRWl@ldPOu788OhCWSoa8TUL$G10sz*< BWLy9M delta 304 zcmca(eaBjOIx7RiniUmUdGOM~U3X6&YRet^do`GTF?8A%>lj9kcH!v_T zFF(rMyo{BZd6_HoX7;B{?aNqM*q6GpTxMtZaQXW;0ppHuOqaikU%32rsem!Z35H}g zcDC*63=QlH*zYzkZ)Kj$!N3sA#-Jb!bWm~wJ4^6)R)NV+7+o1(P1a(P;XL?FoROhk znDO9detile_height; uint8_t* dst_ptr = (uint8_t*)(_arg->karg.dst_ptr + xoffset * _arg->karg.dst_stride + yoffset * _arg->karg.dst_pitch); - float fu = xoffset * _arg->deltaX; float fv = yoffset * _arg->deltaY; - for (uint32_t y = 0; y < _arg->tile_height; ++y) { uint32_t* dst_row = (uint32_t*)dst_ptr; + float fu = xoffset * _arg->deltaX; for (uint32_t x = 0; x < _arg->tile_width; ++x) { int32_t u = (int32_t)(fu * (1<<20)); int32_t v = (int32_t)(fv * (1<<20)); diff --git a/driver/tests/tex_demo/kernel.dump b/driver/tests/tex_demo/kernel.dump index 70d6d534..b03f2f87 100644 --- a/driver/tests/tex_demo/kernel.dump +++ b/driver/tests/tex_demo/kernel.dump @@ -6,10 +6,10 @@ Disassembly of section .init: 80000000 <_start>: 80000000: 00000597 auipc a1,0x0 -80000004: 23458593 addi a1,a1,564 # 80000234 +80000004: 23858593 addi a1,a1,568 # 80000238 80000008: fc102573 csrr a0,0xfc1 8000000c: 00b5106b 0xb5106b -80000010: 224000ef jal ra,80000234 +80000010: 228000ef jal ra,80000238 80000014: 00100513 li a0,1 80000018: 0005006b 0x5006b 8000001c: 00002517 auipc a0,0x2 @@ -18,13 +18,13 @@ Disassembly of section .init: 80000028: e3860613 addi a2,a2,-456 # 80001e5c <__BSS_END__> 8000002c: 40a60633 sub a2,a2,a0 80000030: 00000593 li a1,0 -80000034: 5d0000ef jal ra,80000604 +80000034: 5d4000ef jal ra,80000608 80000038: 00000517 auipc a0,0x0 -8000003c: 4d450513 addi a0,a0,1236 # 8000050c <__libc_fini_array> -80000040: 484000ef jal ra,800004c4 -80000044: 524000ef jal ra,80000568 <__libc_init_array> +8000003c: 4d850513 addi a0,a0,1240 # 80000510 <__libc_fini_array> +80000040: 488000ef jal ra,800004c8 +80000044: 528000ef jal ra,8000056c <__libc_init_array> 80000048: 008000ef jal ra,80000050
-8000004c: 48c0006f j 800004d8 +8000004c: 4900006f j 800004dc Disassembly of section .text: @@ -41,13 +41,13 @@ Disassembly of section .text: 80000074: 01f00493 li s1,31 80000078: 00151513 slli a0,a0,0x1 8000007c: fff50513 addi a0,a0,-1 -80000080: 3f8000ef jal ra,80000478 <__clzsi2> +80000080: 3fc000ef jal ra,8000047c <__clzsi2> 80000084: 40a48533 sub a0,s1,a0 80000088: fd551073 csrw 0xfd5,a0 8000008c: 01442503 lw a0,20(s0) 80000090: 00151513 slli a0,a0,0x1 80000094: fff50513 addi a0,a0,-1 -80000098: 3e0000ef jal ra,80000478 <__clzsi2> +80000098: 3e4000ef jal ra,8000047c <__clzsi2> 8000009c: 40a484b3 sub s1,s1,a0 800000a0: fd649073 csrw 0xfd6,s1 800000a4: 00442783 lw a5,4(s0) @@ -96,7 +96,7 @@ Disassembly of section .text: 80000150: 04f12427 fsw fa5,72(sp) 80000154: 04f12223 sw a5,68(sp) 80000158: 04e12627 fsw fa4,76(sp) -8000015c: 1d4000ef jal ra,80000330 +8000015c: 1d8000ef jal ra,80000334 80000160: 05c12083 lw ra,92(sp) 80000164: 05812403 lw s0,88(sp) 80000168: 05412483 lw s1,84(sp) @@ -107,8 +107,8 @@ Disassembly of section .text: 80000174: 00000793 li a5,0 80000178: 00078863 beqz a5,80000188 8000017c: 80000537 lui a0,0x80000 -80000180: 50c50513 addi a0,a0,1292 # 8000050c <__stack_top+0x8100050c> -80000184: 3400006f j 800004c4 +80000180: 51050513 addi a0,a0,1296 # 80000510 <__stack_top+0x81000510> +80000184: 3440006f j 800004c8 80000188: 00008067 ret 8000018c : @@ -116,502 +116,501 @@ Disassembly of section .text: 80000190: 0305a683 lw a3,48(a1) 80000194: 0345a603 lw a2,52(a1) 80000198: 02e507b3 mul a5,a0,a4 -8000019c: 0405a687 flw fa3,64(a1) -800001a0: 0445a507 flw fa0,68(a1) -800001a4: f00007d3 fmv.w.x fa5,zero -800001a8: 10f6f7d3 fmul.s fa5,fa3,fa5 -800001ac: 02f68833 mul a6,a3,a5 -800001b0: d017f5d3 fcvt.s.wu fa1,a5 -800001b4: 10a5f5d3 fmul.s fa1,fa1,fa0 -800001b8: 00c80833 add a6,a6,a2 -800001bc: 06070663 beqz a4,80000228 -800001c0: 800027b7 lui a5,0x80002 -800001c4: dd07a007 flw ft0,-560(a5) # 80001dd0 <__stack_top+0x81001dd0> +8000019c: 0445a507 flw fa0,68(a1) +800001a0: 02f68833 mul a6,a3,a5 +800001a4: d017f5d3 fcvt.s.wu fa1,a5 +800001a8: 10a5f5d3 fmul.s fa1,fa1,fa0 +800001ac: 00c80833 add a6,a6,a2 +800001b0: 06070e63 beqz a4,8000022c +800001b4: 0405a687 flw fa3,64(a1) +800001b8: f0000053 fmv.w.x ft0,zero +800001bc: 800027b7 lui a5,0x80002 +800001c0: dd07a087 flw ft1,-560(a5) # 80001dd0 <__stack_top+0x81001dd0> +800001c4: 1006f053 fmul.s ft0,fa3,ft0 800001c8: 0385a783 lw a5,56(a1) -800001cc: 00000893 li a7,0 -800001d0: 20000653 fmv.s fa2,ft0 +800001cc: 20108653 fmv.s fa2,ft1 +800001d0: 00000893 li a7,0 800001d4: 00000513 li a0,0 -800001d8: 04078063 beqz a5,80000218 -800001dc: 1005f753 fmul.s fa4,fa1,ft0 -800001e0: 00080693 mv a3,a6 -800001e4: 00000713 li a4,0 -800001e8: c0071653 fcvt.w.s a2,fa4,rtz -800001ec: 10c7f753 fmul.s fa4,fa5,fa2 -800001f0: c00717d3 fcvt.w.s a5,fa4,rtz -800001f4: 50c7d7eb 0x50c7d7eb -800001f8: 00f6a023 sw a5,0(a3) -800001fc: 0385a783 lw a5,56(a1) -80000200: 00170713 addi a4,a4,1 -80000204: 00d7f7d3 fadd.s fa5,fa5,fa3 -80000208: 00468693 addi a3,a3,4 -8000020c: fef760e3 bltu a4,a5,800001ec -80000210: 0305a683 lw a3,48(a1) -80000214: 03c5a703 lw a4,60(a1) -80000218: 00188893 addi a7,a7,1 -8000021c: 00a5f5d3 fadd.s fa1,fa1,fa0 -80000220: 00d80833 add a6,a6,a3 -80000224: fae8eae3 bltu a7,a4,800001d8 -80000228: 00008067 ret +800001d8: 04078263 beqz a5,8000021c +800001dc: 1015f753 fmul.s fa4,fa1,ft1 +800001e0: 200007d3 fmv.s fa5,ft0 +800001e4: 00080693 mv a3,a6 +800001e8: 00000713 li a4,0 +800001ec: c0071653 fcvt.w.s a2,fa4,rtz +800001f0: 10c7f753 fmul.s fa4,fa5,fa2 +800001f4: c00717d3 fcvt.w.s a5,fa4,rtz +800001f8: 50c7d7eb 0x50c7d7eb +800001fc: 00f6a023 sw a5,0(a3) +80000200: 0385a783 lw a5,56(a1) +80000204: 00170713 addi a4,a4,1 +80000208: 00d7f7d3 fadd.s fa5,fa5,fa3 +8000020c: 00468693 addi a3,a3,4 +80000210: fef760e3 bltu a4,a5,800001f0 +80000214: 0305a683 lw a3,48(a1) +80000218: 03c5a703 lw a4,60(a1) +8000021c: 00188893 addi a7,a7,1 +80000220: 00a5f5d3 fadd.s fa1,fa1,fa0 +80000224: 00d80833 add a6,a6,a3 +80000228: fae8e8e3 bltu a7,a4,800001d8 +8000022c: 00008067 ret -8000022c <_exit>: -8000022c: 00000513 li a0,0 -80000230: 0005006b 0x5006b +80000230 <_exit>: +80000230: 00000513 li a0,0 +80000234: 0005006b 0x5006b -80000234 : -80000234: fc002573 csrr a0,0xfc0 -80000238: 0005006b 0x5006b -8000023c: 00002197 auipc gp,0x2 -80000240: f6c18193 addi gp,gp,-148 # 800021a8 <__global_pointer> -80000244: 7f000117 auipc sp,0x7f000 -80000248: dbc10113 addi sp,sp,-580 # ff000000 <__stack_top> -8000024c: 40000593 li a1,1024 -80000250: cc102673 csrr a2,0xcc1 -80000254: 02c585b3 mul a1,a1,a2 -80000258: 40b10133 sub sp,sp,a1 -8000025c: cc3026f3 csrr a3,0xcc3 -80000260: 00068663 beqz a3,8000026c -80000264: 00000513 li a0,0 -80000268: 0005006b 0x5006b +80000238 : +80000238: fc002573 csrr a0,0xfc0 +8000023c: 0005006b 0x5006b +80000240: 00002197 auipc gp,0x2 +80000244: f6818193 addi gp,gp,-152 # 800021a8 <__global_pointer> +80000248: 7f000117 auipc sp,0x7f000 +8000024c: db810113 addi sp,sp,-584 # ff000000 <__stack_top> +80000250: 40000593 li a1,1024 +80000254: cc102673 csrr a2,0xcc1 +80000258: 02c585b3 mul a1,a1,a2 +8000025c: 40b10133 sub sp,sp,a1 +80000260: cc3026f3 csrr a3,0xcc3 +80000264: 00068663 beqz a3,80000270 +80000268: 00000513 li a0,0 +8000026c: 0005006b 0x5006b -8000026c : -8000026c: 00008067 ret +80000270 : +80000270: 00008067 ret -80000270 : -80000270: fe010113 addi sp,sp,-32 -80000274: 00112e23 sw ra,28(sp) -80000278: 00812c23 sw s0,24(sp) -8000027c: 00912a23 sw s1,20(sp) -80000280: 01212823 sw s2,16(sp) -80000284: 01312623 sw s3,12(sp) -80000288: fc0027f3 csrr a5,0xfc0 -8000028c: 0007806b 0x7806b -80000290: cc5026f3 csrr a3,0xcc5 -80000294: cc3029f3 csrr s3,0xcc3 -80000298: cc002773 csrr a4,0xcc0 -8000029c: fc002673 csrr a2,0xfc0 -800002a0: 800027b7 lui a5,0x80002 -800002a4: 00269693 slli a3,a3,0x2 -800002a8: ddc78793 addi a5,a5,-548 # 80001ddc <__stack_top+0x81001ddc> -800002ac: 00d787b3 add a5,a5,a3 -800002b0: 0007a483 lw s1,0(a5) -800002b4: 0104a403 lw s0,16(s1) -800002b8: 00c4a683 lw a3,12(s1) -800002bc: 0089a933 slt s2,s3,s0 -800002c0: 00040793 mv a5,s0 -800002c4: 00d90933 add s2,s2,a3 -800002c8: 03368433 mul s0,a3,s3 -800002cc: 00f9d463 bge s3,a5,800002d4 -800002d0: 00098793 mv a5,s3 -800002d4: 00f40433 add s0,s0,a5 -800002d8: 0084a683 lw a3,8(s1) -800002dc: 02c40433 mul s0,s0,a2 -800002e0: 02e907b3 mul a5,s2,a4 -800002e4: 00d40433 add s0,s0,a3 -800002e8: 00f40433 add s0,s0,a5 -800002ec: 00890933 add s2,s2,s0 -800002f0: 01245e63 bge s0,s2,8000030c -800002f4: 0004a783 lw a5,0(s1) -800002f8: 0044a583 lw a1,4(s1) -800002fc: 00040513 mv a0,s0 -80000300: 00140413 addi s0,s0,1 -80000304: 000780e7 jalr a5 -80000308: fe8916e3 bne s2,s0,800002f4 -8000030c: 0019b993 seqz s3,s3 -80000310: 0009806b 0x9806b -80000314: 01c12083 lw ra,28(sp) -80000318: 01812403 lw s0,24(sp) -8000031c: 01412483 lw s1,20(sp) -80000320: 01012903 lw s2,16(sp) -80000324: 00c12983 lw s3,12(sp) -80000328: 02010113 addi sp,sp,32 -8000032c: 00008067 ret +80000274 : +80000274: fe010113 addi sp,sp,-32 +80000278: 00112e23 sw ra,28(sp) +8000027c: 00812c23 sw s0,24(sp) +80000280: 00912a23 sw s1,20(sp) +80000284: 01212823 sw s2,16(sp) +80000288: 01312623 sw s3,12(sp) +8000028c: fc0027f3 csrr a5,0xfc0 +80000290: 0007806b 0x7806b +80000294: cc5026f3 csrr a3,0xcc5 +80000298: cc3029f3 csrr s3,0xcc3 +8000029c: cc002773 csrr a4,0xcc0 +800002a0: fc002673 csrr a2,0xfc0 +800002a4: 800027b7 lui a5,0x80002 +800002a8: 00269693 slli a3,a3,0x2 +800002ac: ddc78793 addi a5,a5,-548 # 80001ddc <__stack_top+0x81001ddc> +800002b0: 00d787b3 add a5,a5,a3 +800002b4: 0007a483 lw s1,0(a5) +800002b8: 0104a403 lw s0,16(s1) +800002bc: 00c4a683 lw a3,12(s1) +800002c0: 0089a933 slt s2,s3,s0 +800002c4: 00040793 mv a5,s0 +800002c8: 00d90933 add s2,s2,a3 +800002cc: 03368433 mul s0,a3,s3 +800002d0: 00f9d463 bge s3,a5,800002d8 +800002d4: 00098793 mv a5,s3 +800002d8: 00f40433 add s0,s0,a5 +800002dc: 0084a683 lw a3,8(s1) +800002e0: 02c40433 mul s0,s0,a2 +800002e4: 02e907b3 mul a5,s2,a4 +800002e8: 00d40433 add s0,s0,a3 +800002ec: 00f40433 add s0,s0,a5 +800002f0: 00890933 add s2,s2,s0 +800002f4: 01245e63 bge s0,s2,80000310 +800002f8: 0004a783 lw a5,0(s1) +800002fc: 0044a583 lw a1,4(s1) +80000300: 00040513 mv a0,s0 +80000304: 00140413 addi s0,s0,1 +80000308: 000780e7 jalr a5 +8000030c: fe8916e3 bne s2,s0,800002f8 +80000310: 0019b993 seqz s3,s3 +80000314: 0009806b 0x9806b +80000318: 01c12083 lw ra,28(sp) +8000031c: 01812403 lw s0,24(sp) +80000320: 01412483 lw s1,20(sp) +80000324: 01012903 lw s2,16(sp) +80000328: 00c12983 lw s3,12(sp) +8000032c: 02010113 addi sp,sp,32 +80000330: 00008067 ret -80000330 : -80000330: fc010113 addi sp,sp,-64 -80000334: 02112e23 sw ra,60(sp) -80000338: 02812c23 sw s0,56(sp) -8000033c: 02912a23 sw s1,52(sp) -80000340: 03212823 sw s2,48(sp) -80000344: 03312623 sw s3,44(sp) -80000348: fc2026f3 csrr a3,0xfc2 -8000034c: fc102873 csrr a6,0xfc1 -80000350: fc002473 csrr s0,0xfc0 -80000354: cc5027f3 csrr a5,0xcc5 -80000358: 01f00713 li a4,31 -8000035c: 0cf74463 blt a4,a5,80000424 -80000360: 030408b3 mul a7,s0,a6 -80000364: 00100713 li a4,1 -80000368: 00a8d463 bge a7,a0,80000370 -8000036c: 03154733 div a4,a0,a7 -80000370: 0ce6c863 blt a3,a4,80000440 -80000374: 0ae7d863 bge a5,a4,80000424 -80000378: fff68693 addi a3,a3,-1 -8000037c: 02e54333 div t1,a0,a4 -80000380: 00030893 mv a7,t1 -80000384: 00f69663 bne a3,a5,80000390 -80000388: 02e56533 rem a0,a0,a4 -8000038c: 006508b3 add a7,a0,t1 -80000390: 0288c4b3 div s1,a7,s0 -80000394: 0288e933 rem s2,a7,s0 -80000398: 0b04ca63 blt s1,a6,8000044c -8000039c: 00100693 li a3,1 -800003a0: 0304c733 div a4,s1,a6 -800003a4: 00070663 beqz a4,800003b0 -800003a8: 00070693 mv a3,a4 -800003ac: 0304e733 rem a4,s1,a6 -800003b0: 800029b7 lui s3,0x80002 -800003b4: ddc98993 addi s3,s3,-548 # 80001ddc <__stack_top+0x81001ddc> -800003b8: 00e12e23 sw a4,28(sp) -800003bc: 00c10713 addi a4,sp,12 -800003c0: 00b12623 sw a1,12(sp) -800003c4: 00c12823 sw a2,16(sp) -800003c8: 00d12c23 sw a3,24(sp) -800003cc: 02f30333 mul t1,t1,a5 -800003d0: 00279793 slli a5,a5,0x2 -800003d4: 00f987b3 add a5,s3,a5 -800003d8: 00e7a023 sw a4,0(a5) -800003dc: 00612a23 sw t1,20(sp) -800003e0: 06904c63 bgtz s1,80000458 -800003e4: 04090063 beqz s2,80000424 -800003e8: 02848433 mul s0,s1,s0 -800003ec: 00812a23 sw s0,20(sp) -800003f0: 0009006b 0x9006b -800003f4: cc5027f3 csrr a5,0xcc5 -800003f8: cc202573 csrr a0,0xcc2 -800003fc: 00279793 slli a5,a5,0x2 -80000400: 00f989b3 add s3,s3,a5 -80000404: 0009a783 lw a5,0(s3) -80000408: 0087a683 lw a3,8(a5) -8000040c: 0007a703 lw a4,0(a5) -80000410: 0047a583 lw a1,4(a5) -80000414: 00d50533 add a0,a0,a3 -80000418: 000700e7 jalr a4 -8000041c: 00100793 li a5,1 -80000420: 0007806b 0x7806b -80000424: 03c12083 lw ra,60(sp) -80000428: 03812403 lw s0,56(sp) -8000042c: 03412483 lw s1,52(sp) -80000430: 03012903 lw s2,48(sp) -80000434: 02c12983 lw s3,44(sp) -80000438: 04010113 addi sp,sp,64 -8000043c: 00008067 ret -80000440: 00068713 mv a4,a3 -80000444: f2e7cae3 blt a5,a4,80000378 -80000448: fddff06f j 80000424 -8000044c: 00000713 li a4,0 -80000450: 00100693 li a3,1 -80000454: f5dff06f j 800003b0 -80000458: 00048713 mv a4,s1 -8000045c: 00985463 bge a6,s1,80000464 -80000460: 00080713 mv a4,a6 -80000464: 800007b7 lui a5,0x80000 -80000468: 27078793 addi a5,a5,624 # 80000270 <__stack_top+0x81000270> -8000046c: 00f7106b 0xf7106b -80000470: e01ff0ef jal ra,80000270 -80000474: f71ff06f j 800003e4 +80000334 : +80000334: fc010113 addi sp,sp,-64 +80000338: 02112e23 sw ra,60(sp) +8000033c: 02812c23 sw s0,56(sp) +80000340: 02912a23 sw s1,52(sp) +80000344: 03212823 sw s2,48(sp) +80000348: 03312623 sw s3,44(sp) +8000034c: fc2026f3 csrr a3,0xfc2 +80000350: fc102873 csrr a6,0xfc1 +80000354: fc002473 csrr s0,0xfc0 +80000358: cc5027f3 csrr a5,0xcc5 +8000035c: 01f00713 li a4,31 +80000360: 0cf74463 blt a4,a5,80000428 +80000364: 030408b3 mul a7,s0,a6 +80000368: 00100713 li a4,1 +8000036c: 00a8d463 bge a7,a0,80000374 +80000370: 03154733 div a4,a0,a7 +80000374: 0ce6c863 blt a3,a4,80000444 +80000378: 0ae7d863 bge a5,a4,80000428 +8000037c: fff68693 addi a3,a3,-1 +80000380: 02e54333 div t1,a0,a4 +80000384: 00030893 mv a7,t1 +80000388: 00f69663 bne a3,a5,80000394 +8000038c: 02e56533 rem a0,a0,a4 +80000390: 006508b3 add a7,a0,t1 +80000394: 0288c4b3 div s1,a7,s0 +80000398: 0288e933 rem s2,a7,s0 +8000039c: 0b04ca63 blt s1,a6,80000450 +800003a0: 00100693 li a3,1 +800003a4: 0304c733 div a4,s1,a6 +800003a8: 00070663 beqz a4,800003b4 +800003ac: 00070693 mv a3,a4 +800003b0: 0304e733 rem a4,s1,a6 +800003b4: 800029b7 lui s3,0x80002 +800003b8: ddc98993 addi s3,s3,-548 # 80001ddc <__stack_top+0x81001ddc> +800003bc: 00e12e23 sw a4,28(sp) +800003c0: 00c10713 addi a4,sp,12 +800003c4: 00b12623 sw a1,12(sp) +800003c8: 00c12823 sw a2,16(sp) +800003cc: 00d12c23 sw a3,24(sp) +800003d0: 02f30333 mul t1,t1,a5 +800003d4: 00279793 slli a5,a5,0x2 +800003d8: 00f987b3 add a5,s3,a5 +800003dc: 00e7a023 sw a4,0(a5) +800003e0: 00612a23 sw t1,20(sp) +800003e4: 06904c63 bgtz s1,8000045c +800003e8: 04090063 beqz s2,80000428 +800003ec: 02848433 mul s0,s1,s0 +800003f0: 00812a23 sw s0,20(sp) +800003f4: 0009006b 0x9006b +800003f8: cc5027f3 csrr a5,0xcc5 +800003fc: cc202573 csrr a0,0xcc2 +80000400: 00279793 slli a5,a5,0x2 +80000404: 00f989b3 add s3,s3,a5 +80000408: 0009a783 lw a5,0(s3) +8000040c: 0087a683 lw a3,8(a5) +80000410: 0007a703 lw a4,0(a5) +80000414: 0047a583 lw a1,4(a5) +80000418: 00d50533 add a0,a0,a3 +8000041c: 000700e7 jalr a4 +80000420: 00100793 li a5,1 +80000424: 0007806b 0x7806b +80000428: 03c12083 lw ra,60(sp) +8000042c: 03812403 lw s0,56(sp) +80000430: 03412483 lw s1,52(sp) +80000434: 03012903 lw s2,48(sp) +80000438: 02c12983 lw s3,44(sp) +8000043c: 04010113 addi sp,sp,64 +80000440: 00008067 ret +80000444: 00068713 mv a4,a3 +80000448: f2e7cae3 blt a5,a4,8000037c +8000044c: fddff06f j 80000428 +80000450: 00000713 li a4,0 +80000454: 00100693 li a3,1 +80000458: f5dff06f j 800003b4 +8000045c: 00048713 mv a4,s1 +80000460: 00985463 bge a6,s1,80000468 +80000464: 00080713 mv a4,a6 +80000468: 800007b7 lui a5,0x80000 +8000046c: 27478793 addi a5,a5,628 # 80000274 <__stack_top+0x81000274> +80000470: 00f7106b 0xf7106b +80000474: e01ff0ef jal ra,80000274 +80000478: f71ff06f j 800003e8 -80000478 <__clzsi2>: -80000478: 000107b7 lui a5,0x10 -8000047c: 02f57a63 bgeu a0,a5,800004b0 <__clzsi2+0x38> -80000480: 0ff00793 li a5,255 -80000484: 00a7b7b3 sltu a5,a5,a0 -80000488: 00379793 slli a5,a5,0x3 -8000048c: 80001737 lui a4,0x80001 -80000490: 02000693 li a3,32 -80000494: 40f686b3 sub a3,a3,a5 -80000498: 00f55533 srl a0,a0,a5 -8000049c: 8a070793 addi a5,a4,-1888 # 800008a0 <__stack_top+0x810008a0> -800004a0: 00a78533 add a0,a5,a0 -800004a4: 00054503 lbu a0,0(a0) -800004a8: 40a68533 sub a0,a3,a0 -800004ac: 00008067 ret -800004b0: 01000737 lui a4,0x1000 -800004b4: 01000793 li a5,16 -800004b8: fce56ae3 bltu a0,a4,8000048c <__clzsi2+0x14> -800004bc: 01800793 li a5,24 -800004c0: fcdff06f j 8000048c <__clzsi2+0x14> +8000047c <__clzsi2>: +8000047c: 000107b7 lui a5,0x10 +80000480: 02f57a63 bgeu a0,a5,800004b4 <__clzsi2+0x38> +80000484: 0ff00793 li a5,255 +80000488: 00a7b7b3 sltu a5,a5,a0 +8000048c: 00379793 slli a5,a5,0x3 +80000490: 80001737 lui a4,0x80001 +80000494: 02000693 li a3,32 +80000498: 40f686b3 sub a3,a3,a5 +8000049c: 00f55533 srl a0,a0,a5 +800004a0: 8a470793 addi a5,a4,-1884 # 800008a4 <__stack_top+0x810008a4> +800004a4: 00a78533 add a0,a5,a0 +800004a8: 00054503 lbu a0,0(a0) +800004ac: 40a68533 sub a0,a3,a0 +800004b0: 00008067 ret +800004b4: 01000737 lui a4,0x1000 +800004b8: 01000793 li a5,16 +800004bc: fce56ae3 bltu a0,a4,80000490 <__clzsi2+0x14> +800004c0: 01800793 li a5,24 +800004c4: fcdff06f j 80000490 <__clzsi2+0x14> -800004c4 : -800004c4: 00050593 mv a1,a0 -800004c8: 00000693 li a3,0 -800004cc: 00000613 li a2,0 -800004d0: 00000513 li a0,0 -800004d4: 20c0006f j 800006e0 <__register_exitproc> +800004c8 : +800004c8: 00050593 mv a1,a0 +800004cc: 00000693 li a3,0 +800004d0: 00000613 li a2,0 +800004d4: 00000513 li a0,0 +800004d8: 20c0006f j 800006e4 <__register_exitproc> -800004d8 : -800004d8: ff010113 addi sp,sp,-16 -800004dc: 00000593 li a1,0 -800004e0: 00812423 sw s0,8(sp) -800004e4: 00112623 sw ra,12(sp) -800004e8: 00050413 mv s0,a0 -800004ec: 290000ef jal ra,8000077c <__call_exitprocs> -800004f0: 800027b7 lui a5,0x80002 -800004f4: dd87a503 lw a0,-552(a5) # 80001dd8 <__stack_top+0x81001dd8> -800004f8: 03c52783 lw a5,60(a0) -800004fc: 00078463 beqz a5,80000504 -80000500: 000780e7 jalr a5 -80000504: 00040513 mv a0,s0 -80000508: d25ff0ef jal ra,8000022c <_exit> +800004dc : +800004dc: ff010113 addi sp,sp,-16 +800004e0: 00000593 li a1,0 +800004e4: 00812423 sw s0,8(sp) +800004e8: 00112623 sw ra,12(sp) +800004ec: 00050413 mv s0,a0 +800004f0: 290000ef jal ra,80000780 <__call_exitprocs> +800004f4: 800027b7 lui a5,0x80002 +800004f8: dd87a503 lw a0,-552(a5) # 80001dd8 <__stack_top+0x81001dd8> +800004fc: 03c52783 lw a5,60(a0) +80000500: 00078463 beqz a5,80000508 +80000504: 000780e7 jalr a5 +80000508: 00040513 mv a0,s0 +8000050c: d25ff0ef jal ra,80000230 <_exit> -8000050c <__libc_fini_array>: -8000050c: ff010113 addi sp,sp,-16 -80000510: 00812423 sw s0,8(sp) -80000514: 800027b7 lui a5,0x80002 -80000518: 80002437 lui s0,0x80002 -8000051c: 9a440413 addi s0,s0,-1628 # 800019a4 <__stack_top+0x810019a4> -80000520: 9a478793 addi a5,a5,-1628 # 800019a4 <__stack_top+0x810019a4> -80000524: 408787b3 sub a5,a5,s0 -80000528: 00912223 sw s1,4(sp) -8000052c: 00112623 sw ra,12(sp) -80000530: 4027d493 srai s1,a5,0x2 -80000534: 02048063 beqz s1,80000554 <__libc_fini_array+0x48> -80000538: ffc78793 addi a5,a5,-4 -8000053c: 00878433 add s0,a5,s0 -80000540: 00042783 lw a5,0(s0) -80000544: fff48493 addi s1,s1,-1 -80000548: ffc40413 addi s0,s0,-4 -8000054c: 000780e7 jalr a5 -80000550: fe0498e3 bnez s1,80000540 <__libc_fini_array+0x34> -80000554: 00c12083 lw ra,12(sp) -80000558: 00812403 lw s0,8(sp) -8000055c: 00412483 lw s1,4(sp) -80000560: 01010113 addi sp,sp,16 -80000564: 00008067 ret +80000510 <__libc_fini_array>: +80000510: ff010113 addi sp,sp,-16 +80000514: 00812423 sw s0,8(sp) +80000518: 800027b7 lui a5,0x80002 +8000051c: 80002437 lui s0,0x80002 +80000520: 9a840413 addi s0,s0,-1624 # 800019a8 <__stack_top+0x810019a8> +80000524: 9a878793 addi a5,a5,-1624 # 800019a8 <__stack_top+0x810019a8> +80000528: 408787b3 sub a5,a5,s0 +8000052c: 00912223 sw s1,4(sp) +80000530: 00112623 sw ra,12(sp) +80000534: 4027d493 srai s1,a5,0x2 +80000538: 02048063 beqz s1,80000558 <__libc_fini_array+0x48> +8000053c: ffc78793 addi a5,a5,-4 +80000540: 00878433 add s0,a5,s0 +80000544: 00042783 lw a5,0(s0) +80000548: fff48493 addi s1,s1,-1 +8000054c: ffc40413 addi s0,s0,-4 +80000550: 000780e7 jalr a5 +80000554: fe0498e3 bnez s1,80000544 <__libc_fini_array+0x34> +80000558: 00c12083 lw ra,12(sp) +8000055c: 00812403 lw s0,8(sp) +80000560: 00412483 lw s1,4(sp) +80000564: 01010113 addi sp,sp,16 +80000568: 00008067 ret -80000568 <__libc_init_array>: -80000568: ff010113 addi sp,sp,-16 -8000056c: 00812423 sw s0,8(sp) -80000570: 01212023 sw s2,0(sp) -80000574: 80002437 lui s0,0x80002 -80000578: 80002937 lui s2,0x80002 -8000057c: 9a040793 addi a5,s0,-1632 # 800019a0 <__stack_top+0x810019a0> -80000580: 9a090913 addi s2,s2,-1632 # 800019a0 <__stack_top+0x810019a0> -80000584: 40f90933 sub s2,s2,a5 -80000588: 00112623 sw ra,12(sp) -8000058c: 00912223 sw s1,4(sp) -80000590: 40295913 srai s2,s2,0x2 -80000594: 02090063 beqz s2,800005b4 <__libc_init_array+0x4c> -80000598: 9a040413 addi s0,s0,-1632 -8000059c: 00000493 li s1,0 -800005a0: 00042783 lw a5,0(s0) -800005a4: 00148493 addi s1,s1,1 -800005a8: 00440413 addi s0,s0,4 -800005ac: 000780e7 jalr a5 -800005b0: fe9918e3 bne s2,s1,800005a0 <__libc_init_array+0x38> -800005b4: 80002437 lui s0,0x80002 -800005b8: 80002937 lui s2,0x80002 -800005bc: 9a040793 addi a5,s0,-1632 # 800019a0 <__stack_top+0x810019a0> -800005c0: 9a490913 addi s2,s2,-1628 # 800019a4 <__stack_top+0x810019a4> -800005c4: 40f90933 sub s2,s2,a5 -800005c8: 40295913 srai s2,s2,0x2 -800005cc: 02090063 beqz s2,800005ec <__libc_init_array+0x84> -800005d0: 9a040413 addi s0,s0,-1632 -800005d4: 00000493 li s1,0 -800005d8: 00042783 lw a5,0(s0) -800005dc: 00148493 addi s1,s1,1 -800005e0: 00440413 addi s0,s0,4 -800005e4: 000780e7 jalr a5 -800005e8: fe9918e3 bne s2,s1,800005d8 <__libc_init_array+0x70> -800005ec: 00c12083 lw ra,12(sp) -800005f0: 00812403 lw s0,8(sp) -800005f4: 00412483 lw s1,4(sp) -800005f8: 00012903 lw s2,0(sp) -800005fc: 01010113 addi sp,sp,16 -80000600: 00008067 ret +8000056c <__libc_init_array>: +8000056c: ff010113 addi sp,sp,-16 +80000570: 00812423 sw s0,8(sp) +80000574: 01212023 sw s2,0(sp) +80000578: 80002437 lui s0,0x80002 +8000057c: 80002937 lui s2,0x80002 +80000580: 9a440793 addi a5,s0,-1628 # 800019a4 <__stack_top+0x810019a4> +80000584: 9a490913 addi s2,s2,-1628 # 800019a4 <__stack_top+0x810019a4> +80000588: 40f90933 sub s2,s2,a5 +8000058c: 00112623 sw ra,12(sp) +80000590: 00912223 sw s1,4(sp) +80000594: 40295913 srai s2,s2,0x2 +80000598: 02090063 beqz s2,800005b8 <__libc_init_array+0x4c> +8000059c: 9a440413 addi s0,s0,-1628 +800005a0: 00000493 li s1,0 +800005a4: 00042783 lw a5,0(s0) +800005a8: 00148493 addi s1,s1,1 +800005ac: 00440413 addi s0,s0,4 +800005b0: 000780e7 jalr a5 +800005b4: fe9918e3 bne s2,s1,800005a4 <__libc_init_array+0x38> +800005b8: 80002437 lui s0,0x80002 +800005bc: 80002937 lui s2,0x80002 +800005c0: 9a440793 addi a5,s0,-1628 # 800019a4 <__stack_top+0x810019a4> +800005c4: 9a890913 addi s2,s2,-1624 # 800019a8 <__stack_top+0x810019a8> +800005c8: 40f90933 sub s2,s2,a5 +800005cc: 40295913 srai s2,s2,0x2 +800005d0: 02090063 beqz s2,800005f0 <__libc_init_array+0x84> +800005d4: 9a440413 addi s0,s0,-1628 +800005d8: 00000493 li s1,0 +800005dc: 00042783 lw a5,0(s0) +800005e0: 00148493 addi s1,s1,1 +800005e4: 00440413 addi s0,s0,4 +800005e8: 000780e7 jalr a5 +800005ec: fe9918e3 bne s2,s1,800005dc <__libc_init_array+0x70> +800005f0: 00c12083 lw ra,12(sp) +800005f4: 00812403 lw s0,8(sp) +800005f8: 00412483 lw s1,4(sp) +800005fc: 00012903 lw s2,0(sp) +80000600: 01010113 addi sp,sp,16 +80000604: 00008067 ret -80000604 : -80000604: 00f00313 li t1,15 -80000608: 00050713 mv a4,a0 -8000060c: 02c37e63 bgeu t1,a2,80000648 -80000610: 00f77793 andi a5,a4,15 -80000614: 0a079063 bnez a5,800006b4 -80000618: 08059263 bnez a1,8000069c -8000061c: ff067693 andi a3,a2,-16 -80000620: 00f67613 andi a2,a2,15 -80000624: 00e686b3 add a3,a3,a4 -80000628: 00b72023 sw a1,0(a4) # 1000000 <__stack_size+0xfffc00> -8000062c: 00b72223 sw a1,4(a4) -80000630: 00b72423 sw a1,8(a4) -80000634: 00b72623 sw a1,12(a4) -80000638: 01070713 addi a4,a4,16 -8000063c: fed766e3 bltu a4,a3,80000628 -80000640: 00061463 bnez a2,80000648 -80000644: 00008067 ret -80000648: 40c306b3 sub a3,t1,a2 -8000064c: 00269693 slli a3,a3,0x2 -80000650: 00000297 auipc t0,0x0 -80000654: 005686b3 add a3,a3,t0 -80000658: 00c68067 jr 12(a3) -8000065c: 00b70723 sb a1,14(a4) -80000660: 00b706a3 sb a1,13(a4) -80000664: 00b70623 sb a1,12(a4) -80000668: 00b705a3 sb a1,11(a4) -8000066c: 00b70523 sb a1,10(a4) -80000670: 00b704a3 sb a1,9(a4) -80000674: 00b70423 sb a1,8(a4) -80000678: 00b703a3 sb a1,7(a4) -8000067c: 00b70323 sb a1,6(a4) -80000680: 00b702a3 sb a1,5(a4) -80000684: 00b70223 sb a1,4(a4) -80000688: 00b701a3 sb a1,3(a4) -8000068c: 00b70123 sb a1,2(a4) -80000690: 00b700a3 sb a1,1(a4) -80000694: 00b70023 sb a1,0(a4) -80000698: 00008067 ret -8000069c: 0ff5f593 andi a1,a1,255 -800006a0: 00859693 slli a3,a1,0x8 -800006a4: 00d5e5b3 or a1,a1,a3 -800006a8: 01059693 slli a3,a1,0x10 -800006ac: 00d5e5b3 or a1,a1,a3 -800006b0: f6dff06f j 8000061c -800006b4: 00279693 slli a3,a5,0x2 -800006b8: 00000297 auipc t0,0x0 -800006bc: 005686b3 add a3,a3,t0 -800006c0: 00008293 mv t0,ra -800006c4: fa0680e7 jalr -96(a3) -800006c8: 00028093 mv ra,t0 -800006cc: ff078793 addi a5,a5,-16 -800006d0: 40f70733 sub a4,a4,a5 -800006d4: 00f60633 add a2,a2,a5 -800006d8: f6c378e3 bgeu t1,a2,80000648 -800006dc: f3dff06f j 80000618 +80000608 : +80000608: 00f00313 li t1,15 +8000060c: 00050713 mv a4,a0 +80000610: 02c37e63 bgeu t1,a2,8000064c +80000614: 00f77793 andi a5,a4,15 +80000618: 0a079063 bnez a5,800006b8 +8000061c: 08059263 bnez a1,800006a0 +80000620: ff067693 andi a3,a2,-16 +80000624: 00f67613 andi a2,a2,15 +80000628: 00e686b3 add a3,a3,a4 +8000062c: 00b72023 sw a1,0(a4) # 1000000 <__stack_size+0xfffc00> +80000630: 00b72223 sw a1,4(a4) +80000634: 00b72423 sw a1,8(a4) +80000638: 00b72623 sw a1,12(a4) +8000063c: 01070713 addi a4,a4,16 +80000640: fed766e3 bltu a4,a3,8000062c +80000644: 00061463 bnez a2,8000064c +80000648: 00008067 ret +8000064c: 40c306b3 sub a3,t1,a2 +80000650: 00269693 slli a3,a3,0x2 +80000654: 00000297 auipc t0,0x0 +80000658: 005686b3 add a3,a3,t0 +8000065c: 00c68067 jr 12(a3) +80000660: 00b70723 sb a1,14(a4) +80000664: 00b706a3 sb a1,13(a4) +80000668: 00b70623 sb a1,12(a4) +8000066c: 00b705a3 sb a1,11(a4) +80000670: 00b70523 sb a1,10(a4) +80000674: 00b704a3 sb a1,9(a4) +80000678: 00b70423 sb a1,8(a4) +8000067c: 00b703a3 sb a1,7(a4) +80000680: 00b70323 sb a1,6(a4) +80000684: 00b702a3 sb a1,5(a4) +80000688: 00b70223 sb a1,4(a4) +8000068c: 00b701a3 sb a1,3(a4) +80000690: 00b70123 sb a1,2(a4) +80000694: 00b700a3 sb a1,1(a4) +80000698: 00b70023 sb a1,0(a4) +8000069c: 00008067 ret +800006a0: 0ff5f593 andi a1,a1,255 +800006a4: 00859693 slli a3,a1,0x8 +800006a8: 00d5e5b3 or a1,a1,a3 +800006ac: 01059693 slli a3,a1,0x10 +800006b0: 00d5e5b3 or a1,a1,a3 +800006b4: f6dff06f j 80000620 +800006b8: 00279693 slli a3,a5,0x2 +800006bc: 00000297 auipc t0,0x0 +800006c0: 005686b3 add a3,a3,t0 +800006c4: 00008293 mv t0,ra +800006c8: fa0680e7 jalr -96(a3) +800006cc: 00028093 mv ra,t0 +800006d0: ff078793 addi a5,a5,-16 +800006d4: 40f70733 sub a4,a4,a5 +800006d8: 00f60633 add a2,a2,a5 +800006dc: f6c378e3 bgeu t1,a2,8000064c +800006e0: f3dff06f j 8000061c -800006e0 <__register_exitproc>: -800006e0: 800027b7 lui a5,0x80002 -800006e4: dd87a703 lw a4,-552(a5) # 80001dd8 <__stack_top+0x81001dd8> -800006e8: 14872783 lw a5,328(a4) -800006ec: 04078c63 beqz a5,80000744 <__register_exitproc+0x64> -800006f0: 0047a703 lw a4,4(a5) -800006f4: 01f00813 li a6,31 -800006f8: 06e84e63 blt a6,a4,80000774 <__register_exitproc+0x94> -800006fc: 00271813 slli a6,a4,0x2 -80000700: 02050663 beqz a0,8000072c <__register_exitproc+0x4c> -80000704: 01078333 add t1,a5,a6 -80000708: 08c32423 sw a2,136(t1) -8000070c: 1887a883 lw a7,392(a5) -80000710: 00100613 li a2,1 -80000714: 00e61633 sll a2,a2,a4 -80000718: 00c8e8b3 or a7,a7,a2 -8000071c: 1917a423 sw a7,392(a5) -80000720: 10d32423 sw a3,264(t1) -80000724: 00200693 li a3,2 -80000728: 02d50463 beq a0,a3,80000750 <__register_exitproc+0x70> -8000072c: 00170713 addi a4,a4,1 -80000730: 00e7a223 sw a4,4(a5) -80000734: 010787b3 add a5,a5,a6 -80000738: 00b7a423 sw a1,8(a5) -8000073c: 00000513 li a0,0 -80000740: 00008067 ret -80000744: 14c70793 addi a5,a4,332 -80000748: 14f72423 sw a5,328(a4) -8000074c: fa5ff06f j 800006f0 <__register_exitproc+0x10> -80000750: 18c7a683 lw a3,396(a5) -80000754: 00170713 addi a4,a4,1 -80000758: 00e7a223 sw a4,4(a5) -8000075c: 00c6e633 or a2,a3,a2 -80000760: 18c7a623 sw a2,396(a5) -80000764: 010787b3 add a5,a5,a6 -80000768: 00b7a423 sw a1,8(a5) -8000076c: 00000513 li a0,0 -80000770: 00008067 ret -80000774: fff00513 li a0,-1 -80000778: 00008067 ret +800006e4 <__register_exitproc>: +800006e4: 800027b7 lui a5,0x80002 +800006e8: dd87a703 lw a4,-552(a5) # 80001dd8 <__stack_top+0x81001dd8> +800006ec: 14872783 lw a5,328(a4) +800006f0: 04078c63 beqz a5,80000748 <__register_exitproc+0x64> +800006f4: 0047a703 lw a4,4(a5) +800006f8: 01f00813 li a6,31 +800006fc: 06e84e63 blt a6,a4,80000778 <__register_exitproc+0x94> +80000700: 00271813 slli a6,a4,0x2 +80000704: 02050663 beqz a0,80000730 <__register_exitproc+0x4c> +80000708: 01078333 add t1,a5,a6 +8000070c: 08c32423 sw a2,136(t1) +80000710: 1887a883 lw a7,392(a5) +80000714: 00100613 li a2,1 +80000718: 00e61633 sll a2,a2,a4 +8000071c: 00c8e8b3 or a7,a7,a2 +80000720: 1917a423 sw a7,392(a5) +80000724: 10d32423 sw a3,264(t1) +80000728: 00200693 li a3,2 +8000072c: 02d50463 beq a0,a3,80000754 <__register_exitproc+0x70> +80000730: 00170713 addi a4,a4,1 +80000734: 00e7a223 sw a4,4(a5) +80000738: 010787b3 add a5,a5,a6 +8000073c: 00b7a423 sw a1,8(a5) +80000740: 00000513 li a0,0 +80000744: 00008067 ret +80000748: 14c70793 addi a5,a4,332 +8000074c: 14f72423 sw a5,328(a4) +80000750: fa5ff06f j 800006f4 <__register_exitproc+0x10> +80000754: 18c7a683 lw a3,396(a5) +80000758: 00170713 addi a4,a4,1 +8000075c: 00e7a223 sw a4,4(a5) +80000760: 00c6e633 or a2,a3,a2 +80000764: 18c7a623 sw a2,396(a5) +80000768: 010787b3 add a5,a5,a6 +8000076c: 00b7a423 sw a1,8(a5) +80000770: 00000513 li a0,0 +80000774: 00008067 ret +80000778: fff00513 li a0,-1 +8000077c: 00008067 ret -8000077c <__call_exitprocs>: -8000077c: fd010113 addi sp,sp,-48 -80000780: 800027b7 lui a5,0x80002 -80000784: 01412c23 sw s4,24(sp) -80000788: dd87aa03 lw s4,-552(a5) # 80001dd8 <__stack_top+0x81001dd8> -8000078c: 03212023 sw s2,32(sp) -80000790: 02112623 sw ra,44(sp) -80000794: 148a2903 lw s2,328(s4) -80000798: 02812423 sw s0,40(sp) -8000079c: 02912223 sw s1,36(sp) -800007a0: 01312e23 sw s3,28(sp) -800007a4: 01512a23 sw s5,20(sp) -800007a8: 01612823 sw s6,16(sp) -800007ac: 01712623 sw s7,12(sp) -800007b0: 01812423 sw s8,8(sp) -800007b4: 04090063 beqz s2,800007f4 <__call_exitprocs+0x78> -800007b8: 00050b13 mv s6,a0 -800007bc: 00058b93 mv s7,a1 -800007c0: 00100a93 li s5,1 -800007c4: fff00993 li s3,-1 -800007c8: 00492483 lw s1,4(s2) -800007cc: fff48413 addi s0,s1,-1 -800007d0: 02044263 bltz s0,800007f4 <__call_exitprocs+0x78> -800007d4: 00249493 slli s1,s1,0x2 -800007d8: 009904b3 add s1,s2,s1 -800007dc: 040b8463 beqz s7,80000824 <__call_exitprocs+0xa8> -800007e0: 1044a783 lw a5,260(s1) -800007e4: 05778063 beq a5,s7,80000824 <__call_exitprocs+0xa8> -800007e8: fff40413 addi s0,s0,-1 -800007ec: ffc48493 addi s1,s1,-4 -800007f0: ff3416e3 bne s0,s3,800007dc <__call_exitprocs+0x60> -800007f4: 02c12083 lw ra,44(sp) -800007f8: 02812403 lw s0,40(sp) -800007fc: 02412483 lw s1,36(sp) -80000800: 02012903 lw s2,32(sp) -80000804: 01c12983 lw s3,28(sp) -80000808: 01812a03 lw s4,24(sp) -8000080c: 01412a83 lw s5,20(sp) -80000810: 01012b03 lw s6,16(sp) -80000814: 00c12b83 lw s7,12(sp) -80000818: 00812c03 lw s8,8(sp) -8000081c: 03010113 addi sp,sp,48 -80000820: 00008067 ret -80000824: 00492783 lw a5,4(s2) -80000828: 0044a683 lw a3,4(s1) -8000082c: fff78793 addi a5,a5,-1 -80000830: 04878e63 beq a5,s0,8000088c <__call_exitprocs+0x110> -80000834: 0004a223 sw zero,4(s1) -80000838: fa0688e3 beqz a3,800007e8 <__call_exitprocs+0x6c> -8000083c: 18892783 lw a5,392(s2) -80000840: 008a9733 sll a4,s5,s0 -80000844: 00492c03 lw s8,4(s2) -80000848: 00f777b3 and a5,a4,a5 -8000084c: 02079263 bnez a5,80000870 <__call_exitprocs+0xf4> -80000850: 000680e7 jalr a3 -80000854: 00492703 lw a4,4(s2) -80000858: 148a2783 lw a5,328(s4) -8000085c: 01871463 bne a4,s8,80000864 <__call_exitprocs+0xe8> -80000860: f8f904e3 beq s2,a5,800007e8 <__call_exitprocs+0x6c> -80000864: f80788e3 beqz a5,800007f4 <__call_exitprocs+0x78> -80000868: 00078913 mv s2,a5 -8000086c: f5dff06f j 800007c8 <__call_exitprocs+0x4c> -80000870: 18c92783 lw a5,396(s2) -80000874: 0844a583 lw a1,132(s1) -80000878: 00f77733 and a4,a4,a5 -8000087c: 00071c63 bnez a4,80000894 <__call_exitprocs+0x118> -80000880: 000b0513 mv a0,s6 -80000884: 000680e7 jalr a3 -80000888: fcdff06f j 80000854 <__call_exitprocs+0xd8> -8000088c: 00892223 sw s0,4(s2) -80000890: fa9ff06f j 80000838 <__call_exitprocs+0xbc> -80000894: 00058513 mv a0,a1 -80000898: 000680e7 jalr a3 -8000089c: fb9ff06f j 80000854 <__call_exitprocs+0xd8> +80000780 <__call_exitprocs>: +80000780: fd010113 addi sp,sp,-48 +80000784: 800027b7 lui a5,0x80002 +80000788: 01412c23 sw s4,24(sp) +8000078c: dd87aa03 lw s4,-552(a5) # 80001dd8 <__stack_top+0x81001dd8> +80000790: 03212023 sw s2,32(sp) +80000794: 02112623 sw ra,44(sp) +80000798: 148a2903 lw s2,328(s4) +8000079c: 02812423 sw s0,40(sp) +800007a0: 02912223 sw s1,36(sp) +800007a4: 01312e23 sw s3,28(sp) +800007a8: 01512a23 sw s5,20(sp) +800007ac: 01612823 sw s6,16(sp) +800007b0: 01712623 sw s7,12(sp) +800007b4: 01812423 sw s8,8(sp) +800007b8: 04090063 beqz s2,800007f8 <__call_exitprocs+0x78> +800007bc: 00050b13 mv s6,a0 +800007c0: 00058b93 mv s7,a1 +800007c4: 00100a93 li s5,1 +800007c8: fff00993 li s3,-1 +800007cc: 00492483 lw s1,4(s2) +800007d0: fff48413 addi s0,s1,-1 +800007d4: 02044263 bltz s0,800007f8 <__call_exitprocs+0x78> +800007d8: 00249493 slli s1,s1,0x2 +800007dc: 009904b3 add s1,s2,s1 +800007e0: 040b8463 beqz s7,80000828 <__call_exitprocs+0xa8> +800007e4: 1044a783 lw a5,260(s1) +800007e8: 05778063 beq a5,s7,80000828 <__call_exitprocs+0xa8> +800007ec: fff40413 addi s0,s0,-1 +800007f0: ffc48493 addi s1,s1,-4 +800007f4: ff3416e3 bne s0,s3,800007e0 <__call_exitprocs+0x60> +800007f8: 02c12083 lw ra,44(sp) +800007fc: 02812403 lw s0,40(sp) +80000800: 02412483 lw s1,36(sp) +80000804: 02012903 lw s2,32(sp) +80000808: 01c12983 lw s3,28(sp) +8000080c: 01812a03 lw s4,24(sp) +80000810: 01412a83 lw s5,20(sp) +80000814: 01012b03 lw s6,16(sp) +80000818: 00c12b83 lw s7,12(sp) +8000081c: 00812c03 lw s8,8(sp) +80000820: 03010113 addi sp,sp,48 +80000824: 00008067 ret +80000828: 00492783 lw a5,4(s2) +8000082c: 0044a683 lw a3,4(s1) +80000830: fff78793 addi a5,a5,-1 +80000834: 04878e63 beq a5,s0,80000890 <__call_exitprocs+0x110> +80000838: 0004a223 sw zero,4(s1) +8000083c: fa0688e3 beqz a3,800007ec <__call_exitprocs+0x6c> +80000840: 18892783 lw a5,392(s2) +80000844: 008a9733 sll a4,s5,s0 +80000848: 00492c03 lw s8,4(s2) +8000084c: 00f777b3 and a5,a4,a5 +80000850: 02079263 bnez a5,80000874 <__call_exitprocs+0xf4> +80000854: 000680e7 jalr a3 +80000858: 00492703 lw a4,4(s2) +8000085c: 148a2783 lw a5,328(s4) +80000860: 01871463 bne a4,s8,80000868 <__call_exitprocs+0xe8> +80000864: f8f904e3 beq s2,a5,800007ec <__call_exitprocs+0x6c> +80000868: f80788e3 beqz a5,800007f8 <__call_exitprocs+0x78> +8000086c: 00078913 mv s2,a5 +80000870: f5dff06f j 800007cc <__call_exitprocs+0x4c> +80000874: 18c92783 lw a5,396(s2) +80000878: 0844a583 lw a1,132(s1) +8000087c: 00f77733 and a4,a4,a5 +80000880: 00071c63 bnez a4,80000898 <__call_exitprocs+0x118> +80000884: 000b0513 mv a0,s6 +80000888: 000680e7 jalr a3 +8000088c: fcdff06f j 80000858 <__call_exitprocs+0xd8> +80000890: 00892223 sw s0,4(s2) +80000894: fa9ff06f j 8000083c <__call_exitprocs+0xbc> +80000898: 00058513 mv a0,a1 +8000089c: 000680e7 jalr a3 +800008a0: fb9ff06f j 80000858 <__call_exitprocs+0xd8> Disassembly of section .rodata: -800008a0 <__clz_tab>: -800008a0: 0100 addi s0,sp,128 -800008a2: 0202 c.slli64 tp -800008a4: 03030303 lb t1,48(t1) -800008a8: 0404 addi s1,sp,512 -800008aa: 0404 addi s1,sp,512 +800008a4 <__clz_tab>: +800008a4: 0100 addi s0,sp,128 +800008a6: 0202 c.slli64 tp +800008a8: 03030303 lb t1,48(t1) 800008ac: 0404 addi s1,sp,512 800008ae: 0404 addi s1,sp,512 -800008b0: 0505 addi a0,a0,1 -800008b2: 0505 addi a0,a0,1 +800008b0: 0404 addi s1,sp,512 +800008b2: 0404 addi s1,sp,512 800008b4: 0505 addi a0,a0,1 800008b6: 0505 addi a0,a0,1 800008b8: 0505 addi a0,a0,1 800008ba: 0505 addi a0,a0,1 800008bc: 0505 addi a0,a0,1 800008be: 0505 addi a0,a0,1 -800008c0: 0606 slli a2,a2,0x1 -800008c2: 0606 slli a2,a2,0x1 +800008c0: 0505 addi a0,a0,1 +800008c2: 0505 addi a0,a0,1 800008c4: 0606 slli a2,a2,0x1 800008c6: 0606 slli a2,a2,0x1 800008c8: 0606 slli a2,a2,0x1 @@ -626,7 +625,8 @@ Disassembly of section .rodata: 800008da: 0606 slli a2,a2,0x1 800008dc: 0606 slli a2,a2,0x1 800008de: 0606 slli a2,a2,0x1 -800008e0: 07070707 0x7070707 +800008e0: 0606 slli a2,a2,0x1 +800008e2: 0606 slli a2,a2,0x1 800008e4: 07070707 0x7070707 800008e8: 07070707 0x7070707 800008ec: 07070707 0x7070707 @@ -642,8 +642,7 @@ Disassembly of section .rodata: 80000914: 07070707 0x7070707 80000918: 07070707 0x7070707 8000091c: 07070707 0x7070707 -80000920: 0808 addi a0,sp,16 -80000922: 0808 addi a0,sp,16 +80000920: 07070707 0x7070707 80000924: 0808 addi a0,sp,16 80000926: 0808 addi a0,sp,16 80000928: 0808 addi a0,sp,16 @@ -706,12 +705,14 @@ Disassembly of section .rodata: 8000099a: 0808 addi a0,sp,16 8000099c: 0808 addi a0,sp,16 8000099e: 0808 addi a0,sp,16 +800009a0: 0808 addi a0,sp,16 +800009a2: 0808 addi a0,sp,16 Disassembly of section .init_array: -800019a0 <__init_array_start>: -800019a0: 0174 addi a3,sp,140 -800019a2: 8000 0x8000 +800019a4 <__init_array_start>: +800019a4: 0174 addi a3,sp,140 +800019a6: 8000 0x8000 Disassembly of section .data: @@ -796,7 +797,7 @@ Disassembly of section .debug_aranges: a: 0004 0x4 c: 0000 unimp e: 0000 unimp - 10: 0478 addi a4,sp,524 + 10: 047c addi a5,sp,524 12: 8000 0x8000 14: 004c addi a1,sp,4 ... @@ -822,7 +823,7 @@ Disassembly of section .debug_info: 12: 0004 0x4 14: 5900 lw s0,48(a0) 16: 0006 c.slli zero,0x1 - 18: 7800 flw fs0,48(s0) + 18: 7c00 flw fs0,56(s0) 1a: 0004 0x4 1c: 4c80 lw s0,24(s1) 1e: 0000 unimp @@ -2070,7 +2071,7 @@ Disassembly of section .debug_info: b80: 02c2 slli t0,t0,0x10 b82: 2501 jal 1182 <__stack_size+0xd82> b84: 0000 unimp - b86: 7800 flw fs0,48(s0) + b86: 7c00 flw fs0,56(s0) b88: 0004 0x4 b8a: 4c80 lw s0,24(s1) b8c: 0000 unimp @@ -3315,7 +3316,7 @@ Disassembly of section .debug_info: 1736: b20d j 1058 <__stack_size+0xc58> 1738: 0f02 c.slli64 t5 173a: 0305 addi t1,t1,1 - 173c: 08a0 addi s0,sp,88 + 173c: 08a4 addi s1,sp,88 173e: 8000 0x8000 ... @@ -3911,7 +3912,7 @@ Disassembly of section .debug_line: 224: 0500 addi s0,sp,640 226: 0001 nop 228: 0205 addi tp,tp,1 - 22a: 0478 addi a4,sp,524 + 22a: 047c addi a5,sp,524 22c: 8000 0x8000 22e: 0105c203 lbu tp,16(a1) 232: 0305 addi t1,t1,1 @@ -4191,7 +4192,7 @@ Disassembly of section .debug_frame: 12: 0000 unimp 14: 0000 unimp 16: 0000 unimp - 18: 0478 addi a4,sp,524 + 18: 047c addi a5,sp,524 1a: 8000 0x8000 1c: 004c addi a1,sp,4 ... diff --git a/driver/tests/tex_demo/kernel.elf b/driver/tests/tex_demo/kernel.elf index 7cc7ac2c80a46fe5cdc3df9806b50e820f4da383..05cb4770ed3ead49593e9e43ea3672d39332a08f 100755 GIT binary patch delta 715 zcmZ8fO=uHA6n?Wm*@RM^?RE(f+O)1)DI$tVp&-~jB(@th{zSndMKp*=ln4>L1iG<} zso+7GLrZE=$|m(t5Lt^oC@7^+4}y@Z0R@E~gyfQn(xPuu52Lm6NCTMc3_TKfHx$a-MuuM4;`InoR25Sje`;W`S-L_jc3IZ0if7Ycgs)ow{K6_f zQ5Jc=9OWJ9J13Q*LTGA(t2F$dDvc5idDkGhOY#)TqL2Wnzupg4;h9uT)ID@!AM+!@kJTzV-Fr?jEj|!d5dnY`Qqz3&3)@4L^Z#h2)$Q9YKx^ zvs7mY$ETg+;$)E(3QSWkbw!Gb&n$*~zYMKU25s+SP)7TWB=|T*h_G2zQ{9XQ&5WH& z!1q zJ|3@;+wAS|X>y0PkG#0@93Q7CVIL)&wDRR0T!0VA-N!^g6QGJ?E3f~@J@^-dS(llX zZ;D_&LA3)on8YY$b7ru2klU{1Mi()f6~H>_W^o)WA-7o743ckb%REH9>|iXo-47}< z$AgyxSYu_I{*Lx delta 688 zcmZ8eO=uHA6n-;1o6S;-yV))wVjFc`OZ`DH=}EDBNNf@`4K0F2sz?wOl?b^66uMGN zd+?yl!4fSlwMjh)B5Tn@1w$?9K@f8B5>U{Km*kQZ!J=g5ZSOZX?>q8NkZRtMl8t<3`?8eqU3Tp$-<;6k`WW1o40fePB zVX7<&LOCwD(hoXQ7MWCvv#JD*>Uv9w%(iH?8T?#rmXwJ917v-Y?{z=ek|WiomZk;n z2N?6gE)B1gwIw#TE-L)H8Ye&b{=iPT(h3ro)JVl034|$;c&;ac@oCSb7%TFbVcxHw z>t#hvmWvVjmu2iz!PxTvwDAEe3o_Lh<4<%$_bQU@ivKeqx1p~H?z7M>MhbjypG6Ap zrM??o2-SgCUBq!`2haMDeLJ>F5lSb5e%0~gccBTmJahP`lXY^Pza1VSH+gsB#l=OO zKsyBtO1SCdZ?^D{$i0anpfRXn?BtCt+=rt+!h4fB^@<4gW6TDC!d+Ci@%dzUca(1S z^3><378uy4yedjz8ToBqONPl;zL7jk7(bK>Z@vdJDiy#_0p9b8)R6fF&qe=rH&H#< k(f0uIdjxF9t)%h-$?(B+SoFTd;p1sT^seu?chV2(UpHK+NdN!< diff --git a/driver/tests/tex_demo/palette64.tga b/driver/tests/tex_demo/palette64.tga index 3f4d9007dbceb9abeae6b8536db88b888df2bada..ea9bcd979bd162dacecc21f8ae282aef62727cf4 100644 GIT binary patch literal 16428 zcmeHM%}X0W6o2&Yf6zn8sh9R92qF|Ag^rfRiUbse-k#X z0I&vYO1?*MWW_fCoIocYVmlqR{R;(PmzVK)o}UAooRs;_&&T7ZSD10C44qgim6WzR zJUk4g)4kl=+f(w}-QCrZ#2WYe70qX>5QR3nrsw%ybso&%IM3nN^GtsK;CvbT03Raq zF<1-zKe1X>?HR{*BChaB!>1LIkC9}kBlMg^T1RspoSil2e|5!RW=6LE!h$)E2=XKi zsG<_Lz`hwez*h}@-H<-IJQ0*-0FoxC&x5P5Y6P-nSe9%*1yigGT_gI)Ac;&6t_07+ z^I%@~--!ue-EKJT=_#;GMy6d~52v$JOsupSN>r_?&x7@PJ(R9it4X%!d7#~Hhtk=+ zROcDl2Df(}q6guXd@Cw#3Ghp^)(_2mehzf8zX4D5eh8?lKsj`6*= zyZH#d^$2n!YyTPFqk|jXezf~TJb3S{){iBC0}TEt9iG8(`F#AKPY**poS^&#fayQ> z4nE)jh0EvT$NW#NAm)E+{lMcNpT6whSLT0q0Z*m3{`$>-^Is}L+4(0HAh>)T0J$UJ z?a#GOpWXa7|IL3ehS&)VHhz9M`uwjKA!USAe9Mzd=q=G1p22YWO6FAPi?_dmiHZjH y@nNi-9VHMhiGXJ?T)vX}75d`suVA90!Te7xAb<2eZqMb_?(KTnzfbMF9O46W_wPRd diff --git a/driver/tests/tex_demo/utils.cpp b/driver/tests/tex_demo/utils.cpp index 5bdfb2b7..342d49d5 100644 --- a/driver/tests/tex_demo/utils.cpp +++ b/driver/tests/tex_demo/utils.cpp @@ -81,7 +81,7 @@ int LoadTGA(const char *filename, default: std::abort(); } - *dst_bytes++ = color.toRGBA(); + *dst_bytes++ = color; } break; } @@ -108,6 +108,11 @@ int SaveTGA(const char *filename, return -1; } + if (bpp < 2 || bpp > 4) { + std::cerr << "unsupported pixel stride: " << bpp << "!" << std::endl; + return -1; + } + tga_header_t header; header.idlength = 0; header.colormaptype = 0; // no palette @@ -131,20 +136,7 @@ int SaveTGA(const char *filename, for (uint32_t y = 0; y < height; ++y) { const uint8_t* pixel_row = pixel_bytes; for (uint32_t x = 0; x < width; ++x) { - // swap R/B color channels - if (bpp == 4) { - ofs.write((const char*)pixel_row + 2, 1); - ofs.write((const char*)pixel_row + 1, 1); - ofs.write((const char*)pixel_row + 0, 1); - ofs.write((const char*)pixel_row + 3, 1); - } else if (bpp == 3) { - ofs.write((const char*)pixel_row + 2, 1); - ofs.write((const char*)pixel_row + 1, 1); - ofs.write((const char*)pixel_row + 0, 1); - } else{ - std::cerr << "unsupported TGA bitsperpixel!" << std::endl; - return -1; - } + ofs.write((const char*)pixel_row, bpp); pixel_row += bpp; } pixel_bytes -= pitch;