From 9e61bde56a65c92ff67559f8ab94887f8aa57a4d Mon Sep 17 00:00:00 2001 From: bellard Date: Fri, 11 Nov 2005 00:24:58 +0000 Subject: [PATCH] sparc merge (Blue Swirl) git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1620 c046a42c-6fe2-441c-8c8c-71466251a162 --- hw/esp.c | 42 +- pc-bios/proll.elf | Bin 152807 -> 132317 bytes pc-bios/proll.patch | 840 +++++++++++++++++++++++++++++++-------- target-sparc/helper.c | 8 +- target-sparc/op_helper.c | 8 + target-sparc/translate.c | 10 +- 6 files changed, 735 insertions(+), 173 deletions(-) diff --git a/hw/esp.c b/hw/esp.c index 6890bd144c..169531ff17 100644 --- a/hw/esp.c +++ b/hw/esp.c @@ -29,6 +29,8 @@ #ifdef DEBUG_ESP #define DPRINTF(fmt, args...) \ do { printf("ESP: " fmt , ##args); } while (0) +#define pic_set_irq(irq, level) \ +do { printf("ESP: set_irq(%d): %d\n", (irq), (level)); pic_set_irq((irq),(level));} while (0) #else #define DPRINTF(fmt, args...) #endif @@ -38,6 +40,8 @@ do { printf("ESP: " fmt , ##args); } while (0) #define ESP_MAXREG 0x3f #define TI_BUFSZ 65536 #define DMA_VER 0xa0000000 +#define DMA_INTR 1 +#define DMA_INTREN 0x10 #define DMA_LOADED 0x04000000 typedef struct ESPState { @@ -66,6 +70,7 @@ typedef struct ESPState { #define INTR_FC 0x08 #define INTR_BS 0x10 #define INTR_DC 0x20 +#define INTR_RST 0x80 #define SEQ_0 0x0 #define SEQ_CD 0x4 @@ -98,11 +103,11 @@ static void handle_satn(ESPState *s) s->ti_rptr = 0; s->ti_wptr = 0; - if (target > 4 || !s->bd[target]) { // No such drive + if (target >= 4 || !s->bd[target]) { // No such drive s->rregs[4] = STAT_IN; s->rregs[5] = INTR_DC; s->rregs[6] = SEQ_0; - s->espdmaregs[0] |= 1; + s->espdmaregs[0] |= DMA_INTR; pic_set_irq(s->irq, 1); return; } @@ -192,7 +197,7 @@ static void handle_satn(ESPState *s) s->rregs[4] = STAT_IN | STAT_TC | STAT_DI; s->rregs[5] = INTR_BS | INTR_FC; s->rregs[6] = SEQ_CD; - s->espdmaregs[0] |= 1; + s->espdmaregs[0] |= DMA_INTR; pic_set_irq(s->irq, 1); } @@ -209,13 +214,14 @@ static void dma_write(ESPState *s, const uint8_t *buf, uint32_t len) s->rregs[4] = STAT_IN | STAT_TC | STAT_ST; s->rregs[5] = INTR_BS | INTR_FC; s->rregs[6] = SEQ_CD; - s->espdmaregs[0] |= 1; } else { memcpy(s->ti_buf, buf, len); s->ti_size = dmalen; s->ti_rptr = 0; s->ti_wptr = 0; + s->rregs[7] = dmalen; } + s->espdmaregs[0] |= DMA_INTR; pic_set_irq(s->irq, 1); } @@ -242,11 +248,12 @@ static void handle_ti(ESPState *s) s->rregs[4] = STAT_IN | STAT_TC | STAT_ST; s->rregs[5] = INTR_BS; s->rregs[6] = 0; - s->espdmaregs[0] |= 1; + s->espdmaregs[0] |= DMA_INTR; } else { s->ti_size = dmalen; s->ti_rptr = 0; s->ti_wptr = 0; + s->rregs[7] = dmalen; } pic_set_irq(s->irq, 1); } @@ -265,6 +272,7 @@ static uint32_t esp_mem_readb(void *opaque, target_phys_addr_t addr) uint32_t saddr; saddr = (addr & ESP_MAXREG) >> 2; + DPRINTF("read reg[%d]: 0x%2.2x\n", saddr, s->rregs[saddr]); switch (saddr) { case 2: // FIFO @@ -278,11 +286,16 @@ static uint32_t esp_mem_readb(void *opaque, target_phys_addr_t addr) s->ti_wptr = 0; } break; + case 5: + // interrupt + // Clear status bits except TC + s->rregs[4] &= STAT_TC; + pic_set_irq(s->irq, 0); + s->espdmaregs[0] &= ~DMA_INTR; + break; default: break; } - DPRINTF("read reg[%d]: 0x%2.2x\n", saddr, s->rregs[saddr]); - return s->rregs[saddr]; } @@ -317,8 +330,9 @@ static void esp_mem_writeb(void *opaque, target_phys_addr_t addr, uint32_t val) break; case 1: DPRINTF("Flush FIFO (%2.2x)\n", val); - s->rregs[6] = 0; + //s->ti_size = 0; s->rregs[5] = INTR_FC; + s->rregs[6] = 0; break; case 2: DPRINTF("Chip reset (%2.2x)\n", val); @@ -326,6 +340,11 @@ static void esp_mem_writeb(void *opaque, target_phys_addr_t addr, uint32_t val) break; case 3: DPRINTF("Bus reset (%2.2x)\n", val); + s->rregs[5] = INTR_RST; + if (!(s->wregs[8] & 0x40)) { + s->espdmaregs[0] |= DMA_INTR; + pic_set_irq(s->irq, 1); + } break; case 0x10: handle_ti(s); @@ -362,7 +381,10 @@ static void esp_mem_writeb(void *opaque, target_phys_addr_t addr, uint32_t val) break; case 9 ... 10: break; - case 11 ... 15: + case 11: + s->rregs[saddr] = val & 0x15; + break; + case 12 ... 15: s->rregs[saddr] = val; break; default: @@ -403,7 +425,7 @@ static void espdma_mem_writel(void *opaque, target_phys_addr_t addr, uint32_t va DPRINTF("write dmareg[%d]: 0x%8.8x -> 0x%8.8x\n", saddr, s->espdmaregs[saddr], val); switch (saddr) { case 0: - if (!(val & 0x10)) + if (!(val & DMA_INTREN)) pic_set_irq(s->irq, 0); if (val & 0x80) { esp_reset(s); diff --git a/pc-bios/proll.elf b/pc-bios/proll.elf index f6198f4d60c4e1e47f5ac8f371b5a0c5a6ca9196..21c739cac684e8db33020c48e2716f586249955c 100644 GIT binary patch literal 132317 zcmb<-^>JflVq|~=CI%)31_s9e7r-JW42&1S3Eg8&0a4G1$Z zY+ztuJbZwGfq@+)o>KBO5TXf#WM^PtV8IX_6&MYH(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@RplJvQG_bIPdjBxI(1U?tc>n{0Km$wWIspYnfd=LuFgXw{(7^l! zM8mK^1M>$M8$=`NUyR0Y1@Q$Mn4f@X7#3(?egI>GXe9lf>jV@S1R9ucfW%=~pn>@c zj18g%8kjGDXc!h~U_Jw5gJ^*U<`Wva|VcpVSxtb6c`&s z3p6k%fM^&-#6R;%X#7XOvvkHiYVSxr_1sEGd3p6mxfM^&NXkeCru|c#z1G5N-hGBsQW&s!*L<=-9^MGg= z7HDARfU!ZeKm#)ih=yT-24)5r8$=5^5wV~lvt3!jf{g=E|q6rbNSREJ|mO3ynH88M()Hf`3 z5Myd!;0Cd=#djBD0ta%uL(K_UBcQZu!K?7U zajF7C;|m5bejvSo;feGDju+Ak1l~w5koX|IK;et@0*xQi3k?29FR*BQz`y{;INa2& z^MI|3Goc=2&nf{1)-?hQY%5J3Fm~%aVDA!i5b5Gf_z%`UF@fQM^#X<`)(bdZST7KG zW4%D)gY^Q1FV+h*epoLs_+!1m0_3JH0S3_?0R}N#VKDdc{uzog9t`#W{~wN)Fhj+K zMHCn&h$-)JU=Z>;qL93W-Tq51v;7zGCV|8WtoC0dS_Bq498!3^1El|mLV}8*{TBsc z`!5QhH0i*=_G*$)f`F#|7ZX7l4+edZ9YP8Q_5c6RQnvq+r)&QuZ-D><$7CY~5s*H0 z`!6OFgcKwk7})Nt)=iKArRg?N1p!drV731*AZq{R!vxU>I-qp^K;Z$$5*7xgL#he_ z4h(Fi2NWK#Ob|(saA07qn#LU3MaDgR3VgeI`kOKo7(*!04#tEVeVubC#d~jf3 z%M`W$@j=l3OCCtA0|UF)1R(_r2L^`upfq`jz_2wa{*$+Gt zKz?m-U|?G~Nq|8BBz}Y;!KPus0#F>qH7rrcV`^ZqZdjs_%+$bOFhM|pp<#(aic$lE z?gRk^CXo6m0t`YoJQ7T1+a^d{V@PnAB&r~AffW=Ud>w=hD z3<(@d1Q#G*BA^g(fgxc@lYoNWAsq$ICIN+@BRUFP zEdmPuhjbLUn*I$z!(vBHJX8aDmnS zi)@R)f}BGN4^%+;M_~Vd+an6eJEjOQa843n-~gpJX8SKZjRz81Kj)v(V+Y) z%)r3mz`zm*$}0;dDS*-e#}okt0jRsgCkQDjI54n*>u<0)0|UD-I8Q0xm?V^t;lRN9 zZ~_ZBFPl72NC;^>{(u7%{vfkY_&G2%EL2csYGB~m#FoG~L4bj!VW9%3Ob(nRz#!qk zz%U8q4wyQj{r`V})PeZ3Bo$JcBo*=-7BKL(CD{LOSir#80-`4zU=nIz;0CE{l2oW@ zkyMBP$wAdHH9^!cGBq#=G%Qp|o+Q8^)v!<@9~75N4Ge5s*cPyW%xp?fV3@*@z&3?x z0oNra2L=ZQPK%zqKQY~r@OvgAGm^KM8FdoxkU=Z5>|0~Ge1uXXe zq4sHC0J(PwgP_Fz|9?Q@u()klv;Y)`Tp+vJ1QH#ZxD@!OFzx?;gyR6?L?ZIs zEI7{6z`%Y)MN#E|#sQ{7YzZv$4>&MfU~^zNprWV(a}Ox3ZG@O3xzSERqG6c=7gGZR z%LD-h-unOlAA!pM91|8KQeAaKaw z0f^6Z!r%Y{l+Anu%042bU;$zuFnGX(?5|^N3LMM~_W!>yJm8rpko>FT1QZw!C_GTuBwzrdWp)WLNF7jkAhClvQR0BY1C;}24Gf3)6yy)-EnqsrryzGk zZvpcmJ_W@?dJ9;N@F^%9(ObZJh)+TJklq5eBYX-Fzb_f!kh!<3G-O?|Npj&J%NLj!Tvup1B1jafyMtf3D`F@ z2_(+iAz=BVjoE>*MSwwSn}7m;2gd=~ZEgSmgUoDWc*b$UV1dLTjRn%5G!{txFjydS zz+i!#%>Mu1TNoB_G%+Vgu-pHC(81v#+rpeM1Ei-(z=8RY*#e;xW(x#5I2vS;#KcaR zEf6`Nwt(Y++5#TrI6K6qpaG3{rAKTE98VY=7!I*CFf?=|Fc~#4a35k*FoE)Ulo}Y= zk@-UV|NjG}X^>b$M}oowmIhFo^aqXPFA!m1Ji?}+!_2_Y0;=1Z1QHaO8W>zb;>-*J z3?RDx|G)hc1QbLbs5CIt|NpmVf`Gz_111TexMw_M;s9#%DuC*j7J-EfheRA0nl%yx znhg>J8af<6AHSD31` zKwyH9VuS+&%i5_%3j|={Y1F{La)`kJ)Q92SAYlI=RF+?20F`kpizf&vb_g^uu!F=w zVIi>p|Got}42%N%|8D`&$ngV;lV>amJcn2kB$_o6n44G*FfL$7kT}Alz|_#Oph2jC z!3~tIRteZQtPx0@)xxphe-p<7P+n#Rm%kkg91fT$u)Wd&wH*>9nivuon>Z5q52;`` zPig=Ek03J)8W;?O_W%C`3gbf}3T#ar`Ttii)cw46^+D|ekb9>HFo;ZIa9{+t6PO%8Wv$R;tpv77Ob(2bwGx;ou^ixZ zVBoZv#N;3b(&NCu32J9ZGzlv$Ux37>2qb<0*$FkDeS(nU50Kd)I}G;!e*yAO6Gs9#jR@`ke;edBh*G3JNQb8$jU*D!W19c!*6w0F)k~e)N9AlE87mWC0V%JxA0O1P+Nbfb-}= zg9L#V9<>H$1_p(O9tOrECg5^`wV_9ap-I4k;gCrK1Bfluz+eVSUkyD0fU_LTINJ#>uu1P?F1r&B5w}9Ft zV7n1{T>+HW>;M1D0)<=s|9_#Nc5VIte_KGbKm&sy$Zi2p*frGuumAr)9i&cR|Nl!M z_t*dbF9hYE2KfzSKgb;p49rU=2q}Tul$$~BJpc+blLiLlFb1X7MFI>G7g!WTgzdku zPZ3}ce8Qr@F-a(Sfdd0~=>`D?0Z~*0I-rsua!4nEr~d!H22k8G+aF*!!lEG1!qLEZMBxFC!T$fB zF0m+xY!I;j3Uznc1Rh%EsepRZUHIG7q3>@Kk=@Tl5+do&#zL zBK80OnH^9|5D;i!Cp^l@!umeQ&L?aNJV(?LMAmvh#=JoKLAXhDJwsy$>iEqe76p|fpt5X%1CvMt zgFhsU>OV3yFt{}=Szsg9z`(pnfI(=HfPzg6#{&K~1qQ)pjRnkY0v{MwFgS2tU{l~| zVrXCj^&^`Y9GIFl64;KJD$D_~511;<1JyIjm>d`#7?@5^VtFXhu*5+Klt(7891xnK z;vh7ENm0UqfoUhGZf+8=Z|1cBVsc1VVHPOOHwh?s95QuaUo*ct?maV%hJl3TzEYEMrPS#$x^Pujw^fDzP3nZmU|>X@d2oC5>XyeUiz6dIN- zU}f3=|1(Ihp#2vO2L`4Y6ND5BF0duAI503=n#kxO_8Huy~}Vz;R4XLF9m$g4Gc<1r4SK2Dt-j3MQbu zcZ4B<<%pVs$tSi1o`z)!pt{VcVOavG@1_gR*J=s|htw2wKw)r+O@YOMfvI?ckkSoM zn+cTeLFpfyz6BDXY5$KGD2_n#a5-q&Kg6cM)6kK?F4Vvvz-s>mH1@>tOof4=Ng$Es zgNg#jAr%GC_!CEqz``|60*P-x_1Ym71p@~Lwu_+rDA2$l+$5mDaES%h24D)9Af)s` zpn-uG6dniE6buCR|G#xWO+g3bR*;(=7?|8A2q|ko{h|XZqYtSm7=X&6i7yx!LG_xT zoB(JXL%@N7p>~3h0=Rr-YGCka5>T+epvJ&(NKFA;k2o+enM@E;4gi(sN0=NK*cBKU zm~9vsK;>q`f(B-#1_pD`c&kJMgDkTK0|O}hnHm_xm<2%W22hytfZTD3$pNen5thb>$H3Rh+OFD9TcYY|XjIi#il3Lmy3YT))6+aWat z0Ym#QiW|ffI2;%luY%02|Nno=1d+rY&^nO6NhEOxxZY7y5COFp>;M1f2aQERvOAaY>4Vzmd7D@cNQyEruuKqAh}p!J|9`Vt0?!6M z0|o~M#>B~b2|Um?uLvj&Zepwd->|IyKT`t({{qmsqy3k>MFI&D7g!QN?O=f$ED0P_ z1Q;Zy2`Df+Ffhymsb8RCzyQ)CwEzG24Qd7qO)L$FEX%$!bH&ii=qPqWA6kZ1qYCMATdz* zgTiHs0D~k{zIB3-LO`<_xZTgRfsKK&{{JsCP?-%jQ-Fb^p-+Jsq?W0HK?O3V$yfoh zXQEkxzy>~hh6!8>f9n7L(wxA?z=1`N_yi$^3p~8WIF=`TDKB%5&2e}U<4)Tiw17irtkDxJ8kUuBBVBmoGQ-xuQfC_`6{g*rk z21fP?A__W_1XLJS2rzJf#2pwInLuK!3_J{N0tyUGObn9C1Q<9#^9Q*(OSfo;K=;zW20t_!?FhqJJ=aOeRt*s z0uSsK2t3#a(hC|}uK)jYA}F03G%yIGxot9%+qj#U7=%D>1L;F{U;Y1|jUaOb_Wyqb zvL947!NP%=0W`O!z|ba;{Qtm$#si?X&w&Mw4J`}{1VH6B$NvAnL3s}}ZgydTLqm&z z3d4Z~4GFOEr9(^#ETFj(Q28}UfPo*B9)%hh*e3`nbb!VNKe)xV(r$`OVG;5x^sfr0si0%(jC zq6U;-Ky~B<&|D)}Zvul-0|VCqg$E#au!F=w&q_0`B{ZC_~zK9H6@S5KH17P<_JHzyMyy{eXo5G;hIRwEzE4 zP&?e9fq|p`|Nj%9e13>UL0~>;43R~FM_~W|?;tZ_adk;af#Zsj0t?9AOG*sjxx52P z3LJ-+6gWBr6c~^i3SGn-0~46 zkRAp`kXfK{Z;&5A<;fHQ2C4f0|KCg!V36DZX-~0$%1H+X1{P487UmYvcxuC<{h%_Q z9W*9!NsEC2CMLB1|KABr3NW)7Vd6{;4B)o^AufnokQ$H~hqN3(<5eK{fWiSu zk07XAI^xB^aLCJn0i>sCK?9>u0|OUGJ+vLc0aI_Z|NnQ8T2LAS=>yFtgUp;Dz`%US z3smQW+i~omGz&5dCT0Yg6Nb21iGgYEGSHAmWJn{x9|af4(}Tz8}2a1{PMJum$Cd`v3o5PY_br z0Gk^IwRaj8f!)K|tl_}fY>~j&(BZ%#)WE{A_Fq^U4t{>rod2;N|M0BS=BfZ7oC|Nr$aVOhWks$W2Qxc2}54ypr=us&b`nSF@$0S8Eb zlWGGaNWR%1fu~s`fk~=?fwzUBfsvW<|Nl0DWQJxF1s0Gwpzr|cZxTpo1E~jAc!16||fnkFH19E?Th9CBtY%C7LNUone7`GS_Brbg4&)-I3DmHQELF#JqOelh=9WM3#g6FroaPo z^FoaTCQvxm|Nk!v8q0y!Ny4By8&vLt%KQsz3M`;{dm5;$R9gTJE09^B{_G3^22kH# z5j1yM|NpPizVt_5c69n)nVpr=|!s-*JMFBB)OfUQ1B_|G(`7A%z{VbPJjz z=@4MxXcI`h&;lB#U^u`q0X!e#z{1qPz~092fCtpCZCJ2?S!MtKU!XF0f`I*hP#T7% zCCJ#q|94vi6xcxiU~6FD1l1Lrm>58PACpaN4jfGaiB~r3B{0?h|My|?I|s%?j7kh` z3<-=a4B+unP|vIJ?4 z28J3?d47nGf#Ct40%NmA0;uhr1{!alsHGq<(FoMPVGs~%U?>8)^An!}OT)4RHlYTF zya@stpm`9c2Yd?5P<;_t^nuq+J>yegZCLVvMW}%xVFH^1p92Gn$_h4cJKYat?j!+l zdB1;x0E5T_J_YtedPvvkaA06Gdc>l522>`4+zcIyl>m(uAJK7OIHZ%n=)l0J`2?;;0W`)T&}xtXRkMKU zkj?_;LoAACK4~Pd9AQyB^Gss_s{;e049HwiI5it7NPxoXkWK>I1)T(T2L?t7kXu0h zy1=4%#({zP%LFC`zDs-xg2(t2_zv+Y@V9F`kT}ApAOLa?NDZib0?o-xU{a6(l{*d$ z%+DtYIWU3Bl}jv&XQl`!uuWo00Hw`BP`ekz2Z@8itp5MMoJmXxLJkZJ-zNxYuz~6< zklhmm6l5lAfz~H5U6^c?AOI=z6u|ZKG64pOhGq8uneD$QGBq$%Y!FDaXjt+9)Tb{o z1kG2=9{|mDv@{7MFm}isU}};%z}T>Wfdzd&)u@3X6Vw(1m0L#`5_%ds8JIw0FQE3x zA%;aP%O-%^4+$VO_5c5a`VhjPG7yx$L2=Z=${+&DKP?OmBB1mQO0xnD3?UmB8WqS=Ewn(2uM|*xIWVwppCF*X@4&!%7?e*y<$_QH182ih z1<-iyV~`ubVY&bR4^TJ??Ek+W6qaK9|E~sxw?P8~6Nm=IJE)D{u*e?NKH-PPRZGJn za9nYN_=iAow*cHnWo?mSU;@oYfaVE6_JYj3ppXP^XMy;jx)0=b2L^^{kolmn6Sn`t z1Ihyq3`}y9gpwUVdO+?4wR0~hB%T5BHwY*&9srpG9YX`Ji(m+we1zdaN0UI3X-h-{ zV~4Ep!qw{*eodRQ2c`83>2r3c6!nQP~5`80HnT2Kw-KA1LK}U3JW^w|Nq|w zk^{L%seyqPRNpx;u!7fOg3>RD4{G0o)F4lp8xfA3c(0UfO1_pmnUFg8TG~1BD;Xsp^B1gj_ z2GDpIcnz!r1JhKHe3O_WJ4jrpfx!kGu1gf;SsEBjrm)yQn822xQ2+n0x-bKSKog6D zz#@kF2M!F7J%1oOKx-5x2`~tP%vr?ZAW;ARuMDXDV6gxHcTj(Yt${(B+5Z0rkhu$3 zKy5k28IX3sUwe?ch9%&>k}4?eL&X2j6J%fz0EJhRK=S`4o(4vc+dy?c$P5skAf$Mq z{{LTnkRF2u1~CCppFl`)hcMKhNh}VWAU97CQUr}r@`1t*qECsV{{LS^5FgYpg6ac} z@dZy{O90vFAh7@c!6iZrjIgwV6dz?EeW19g|Noa2? zKy%aYL1ux>L3R^poF6n_wLlnW?i1Mm{})IvvcEv<6hYctYe3~n{r`W@CkQF50hN!e_FoE4FeGub2`GT(YfUaNEZlQTAc?O< zK!J_f*x2}l3TTaP!r5aw2@@KE7#JryFfbg`QD9`|vv_<&M}etHAjxu~kplAsB?ewl zc>yXbVCp7nDe%?*|Mwmw28vHmKfnI}zjudB6gV!ZD1heoUW3}C7gQ8P92l5qg32RM z96-_%xV~8eDp&RGznDxCP;i+dpx_Kr@4&!xO5OfT-Ub2ixVNIN{g;9XLP{F-|NoTi z5MU7BCGubb$nDzpUldmeB%FP~x^PeZ|9?%3*cc=lLKs9AIxsMR+`7<2fq9~pg1{01 z1-%6<;P&9E2da-ieHw{L0*X2g49sB@L>^24r4O|R2GAS>sNKSLh+T=}2zvqxXgmQl zroBW!!5%ah3v&AeE(Q4sEDjtSnCu@kEK^_>0nH09Q?LQKbrR14`}+TXyeEhzf#z6m zo9zGpXM=!(jlll@zd>>hixjn48W^~nL>^2y!jbR>+OOsY#bf>d|GpCh6#j$UV${F@ z8V^?liG%VQXsyNsA*GBB;C~nA)tY=)qw%res48cz+C_T|J)-ANjxBXg&G)SLFUx||E~pVCxOJ68o+%8 z(72`#DE-&}{|8<_3CjPV`mO%|zoH8a2@C4~|1*S^ThbE*6qsRpL3$h*7;Pcu{sXVu zuK)k{Gl&oJ53-vL?Z0GQU{kOG=@n{VV4J|CAO{*V-yo*cQ2+n;S5W!^)t#U;U;qF2 zkx4=c6(IG8m=rWX<2fKRp?Z0k?Z0G#`b|v&2^meGIVJ@M255gt2{gXi#E>8Z8kc9b z|B?-|Lty{^7aPQsW*ksRvVge>lz$+7Fa?Gdfh2*31rI>;odTeA4jOlBSOD&eae&5c z4>5qoyTI*I)=QxAwf+CUg4Ria*v$4{vQ8*~=4lfgVD&604=e%qTNvCx^9GB+W5o)f z@pXxYCE)Q2g$V)-QV&=_?epKAps)q`eG&_Jt|YJi|8LM*&I&>MFImlY2^^nv6nH`7 z{gYS}_&{USps=m~|GWB-jsnjUl>|_DWL;uNusOn%U@-px$Sn+lps-?UVBi9!v-KWH%jRV_;yn z|B~6Nk-*$0@E`-U4rY=7186J=)UQ(9z|g=9noB$6r@#pHBP(d#V*UT$t{^`i&{Kfd zsh}~%CI$yiP?|WTqyU~vIKl>A#~^u#O@U(yLxUt}yrE&yG6s$Y2DU3|3NW`BO%PJ9 z0L=q|+y=X0LmUf0V>KKTgcuk>Z0vg*n!t%(X ziNS#xl&_AcJhE6Iz`zVzO8}ZbIHHlj2$F}Ean`E#U$PIeEHVLwiBJQBImm5?d>~;2 zTBCG8M}ct>O9ErVk_1pZepf=xjH zH0A-ygGvnye4ue@kUJU{EMQ{U{~weNI4*(ar|rKe*8l$nnp2!n|Ns94(3l=*-8I;* z1qq;a;a_0-O!oi(3exjIWswPJjlv~11)eEP3Tz;=Co$E30+lhKz8Waa8}0vp4P-|B z|NqrcGcO)cSp-k-p!)Cxmjd$Wf`H<;hGh#FR2mqB59omE zcLoN~+UW^Q_W!rA?f>6ur6Av;(7@4Zus|N7kAWH77V2;S^}AU?Yl1=gP4@r)3|c1) zG6U4d2Z^@{Bp*29k$eCe&zwg%k`ElwVPF82iAOjNFf?l{fb9Q(u4xA8Z34NQMS*dH z00ZL$6$a2)$)w3I7{L3pKxq!<&m|%WE+D^x%E$Wuzibx>Fi30?PynszWvT!F=i)*g z1%V9$3_>9PE;LaPsQ>@x45*!S!DIoG0|R3%s4N1dGmx1}1Q;Yh<<=wtB^J;+a0dp) z@ChPH4$$#;r-o$;3~JDJ{{}YuKMl*27$h1POhIMA1OWxs`u~5nE)r34I3%Lv0Lmkv z`~jUKQ3Baf|NqZgP`!sPFVw&wGErv%$ZbnOdO&&)i6k(A*iilI6Cmx}xf=xR|3LbO z3_>7#LE|hFgp@yk=1D<)cY_878A1CmN*e_1|4tABjVb;D@3{lD{pAfHV9=ims z_g8}GRZyt^|4SXD7c~E}LBReWs4N%Q|NqkjA>|wO|9>e=5K=w?D)&HgP_usv?En92 zf)Hel0w@eY;m2(MB?r`=P__S(1B#ym3Q0co|Np3h{0>U%tvaAJnhEwT91B71Z&y&c z1Nz zYhd8Kppq2Ou*m)&sJ>`eqQJ?r|NkS9I)MfTK2Z70YX2n%G|oRk0BlCVA%#UDpn4tR zuOt_czv}=0di1X^(TX*2oV2^!J?=S3P~CD|9?w^{L=*K7lX%*gzdlNfW}Pf|NktRB$SkZ z6c!y9#6V@p@86*QRKv0aSx{PSaZq3YrPT#Y_HP=NC~$zwg$dxfAL z_#r+8&V~gEf<_GtxgdW1|KHayh%5k=o1lF+IUu(j5lD(?SkS;>)WDDeRdeow$O0CS zdqMJ`zL!Mp_%|2SudM(7`#31wG%R4?XtH47Xan{4Kzm9+bjJZuSqB;y z&pX7B02;>vjSqn5PK6p6yg+6xU;)j!{ObahG4=m{ZvmMF%CGhRe}UFFO4a}Wz2<@l zXs!X=X3hb*ss8`(O~A7zx-|mjah)gU#WpX5M(E) z&3Hj%0owtS1#F-;K1d#rCBdQV7WnpK>h#U2B7iMhQ0(wPpaX8R3D^Js zE&c+$zl?$7kck3lUyKAu3{)pJYbgkT!VsKpOct<#)}S2%(+aK!bP^a3={PVfU`r60 zr~}Fazga=)?Se@H6R5m6#IPs_RL)G)NC3~t)c^nW_mIM(9FQ3=bP_lZ=_GJmFiBuJ zV3NRgz$AgI{{OEZNN&73fd%CMU!OsKgSz{|1eOGz3#^YS>i_?G56bVLGzXd=0kyvl znIwSR&H<{IMD4%ifa)ZO-~a5JBD5$06hEMNocMwPI{*6XCP=Ta{TCrnewiec$WZ_P z&m52+K=~IG_Zu7(7%nIzReh;J|T2c|l4O zg99Vj?+S}198-kM?axu(KLJ+1O%hNLIKq(B@qwX%p`p+Ezfc1Ms1GIqGLsc*rnLQ+ zf@6#dETD1VCJoU1g#%NY1*E;yZty_9p~C^R#zhlUUL0d&U;yQdBZ>?RN0=e&P>(1l z?y3L({VXW`vV-avhDQ@XamdoZAk)H7|Nn@>qX_~HkUbvt|9=F6)U|3UFoWCx3g;$) zq$!|0aEze=G&cvDTVVtBUFIJ+z;JNSQ2 z(AtV~AURl=!TjE;r@-7HkTeCPr-==+|7(JfqC&%h1U`ud2GLmz4J?Nk8d%!(6hQN% z5+HRTKZ4vY)WE!o>N}V_KyI2Pz`zM|18Chq6O;Y_b}a?a9s!X3LLk2%VmJVrYvq{1Z~$B`gWLcb zp8$<}A7TcN6)8=E%#rd!#Va6V?2xrEAoT+K|NjB++fXa15g>m>L+gFQ_Rs2+EW=)c^k`s%ZZu2P6)1FKC_G1%;%RLu^V7p!9J> zi288k4kBl+n8l>Kvp zkP>)a4wNTAegoyL`v2cJK;stBauvKjrT+gnagZ8N8iU0HNWH54mt1xGFS*M0UvdTQ zzvL*|f60}%|B~A#q`aj`L_wrQ_<;gwjU#AXM#G{8iDN1Y8V;#EXc22*5IUlg&@oMb zff=+vcM`(`o(^UP?q;n8%(vJa7+csJ7>_Y5V41?SfU$|0f%BN60>>d`25yiUw-gmv z*!KVbI)hn(r-`Y7s|92ig98_+p9yM9g6spS6Ki0QJfKkj1+-=aG!`&JAVFaovjPvu zj#-QhJjd7^7@OD}7#o%~FoXKcp!LN~3s5LM*F*0z2+;B*dfd^#f z5#X0tcww#ccnD;fTTmkwZ!k zKx;fRniy&rz9>K70FCd1);b+hcmUdGA;E0_1GG<&=a9k!0nmQi1IiCrKzo1>C?`)a zxBrrRKv8*)sr{GS`v2dV52z@JbciWhG>I%|Xc2kPB5nUAcZP66Pn$?W$00=p0cI8k z$0mUU_9Kc4B8SuzEm{N=n3)+E9F8c0#(k5RS?#}w98y%^X%Sd(gW3Lz>Jdc+g(iUn zA6EM>VuutJWLg9kxiH&*5j&!&u%SsHG2w`!g2o|5g*7c=3v~`DDuDJIi!})(#T-#o z@HnKX09tn_+9dW+w?$y_okNNWJ|MlIy>~|x6(SBPDx`q&W0OE~$q_|`fJ2H386bN= zYFY#qcr*zlKE^55=feHOi@AN zkfOqpHUR}+kU2*b6=pOEB(s3j9a2=-(ju_v4@ex8)|v#8ryNmKSaC>EVGq0g7ttmG z1%m_13LR|%kN<$wA5&C_X%SfLb4*bo773J)e6 zQh3laNkm!Wh{6MK89hY+be_St<_SVdE(=7IH9+AdY5%2QmayW1HUR}Dklh^u3XGt0 zOO7cl3ShPWq6S*a-XgHT;ebk_!4VY&8&J4_{N1oT0kl5mOOrsN&Iy%;CP$PL6b>mT zs2ovF0PR!bKct)>a6<2)ZkvFD$T1ZKmlgp9p(D!Rc9Gf%y@jCjK?05_D;_wcqTp~y zMZrX%fkEwQ zM^qGCngkLmjwvUI2sAK=g3JT$g#f!zV8I0NJ_zN69)bP;HyqMdXl)TtFan#c ztkBaWkT3%r&cX>jpfGO}P$)j4k}yq zlyPCG|Nmv~5ryO$P}zP#A-Ms$Ol)Ce0Hpzy7KR3iCV^xT(3*k=3=T}7xjoR{PEcKV z2(;#K0rKptdl`4fX&3p9j?$Ap1f4T0Sr- zaKP*VmHAC<450m75={&apuO0V(7hNuts0=ULH`ec^g`!Xxxwvmwgi^?|6dPN1whUU0k7d?2KikeSp;Mrs15{; zx!3>yKNnPAf&2lQ3uU(dq7E7R1fMYiuGc_fO#;b3K=y;iMnU#6+keRuwEvQOgdsr% zJpL`Dyay@|4kyq!Gib~O6d(2fzuuZ4qy#=M38V&8M}o|Ns!^-||Mk)YA%zu_z~c?? zx&>uwK=c0KbzC5Ig7#lPYEFXIa|z0%IMn}t*91}vTib=C1~m770jj1FT@7fw1vKX= z)xaRqtfv5Kw-`y2u)#g5V*vWz%tcn0p~OUB?bou_CFU`8YCvM zH3&=*P-3Y6|FvoXixLCK9IpNUzk$?){50_egEYt;NOo{;5MYq5|Nnn0D10yIHGswx z85@=`NO0}{{~II*(gzC*Bz+tpeHZ*1K>4B~R1)Zh90$MjG z(7<2}YL6W90*?Ww7&S2HL;0Y#osLlhgEokN%u9i_VZj5o6I=?cEDa1Ipn2INTncPW z4ErxMaU_7|W;rYx82DN^71)~??UBVeL1L{M3nV~m>p^8WXsjC42LR=v7LEjVN&7Fk z?4bEkW~G2Ofrkg0H5HgZ>vTbNI%rM-l;37CI4~bkH~<X^ecmPy}fXWY0 z-UPMXLHX$r!vdb^dI_AMG3F@(4AP)*1Fa22a${~t8=*~H)=-Ncapf4e~f&o;LI z{~MP52hBC}Z{gbjn$OEyB#?l<|3eD0cJqrINIhu1B}flw|Hl@!4e))RAa{b?53*~a z9=Pr(Sir&{(Ik*~V4)5;OeCQ5@sfvF6nLfyFi3&ic?q(=5!5Dj44^Orx%rC10uF3yKynut9GL!Jh>!SxA$HFH3-JpeG>9Gd z1HlIIX@Oz(;xapq<^P2^k^dLsV*X!K-Gfi1E9DAr7=)hzeyk& zv}Y&;G+qQMCqaFBp#}y%5FfN}7&Pv2Kuv)M)TRdQ0S4{k`lQCda6nCgN;g5RriFI|SFGtoC2TTLc#5fcnvm2M&PCZU+X2ZJ<0Uu>b#4(0qpj1H&c| zAG~jHK>`EI{{Qzt{uJ2%{|;zvF=(A1NZx^gVG4*A*#G}JRNoRP{}L#i53zyvPk`G6 zf}nZ57Pk8Tpz-P>YT!L*93bVbVJ2=g5uPHfuSA52bl}nS9(ZIK?LOYh6M?}pn4LdreQ%sw9x+l>pPD}8d98(*^0f{3F4`iA(7BGS00a{nEG%?hJ z);Y%?Qg{Gz&p}Yw9%2KZYsP1>|Nk4XxeN)QHA-QJ)D$ERsDakoDljy$Dae4v0ig4X z{2crL{{^i@XcACh2B`t17m!&F3=9$*R2-y0Wj?5W1)WI)T6X}7=VMF^44`}iiXYJa z3Q!z@;^zp%0|C&QDXss>3XDwq|Nm8%abN(AAJqSU<2*qmfo%hq!vBV4;IqY48kT|28k28W zrtp}lfkCQanZi3zTpeOjifEEkc-LyCzz*84+#<1n5pt$e186PPJFxow|KEVrfzl9Y zJ?I8Lg?dmw0CYA&lR#nyl+D*9knp03qyDb|NWF?u1V|5Py;~DU{XZ!CSCc>j6O{cO zv^Mzzhl2#NKVe}A9TO>-Ao3{2fq}7Lkw|h6s9px0gD_2iL2{CSGN|0`0`2(&ogn}k zqX3Pc-(X1IvP5KY1gH%PDsyi!Bxr!fZ>NFJEMuIoOyp6_0UZV176AnZQ2srlqo8w0 zMM2|{iUP|M6$XZ9puNc~3piRW666~j7BC!Pc>q7#vZ=y>>5z(oz!8=OEX@`Rqzz7;6XcAEPe?Ub+=7@>{&mk2Bl>;gY3I|ja!2SfCQv!-dkovig z_jiEW{%j2lyr8onj<6{RG%Rxf?c=a)60rXd%3Ev=ko6tMK>MkeH868EFtC93)(JE) z7=YBUfzQLR|KG&sAPq{RpfUYz3JsDC%M}>d8W_|;YMR&@WI*K{NN$J10V&YA3s+ba zIHtuN-~^?`BTNb^x7ZX^X2dgaO^S2i1hv_x#5Hii%Yg<4mIM0xzr*%qPh;Qz9h5IX z?UPGv3KCb?6htOPIWQh$QQ$bjrl4{}c|ptr02*In0l7~Ae0C4$ zyfW|_70{VQ3Xt-`K}xBCK?qcbfyzIS|1L2s-~qY)3c~`9NpTIFhm;q@fc$X;>edb5 zGk_96^9+oTFgU;k8ux2h;2>?Z|NjS&IfvL3R0Q__e+TjxEZu_qFhhVr3Y0EEZUx2X z7d8b@T_XT;t5pMoA;|5ZI8g)7H`)IOtvzX2&cFnU&n9*T9s!tN7dS9kH83#EP-u|3 z#I}Iv3LD6+2ROlYD=&!o0(C1WJVA5WAb)|~8qa_=zCeBg`5ENTLu?CpP~wYi0X)87 z=7RhMG8be%*xaZFW{?@keg)-2@YyhsG}aFD8&d;A3rOuD@Oc&BIyeuMZW@+70JRaE zKynSs9)Q{r5}p}c)fyO*pk{;e6QflFLmY_Tu&hCn1)P5x7&RIgSen=zK#WQe%#u<)4$`HmI3<)gL;u<(%d1M;X|NpmG6jWg9ry9hDlKlptFGHf!qjBFWBQi0hGUy;sESdke&S7b$ML+?xM?tMgAn^rg zoc)jz14D~|LPL{)0>=^P{!h@FtY)hP@}N2YW`hJ-(B9A{rUpjPIDfN60`oN`1)f7n z3ZVHx=_Y~19iV-qhm^o$qS8$Q$$voY+(SwVpfe?;4=5>s#>qTD{BpkXax*K<0wX0htMEC*NXA5ZMy#Aa#f> zLEs3e-Ok`3eUB}{;24_&!#B1Bl@n|U8u!!`434QWF#J+eVELh@zyUhj;Fg+#$Tu|w zl@n?T8Z8VBQlN7WVBrHYA5@;lSJy(ZGCyDS-!cwn|fk14|Qw1J4m|2k>6d zBT5P~N0<~urZFAhY>8;#KE|XV02i@KAEC7|+ z5^dn~c^-hqWI2v0DJYy!Qjj>($imPhV9(I3;lK1^_Wd_5vG4zIfqnmrEA0E<9Ae*pr(uBuCtCyP+y(~OL+tyXfYu0!H87aW zU`Sv*Q1@S{Fpnl5((D}1W(*ziVLFIi5*MtAZ*c4=1H5wS3 z80vqt2^;{Oj|4iSL_uu-{|m<;ZF`9p0R~1;TNl(GKDMBR;gy<#g24X&Cl077fWxEy z|NnWQeW0+gWZVBA)YpQ~Tb+QWhmJ@F?jxWx8W|e6jxj0l%;H$U4r=Fs@*^mHfW`uv z1Qg_3Efz4hF&toNV>rOn!twvlF(n0wHjW3(?HUi5+XN2qb|^S7H!M_;2h9tfP*PAh z0!k+hEueV+*R0{df+L-P)T5`9e-x$@c~HLvEuE-iNhb$}csgN3N+D~GX^3%ZQSTe|f&O!q1r*Bx+z$4bcV7t>kLH-__0?#Y~1%*$bcAIPxt#mLS zU~B=kg%=!=)vahJIR;~`M_13DK|pFtM1SL)D07KRQ+1(p_u z2MP@f8l=S<7`Pi29FT4jU|<1>|5)I{&?dmZ)WWa;EYAi$4}yUOq{gg)feUnA6WDw$ z2S!lY*2d4k*aXUdpz}5tvVhK&14M|2zL3=K$lS?>~XkiEyIATUcnfdwhNc$(N6xIy97#0JXS4*VSq z4qPpq3e2EzYU@}4Iv+-`gVX*`v&I8vr0`+e334kqd=i*JVYI`X0TxCwE&2{JAh#fe z5oq59Mi~75hm4ye$e0%)9jyn7=V3@a$r*|M7z%K>%77$$`qDnHCF}+9D2s z&OHUCAGr=j21ZbLbf|&LC7F2)2c(*JX40J=4luA zJT0I-PXY|Gpme#5J%I&u=fR-`Eui!%vx8khp*%a%6Bs@5u>^fI;RLn}P^v ze7!?~LAFi7ffqDR)yDAue^a~z;}13k0Z`v)rlA7Uu6PILCI(R5=OD9z!9l8pp+UBV zp+ROILxWTkp91qXHAwtz-~+88e!wt|BY~Nvfgx!g_y0dLwH26V2{1@cVR|4i2@;Ro zJ3xD;7lGqZc$)wNf3p@e?<_h1>KCweg7S{i0ZGuAc%b;~Fl1mn(#8UcPnJW?M?mq( z0uJM4EDSr?6j-(~KVWHC)F3I=z#z6ofPo7X_n>$_(a6HEi|ql&uXY!PHns;m#~O|> z99ho7(8R95a$I1Ot|Nm|WyMjOm z==_$23?TFQ8WtRoY!P6PX%b+N-odWGvW@Kla(V%mZ4C<{`CL_le#CE@_% zOoInZ9Sjbeq`w%&OfyOT;>w)e7Pyp|huK)kMX|h!Uc&r69z6Y`&G`0XctL2g(Xx!{S z=qyMH(AYLePH6xC-=J}Akhv3IFi3&)d|+c>sQ>@G5Y(Q8jjw_1uK)i$X9Al7(*->T z=y*M3JPxWp6^nY%nF&l2xD@_F&F6r%k3sYSB?S?XeHYji1cdFs$b#0J)&KuiHc2QE zye0~Cz9(q>6*8s)-mAm|T8jfZZrvShKzoW= zp!4oLpgwB-{}*l`y`c4mUsMtV4yh!_Okh!9`=pW}0XiSJ{{M5O2Pz3D^WC5`_v-(@ zSvW}mbRLBQ=sY5KLHjT2p!4=Xbp8K#p#489sD0L6{r`8)p#4FhGxR`i768q23PH|z z1f53*I%}`~|2y!xsc2{If!6l@nn2oFdmufy&e{XXf%e6~&e{X9fx;MM zZ~gyw@H=;q;|a7jss8`})f2>&!0XwB8W^}Ii7Dkk_o(L9|Nq}RK}e|tG#3S0BWq~? z1(Y5bC%#h#-x-B$ma?1z!z4Zh_6Z`OH1TYUs+<6L{CI-M0+t0LN+tFGpDhQC6;2XR z;Hv-sYz=7a6*M+p|Nq&_2_oS9%25CR**wtrD(H;TCIS0~NdgLoCWs{P9MS-tqphF{ z>h~Pdc)$pfKcKOI2{gWNKqG+}%4dP{S)qJ3D4!k52c79Eb3h}36U49o|E&9f#sV&= z8#&TASEm_c$^ zz-Ou?$lTLdzzX8u(nw$f`RRbh0(KDpga&BbEi<6jts55rod;L{{~0GJY(U{q|Nj{uC=NfcB*=i$?!tn5CX0Fe)?bA{)kch%PFr|Nq|^R6c{kA2jwg z4ZLRKKX`8MMv&sR7STl|SArBbTnkd%0*e#SeJY^72&fDJjgNrN+P%b(ps_&CeL zD-BB(*pG!Q+yWY>ITW&R8|d7OBPs_NIQIX4zYKC7l*AMP1xApaiVO?_ptBt7|GyPj zAppL^0xSorPwW5xj{*4sv_D{qfZ~G*OrSkTZ*DFSQGC$Es=x@6n4fhX#F(kT#_F^NRCxQmqt@a41=SR99fjol+}y;x6os73yi^5S1$EV8b&y`DzQmlO)WnoZsD3U6 zhRnRolK9M&f};FfD~065yuADp1(3z5sURUP1_MJQV-r&|a|=sHCubK|H&9rBu#cmk zv#UaBUVcGp9>^hSC8Xb^eieM zeAQwr1!x!)7nY``R;B7Fq@<>$78PaYr7IL9CTFLXfV6_tg;ZE6xCRBqJB7N{fap*+ zA036F)Z&uFqLR$Kbg+RT0j?ltF*t^Lf@zRG=ft9-%+w+UpZwwy9fgvjN|4d2#bEUy zd8qxVMMe2VIts-li6y1Q3aSPs6*>xuDJew?ss?5`Q0Fp$)F-AVX6AuSXJGJ2%mc-! zb7G!)i9&j6i9%*kA#!>FsV^x?%qz~#EKw-Q%uP*E$S*BHv!y7tIJE@q90o8Gn_=E;S z1Q{3@JbYahT*7=E719$+QWX-5iV`cqa&YxVU@pQuLkJ%nTJfM%jFNndQqwbwOHzv< zk~VNw8YGuR9Mbe$jmEC%mEb( zkd#o6sGwS*PzEBw{!z#=R8Xy8U{J_0g3`tiIzKH5JO~K&&cJ6ldV1ms*lx0CFriJYnJ>K?P7r zssJvFK=S29nI)<5Fa@BJBsa4doT=bSzz#!ImzS?loSlSR4yEQ6lvKtim8MxKz{-A5 z>IYc?*6&hUkdp~c38^I+sYUU{sU@YL$V^Esiw7r?_~Ps&D{zqIP460VvE% zDhpB-R4a7AIkYqnQdj0Dm!y_3FffF;fuaWy_z*rUv?1XHau-D0DJMTU8xGSg%0IP)XLo#zy^GiYL1HyL<3IG@45HV1|g}MY-DI_JPD8Q1a zl|n{-F{Cj18g_Ja-G+gIK^7FY3=9k%3=E(v5*Q>P6i5pQgZK=rV4V=ZXZ*h~m4ktS zf%E@`sS^J$bU$EVU|{)wVXDIa3*Dgb0kJjyU+8`U6*u^Qq5B1tZSns?_ZukN;s1s1 z4^Xzp{|nt$pzMJE7rO62*%ALQbbo=e6aHW528A=o{EYt>y8l4MEB;^T0XdHal0LdY z{gXNWFH8l8Dkv`gUzj@K|AiiqXE^>}m^$PCg&t7wg4DnGe_`qh1_lO@e?Vq{>updt zfD|w=fUaNw`yK3mNE(>Bfq{X62V!O~l9|0A{U9?h{J+oxax)JkZA=BFY4-mYrk?nJ zVd@2FScB9;?E*)X0w}7W=7YkJ8>$x;ZXf<%=mjNDmj4%~G5o*Kn*#CsG=cvYdNV+5 zuz^_eLm>ksBS6fa21+r|^xL}ynjdkcUj~K=U{e{PdO@j&4HCw^pm=}=5mFumr33~@ z;$(OT)(gtx8UHU#1Eo$bh~7SsIiUOxRsf10Fas1aFufPSA~3z6w8{b13-ULnUXZUC z6rg3rG!F&_26m`=P#Wj?e_>j{{|nP1u*5S1g8>uBFCgIh!wTUBa4`T$yU;j7cEb!LH-O42Y;FL>Fw700`~phPVC$fE zv2Zwm;}hfud#D{CbD`;=ACw0{;k)4fg$barz|;@&F$1{#VP{}qPy-nbF=xsSP(Fi% z^#o8k1TtsC{|gg9@dwJ|6aHVA;DaU3KyCsV14|#Ex&a#B6F~j}g)2xNn!gxWI6yvw zk-DU-*Av z63G1^3^p8;exU9J<$aF-7p7bMzc3x-Pv-v@rU(4LFddrLrf0y?`Tq;kEB;@Y4yuQE z|6iCs14$fIMuWrg|ApxXkko+M1K`m4e_=Yf^a0rmb^x?2gt%db0K81NxVZ(AFQ)(a ze{nNLdV#73`J4a$1+bbq3=H5p5Ns^S{QnoaOrXUo!~ct$LFE}pj_Ln}E^vH6(seh; z43Id>{|h}J`=NEn1W*`(@&eoc3ll;>3PAY(g zAP5x)rCT8gyB`$J!caCSuYk%ikX@h(Rum#W5mYXULD-W(?gTLz{$H2`%EMs({|l2q z`AHHa@&CdkP#q6qGW@>~Hs$|?ur2>DgkAZ6A?(lp3*j;UFNCN3zqq9*FEKY2q$oJl zFI*?MAh9SpxFiuYY@%xl5@vu5u`w_tCFbR&7U{y2GaxGkDNN4KEl4cMOv(Y9#=uZq znrD*Bz`&51pPO6Cz`#(HnhsLNP@Gg+3}O@|=B1|=GcZ7g7~?^GD3CBiMrLYJVo`EN zW^y7ZY#G4rDoFNlrAf-%ma0VGoW-?8dM%i7i3nX6{Qw3lz~YG zhK$tA^o$Y)hVsmm5>TNH8g2v+Gk{G8xu*auUXom)YoVKz32O9$q(CirD4kkVR9a91 z_5}k&N@j6EPGTj*ozB4~M#hF9Wekv!RtAQ|oXkX!(!|n~%zOq0hTxC@Ljyyj0Cz{Q zGKS;=Q0Oo)qQ!gr5fz02#-Sp9D6JA+fXq%*f0u zfw&7|EJJdBDM*AN6+9lwz>u4tk_rmY+-wtz5(5i{Vu-a2RbbN?7>aWe%Ro^F8bC}f zE@sG1txU>KECSX0U=wrmON&AB;BhMk28N{4qT&*;(;x;Ul@>#KYPv1B|(18Gbx zE=b8uWMD`w1~;G~;gnPW;V>{TR8&+H%w>EKQXIFn|?<`a?O1WtsWO`FUxX;DnW507|sQ48_Sssi}Fo%E|dTrMY><3>KhL5TqU| zUX))BcCZm7c{7w0fI~T3wUDNyxACB?caB}KaVX=xxeAY4*XnS^W(n2)M2Nf(R0#InT99ME_e$Pfkw z2G9_DX=09UE_mFXfuT4>!$8MC$3W8x5;bWl8k!)b#U&}3dAbFO;KU2^Z%ImiX$e9= zACzG9tBM^AbPNqZz$y`>jR8p<98&t=466^yruyJGfablNRH!{5`;8Fx7o{fU=Yz+8 zHB^f=xfl{b!%R8~;Am3FPfLT=y$l(NIVD(x!EV4!zz6XSbZsH+EwEb7!t&IjlFHJ| z{DSCMun2@mEKW&F&&bNou~v`ag$RMjs*2>Yq`X`mJ$(=lia|9fl!=>CbWm1NjZ@Ro z(2Uncwm&f3H7F!9)YCtpx)w>dW3Y>xyN8#zkCjpllKoK;&S6e|zBYFDNNVBsOW4%e zfQxU2PzEh1X7KQ+@Q7z&VPRolsBkE7@aN#;;9y`daBy(2N5X z@(>Xa^FN4SVE7Lafsn*=K$?-vh1v!ZMKS|w1xOT(85r1jBn%{S%p`ai7!nL5cqGhn zBn%iB>dn9a|!R6mlMDqvT^f^DoO&?=?oGU5fTy-V5UtP z8;^t$Sf@=In+#hTSd>S?AgzuKJd{zFP?H7~wMnP}c>`o=og2ttu*+;fK7(ij`O=OJ zYy!xY3=lU!nII4HNEm{)egsIT^&PbK{XP zfVj*CRO%Xlec=EKT{e)t3^qI<02Y;iB^;1O5C(@1hX5>k7#M8W?4Y5OkN}Ega7Z$M zLJi_KHa55dkZ4^3*jyPi1A__!a3Ww}uuDrz1IInY1aRW?%&j3}yA%+1ViHF)-wmr9r|MWE(Vm85qD}2?=3{ZQul&SCjw| zV_>jJuz{pLu)AR9f(V2H&awP0T`Fx2r#7=Qzc zM?%6t0#s&z5;8d6Kt_OsBtXRn1A`f;{R7co=LDe{7+i}BtQ4@!hC~D5T{irWZpe=Q7F_ic^zI@{2&qbQGLDf ze;Eew2qtJ6n}Oj!Xaxg<5M=TWq5>lC1(OHMK_;z`{0z$xD7fq@mY1`fr1!+w~&`3VLFX3!cu6nQHpn7s8C1_ox(8Wjt0(fWyzD6DIGmg@J(;HhTe50+#pt50m#j z!oa|cp+ER1Og`WS0|OUm-4RGH2!r*Pa>C?e4lppVf=BT|k}&sG+rZ?L6c`v-!KnmU zzTp>4KK%m&12=~G6SZOT#cvoG7@=d(U=zUhPuU2QFXdohU<0kU0!uP5Fzf`U&sPi# zoL3ka*fR=>@^f+_8(}z%Q_6A^A?w6J3wAO~Q&K^b_zVmjH&Y5gBjp^glXFu+>lZlw zCWGhKIr$490-Scq;3-njLdFVVrdR2<#SeoS@95IP+I5gE-1>(E6I*e18uBUpm_R`~qo4>h5YL!XQIZdtw`E{p zkOnE?m1AJwJ;uPmYYW>E0@lvJz-R}OmU_a#!1J4dfpvXuVnICECv4&cMfu6`;7u3h zi8-L5e72O_)Lc}N4Y`Tgsi55%pxJVEeUNSt5442;-qEfWr9Le8pHvw-3Rea(+Q2XkkuJQgSY+#Nb+23|=I`z`*qm65b394BT_Uds0BGLm8Rr8K5~K z9*&%p_@sjP;_^h0J|6qx5@hZ+*lHI@80vyTQ2jmw1FI1O1M?biw8Ik(OBjR?^$J*r zJ4l1BAOizS9RmZ?<;0W}@Ujiix}@~Xg7~7;;`|)&DhuYN#i=Fnpe;k?i6Eaap9C2L z+NT0Ghk=3NILIi&eg+1P$qWo^j75ogDfyuE$R?ke77t(cz!sRES`wd89uHc!0b1f( z12!iQ98hfi@fjugd7w~d+X7~SCP3J3XBH%9fHtRq;!+i~F9pQt2QlK4(?E+UICyd^ zGs>Yxau_EiCl;4vl!M~SE4MPU045QWTbY+ylABlzN-r5d#C;X$A(ScCf!7 z+a*9ttydMLro$EuF*AcVDnK`#fC4)czIz13t3lc!0^%=3*&_lHc>xlE?+gJg36%it z0|D)AD+0$Cix-GrPzp-yEZrb>Nl_*!I#~9mmSn_((qnvLUP^p%DM*l&6C?;)(i9Kc z00W8uR)5&W5zs>R#W^XUg>0-hic3H=*uR<}|GNBTU|{ZHU|?EPl2%d>587G-^6eim zFC84KV8zZL#U7mu3~Xf#49u57n>Cj(Q5LYuRGc7F> zw7?5&5d%041pj1UP!wQb;5`L)2*|~t&6@Frso*7I3J20sAcYV_4+BF1$bF@p3=C|> z3=GWiWy$$@;2AlP4c=fL%x^6Jz}$k;l4Q`TE>=A-7ZwcpU>>;a1%<;RFc(_vupZ9< zZI1;N`e19TL3UQ#Ffg!!3f~VPNtm6?_Fx`VBXbg%mz(S>N!BfkD8Kfq_XOEkCaWl--Nt%|Qvl zvk1H!#t~p1jQoLVwealnwg%!M4(a2Yy=a4#V#}47-&3!t@Z&~J!K;U1N$2W29`DO z*;-Ik?E~>Z=EWx`79=KTmVioRmd7wrPz+^(IG_>=Y#0LrgB!>^1_l=JCIV2~_x}Z< zl8n^E6un>u{j$U&{gT`QeNc-d2ebq$IYZabR3Dto-Tgup9D@~%^bAcI8bG?iE@Kb@ znZ&3MGUfjTp&NR7`o%@b`sJl*WSXY|Hm?d~*8dB_9x(IrNj8u30@$ZEVDnD=zaSn0 zGLM0Q5!4dxXJBBs%gDsQz@*FsS~YFJ%mU(QF@frHRTc&YM$jS~5d{`zVbCJnbY@YI z5R)=!YlrAAW-$nlg_VJUDV15Afq^ldNtpx0d&n#SkrQEMU|?=%mW1#mKyrD^QVa}? zwM@z~tPBi{SD0l$a?HvN3LvgEvn+($0^%~2Gs`hBFiv7t?f`KaA2G{AWG8^RuR)h4 zGP*D;PXTkkFe^f2XMnkXnUx^iIUp{BC9^Vwy8y&xPGnYraF>9%ObyJc3=E7bn3Y#3 zu;pf^Ffgk_WE&h9*cliYJvkT{7(-duIT;uj6F@RtAO;g?Nf~1l3p+?j07$MDB*zVs zWBviwm;(}>1QG@7U<3;`fdp581R+Ylf<>qEFfcG_F)%RAi(%mg1=M~}Z;43@65Nc{ zEPMigt zK~cf%3g)>pDa$Z0v+%MoFfbW`7E&iMvhii+l`ycdg1j9C_BK;ENFUe}{Gb%Yw2{>S z6fmGJWDT1yND}1!a|{ejq7v*rplIi24}jRrz?PC)#=suJz`)!LaX*hgdnm*=9BetM zc?|4fAOo0`LGI`BX9wA3$)pT&KeHx#1Oo$eCzG-W0}sdm1_owX6ZQ~R1_u7c>@g5S zK;(`WD1aEwuop8h zFi(X95R(ym34|vHN}Na7%NZD$H!>-!ure^P{9&(PU|>GZq^!Zpz#y@jy%NIH0Y!l( zdldr%^9v?r0|s!go&yDIBqIkq$Sa%-49rVG3~*?&GVp^8WfTB=4y2lSsUXNGMo{1( ziEampK7xxrLP#;?g0-DxVPIgn$H2fO%c;ZR4~hXHjsTE7&=fS4BM`!41j*TQ1VMOA zpj2{^BN)PC208y4M+hWHKxvIRjUyCfFeE6M89BlrJT8#FAlHM#lb?YTq#Mq+2lGYY{CY57 z4a5iMKKB2hbj9k=z`#6%gHsIT{k@#xkmLwTSFArcB_KQ&utHFz&vW5)2ZiBWP7hEd zLBf|Qiqn&Ufwh83nFVY`2Ll7E8rVtf3_=VHtouRzPae)7hz-F=DR(0$lm`lKrUXvV zK!^^LG6&ecZ=hn8hcgPKt(-HOfr0fKlQIKaL5?8{pjA{@ype)Dm zhf$q@f!%{i8I&>@Z!&5?Rw!$_zN4n?aO;f&Ck(HNe1V4ys@OUl6;(m{PfB87v}9ml^#}6>#6Tlbj8-6DFeZsHFo<4Yv}R!7U;}d)Z!+3|WfDN|;y?EsC>)a3ud<5bgMXLG%b{S4k)1LN{PO>T*ayZq83qO+HO6_MB+nQj1KNZO;;?>W zi~{Y2<>&+H%41x{2vYt3g4hqR4u)pNrJ&Tr7{MUNz`(JIfq}`IaWzQI4^V3a97+uN zjB7xpHDdyUJOcxB9XqIf8P3QEs_k<)Kt=aE2*-_632Zx~0%(|r5!5(X%gD<7|Kj#N ziVO@)yFfZvJHR44bQC}%KcIFFOe98;fq{7mqar9XLexlbGB9w08tO*ipyCHv&+p7R zm4Sg%krAYjaXzCG0|V1Of)j;F)(l@f@3fQRPeGDfb9OlXaIH^$Td46Kq8&U zA|ar*NjD?NE-kQO+jl53FfbfO64{{wa$hN<5jfUC=4{^r(xr|hvO@#Zjfer&z>Hr& zZ8~Pr{}&`bfI^aiff+P9N3c!DkjB8k{G5Z4o3$dXfPoP-BANy&Q5YDc?HNI<-Y0=d zFlH9eR;xNjP{ox7BI-ayHv@RMum!ZtF^Q3l8`4Sui)DZeddmnJ=wj4n1Ucyc1&Je! zdAtk^%-cZumf zn82T0z`zJv5)LvM6yc#P>>w(Ng z9$?H9O=e&O4KlPq0tUo<%a{pjzezBH8Y17p2`hp>zk-1gvklSSDdh)BN1#qb6bn13nOMibz&y`|$(@;jfq54sqCPAu%L!EC=Ff)*P~295Nm@O7#J=?jA7Ww1m&?XgT`H%KpXuo zgX&Rm0=)?uXij1TE!$=U_f>e9qCjSpGet8nFp4uNGjM?_RVGlxiZdyL%wRmv1lpeB z2RFlyiGcwWOTz19n39=6l`2yT0|R3j)B&7KsSu;Un%S5@m1+%>G6%>x)0se(Y7LVz z4~Tb!3DiNJ1FBR(TNFhYK~7{W0EJd4IJ7_|E3*m=3(FkC3Z9d)aP(vU|^le!lKO2z`)W3YOS&hF@o6LOdxU!Gl-lE>W{GG zvGOx8u%@zsk`L2Ta94oU2Nd1hte|rvK+(+w>I$%ex&l#IyJ1Ffd1fy8^5s%%H9SYYfB?Q2Jxo&I;-Z z)Icm?Si_paz`zXZnu4NxFDs}%$%I(IwvrXp6{vw&z_^SRlmly+ltn-)&#;2J0(nfz z5}+6}Vg+>t@|cw6m>C!tkFbKe0$ohXD$Jm+04u0fxPVDngBjEnU%DRUR25ZHSl^~`m`3=GT* zKy8aUB+&^V(cN&--3Tcr7qGTvpyC+ZF$1R#7ET5RmV-QulAzSFf>DZrfrS&2I#^2> zr6FMqO0-hypeY(AURa7}+``1bzyfN4+jB62(jv56us3jI9urpcKb8nXwJR69So%%h(R#fszN?b;b?| z4^#lM1T%IsFtGMR5(`^BV-EuZ>wISA8H^w=ZD#BPP2n&r&tT#zNK9d1>}OzLJ;tIu z<1k2?`5hx@>Tx}b@~p#*pi^8}L1nBTI6*-8^BEXe_`!UBu>5)k29^RO{xJpyhMN#R zXtVKDHg>SGYj9ykP>y7~$H2hqUcxw&nSp_wiE$Pr*1;k2k#RPJ$HJA9!@xL~fq|VJ z5+H2BppuAP2%2A58Rvsa2_|I$uFRrB21d|15q^;T!n&4m5yTKseql?6@nk?j7sR+2 zBBuc2wZnLz+#|^ZY9O-9GAV0tl@z2hFfNCv1mzwUV@A-<>N+N61CTyR#+48`6J`bm z0aeD;kO;57zBpwkQ> zVa^OTw1R zF~;5j3S4kRGJ)!7_KOS*Y*LK(7(w;#{|iz!jB(;Q1q_UL85r0vGDb*%;_5yqt{8(Q z85mf^86SZ3GX{bHUCdRqB5oFZ=3(_TwdE%hr7~D#U zV$6^Lnf()NcCbWd5(DEe1_pK^#w<{2AiNc<0o$ruZ<<}b)Qj3E-442=K4 z%xnfwA7VKJ1KTb}MsIK#1+wh_1z8csJQVDtg|AW=4xff3YH12v@N zK;yLXpks3w83RCN6=M>JcZ88Kkb!}*2Gq%sW?%qy23U79GB!i)kQMoVK`w$ZPX_EM zP_|}{V$6^Q+t>oOF;N!ed{7o=7h+77ElOcv1m$o}CB_7K1_l-tMo4q@`6cAe& z89{A*SnP6c1vv)P4dJq4U|?I!$Ry4Pa>V}&iY$zI;F&u{CNWSY$d~~-6qJDx)Iej7 z0tXF~B-l}jV0SP{fg=MH+H6&fOyHV&pd#Wk?N01YBCM=>Ts?2QE5n*gyl3SzGc0|V<8 zMo^24p$?RcxXv*!usmR7nhi5=&HoFEZ{X(50tapo#Jo9R^Fkozfr~K4V2~L+;tUMT zUm2NT5v2I${{@v6#ylBttTKTjXg6a9B+-C*QH+@o6JgN>N~TPp=wfF~1;-r|D7u6g zBjp(wnWP>q3sN9O+p zrGWnzl$NM7F!1PUFfi~~F(!a0SH>Vs1_qu01_mt#2JSZu3_P*_FDP^Tzo4uGlFnyL z14-~OGcfQ}|G%JO^Z$a156Fy8&}lPZp_u;{RB|9f;MQS{HpmbL23B51rq$pWVbTHT zHKtXdh)@9KG^RD6XixwL*;-Jff&yg=BhxyNhZuB0mN7Cgu-P!ZVFU#eD8aFwWO@r? zGw3le@JwZ7U|?Csw2YBSpMil@71WGmtN}$MFG$-xMrJv%#h@tse?hGRRHCFZFoLEH z*e^0>C^0aw>4AB?jEtE|3=Hg?U>-vqW0ow~sh}wY<|sx;vSU^NxsVZD_JC#&K+3?` zo84F%v?harfvtm)xdm#YTE+hh>KDKnN|K3@xfxV)GiJyZFfcN=f-_eHg8|5qvly9o zFoKkVx=xIF+@LXiMm7cpUeM$`q|V@HFl1ohcV?Q(z`z^M2lRQij&08W3kEG9=P)p^gLa*QS{Qg|ei(LvTphykQsDZ%1OwmAM;9P(0M5rAOr2p zu3+AE$V>zqsEK?CfoF6=K62-y}>NkloFtAH= zuz+TjIAp**9x*0m2JW;x1{Tmbkvyn(2{I*=g`I~HWCf!vNE>L?n6U_pAuDK@j>U+9 zfe}=1vw~_%7GnqxG``9q!(zg~z$gasCyzgiDTD_aB4u}DF=Jq0>;m=Xzy_;=dQn}V z=wuXQ0E^Ut=G7omCSstzFr;OE0W{^p4(=x*O__iKlYtwQSV2=JOwfRaOqnq3VN&Mc z231a=DHDbZkbvd_Pnm%9fdU#bWx{j_)K3Cgum{{vLYguG83G#GhEAD?L1GdzWx}uv z;zI`TlnE0wCZSU%V$hL&$dri~BqkwKCQRobF$tM60r3!1CQPqTrc4-6rc4+hqy7w# zDHBCdKM53KOrTa8LnI>yXrAj3Cj$c$XlCOOINDi3g%Q&$Q1~+K0f#TsJcX1jGZ+J%Fc7Ks>~h z35bU@WdaRK=#+^#Bq*U%CgM!Wh$$0B=v)+J$^^s%#T;bH1jGXkj6`$^_(04sar30A)wk4)iG#);>tN2c0s3X@*RhK+6Lr$dri~Bs)T;Ojr(r$^+1X zOc8K#!`cDr@UBOnI04zu0GdEx6K7;#U{7OI1*O+rptAb^1x*IVJh6gA21d}CQWqFA z#K9x*AkIm~Oo_5Y2GFz$!!E`oP#dlvG^@gJfiY78bdC*ZQib6HW3ogpNEzsinG1{w zV0%(P_RMB<2HA4~WXJytngNV?VxZHD7(pBBPclY`fi!{G7Z@|87#KK$82$fW(6o^# zNHl~j3b?=+2{sIL;ST#f#z>f90sk*(SwI~PIymqGV+PnP2peiv*8dAyG7z((K!rJD z2B?B(*91B24PzN2$c+CNv_ly4#7Y<#OBop0HNk%8hyroIUQ8}2U;qsbuJBGXC6UIdY zg7H{DMsv7=d}+h@8)WpH{}*&wAVxcY`*#(LK_F*=`gawKfebPX3>;mI3=A9|jEtb> z7sE-AhW{6I7cj=jGBB_^FoGrw7%Lcq-U@f3w$_mJ|561_P%QP4n^%y}4{$J3OV2o1$nWW3W!0~}G z0%YT5M)1_Y9>z#n1_s`rFkTcS8V|}dFmQs(d-hyLMpKY668|sgDL{=effxhw6=x13 z1A}BPBO~};tX&{Q|1apJKowd-6v~1#8)&|c;Uw5T_A*8&FAD5Kj1daSQ1(g2NCi-%04&2en-O9hXv}pNV<0F7xIq1I z_TP+*k)TjH@c)9|7sfb+GzLb-NCpNjZ^j6)J3-_7yWmEFcqbVlLCY1WD8sGTjo=)Zvy#Amj*7!JuZFmP9c z^lxKitYrl0`+q_I0Arp4c)p1d)Z*R47^wp4NjXAhzZmP(z|&uh^$ZN4HV=b3c>W7C zPRKnGR3B+DFmTv0f<_9tMVTfRXfiNx=R;<<7@NRJoqIaC84Mzf7?dhN0np6Az+ePw zoN!MBWd?>_Ajv%-;w0F$+|{5~2e&B5xrac`UB$@Q3v%v({}=RcFy?77FtAT!WbFTc zLH`0MOn5jziV_$Zr@_MH#{UZjJmAd7=f}thnjtv}&KN>!FkYlwF32gM(=Ja!(k72R z$dtW|j7vbKTmYHy|AK)JW1d1mNf84hBc$MokjrCW1dYToT!3U+o+6O86O7==S_2|R0oS*^HgN%&Ypov({PS6N6ScZ8C zCuo@92O}dV0|U=CPy~W2eST2)klz_J0?o4wJW0AELyv)h?HMO1G%&p}|ANs3kn0&3IJ%K1utpcX zjV^lQ1$B^!Ui8LL!wO&N)(vj`vOyLMv4Q#!4v=;t>kl^M1w%}rZ9(%~*dPmr*iaS> zv3W8uFl_;qHlPm95e5dPB+$fj0y}7yjp;YI^~(lXFvJF3A_QtSGi-$MSU_uJ64;Oz z3^9Ycu<1N(kOf0*(F_dCMxg0^Q0td12EqerV?57>xnPL78{GP3gDe67(gp9SOOT+g}^m2XibGBV~pi z^?}wrIxuE}jF`m;T4HC!7y;sJWCX>aC1ZjJXxf+&Gy~erm?gr%z_gzcv=-8VF;Rqp zK~fCLNfIu}Enr{-uZv_15@TRsc?EL7{|km+{$DWsAmN)w2Q5Sfr04=BWTKxc?nw=0|V1X8%l|}kqNZW9W)mMS`7;x$YAzmU|?_p&51(BVHj3{$1_+U zOF&sbZID%<^amQxU;!;FOoQ~kc>GyH85kIIn3N$)Kv_WZzD|%N#O2Qdn)h7=8E#@hEgQWz*gA8l1lru0e zu7V9~uv9QGFdl#nYp_&8c%a3M44N!e3=E79LBkpxpkb|zAd;~NG&7vU$OfV!896vv zK-s<$v>tIf$frCE42;uRK{IopMGv6Cq*b6AkTHz`ta~0m$O2GBw~CK}0VcWuBzhYz zdK)3d;0e}t3{=(?F)(oKkYROYWnkcpV0B|)U@C%y8fPb~JA?-s-Qc*(>H%^IBn&yV zSv?^#Ww~_ z$`T;2L8pM37BMhz*7LANfQqus;3X!i5EpS=V~v7@ISY8T%Vh=zPDjuJIfhlB#QFb% z(FMjh!OQ{%&^7|Q|LS1a$0LsaXc~T4v99LLcK!M4~$j!jO4BDo&0Gi6A7#KK>SU|Jh zT#Sqo3=GU~r9f*ESlYm5f|d$!Dzbo@b*kWEgR=s(PKz15{_Wx!ZUzPxP-3VA8^#PO zWH>!Q3*=a=z-_Y&pb4^gM$o~nt3U#mz$&ajE8`ec!2+O6!O;&YeYgcdr4Lu={|nYz zK<;K>-~w&BL=06EQTl-TXQ1`ZERgljpyG$o5|W%4r?P-14=tILA%l4=K@1EaIZ$$E zy2ug?;XwxTKm`>8v;bjF0~b^dkOa=m2r8%;9bkib;DSmOQk*co0u@vYs?g$O7YnEd zr3x7(W%gkK4RxqOiW6pIaDfF{c@J8HD$Wwez`z&>8_Z(?Z86A$4d#JXUoghO2lK$C zSsi#V4_bPFC^sf{HUSb0R~RiRESYv&1|fo4ZH@BM8Gs1w1^0lKtRL)Oh;HV7#J9T zFewW#fcknOj9@380U7@p-0We6G<#Si zf!61MZ07N212qpoUgrgM@!3%7Nj6Z7KZGPWW=%FwJ!uK5CqbjBpnV3iCTx%j64dkq zg&(;6xSb89f&{hmSok4cW7rF7%drSTQZ(C2Hk1mI4W)u)D`sF|5rd>?CL^{I2oF+0 zvXwJ1uo%HANVW zwlFYov2d^}vobJntzZZ31cEl+Ij^#VHUc>?DT9gyu6TBk6C9wm;4gO2t{?{{Wj0U* zf~q#oFCrYqAVX|9K(j;8l7?#`2WWN(TGDXUbAV=tphj}u<1lAn0F@u0$mQJ2VFBTR zs#4Ck9F`y-Lt=uzH+P(lP0>Mtv25nye@gQ|Prx!#e$YC5$IK3f}3)&yR zDa46V$8-8ZzzC{E9Y8H_Hc(rOD}u2VRM{GU6#Tzn z$-x*WmB#>DV8UR)7y(ko4w|p#+``xkPN^Uz|1Vfh0K10AAGA!2tqkmbE-4U)@gZZR zG-wwxXvG-29Ahx380VV70xEUc`$4Xn%(xV0(uDsPtQEiu=sD+uM{%6MCNVmII86GC znbM#FgK-%si!dgD#_!BQi>p8~AkJpc+A1b}#zYwg2F~fArB#d%8IwS6=3oQa)W!G^ zYLm4Bs7{921iCK-Zqow>29SAD;5HG2lLd+zZtz;9hm6@Eo6H#>L6m`PTF3Yp;vk6Y zo`5-lppuhm9-}O%r2<+L&msmH0IFbPVBpXLVQ4u3n#;A61+`fi%^4UtTtUh%v|51n z7Rbqh8ZMy8bOu$B@WmZ1AccyIptV|1ksetF1};HH&@yMJNCQY@H@FSy1knXLWQ2tW z)Fk0q25ORU`~1IP-v9~%1_mzB4IQ|eB%p4II%ESDGo%5+3@X>vAvFr)RAx{EL><-u zVFooo)FCAe(?w=b14Nxk8PWg&)efNg1(Y+H)0ja$B|S*7z|6=T#=yX+2Wx;ZgL+Ev z1_(1~o(0|jVTNWn$ZR5L!7Qk80+~%@2KAUsVY7+MpazH!q)28u$qZ_M#K0OL%t;Ik zj6U!N2s5ZVm4l-J;>y6ls1AxLSCj?_$S#O5qydrxR|aW-fc8zQgBl>N?EgXG&QQYw zTD0E*?N);JOYQ)Vw;(l17&{=r3Tcvnc;J0kY6Ht2pf5E1QF;5^fg#k1%$oP;kQ82jxJORjT!WbdMz`%76v_+WN zgfRi)0d-*p25vUSERe?k7i@DF^FaNmF3`y{;F9wpNbvs!yEBY=Al>IdB_)$7W0DX9 z1Mhy&Qar|oppF>>loK0J(vIfg7~m1y^}6IzR&5Dm#P*NCX%dxc6}| zf|g@&A7=!`E@=3Qm4SgT71a7?)f_vyp0-!!g1Oo$ix(p*|0TTCh zP))`N9a`a@4&JF&#H7r~23~UrS{vvIG6yu4S;qQ>QA@a(0W{voR3^f}z-8T0sYj;oj0s?Cm{X)dK9vF4@EW|O$x-9~1;+$%qk|bV zC(j+t*uw}C`hUT30%M*OsG|gKGNmzQfU-L?Xm2#PKI3#yqvbY8(fr2#%`DbB#a*uWU52%13$ z=Mx6da#2x6&?!EQj53TM#h{WMt^u?9|s2FSx-K@%B_X&`|WHXwmBpzV}Q5nurakbo9wBQ)b}kia?< zkibRIfE@#9`0e64(D`=E9iXa=|0k#_<5m5C!D9=^(~y zupN^%0|QS8qZcST|6g$JV9euUVBo0%ZJlMZW{d#MF*q=S%62ElOpuHrBWV87nlXzz zxd6OnmdS}Rfro*CryDdx&g8)u%ndHPKy#kfj1dgHka0Xdkek&(B$FS~FkA%#1J6Xp zT#&{8FSy=;Sgr`#EyiTcm;h>Df|iE!6oN({nXExd{$FsHfhns6?+Z_YSXd9{WPnHg z|9}chOUBKh%FF|#J;Ou^*g|K!+*tECLNKLj*RsaF>7@ z#h|VG)*uy|JU|AhgJvg~AOb!hfmxvW2&g~+NT3D0b04Atv^|xr2$UBE9)R*9pW^=u zzDGdLVPN0|ZI2yoRx&Udjn2C9>oRmKu&>-;(~Z!r+`OsK|JtA zROZVJ47^M{jG(heIOl+y(FRc8X@W@?7k3B3EkoK>K$kg0hLj0eFo;Ch1<)Vk(XV!Q=2@5uiPzCAGWKs9F$V}vNU zdb`XygSvS9)<1C~kP|!AnNL&AClEAT6^&Lokr`-KGMNz#T?cP*MP!Q34Y9z~}}S z0Ii2+`39)Loae#}nHOXRRc4)#T*VZ{3_9y!0=NwWX-|OmB!E^? zn}bewSilbIB!DI^LDx9n15Xb!L#78oBcu%XAjU9kgz-RmnkfN1UV0BSwZ{dTP<{e! zmw;L-pi|(|d6*&7gUq0_9+Y6a0l;IRN|4zd#`Dae=|Kay83rKD)!^wtX2|p)c;vGY z>Htn=&{+>K&1}q|^-$175KPmVL5obopJuC-J4}wOLL>NI%WUK~_ZH7X& zF0BO55;8+(37J8&grG7Aw5}U8iq89=hf#>TB&mdf5wv9rB*n_WAe#^BU4TQJ8+5QP zXzCus18;#~GG<`l?G|CwfN0Z%%npGfN&tMK5=bE^;AHc`%c()0h8Us;Q3;yXC>ljC3vU}a$7y$ITe%M=3%3ch^MIwz(?P?Unsk1+rfpb?RN(4IFA#!!%! z_n^T@?Km#r*jGz^27a&@A+Zf{*7(g3~Sio}y=Rgb0 zna(i?uz-S-=@95N6D~#u2EJg%Dn?Lp{(r&u4`ZBAacVLHBWSUICu4*#IM}Kg7?`=3 zCq7{St<+`c1PxGTF)}dl?gr2IFm!@6{=eY&gE3DuCo>l|nG*!j3|bXoz!)sdz`#2n zv{{(JfH6Zfj{&?>xRWswBz_#cQ8@jdX6y*V(K;q2IefrSYZYRK0n6oU_HU0^CDP4 zOT~GgF`j1x8T$W%Kgio)gF*Yw4H$zUW`U08I|tUzdmOZTm^q6vh5^)5<`ZUo1$CGI zA5dWcZVfZd1EnaoXN<`V3@p~*G1P;5KueL@L9TfSu0{gEMN9+Oo5mpFC5#yi3@jO7 z;TEuP8pyd>pvr}%9xU7e5@uWp5{_rgVqjpI1{UrC3qJrE5(lntI>Evd*cljD_A)Rq z%>)+?{GfF`yk|g%POz*6E0_XOa1V647gPc0_H+Y~>28dm<0rm=`qmwDKwH&8p`i$# z))DRmmwZ3|Ux>Z}@-PDfKPZbLO1=#Y3?lX_OoGe|3}Q=}K%1VfKn}bR>SqGw!B>z& zEd=_QKqmx&rp}oe7z8IVf%^9RkfRbrj6plD8TBDYiwHA;4#)xVKxapYv4i$sGx9@D zix8{=ZNUcdKu0BrZ2+y>V+>xW2zOailxLlk`gDbmNH2qMoY3X%tJLICRm5saX@ErtW2 z(=S0&lOVeoO+gzR1sNCwd<>XCC!~nYWCD$HzJdgsWGa&a=*U<|u<^ZP0h-s-T04Ai*XW!lcf?z;Fd}!i2~(CeTT7)sSG5=wJe!6gQhm85C@S zw&1ffXEP~-PMDA|0G(&bv>S3hi%%leL`*BdP zfCwfvkhehf56D|gf}jZ*7tn$s2B<7p*cep0flf&Si$Vxc$S|paR%`5j)dehtL_kbj$i)b@{vhc18wLgjq1il4M$8Nh zLII!xpP2y?*b-@=gP|Be!vxF>3{qB1pvI{hs9pnWJ_*un%fKK}&BFvbIYUyB$&!JA z*%qQ%a21mkgaw{b3>Rw!_x+jrj%WNTstpAZr;I z7|w!KB!hH-j@*Ir85#IMXWfDpdP)8fVDe^WV32&o@R z#Fgk%CeV@8s*qeG(!!Js3ScH>4^ZLe1v=@9`4N*c=s+it1g2~T2DZOU$^py_4C1Gm zKnuF7nUq0iF^TFkms57P_=2KHUd z${k?tQYO%e6Bn43dq7;F@1SL^>=&4oCxEyDf0l8fr0%sB-M$0X4=5Oz`+fTR(Gb23=ABgwacIbu+A}U zVqoC#W>OXbCn&ZzpwZ-3P_kq=E(9v!4uIHf-$5r?ia^pCDEUDO9(HDsusTSX`H?W# z0Cp*mdUj*b{#CG6ro&(X7j6ayc26+VA5<22uz&&-G&lz;`k+M`#DowY1_pM}_NoKm z9LNVs`s~O_AISmrAY*oc-3cy1!BTJnk|o$@gA`prD1umX03`YvCW_*MYb>DfLX!fS z3N`Q}NFH=#14I|NyakuXU;+|09H0wgI6&Lym>+?(LKK0m<}hPoVBqLrU=S9$uQjmW!-G1`w%IRky0*9pk+bOf=XP2=^;c8WF+5WrpFK- z$VkESOrV(^HE2Qgk?9#k4%A|jY-D;4;Yomez$MARAih$B=@rBWuOU((>qH7cXNiD< z0qTQy5IK-_q92()KzJbQBpaDNLU>>wa8)rd2vtZheS!GkD?|!pq__stHwX`8B;R7D z9}phMNI@>9pAa6%NWt?=po6 zSTh?-8Uq72=%5K^1_q|-pdA??9w-Evj<95ad;{t%gBBW#fEzsA>p-&{kb@Dq?|?hY zETF^aSXZ!sDjrbSfn3i6I&XSj3`;x6*!`?LpvD5k0gTnGpq07MCJ|#P=$t}^1CU~s zL7o*f%YOh;tTL#;c%bvSm;zZrjsF9X_9yd7R?z9`YLNCPvnzJX*TzD`hNP{*_K{=5!3=F(Rpq-wx85u#_3z*bE)d09aWKv_0157Z^YrA0)thhO>-0plb@eA-n^Oxr(5z%MTeC7!EK-DKRiGNGLNfNQp3l&Q4=e zV+>YiV33etWCRxtpy3cuuHb4_VPN3f&cGo0laZ+kG$?!>FjH3I|Bb;bk+kSPxt7{nejGJ#g4G8_Pz@c%;C7RER!P-dingUaK<^P4SKX8|U zwxAqfjF1AIuF1#*;vHvHvNsOQ-62o!EEU1}Fz-DHG{qU24fnSo53DWlknfL!fcnaJPd%&>(bJ(n48%B_V{}&=W81tlyK|8aVK)1~uXN&}$$0cUQ z$n*)M!sGvih#bZ|H3kOB1&mCfv-~1*{$Gfgz?i4Pz#!jLhIc`vV}e|6ho5VT^->J?OR&hU1LU8vidu&iH>J%0?M<`yeATXaGVD zl)+UP7=+3g7=&&!GJ_A1H~`Z9|3Xv@IGKV%+X|ATKw%|xih)7kCL=TW%oUKznEw}| zX2AUdI%oxwNu<&lnIXJrDR8L?;=vTps40IV+8XKFlI`Fw!1QWgTn)Ks-ut^Bb1k|%)r3j&j@LuFlH-)Pmo~- z9RZ}q7^n!|Gt2A`)|UWEv%-}O3}TUt%*l)(JO5vZW?_tj*bC}F9tW2iAj6ZuS|Y*D zJ)gO<^W>^)SDpQamFZUVg&IHFlH$hfzB0S2F*-C zOE3{d1_r4pM&?pb5F7xR_y0mPq-+I6KnWxQpk{)22s1%EgqdX!l^}PDq%tswRxmPy zFZThNIpzO_=pFD#1@~tdBcwAj85o%%oJi@Md^iUjH6r~C48mI&nLAttCg?bNmM#VcZaGHKIqV{9;KLRC44R z#lRq<3|c10a~Cwg*=3@|z##q^q>d#4EC5=uAo2&)Bmg%_*g!}9iBAHp1QG$Ans9Nm z1`h*+s4N2m&t0$rW{?8WbkNp4Q9ZB;pq`#6FG!U$0|QF}SQQgUmB?w(bf;(tSXBu( z1B0kBNL41>EU+r!6`=JKqE%p34IovKAXWWvvm`)fNxo*ZV_*eR#>LBh?1DPed7_@9f6y&`N-4-BKr?nUugls^w2#`?e zzM{pzAiMxHkpLCAp~b);Da{xUauwM0J6a430%hRQZE!$#KLBYt2Oigk2t3hZV36Vi zk7z>#UVv;l3LeXb2)xl^U=R%gO`$?<`JlzXz+4U*)`kjv(PCg=)C3P>L$v$=+0p?z zJ{hXw4@kut@DMgwMGt8FO6)Aio#2>Y1o>Dz9&{MF*gcTTdsw&`7{vC1(!pQQ!SN7t zdU$vk7{poN!6^jN#&;BS7PGi0SQ}_zn%EbRDlNF-;0P3`15Ij(gVw5C==s9Uz#uLK za^yYGLB|lodqHjzPlRg&yGhs?v?x=&2xNFK$W7vbAj8|?P5>uGVQJ6?7x5WjRXiZW z%e5F7__1r;0CjT{3d(_bd<69N3an& zAcHUPFfd4fc9TJp3JXY;s32&IjD$E?)fSMdZy;4VaI?V4PVfk5yNrY_Sk(z`1_lWk zkg6b%6Ty)H4kz(K(A>5}GFa6QkSZsTD$sH$NY( z2$~O<_zhN-0#bF0hk-#-0M#ss6O2b07$g-kXbQsv%ujcaEkF9=vXDNsx=^0phZxUO{iuG&I2|5B`1Sb-2tg80-3b}ZWh=^ zk-eY;FC}+^Re=U{C1-$CfsTWP_z|4gM3q3ze98MDRsEo3B)Jcy>IWduh-#fDEGi zV*;DjzzFJC%ZP!M%>kJPDgb4)QB4zz7f2?w|t7-Xb*7#L&_`5){B;Yo~) zstgP=DPYq;JK|+P1%ON?+za546gv&xsv-lv&tt+BkZGA9(?GXA!_tK^1A{Oh_)IgI zO(4@If(iDfJkIg#aXAaHGEgBUCk9dm+Ubg9n#2Z1#s~%mxp^ zV33yuwR^!vvw~b8wwn>OR6-t7{>%ZXu!p-5>=p5AjEvO`4Dz6v{|l2oa5FH->w}b~ zF)+xdfen%bZCl}4pv=I){}p_EntUzD+mk`%u6!6s?IZ>UrjuZ`>>x`eRTx31E6Rh; zHomwSRFlbr)<8g1Fo0ButY-urrYOGzR8(&f0U3Rik#Qjd14Pdj1!V>X!T*e)(-fIO zDgEM>24w~Yv3KC3&7dNna1!AIA8-a0=>X}v#|Wz8*}!eaDL%>!4B}>tpo*H=18i3h zs1VC#WZcBS!0rO_#*`G0$(fAcl^LKUd2y?TG6REXFC*htP~#n>YpV`uM57W}L>H8^ zQyCdSXPq4Yt1$qT%2$v@Oh9THzz4fS);4Ul;9+1;H~<>a1BVtrgEj+$ur4Fxbp{57 z4UiQX2SCO+F@ny5W&j(!Er5lALE$U76D zK}p6^(3LO@8({;hOrU|)jj(}L7!NYA3SL#Q5jL<2URALJHn0lj?FS94vaqm%mNu+n zV_;waEp~t`fB-Fik78j5t$+X>kG})7RO~$XY7EfCJ?M^}P6h^P?FeR0uA+DbX3+9* z(843GB7=AaX3!}+{h+&W(&8CF=UOw)hB#O12{UNn(hi7or3zp?kaML?z-M0XfH+s0 z3&sQ8bRoS4d;<1HCS@6}wDfoeW&s8UP!K3^B_Z)ZH(f|W&cogaS%)CK40Ikg<3i9n z1W<)MnGxhw#!e8s48ooY8us1@T51UPp#~_fz^8oA;6R!?VAuhP3&`97h{pm_2%30g zp67x*cd!wn5Hfeb#0;7{;9y_?g*M|xunp{>#vhXx#@xXYh(_q#0W`Lua|cU6D+@ql zM2+BMcai1}m_TdgxL|V!ARY^7(HnT~0OU*#29S>#c7QbBLZ3TedH}T(Ja+)s44yk+ zdIpIy$lL*lhnPEH5(dp3fM()Fz=6ng3zS+Qa|g^E=yL}kXMop%F~_qo3i2^9Nc)3U zmr2)yc8E$BfD*TKD=4<5wz7a^r9krt(h+QY3=C3B*+Jx54v@GjCy2eD3q-!+28mqf z0d09;2Hl}2{g6=%lp!~Q^49+gu?mcN0woNLpgSq&GiC@R8i3ghI~XGc85pE1!LtKP z88acFqY4hAYeJwaU>F#r=QHXuf{gfoA+~`rPM{2OZ5s1@@ZvV9c2EbOVIz1Qnp7{8 z69qDL3#ez$u#qtk#MuSq1c5k}pwoGnmof%2fb8&QV31~F^Z?n>@c%;W1jaa!Q{5RD z5LUQ@(l^Ws2qy~USC+Mm3=Gm%jJ{C6#!mQuApx{~xCCe1;gV-bh|2JFj)CN1_tSP@I*+$o&OgS4Itru0_>R#kds;UKu&(mcoFL4 zM1%hq5-lL6UH~hL5KCqNt(Ie01y-LAQZK-G4W{1W|Aj;ci2AD#^$;(D4rE#a4kIop zPp>G6tnWZ&Xe1+t zAOnNcXHY4^#s;dVbr={x7JwWrvxHd} z!UH*4#)erRv_%P2%jM_9Gk|V!WAXqwy0{{q0eo&F$k8A(bC^MEwn~_kL5`N`VFqoi zn9rmPaGiYPQd?sZbkjib$mJAG_1NIFd#l;PfN1ib-NRyXMDrP zzyMl1$jiXMR01k%8E1petNV;eFiC(t#^euDIv=l6#?KI?RUoBTuqb7^0yCdU0yNVA zChkKt-2ypJ5bV;Ypai-Q%v=h(oY|6*fk8$Sa{Rz&P-6doA(;V^XH^&&m@OF-z-2h- z7@;?enSzDjQ`s43GbRca!I(*4OBhr^_p~K}j00q!#?Ykh%fvo{3QRfIZBb2eMWcyc?VG zGssF%kp{8$0NC0DffVr860nDpV9YFml*}R+2NcqLmZ0%A#?KIoLEE*Tfl@#+1LF~} zdon~B7+AypUq}=Ae<3Xa>=4lU6G5hlWeg(!FQhN{e&UH~nN2Jt{Ur)1`UmPLbjJm4d-89)oT8O))# zynxmkCqqhMO;!d5nW>;fy&%P)tqZajU_8*)1(`W89@tn`(1KsaWXP5anKUL)e`hA- zTr`;_Ou7sVAX7l+;K?1AETA*K89+e?D&Rmx$#l@< z4&!uCw`nF8LKPAa3qbl9i$EGq;MXt{tbuVcNaOm$ruSbnp6|YiQ)&JC;-ZY zlNqBSuHpch2RZ;=R-bVJ$h?C87czE0%mZCG2saOO^#a^H2nTB3d`@IK*y>wW`KONfq{Y9kuj66k^$7)XPC*D1-jE0)YY2Fm<@6I zCQwRX%z-!^!pQ}@mf0N?VhcbPftrJ|*BK8mf-L!eArlla|0F4!} z*fU1(r7?h7flU06=-J8$I<4U^BPcjoe}Fg)GZ~}#85m?3K>OerW-`V=e4h_8c?AQ5 z%v(m#f`rV5{}(b}K%(kBIDkP>FZ%*C2o8;USr;e=WVQ?gXy6-Uwjcuo%ZmROGSB?K zka+>r_t*(KyYC2Sa$SUhf#m`NgKQV01E`^Fz$97#S`gvDz`&R+2JS;Rg7&|Fo5xxV z46@4^8QDO-eDVK6mI7m(1n5|MQ0rwnV}u|B1FP2m3zlP89{eG$hv?>yg^A$0=&utG_cM1moZxcycv-Z zG-NW9F-HPaJAw|JVNhkvl>pV7;LTsEjL8z9TN^;qU)GBe zd^BN>$NvktJD~CJ0yY{J|DbIRi1>E{1ps3fH2y(HG9uz1w8j%2|Ddgs@c0KU>43#Q zXblG}{z02G5%CXdMndC1XT$#sxl^F=4{|Ul{yD@!srLT`kYvslP(*{{A9P|RhyVWz zIa~f;$k_ur${cjPCr3IW{&P$IU&!qMMLj(Jl^7T}N*EaAL>L*38JUzpxejz?+H@6g zG=nxwGt30#67cOPvgwTAOVo3B{J)TQ1sX~*kWi8UrDM*o zT@eBikC7;ci)TxKER_S2PA|I2}lSV5|AJ^ zI3P_J7(u6VfC2&%j-UlDGa0iW;RxYC!m$A!j$HHpU�Qe<8mE?88n-G(f{Kzu^Cc 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

EA%4caZ-LKa{RwwG=YJE0Td6Q?dKpq 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 G_yqvNpJ2rR literal 152807 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 @@ -443,6 +443,10 @@ diff -ruN proll_18.orig/qemu/head.S proll-patch10/qemu/head.S +C_LABEL(bootup_user_stack): .skip 0x2000 + + .section ".text" ++ .register %g2, #scratch ++ .register %g3, #scratch ++ .register %g6, #scratch ++ .register %g7, #scratch + +goprol: + ! %g1 contains end of memory @@ -684,9 +688,9 @@ diff -ruN proll_18.orig/qemu/head.S proll-patch10/qemu/head.S +C_LABEL(ldb_bypass): + retl + lduba [%o0] ASI_M_BYPASS, %o0 -diff -ruN proll_18.orig/qemu/main.c proll-patch10/qemu/main.c +diff -ruN proll_18.orig/qemu/main.c proll-patch-15/qemu/main.c --- proll_18.orig/qemu/main.c 1970-01-01 00:00:00.000000000 +0000 -+++ proll-patch10/qemu/main.c 2005-04-16 18:03:23.000000000 +0000 ++++ proll-patch-15/qemu/main.c 2005-08-14 10:07:48.000000000 +0000 @@ -0,0 +1,185 @@ +/** + ** Proll (PROM replacement) @@ -852,7 +856,7 @@ diff -ruN proll_18.orig/qemu/main.c proll-patch10/qemu/main.c + +/* + */ -+void udelay(unsigned long usecs) ++void udelay(__attribute__((unused)) unsigned long usecs) +{ + // Qemu hardware is perfect and does not need any delays! +} @@ -873,10 +877,10 @@ diff -ruN proll_18.orig/qemu/main.c proll-patch10/qemu/main.c + hw_idprom = va_prom; +} + -diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c +diff -ruN proll_18.orig/qemu/openprom.c proll-patch-15/qemu/openprom.c --- proll_18.orig/qemu/openprom.c 1970-01-01 00:00:00.000000000 +0000 -+++ proll-patch10/qemu/openprom.c 2005-04-16 17:30:19.000000000 +0000 -@@ -0,0 +1,741 @@ ++++ proll-patch-15/qemu/openprom.c 2005-11-07 20:11:04.000000000 +0000 +@@ -0,0 +1,910 @@ +/* + * PROM interface support + * Copyright 1996 The Australian National University. @@ -900,7 +904,7 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c +struct property { + const char *name; + const char *value; -+ const int length; ++ int length; +}; + +struct node { @@ -920,12 +924,13 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c +static const struct property null_properties = { NULL, NULL, -1 }; +static const int prop_true = -1; + -+static const struct property propv_root[] = { -+ {"name", "SUNW,JavaStation-1", sizeof("SUNW,JavaStation-1") }, ++static struct property propv_root[7]; ++ ++static const struct property propv_root_templ[] = { ++ {"name", "SUNW,SparcStation-5", sizeof("SUNW,SparcStation-5") }, + {"idprom", obp_idprom, IDPROM_SIZE}, -+ {"banner-name", "JavaStation", sizeof("JavaStation")}, ++ {"banner-name", "SparcStation", sizeof("SparcStation")}, + {"compatible", "sun4m", 6}, -+ {NULL, NULL, -1} +}; + +static const int prop_iommu_reg[] = { @@ -986,7 +991,7 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c +static const int height = 0x300; +static const int width = 0x400; +static const int linebytes = 0x400; -+static const int depth = 8; ++static const int depth = 24; +static const int tcx_intr[] = { 5, 0 }; +static const int tcx_interrupts = 5; +static const struct property propv_sbus_tcx[] = { @@ -1004,7 +1009,7 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c + {"linebytes", (char*)&linebytes, sizeof(int)}, + {"depth", (char*)&depth, sizeof(int)}, + {"reg", (char*)&prop_tcx_regs[0], sizeof(prop_tcx_regs)}, -+ {"tcx-8-bit", (char*)&prop_true, 0}, ++ {"tcx-8-bit", 0, -1}, + {"intr", (char*)&tcx_intr[0], sizeof(tcx_intr)}, + {"interrupts", (char*)&tcx_interrupts, sizeof(tcx_interrupts)}, + {"device_type", "display", sizeof("display")}, @@ -1101,15 +1106,17 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c +static const int prop_zs_reg[] = { + 0x0, 0x00000000, 0x00000008, +}; -+static const int prop_zs_slave[] = { 1 }; +static void *prop_zs_addr; ++static const int prop_zs_slave = 1; +static const struct property propv_obio_zs[] = { + {"name", "zs", sizeof("zs")}, + {"reg", (char*)&prop_zs_reg[0], sizeof(prop_zs_reg) }, -+ {"slave", (char*)&prop_zs_slave[0], sizeof(prop_zs_slave) }, ++ {"slave", (char*)&prop_zs_slave, sizeof(prop_zs_slave) }, + {"device_type", "serial", sizeof("serial") }, + {"intr", (char*)&prop_zs_intr[0], sizeof(prop_zs_intr) }, + {"address", (char*)&prop_zs_addr, sizeof(prop_zs_addr) }, ++ {"keyboard", (char*)&prop_true, 0}, ++ {"mouse", (char*)&prop_true, 0}, + {NULL, NULL, -1} +}; + @@ -1118,11 +1125,11 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c + 0x0, 0x00100000, 0x00000008, +}; +static void *prop_zs1_addr; -+static const int prop_zs1_slave[] = { 0 }; ++static const int prop_zs1_slave = 0; +static const struct property propv_obio_zs1[] = { + {"name", "zs", sizeof("zs")}, + {"reg", (char*)&prop_zs1_reg[0], sizeof(prop_zs1_reg) }, -+ {"slave", (char*)&prop_zs1_slave[0], sizeof(prop_zs1_slave) }, ++ {"slave", (char*)&prop_zs1_slave, sizeof(prop_zs1_slave) }, + {"device_type", "serial", sizeof("serial") }, + {"intr", (char*)&prop_zs1_intr[0], sizeof(prop_zs1_intr) }, + {"address", (char*)&prop_zs1_addr, sizeof(prop_zs1_addr) }, @@ -1185,6 +1192,15 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c + {NULL, NULL, -1} +}; + ++static const int prop_apc_reg[] = { ++ 0x4, 0x0a000000, 0x00000010, ++}; ++static const struct property propv_sbus_apc[] = { ++ {"name", "xxxpower-management", sizeof("xxxpower-management")}, ++ {"reg", (char*)&prop_apc_reg[0], sizeof(prop_apc_reg) }, ++ {NULL, NULL, -1} ++}; ++ +static const int prop_fd_intr[] = { 0x2b, 0x0 }; +static const int prop_fd_reg[] = { + 0x0, 0x00400000, 0x0000000f, @@ -1221,41 +1237,62 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c + {"name", "options", sizeof("options")}, + {"screen-#columns", "80", sizeof("80")}, + {"screen-#rows", "25", sizeof("25")}, -+ {"tpe-link-test?", "true", sizeof("true")}, ++ {"tpe-link-test?", (char *)&prop_true, 0}, + {"ttya-mode", "9600,8,n,1,-", sizeof("9600,8,n,1,-")}, -+ {"ttya-ignore-cd", "true", sizeof("true")}, -+ {"ttya-rts-dtr-off", "false", sizeof("false")}, ++ {"ttya-ignore-cd", (char *)&prop_true, 0}, ++ {"ttya-rts-dtr-off", 0, -1}, + {"ttyb-mode", "9600,8,n,1,-", sizeof("9600,8,n,1,-")}, -+ {"ttyb-ignore-cd", "true", sizeof("true")}, -+ {"ttyb-rts-dtr-off", "false", sizeof("false")}, ++ {"ttyb-ignore-cd", (char *)&prop_true, 0}, ++ {"ttyb-rts-dtr-off", 0, -1}, ++ {NULL, NULL, -1} ++}; ++ ++static int prop_mem_reg[3]; ++static int prop_mem_avail[3]; ++ ++static const struct property propv_memory[] = { ++ {"name", "memory", sizeof("memory")}, ++ {"reg", (char*)&prop_mem_reg[0], sizeof(prop_mem_reg) }, ++ {"available", (char*)&prop_mem_avail[0], sizeof(prop_mem_avail) }, ++ {NULL, NULL, -1} ++}; ++ ++static int prop_vmem_avail[6]; ++ ++static const struct property propv_vmemory[] = { ++ {"name", "virtual-memory", sizeof("virtual-memory")}, ++ {"available", (char*)&prop_vmem_avail[0], sizeof(prop_vmem_avail) }, + {NULL, NULL, -1} +}; + +static const struct node nodes[] = { + { &null_properties, 1, 0 }, /* 0 = big brother of root */ + { propv_root, 0, 2 }, /* 1 "/" */ -+ { propv_iommu, 11, 3 }, /* 2 "/iommu" */ ++ { propv_iommu, 12, 3 }, /* 2 "/iommu" */ + { propv_sbus, 0, 4 }, /* 3 "/iommu/sbus" */ + { propv_sbus_tcx, 5, 0 }, /* 4 "/iommu/sbus/SUNW,tcx" */ + { propv_sbus_ledma, 7, 6 }, /* 5 "/iommu/sbus/ledma" */ + { propv_sbus_ledma_le, 0, 0 }, /* 6 "/iommu/sbus/ledma/le" */ + { propv_sbus_cs4231, 8, 0 }, /* 7 "/iommu/sbus/SUNW,CS4231 */ + { propv_sbus_bpp, 9, 0 }, /* 8 "/iommu/sbus/SUNW,bpp */ -+ { propv_sbus_espdma, 0, 10 }, /* 9 "/iommu/sbus/espdma" */ ++ { propv_sbus_espdma, 11, 10 }, /* 9 "/iommu/sbus/espdma" */ + { propv_sbus_espdma_esp, 0, 0 }, /* 10 "/iommu/sbus/espdma/esp" */ -+ { propv_cpu, 12, 0 }, /* 11 "/STP1012PGA" */ -+ { propv_obio, 22, 13 }, /* 12 "/obio" */ -+ { propv_obio_int, 14, 0 }, /* 13 "/obio/interrupt" */ -+ { propv_obio_cnt, 15, 0 }, /* 14 "/obio/counter" */ -+ { propv_obio_eep, 16, 0 }, /* 15 "/obio/eeprom" */ -+ { propv_obio_auxio, 17, 0 }, /* 16 "/obio/auxio" */ -+ { propv_obio_zs1, 18, 0 }, /* 17 "/obio/zs@0,100000" ++ { propv_sbus_apc, 0, 0 }, /* 11 "/iommu/sbus/power-management */ ++ { propv_cpu, 13, 0 }, /* 12 "/STP1012PGA" */ ++ { propv_obio, 23, 14 }, /* 13 "/obio" */ ++ { propv_obio_int, 15, 0 }, /* 14 "/obio/interrupt" */ ++ { propv_obio_cnt, 16, 0 }, /* 15 "/obio/counter" */ ++ { propv_obio_eep, 17, 0 }, /* 16 "/obio/eeprom" */ ++ { propv_obio_auxio, 18, 0 }, /* 17 "/obio/auxio" */ ++ { propv_obio_zs1, 19, 0 }, /* 18 "/obio/zs@0,100000" + Must be before zs@0,0! */ -+ { propv_obio_zs, 19, 0 }, /* 18 "/obio/zs@0,0" */ -+ { propv_obio_fd, 20, 0 }, /* 19 "/obio/SUNW,fdtwo" */ -+ { propv_obio_pw, 21, 0 }, /* 20 "/obio/power" */ -+ { propv_obio_cf, 0, 0 }, /* 21 "/obio/slavioconfig@0,800000" */ -+ { propv_options, 0, 0 }, /* 22 "/options" */ ++ { propv_obio_zs, 20, 0 }, /* 19 "/obio/zs@0,0" */ ++ { propv_obio_fd, 21, 0 }, /* 20 "/obio/SUNW,fdtwo" */ ++ { propv_obio_pw, 22, 0 }, /* 21 "/obio/power" */ ++ { propv_obio_cf, 0, 0 }, /* 22 "/obio/slavioconfig@0,800000" */ ++ { propv_options, 24, 0 }, /* 23 "/options" */ ++ { propv_memory, 25, 0 }, /* 24 "/memory" */ ++ { propv_vmemory, 0, 0 }, /* 25 "/virtual-memory" */ +}; + +static struct linux_mlist_v0 totphys[MAX_BANKS]; @@ -1281,6 +1318,7 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c + +static void (*synch_hook)(void); +static char obp_stdin, obp_stdout; ++static int obp_fd_stdin, obp_fd_stdout; + +static int obp_nbgetchar(void); +static int obp_nbputchar(int ch); @@ -1289,9 +1327,13 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c +static void obp_halt(void); +static int obp_devopen(char *str); +static int obp_devclose(int dev_desc); ++static int obp_devread(int dev_desc, char *buf, int nbytes); ++static int obp_devwrite(int dev_desc, char *buf, int nbytes); ++static int obp_devseek(int dev_desc, int hi, int lo); +static int obp_rdblkdev(int dev_desc, int num_blks, int blk_st, char *buf); +static char *obp_dumb_mmap(char *va, int which_io, unsigned int pa, unsigned int size); +static void obp_dumb_munmap(char *va, unsigned int size); ++static int obp_inst2pkg(int dev_desc); + +static void doublewalk(unsigned ptab1, unsigned va) +{ @@ -1304,6 +1346,17 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c + +static struct linux_romvec romvec0; + ++struct fd { ++ int unit, part; ++ int offset; ++ int (*pread)(int dev_desc, int offset, char *buf, unsigned int nbytes); ++ int (*pwrite)(int dev_desc, int offset, char *buf, unsigned int nbytes); ++} fd_table[16]; ++ ++static int fd_index; ++static int con_pread(int dev_desc, int offset, char *buf, unsigned int nbytes); ++static int con_pwrite(int dev_desc, int offset, char *buf, unsigned int nbytes); ++ +void * +init_openprom_qemu(int bankc, struct bank *bankv, unsigned hiphybas, + const char *cmdline, char boot_device, int nographic) @@ -1345,6 +1398,18 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c + totmap[0].theres_more = 0; + totmap[0].start_adr = (char*) PROLBASE; + totmap[0].num_bytes = PROLSIZE; ++ prop_mem_reg[0] = 0; ++ prop_mem_reg[1] = 0; ++ prop_mem_reg[2] = bankv[0].length; ++ prop_mem_avail[0] = 0; ++ prop_mem_avail[1] = 0; ++ prop_mem_avail[2] = hiphybas; ++ prop_vmem_avail[0] = 0; ++ prop_vmem_avail[1] = 0; ++ prop_vmem_avail[2] = PROLBASE-1; ++ prop_vmem_avail[3] = 0; ++ prop_vmem_avail[4] = 0xffe00000; ++ prop_vmem_avail[5] = 0x00200000; + + /* + * idprom @@ -1353,6 +1418,7 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c + + // Linux wants a R/W romvec table + romvec0.pv_magic_cookie = LINUX_OPPROM_MAGIC; ++ romvec0.pv_romvers = 3; + romvec0.pv_plugin_revision = 77; + romvec0.pv_printrev = 0x10203; + romvec0.pv_v0mem.v0_totphys = &ptphys; @@ -1375,10 +1441,17 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c + romvec0.pv_halt = obp_halt; + romvec0.pv_synchook = &synch_hook; + romvec0.pv_v0bootargs = &obp_argp; ++ romvec0.pv_v2devops.v2_inst2pkg = obp_inst2pkg; + romvec0.pv_v2devops.v2_dumb_mmap = obp_dumb_mmap; + romvec0.pv_v2devops.v2_dumb_munmap = obp_dumb_munmap; ++ romvec0.pv_v2devops.v2_dev_open = obp_devopen; ++ romvec0.pv_v2devops.v2_dev_close = (void (*)(int))obp_devclose; ++ romvec0.pv_v2devops.v2_dev_read = obp_devread; ++ romvec0.pv_v2devops.v2_dev_write = obp_devwrite; ++ romvec0.pv_v2devops.v2_dev_seek = obp_devseek; + obp_arg.boot_dev_ctrl = 0; + obp_arg.boot_dev_unit = '0'; ++ obp_arg.argv[0] = "sd(0,0,0):d"; + switch(boot_device) { + default: + case 'a': @@ -1388,9 +1461,9 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c + break; + case 'd': + obp_arg.boot_dev_unit = '2'; ++ obp_arg.argv[0] = "sd(0,2,0):d"; + // Fall through + case 'c': -+ obp_arg.argv[0] = "sd()"; + obp_arg.boot_dev[0] = 's'; + obp_arg.boot_dev[1] = 'd'; + break; @@ -1401,13 +1474,39 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c + break; + } + obp_arg.argv[1] = cmdline; ++ romvec0.pv_v2bootargs.bootpath = &obp_arg.argv[0]; ++ romvec0.pv_v2bootargs.bootargs = &cmdline; ++ romvec0.pv_v2bootargs.fd_stdin = &obp_fd_stdin; ++ romvec0.pv_v2bootargs.fd_stdout = &obp_fd_stdout; + ++ bcopy(propv_root_templ, propv_root, sizeof(propv_root_templ)); ++ propv_root[4].name = "stdin-path"; ++ propv_root[5].name = "stdout-path"; ++ obp_fd_stdin = 0; ++ obp_fd_stdout = 1; ++ fd_table[0].pread = con_pread; ++ fd_table[0].pwrite = con_pwrite; ++ fd_table[1].pread = con_pread; ++ fd_table[1].pwrite = con_pwrite; ++ fd_index = 2; + if (nographic) { + obp_stdin = PROMDEV_TTYA; ++ propv_root[4].value = "/obio/zs@0,100000:a"; ++ propv_root[4].length = sizeof("/obio/zs@0,100000:a"); ++ fd_table[0].unit = 18; + obp_stdout = PROMDEV_TTYA; ++ propv_root[5].value = "/obio/zs@0,100000:a"; ++ propv_root[5].length = sizeof("/obio/zs@0,100000:a"); ++ fd_table[1].unit = 18; + } else { + obp_stdin = PROMDEV_KBD; ++ propv_root[4].value = "/obio/zs@0,0"; ++ propv_root[4].length = sizeof("/obio/zs@0,0"); ++ fd_table[0].unit = 19; + obp_stdout = PROMDEV_SCREEN; ++ propv_root[5].value = "/iommu/sbus/SUNW,tcx"; ++ propv_root[5].length = sizeof("/iommu/sbus/SUNW,tcx"); ++ fd_table[1].unit = 4; + } + prop_zs_addr = map_io(0x71000000, 8); + prop_zs1_addr = map_io(0x71100000, 8); @@ -1481,7 +1580,10 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c + return -1; +} + -+static int obp_setprop(int node, char *name, char *value, int len) ++static int obp_setprop(__attribute__((unused)) int node, ++ __attribute__((unused)) char *name, ++ __attribute__((unused)) char *value, ++ __attribute__((unused)) int len) +{ +#ifdef DEBUG_OBP + printk("obp_setprop(%d, %s) = %s (%d)\n", node, name, value, len); @@ -1511,7 +1613,7 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c +#ifdef DEBUG_OBP + printk("obp_nextprop(%d, %s): not found\n", node, name); +#endif -+ return (const char *)-1; ++ return ""; +} + +extern int (*getch_fn)(struct vconterm *v); @@ -1527,21 +1629,60 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c +} + +static void obp_reboot(char *str) { -+ printk("rebooting (%s): not implemented, freezing\n", str); ++ printk("rebooting (%s)\n", str); ++ stb_bypass(0x71f00000, 1); + for (;;) {} +} + +static void obp_abort() { -+ printk("abort, freezing\n"); ++ printk("abort, power off\n"); ++ stb_bypass(0x71910000, 1); + for (;;) {} +} + +static void obp_halt() { -+ printk("halt, freezing\n"); ++ printk("halt, power off\n"); ++ stb_bypass(0x71910000, 1); + for (;;) {} +} ++ ++extern void *esp_read(int unit, int part, int offset, short len); ++ ++static int esp_pread(int dev_desc, int offset, char *buf, unsigned int nbytes) ++{ ++ unsigned int i; ++ void *src; ++ ++ for(i = 0; i < nbytes; i += 512) { ++ src = esp_read(fd_table[dev_desc].unit, fd_table[dev_desc].part, (offset + i) / 512, 512); ++ memcpy(&buf[i], src, 512); ++ } ++ return nbytes; ++} ++ ++static int con_pread(__attribute__((unused)) int dev_desc, __attribute__((unused)) int offset, char *buf, unsigned int nbytes) ++{ ++ unsigned int i; ++ ++ for(i = 0; i < nbytes; i ++) { ++ buf[i] = obp_nbgetchar(); ++ } ++ return nbytes; ++} ++ ++static int con_pwrite(__attribute__((unused)) int dev_desc, __attribute__((unused)) int offset, char *buf, unsigned int nbytes) ++{ ++ unsigned int i; ++ ++ for(i = 0; i < nbytes; i ++) { ++ obp_nbputchar(buf[i]); ++ } ++ return nbytes; ++} ++ +#define isnum(c) ((c >= '0') && (c < '9')) +#define ctoi(c) (c - '0') ++ +static int obp_devopen(char *str) { +#ifdef DEBUG_OBP + printk("obp_devopen(%s)\n", str); @@ -1557,39 +1698,32 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c + else { + target = ctoi(str[5]) & 7; + } -+ return 's' + target; ++ fd_table[fd_index].unit = target; ++ fd_table[fd_index].part = str[10] - 'a'; ++ fd_table[fd_index].pread = esp_pread; ++ return fd_index++; // XXX + } + return 0; +} + -+static int obp_devclose(int dev_desc) { ++static int obp_devclose(__attribute__((unused)) int dev_desc) { +#ifdef DEBUG_OBP + printk("obp_devclose %d\n", dev_desc); +#endif ++ fd_index--; // XXX + return 0; +} + -+extern void *esp_read(int unit, int offset, short len); -+ +static int obp_rdblkdev(int dev_desc, int num_blks, int offset, char *buf) +{ -+ unsigned int i; -+ void *src; -+ +#ifdef DEBUG_OBP + printk("obp_rdblkdev: fd %d, num_blks %d, offset %d, buf 0x%x\n", dev_desc, num_blks, offset, buf); +#endif -+ if (dev_desc >= 's' && dev_desc < 'v') { -+ for(i = 0; i < num_blks; i++) { -+ src = esp_read(dev_desc - 's', offset + i, 1); -+ memcpy(&buf[i << 9], src, 512); -+ } -+ return num_blks; -+ } -+ return -1; ++ return fd_table[dev_desc].pread(dev_desc, offset, buf, num_blks * 512); +} + -+static char *obp_dumb_mmap(char *va, int which_io, unsigned int pa, unsigned int size) ++static char *obp_dumb_mmap(char *va, __attribute__((unused)) int which_io, ++ unsigned int pa, unsigned int size) +{ + unsigned int npages; + unsigned int off; @@ -1611,16 +1745,55 @@ diff -ruN proll_18.orig/qemu/openprom.c proll-patch10/qemu/openprom.c + return va; +} + -+static void obp_dumb_munmap(char *va, unsigned int size) ++static void obp_dumb_munmap(__attribute__((unused)) char *va, ++ __attribute__((unused)) unsigned int size) +{ +#ifdef DEBUG_OBP + printk("obp_dumb_munmap: virta %x, sz %d\n", va, size); +#endif -+ +} -diff -ruN proll_18.orig/qemu/system_qemu.c proll-patch10/qemu/system_qemu.c ++ ++static int obp_devread(int dev_desc, char *buf, int nbytes) ++{ ++ int ret; ++#ifdef DEBUG_OBP ++ printk("obp_devread: fd %d, nbytes %d\n", dev_desc, nbytes); ++#endif ++ ret = fd_table[dev_desc].pread(dev_desc, fd_table[dev_desc].offset, buf, nbytes); ++ fd_table[dev_desc].offset += nbytes; ++ return ret; ++} ++ ++static int obp_devwrite(int dev_desc, char *buf, int nbytes) ++{ ++ int ret; ++#ifdef DEBUG_OBP ++ printk("obp_devwrite: fd %d, buf %s, nbytes %d\n", dev_desc, buf, nbytes); ++#endif ++ ret = fd_table[dev_desc].pwrite(dev_desc, fd_table[dev_desc].offset, buf, nbytes); ++ fd_table[dev_desc].offset += nbytes; ++ return ret; ++} ++ ++static int obp_devseek(int dev_desc, __attribute__((unused)) int hi, int lo) ++{ ++#ifdef DEBUG_OBP ++ printk("obp_devseek: fd %d, hi %d, lo %d\n", dev_desc, hi, lo); ++#endif ++ fd_table[dev_desc].offset = lo; ++ return 0; ++} ++ ++static int obp_inst2pkg(int dev_desc) ++{ ++#ifdef DEBUG_OBP ++ printk("obp_inst2pkg: fd %d\n", dev_desc); ++#endif ++ return fd_table[dev_desc].unit; ++} +diff -ruN proll_18.orig/qemu/system_qemu.c proll-patch-15/qemu/system_qemu.c --- proll_18.orig/qemu/system_qemu.c 1970-01-01 00:00:00.000000000 +0000 -+++ proll-patch10/qemu/system_qemu.c 2005-04-16 06:16:20.000000000 +0000 ++++ proll-patch-15/qemu/system_qemu.c 2005-04-16 06:16:20.000000000 +0000 @@ -0,0 +1,430 @@ +/** + ** Proll (PROM replacement) @@ -2052,9 +2225,9 @@ diff -ruN proll_18.orig/qemu/system_qemu.c proll-patch10/qemu/system_qemu.c + n = (n>>24 & 0xFF) | (n>>8 & 0xFF00) | ((n&0xFF00) << 8) | (n<<24); + st_bypass(ptr, n); +}; -diff -ruN proll_18.orig/src/arp.c proll-patch10/src/arp.c +diff -ruN proll_18.orig/src/arp.c proll-patch-15/src/arp.c --- proll_18.orig/src/arp.c 2001-12-24 05:12:31.000000000 +0000 -+++ proll-patch10/src/arp.c 2004-11-13 15:50:49.000000000 +0000 ++++ proll-patch-15/src/arp.c 2005-08-14 10:10:11.000000000 +0000 @@ -45,7 +45,7 @@ #endif static struct arp_cache arp_list[ARPNUM]; /* ARP address cache */ @@ -2064,7 +2237,19 @@ diff -ruN proll_18.orig/src/arp.c proll-patch10/src/arp.c -@@ -144,7 +144,7 @@ +@@ -100,10 +100,7 @@ + * + * ARP receiver routine + */ +-static int arp_recv(buf, bufsize, addr) +-unsigned char *buf; +-int bufsize; +-unsigned char *addr; ++static int arp_recv(unsigned char *buf, unsigned int bufsize, unsigned char *addr) + { + register struct arphdr *ahp = (struct arphdr *)buf; + +@@ -144,7 +141,7 @@ * * Resolve IP address and return pointer to hardware address. */ @@ -2073,7 +2258,7 @@ diff -ruN proll_18.orig/src/arp.c proll-patch10/src/arp.c t_ipaddr ip; { int i; -@@ -230,14 +230,11 @@ +@@ -230,14 +227,11 @@ */ int init_arp() { @@ -2089,9 +2274,9 @@ diff -ruN proll_18.orig/src/arp.c proll-patch10/src/arp.c + def_gw = IP_ANY; return(TRUE); } -diff -ruN proll_18.orig/src/arp.h proll-patch10/src/arp.h +diff -ruN proll_18.orig/src/arp.h proll-patch-15/src/arp.h --- proll_18.orig/src/arp.h 1999-03-18 03:39:43.000000000 +0000 -+++ proll-patch10/src/arp.h 2004-11-13 15:50:49.000000000 +0000 ++++ proll-patch-15/src/arp.h 2004-11-13 15:50:49.000000000 +0000 @@ -104,7 +104,7 @@ extern int init_arp __P((void)); @@ -2101,10 +2286,22 @@ diff -ruN proll_18.orig/src/arp.h proll-patch10/src/arp.h /* Add a new antry to the ARP cache */ extern void addcache __P((unsigned char *ha, t_ipaddr ip)); -diff -ruN proll_18.orig/src/esp.c proll-patch10/src/esp.c +diff -ruN proll_18.orig/src/bootp.c proll-patch-15/src/bootp.c +--- proll_18.orig/src/bootp.c 1999-12-15 17:20:30.000000000 +0000 ++++ proll-patch-15/src/bootp.c 2005-08-14 10:16:09.000000000 +0000 +@@ -151,7 +151,7 @@ + while (TRUE) { + boot_xid = get_ticks() + random(); + bootp_send(); +- i = udp_read((char *)(&boot_rec), BOOTP_REC_SIZE, timeout, CHR_ESC); ++ i = udp_read((char *)(&boot_rec), BOOTP_REC_SIZE, timeout); + if (i < 0) { /* user pressed ESC */ + printf("\nAborted\n"); + return(1); +diff -ruN proll_18.orig/src/esp.c proll-patch-15/src/esp.c --- proll_18.orig/src/esp.c 1970-01-01 00:00:00.000000000 +0000 -+++ proll-patch10/src/esp.c 2005-04-16 06:24:23.000000000 +0000 -@@ -0,0 +1,252 @@ ++++ proll-patch-15/src/esp.c 2005-08-15 18:42:46.000000000 +0000 +@@ -0,0 +1,305 @@ +#include /* == */ +#include /* __P for netpriv.h */ +#include /* dmaga */ @@ -2138,6 +2335,10 @@ diff -ruN proll_18.orig/src/esp.c proll-patch10/src/esp.c + struct esp_dma *espdma; /* If set this points to espdma */ + + unsigned char *buffer; ++ struct disk_info { ++ unsigned int hw_sector; ++ unsigned int part_offset[8]; ++ } disk[8]; +}; + +static void esp_interrupt(void *dev_id) @@ -2260,7 +2461,7 @@ diff -ruN proll_18.orig/src/esp.c proll-patch10/src/esp.c + return; +} + -+void *esp_read(int unit, int offset, short len) ++void esp_read_capacity(int unit) +{ + // Set SCSI target + stb_bypass(PHYS_JJ_ESP + 4*4, unit & 7); @@ -2271,28 +2472,74 @@ diff -ruN proll_18.orig/src/esp.c proll-patch10/src/esp.c + stb_bypass(PHYS_JJ_ESP + 1*4, 0); + // Set DMA direction + st_bypass(PHYS_JJ_ESPDMA + 0, 0x000); ++ // Setup command = Read Capacity ++ esp.buffer[0] = 0x80; ++ esp.buffer[1] = 0x25; ++ esp.buffer[2] = 0x00; ++ esp.buffer[3] = 0x00; ++ esp.buffer[4] = 0x00; ++ esp.buffer[5] = 0x00; ++ esp.buffer[6] = 0x00; ++ esp.buffer[7] = 0x00; ++ esp.buffer[8] = 0x00; ++ esp.buffer[9] = 0x00; ++ esp.buffer[10] = 0x00; ++ // Set ATN, issue command ++ stb_bypass(PHYS_JJ_ESP + 3*4, 0xc2); ++ ++ // Set DMA length = 512 * read length ++ stb_bypass(PHYS_JJ_ESP + 0*4, 0); ++ stb_bypass(PHYS_JJ_ESP + 1*4, 8 & 0xff); ++ // Set DMA direction ++ st_bypass(PHYS_JJ_ESPDMA + 0, 0x100); ++ // Transfer ++ stb_bypass(PHYS_JJ_ESP + 3*4, 0x90); ++ esp.disk[unit].hw_sector = (esp.buffer[4] << 24) | (esp.buffer[5] << 16) | (esp.buffer[6] << 8) | esp.buffer[7]; ++} ++ ++// offset is multiple of 512, len in bytes ++void *esp_read(int unit, int part, int offset, short len) ++{ ++ int pos, hw_sect, sect_offset, spb; ++ ++ // Set SCSI target ++ stb_bypass(PHYS_JJ_ESP + 4*4, unit & 7); ++ // Set DMA address ++ st_bypass(PHYS_JJ_ESPDMA + 4, esp.buffer_dvma); ++ // Set DMA length ++ stb_bypass(PHYS_JJ_ESP + 0*4, 10); ++ stb_bypass(PHYS_JJ_ESP + 1*4, 0); ++ // Set DMA direction ++ st_bypass(PHYS_JJ_ESPDMA + 0, 0x000); ++ hw_sect = esp.disk[unit].hw_sector; ++ offset += esp.disk[unit].part_offset[part]; ++ spb = hw_sect / 512; ++ sect_offset = offset / spb; ++ pos = (offset - sect_offset * spb) * 512; ++ len /= 512; ++ //printk("Read unit %d, offset %d -> offset %d, pos %d, hw_sect %d\n", unit, offset, sect_offset, pos, hw_sect); + // Setup command = Read(10) + esp.buffer[0] = 0x80; + esp.buffer[1] = 0x28; + esp.buffer[2] = 0x00; -+ esp.buffer[3] = (offset >> 24) & 0xff; -+ esp.buffer[4] = (offset >> 16) & 0xff; -+ esp.buffer[5] = (offset >> 8) & 0xff; -+ esp.buffer[6] = offset & 0xff; ++ esp.buffer[3] = (sect_offset >> 24) & 0xff; ++ esp.buffer[4] = (sect_offset >> 16) & 0xff; ++ esp.buffer[5] = (sect_offset >> 8) & 0xff; ++ esp.buffer[6] = sect_offset & 0xff; + esp.buffer[7] = 0x00; + esp.buffer[8] = (len >> 8) & 0xff; + esp.buffer[9] = len & 0xff; + // Set ATN, issue command -+ stb_bypass(PHYS_JJ_ESP + 3*4, 0x42); ++ stb_bypass(PHYS_JJ_ESP + 3*4, 0xc2); + -+ // Set DMA length = 512 * read length -+ stb_bypass(PHYS_JJ_ESP + 0*4, 0); -+ stb_bypass(PHYS_JJ_ESP + 1*4, (len << 1) & 0xff); ++ // Set DMA length = sector size * read length ++ stb_bypass(PHYS_JJ_ESP + 0*4, (len * hw_sect) & 0xff); ++ stb_bypass(PHYS_JJ_ESP + 1*4, ((len * hw_sect) >> 8) & 0xff); + // Set DMA direction + st_bypass(PHYS_JJ_ESPDMA + 0, 0x100); + // Transfer -+ stb_bypass(PHYS_JJ_ESP + 3*4, 0x10); -+ return esp.buffer; ++ stb_bypass(PHYS_JJ_ESP + 3*4, 0x90); ++ return esp.buffer + pos; +} + +// Sparc boot sequence can be found in SILO docs, @@ -2334,32 +2581,35 @@ diff -ruN proll_18.orig/src/esp.c proll-patch10/src/esp.c + stb_bypass(PHYS_JJ_ESP + 3*4, 2); + + esp_open(&esp); ++ esp_read_capacity(unit); + -+ label = esp_read(unit, 0, 1); -+ printk("CHS: %d/%d/%d, partitions:\n", label->ncyl, label->ntrks, label->nsect); ++ label = esp_read(unit, 0, 0, 512); ++ printk("hw sector: %d, CHS: %d/%d/%d, partitions:\n", esp.disk[unit].hw_sector, ++ label->ncyl, label->ntrks, label->nsect); + for (i = 0; i < 8; i++) { -+ printk("%c: %d + %d\n", 'a' + i, label->partitions[i].start_cylinder, -+ label->partitions[i].num_sectors); ++ printk("%c: %d + %d, id %x, flags %x\n", 'a' + i, label->partitions[i].start_cylinder, ++ label->partitions[i].num_sectors, label->infos[i].id, label->infos[i].flags); ++ esp.disk[unit].part_offset[i] = label->partitions[3].start_cylinder * label->ntrks * label->nsect; + } -+ offset = label->partitions[4].start_cylinder * label->ntrks * label->nsect + 1; ++ offset = 1; + printk("booting sd(0,%d,0):d (offset %d)\n", unit, offset); + // Skip a.out header (0x20) + dst = (void *)0x4000; -+ src = esp_read(unit, offset, 1); ++ src = esp_read(unit, 3, offset, 512); + src = (void *)((unsigned int) src + 0x20); + memcpy(dst, src, 512 - 0x20); + dst = (void *)0x4000 + 512 - 0x20; + for (i = 1; i < 7680/512; i++) { -+ src = esp_read(unit, offset + i, 1); ++ src = esp_read(unit, 3, offset + i, 512); + memcpy(dst, src, 512); + dst += 512; + } + esp_close(&esp); + return 0; +} -diff -ruN proll_18.orig/src/hconsole.c proll-patch10/src/hconsole.c +diff -ruN proll_18.orig/src/hconsole.c proll-patch-15/src/hconsole.c --- proll_18.orig/src/hconsole.c 2002-07-23 05:52:48.000000000 +0000 -+++ proll-patch10/src/hconsole.c 2005-03-02 17:03:09.000000000 +0000 ++++ proll-patch-15/src/hconsole.c 2005-11-09 18:46:34.000000000 +0000 @@ -29,6 +29,10 @@ struct raster r_master; /* For a case of resize, whole fb */ struct raster r_0; /* malloc() erzatz */ @@ -2383,9 +2633,84 @@ diff -ruN proll_18.orig/src/hconsole.c proll-patch10/src/hconsole.c t->r_ = r; t->r0_ = q; t->f_ = &f_master; -diff -ruN proll_18.orig/src/hme.c proll-patch10/src/hme.c +@@ -67,7 +75,7 @@ + return 0; + } + +-void hcon_fini (struct hconsole *t) ++void hcon_fini (__attribute((unused)) struct hconsole *t) + { + return; + } +@@ -77,12 +85,12 @@ + { + struct rfont *f = t->f_; + +- if (sy < 0 || sy >= t->ydim_) return -1; +- if (sx < 0 || sx >= t->xdim_) return -1; ++ if (sy < 0 || (unsigned)sy >= t->ydim_) return -1; ++ if (sx < 0 || (unsigned)sx >= t->xdim_) return -1; + if (height < 0) return -1; +- if (sy + height > t->ydim_) height = t->ydim_ - sy; ++ if ((unsigned)sy + (unsigned)height > t->ydim_) height = t->ydim_ - sy; + if (width < 0) return -1; +- if (sx + width > t->xdim_) width = t->xdim_ - sx; ++ if ((unsigned)sx + (unsigned)width > t->xdim_) width = t->xdim_ - sx; + + /* XXX Clear with correct background color */ + (*t->r_->clear_)(t->r_, +@@ -107,10 +115,10 @@ + char c0 = c; + RC_color rfg, rbg; + +- if (y < 0 || y >= t->ydim_) return -1; +- if (x < 0 || x >= t->xdim_) return -1; ++ if (y < 0 || (unsigned)y >= t->ydim_) return -1; ++ if (x < 0 || (unsigned)x >= t->xdim_) return -1; + +- if (t->curson_ && t->ypos_ == y && t->xpos_ == x) { ++ if (t->curson_ && t->ypos_ == (unsigned)y && t->xpos_ == (unsigned)x) { + rfg = t->bg_; rbg = t->fg_; + } else { + rfg = t->fg_; rbg = t->bg_; +@@ -126,9 +134,9 @@ + { + struct rfont *f = t->f_; + +- if (y < 0 || y >= t->ydim_) return -1; +- if (x < 0 || x >= t->xdim_) return -1; +- if (x + count >= t->xdim_) count = t->xdim_ - x; ++ if (y < 0 || (unsigned)y >= t->ydim_) return -1; ++ if (x < 0 || (unsigned)x >= t->xdim_) return -1; ++ if ((unsigned)x + (unsigned)count >= t->xdim_) count = t->xdim_ - x; + + (*t->r_->render_)(t->r_, y*f->height_, x*f->width_, + s, count, t->bg_, t->fg_, f); +@@ -200,8 +208,8 @@ + + rc = 0; + if (dir == SM_UP) { +- if (d < 0 || d >= t->ydim_) return -1; +- if (b <= d || b > t->ydim_) return -1; ++ if (d < 0 || (unsigned)d >= t->ydim_) return -1; ++ if (b <= d || (unsigned)b > t->ydim_) return -1; + if (d + count >= b) count = b - d; + if (d + count >= b) count = b - d; + (*t->r_->yscroll_)(t->r_, +@@ -213,8 +221,8 @@ + count*f->height_, raster_qwidth(t->r_), + t->bg_); + } else if (dir == SM_DOWN) { +- if (d < 0 || d >= t->ydim_) return -1; +- if (b <= d || b > t->ydim_) return -1; ++ if (d < 0 || (unsigned)d >= t->ydim_) return -1; ++ if (b <= d || (unsigned)b > t->ydim_) return -1; + if (d + count >= b) count = b - d; + (*t->r_->yscroll_)(t->r_, + d*f->height_, 0, +diff -ruN proll_18.orig/src/hme.c proll-patch-15/src/hme.c --- proll_18.orig/src/hme.c 2002-07-23 05:52:52.000000000 +0000 -+++ proll-patch10/src/hme.c 2005-04-16 06:16:20.000000000 +0000 ++++ proll-patch-15/src/hme.c 2005-04-16 06:16:20.000000000 +0000 @@ -655,10 +655,10 @@ unsigned int flags, unsigned int addr) @@ -2443,9 +2768,21 @@ diff -ruN proll_18.orig/src/hme.c proll-patch10/src/hme.c : "=r" (flags) : "r" (&this->rx_flags), "i" (ASI_PL)); #else -diff -ruN proll_18.orig/src/lat7_2.bm proll-patch10/src/lat7_2.bm +diff -ruN proll_18.orig/src/iommu.c proll-patch-15/src/iommu.c +--- proll_18.orig/src/iommu.c 2002-07-23 05:52:49.000000000 +0000 ++++ proll-patch-15/src/iommu.c 2005-08-14 10:08:17.000000000 +0000 +@@ -36,7 +36,7 @@ + unsigned int pa, ba; + unsigned int npages; + unsigned int mva, mpa; +- int i; ++ unsigned int i; + unsigned int *iopte; + + npages = (size + (PAGE_SIZE-1)) / PAGE_SIZE; +diff -ruN proll_18.orig/src/lat7_2.bm proll-patch-15/src/lat7_2.bm --- proll_18.orig/src/lat7_2.bm 1999-02-27 05:48:54.000000000 +0000 -+++ proll-patch10/src/lat7_2.bm 2004-11-13 15:50:49.000000000 +0000 ++++ proll-patch-15/src/lat7_2.bm 2004-11-13 15:50:49.000000000 +0000 @@ -1,6 +1,6 @@ #define lat7_2_width 128 #define lat7_2_height 88 @@ -2454,9 +2791,9 @@ diff -ruN proll_18.orig/src/lat7_2.bm proll-patch10/src/lat7_2.bm 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x12, 0x1e, 0x0c, 0x02, 0x70, 0x18, 0x22, 0x22, 0x18, 0x00, 0x00, 0x18, 0x18, 0xff, 0x18, 0x00, 0x12, 0x02, -diff -ruN proll_18.orig/src/lat7_2_swapped.bm proll-patch10/src/lat7_2_swapped.bm +diff -ruN proll_18.orig/src/lat7_2_swapped.bm proll-patch-15/src/lat7_2_swapped.bm --- proll_18.orig/src/lat7_2_swapped.bm 1970-01-01 00:00:00.000000000 +0000 -+++ proll-patch10/src/lat7_2_swapped.bm 2004-11-13 15:50:49.000000000 +0000 ++++ proll-patch-15/src/lat7_2_swapped.bm 2004-11-13 15:50:49.000000000 +0000 @@ -0,0 +1,121 @@ +#define lat7_2_width 128 +#define lat7_2_height 88 @@ -2579,9 +2916,9 @@ diff -ruN proll_18.orig/src/lat7_2_swapped.bm proll-patch10/src/lat7_2_swapped.b + 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x36, 0x6c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x42, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00}; -diff -ruN proll_18.orig/src/le.c proll-patch10/src/le.c +diff -ruN proll_18.orig/src/le.c proll-patch-15/src/le.c --- proll_18.orig/src/le.c 2002-07-23 05:52:49.000000000 +0000 -+++ proll-patch10/src/le.c 2005-04-16 06:16:20.000000000 +0000 ++++ proll-patch-15/src/le.c 2005-04-16 06:16:20.000000000 +0000 @@ -185,8 +185,6 @@ unsigned short rap; /* register address port */ }; @@ -2600,9 +2937,21 @@ diff -ruN proll_18.orig/src/le.c proll-patch10/src/le.c /* Now, give the packet to the lance */ ib->btx_ring [entry].tmd1_bits = (LE_T1_POK|LE_T1_OWN); -diff -ruN proll_18.orig/src/netinit.c proll-patch10/src/netinit.c +diff -ruN proll_18.orig/src/net.h proll-patch-15/src/net.h +--- proll_18.orig/src/net.h 1999-12-15 17:20:17.000000000 +0000 ++++ proll-patch-15/src/net.h 2005-08-14 10:17:02.000000000 +0000 +@@ -124,7 +124,7 @@ + extern int udp_open __P((t_ipaddr daddr, int source, int dest)); + + /* Read from a UDP socket */ +-extern int udp_read __P((char *buf, int bufsize, int timeout, char abortch)); ++extern int udp_read(char *buf, unsigned int bufsize, int timeout); + + /* Write to a UDP socket */ + extern int udp_write __P((char *buf, int writelen)); +diff -ruN proll_18.orig/src/netinit.c proll-patch-15/src/netinit.c --- proll_18.orig/src/netinit.c 2002-09-13 21:53:33.000000000 +0000 -+++ proll-patch10/src/netinit.c 2004-11-13 15:50:49.000000000 +0000 ++++ proll-patch-15/src/netinit.c 2004-11-13 15:50:49.000000000 +0000 @@ -49,13 +49,20 @@ unsigned char myhwaddr[ETH_ALEN]; /* my own hardware addr */ t_ipaddr myipaddr; /* my own IP address */ @@ -2646,9 +2995,18 @@ diff -ruN proll_18.orig/src/netinit.c proll-patch10/src/netinit.c fatal(); } } -diff -ruN proll_18.orig/src/netpriv.h proll-patch10/src/netpriv.h +diff -ruN proll_18.orig/src/netpriv.h proll-patch-15/src/netpriv.h --- proll_18.orig/src/netpriv.h 1999-04-27 05:39:37.000000000 +0000 -+++ proll-patch10/src/netpriv.h 2004-11-13 15:50:49.000000000 +0000 ++++ proll-patch-15/src/netpriv.h 2005-08-14 10:12:20.000000000 +0000 +@@ -83,7 +83,7 @@ + */ + struct device *dev; + char *data; +- int len; ++ unsigned int len; + int protocol; + unsigned char ip_summed; + }; @@ -130,10 +130,9 @@ * */ @@ -2670,10 +3028,10 @@ diff -ruN proll_18.orig/src/netpriv.h proll-patch10/src/netpriv.h /* Empty read buffer */ extern void empty_buf __P((void)); -diff -ruN proll_18.orig/src/openprom.h proll-patch10/src/openprom.h +diff -ruN proll_18.orig/src/openprom.h proll-patch-15/src/openprom.h --- proll_18.orig/src/openprom.h 2002-07-14 02:26:30.000000000 +0000 -+++ proll-patch10/src/openprom.h 2004-11-13 15:50:49.000000000 +0000 -@@ -54,20 +54,20 @@ ++++ proll-patch-15/src/openprom.h 2005-05-13 16:23:14.000000000 +0000 +@@ -54,29 +54,29 @@ }; struct linux_mem_v0 { @@ -2699,6 +3057,19 @@ diff -ruN proll_18.orig/src/openprom.h proll-patch10/src/openprom.h void *aieee1; /* XXX */ }; + /* V2 and up boot things. */ + struct linux_bootargs_v2 { +- char **bootpath; +- char **bootargs; +- int *fd_stdin; +- int *fd_stdout; ++ const char **bootpath; ++ const char **bootargs; ++ const int *fd_stdin; ++ const int *fd_stdout; + }; + + /* The top level PROM vector. */ @@ -91,13 +91,13 @@ struct linux_mem_v0 pv_v0mem; @@ -2734,9 +3105,9 @@ diff -ruN proll_18.orig/src/openprom.h proll-patch10/src/openprom.h }; /* More fun PROM structures for device probing. */ -diff -ruN proll_18.orig/src/packet.c proll-patch10/src/packet.c +diff -ruN proll_18.orig/src/packet.c proll-patch-15/src/packet.c --- proll_18.orig/src/packet.c 2000-02-11 04:56:45.000000000 +0000 -+++ proll-patch10/src/packet.c 2004-11-13 15:50:49.000000000 +0000 ++++ proll-patch-15/src/packet.c 2005-08-14 10:12:49.000000000 +0000 @@ -41,7 +41,7 @@ int aligner; } wbuf; @@ -2764,9 +3135,24 @@ diff -ruN proll_18.orig/src/packet.c proll-patch10/src/packet.c { struct sk_buff *skb; unsigned char *s; -diff -ruN proll_18.orig/src/printf.c proll-patch10/src/printf.c +@@ -209,12 +211,12 @@ + /* + */ + void +-eth_copy_and_sum(struct sk_buff *dest, unsigned char *src, int len, int base) ++eth_copy_and_sum(struct sk_buff *dest, unsigned char *src, int len, __attribute__((unused)) int base) + { + bcopy(src, dest->data, len); + } + +-unsigned short eth_type_trans(struct sk_buff *skb, struct device *dev) ++unsigned short eth_type_trans(struct sk_buff *skb, __attribute__((unused)) struct device *dev) + { + unsigned char *s = skb->data + 12; + return s[0] << 8 | s[1]; /* Network order word */ +diff -ruN proll_18.orig/src/printf.c proll-patch-15/src/printf.c --- proll_18.orig/src/printf.c 1999-03-19 07:03:59.000000000 +0000 -+++ proll-patch10/src/printf.c 2004-11-13 15:50:49.000000000 +0000 ++++ proll-patch-15/src/printf.c 2005-08-14 10:07:26.000000000 +0000 @@ -19,7 +19,7 @@ static void printn(struct prf_fp *, unsigned long, unsigned int); static void putchar(char, struct prf_fp *); @@ -2794,9 +3180,20 @@ diff -ruN proll_18.orig/src/printf.c proll-patch10/src/printf.c putchar(c,filog); } else if (c == 'l' || c == 'O') { printn(filog, (long)va_arg(adx,long), c=='l'?10:8); -diff -ruN proll_18.orig/src/rconsole.c proll-patch10/src/rconsole.c +@@ -77,10 +77,6 @@ + char prbuf[24]; + register char *cp; + +- if (b == 10 && n < 0) { +- putchar('-',filog); +- n = (~n) + 1; /* n = -n */ +- } + cp = prbuf; + do + *cp++ = hextab[(unsigned int)(n%b)]; +diff -ruN proll_18.orig/src/rconsole.c proll-patch-15/src/rconsole.c --- proll_18.orig/src/rconsole.c 1999-01-16 07:16:55.000000000 +0000 -+++ proll-patch10/src/rconsole.c 2005-04-16 06:16:20.000000000 +0000 ++++ proll-patch-15/src/rconsole.c 2005-08-14 10:25:53.000000000 +0000 @@ -28,12 +28,18 @@ * move to California. Only plain lat7 survived. * I recreated lat7-1 changes in lat7-2. --zaitcev @@ -2882,9 +3279,18 @@ diff -ruN proll_18.orig/src/rconsole.c proll-patch10/src/rconsole.c p->nchars_ = LAT7_NCHARS; p->width_ = LAT7_WIDTH; p->height_ = LAT7_HEIGHT; -diff -ruN proll_18.orig/src/rconsole.h proll-patch10/src/rconsole.h +@@ -175,7 +188,7 @@ + r->render_ = p->render_; + } + +-void raster_dest(struct raster *r) ++void raster_dest(__attribute((unused)) struct raster *r) + { + } + +diff -ruN proll_18.orig/src/rconsole.h proll-patch-15/src/rconsole.h --- proll_18.orig/src/rconsole.h 1999-01-16 05:00:59.000000000 +0000 -+++ proll-patch10/src/rconsole.h 2004-11-13 15:50:49.000000000 +0000 ++++ proll-patch-15/src/rconsole.h 2004-11-13 15:50:49.000000000 +0000 @@ -13,10 +13,10 @@ */ @@ -2898,9 +3304,9 @@ diff -ruN proll_18.orig/src/rconsole.h proll-patch10/src/rconsole.h int nchars_; /* 128 for ASCII ... 65536 for Unicode */ int width_; /* [Pixels]. Maximum size is 16. */ int height_; /* [Pixels == scan lines]. */ -diff -ruN proll_18.orig/src/romlib.h proll-patch10/src/romlib.h +diff -ruN proll_18.orig/src/romlib.h proll-patch-15/src/romlib.h --- proll_18.orig/src/romlib.h 1999-04-20 04:26:45.000000000 +0000 -+++ proll-patch10/src/romlib.h 2005-04-16 20:32:49.000000000 +0000 ++++ proll-patch-15/src/romlib.h 2005-04-16 20:32:49.000000000 +0000 @@ -72,13 +72,13 @@ */ #define memcpy(dst, src, len) bcopy(src, dst, len) @@ -2920,9 +3326,9 @@ diff -ruN proll_18.orig/src/romlib.h proll-patch10/src/romlib.h /* -diff -ruN proll_18.orig/src/sched_4m.c proll-patch10/src/sched_4m.c +diff -ruN proll_18.orig/src/sched_4m.c proll-patch-15/src/sched_4m.c --- proll_18.orig/src/sched_4m.c 1999-04-27 05:48:51.000000000 +0000 -+++ proll-patch10/src/sched_4m.c 2004-11-13 15:50:49.000000000 +0000 ++++ proll-patch-15/src/sched_4m.c 2005-08-14 10:18:14.000000000 +0000 @@ -108,7 +108,7 @@ static int set_bolt; /* Tick counter limit */ static struct handsc hndv[16]; @@ -2932,9 +3338,36 @@ diff -ruN proll_18.orig/src/sched_4m.c proll-patch10/src/sched_4m.c 0, 0, 0, 0, 0, 0, SUN4M_INT_ETHERNET, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -diff -ruN proll_18.orig/src/swap.c proll-patch10/src/swap.c +@@ -130,7 +130,7 @@ + int /* 0 - not expired yet; <>0 - timer expired */ + chk_timeout() + { +- int lim = (((1000000/HZ) + 1) << 10); ++ unsigned int lim = (((1000000/HZ) + 1) << 10); + unsigned int clear; + unsigned int intc; + int n; +@@ -182,7 +182,7 @@ + struct handsc *hndp; + unsigned int mask; + +- if (irq < 0 || irq >= 16) { ++ if (irq == 0 || irq >= 16) { + printk("request_irq: bad irq %d\n", irq); + return -1; + } +@@ -207,7 +207,7 @@ + { + struct handsc *hndp; + +- if (irq < 0 || irq >= 16) { ++ if (irq == 0 || irq >= 16) { + printk("free_irq: bad irq %d\n", irq); + return; + } +diff -ruN proll_18.orig/src/swap.c proll-patch-15/src/swap.c --- proll_18.orig/src/swap.c 1970-01-01 00:00:00.000000000 +0000 -+++ proll-patch10/src/swap.c 2004-11-13 15:50:49.000000000 +0000 ++++ proll-patch-15/src/swap.c 2004-11-13 15:50:49.000000000 +0000 @@ -0,0 +1,21 @@ +// Convert the lat7 font so that no conversion is needed at runtime. +#define ORIG @@ -2957,9 +3390,9 @@ diff -ruN proll_18.orig/src/swap.c proll-patch10/src/swap.c + } + printf("\n"); +} -diff -ruN proll_18.orig/src/system.c proll-patch10/src/system.c +diff -ruN proll_18.orig/src/system.c proll-patch-15/src/system.c --- proll_18.orig/src/system.c 2002-07-23 05:52:49.000000000 +0000 -+++ proll-patch10/src/system.c 2005-04-16 06:16:20.000000000 +0000 ++++ proll-patch-15/src/system.c 2005-04-16 06:16:20.000000000 +0000 @@ -298,8 +298,8 @@ } @@ -3050,9 +3483,9 @@ diff -ruN proll_18.orig/src/system.c proll-patch10/src/system.c void fatal() { printk("fatal."); -diff -ruN proll_18.orig/src/system.h proll-patch10/src/system.h +diff -ruN proll_18.orig/src/system.h proll-patch-15/src/system.h --- proll_18.orig/src/system.h 2002-09-13 21:53:32.000000000 +0000 -+++ proll-patch10/src/system.h 2005-04-16 06:16:20.000000000 +0000 ++++ proll-patch-15/src/system.h 2005-04-16 06:16:20.000000000 +0000 @@ -16,7 +16,7 @@ #define IOMAPSIZE (1*1024*1024) /* 1 Meg maximum: we do not map framebuffer. */ #define NCTX_SWIFT 0x100 @@ -3171,19 +3604,72 @@ diff -ruN proll_18.orig/src/system.h proll-patch10/src/system.h : "i" (PSR_PIL) : "g1", "memory"); -diff -ruN proll_18.orig/src/udp.c proll-patch10/src/udp.c +diff -ruN proll_18.orig/src/tftp.c proll-patch-15/src/tftp.c +--- proll_18.orig/src/tftp.c 2002-09-13 21:53:34.000000000 +0000 ++++ proll-patch-15/src/tftp.c 2005-08-14 10:16:15.000000000 +0000 +@@ -127,7 +127,7 @@ + int len; + + /* Read packet with timeout */ +- len = udp_read((char *)(&inpbuf), sizeof(inpbuf), TFTP_TIMEOUT, CHR_ESC); ++ len = udp_read((char *)(&inpbuf), sizeof(inpbuf), TFTP_TIMEOUT); + if (len == 0) { + printf("TFTP: Timeout\n"); + return(ERR_TIMEOUT); +diff -ruN proll_18.orig/src/udp.c proll-patch-15/src/udp.c --- proll_18.orig/src/udp.c 2001-12-24 05:12:53.000000000 +0000 -+++ proll-patch10/src/udp.c 2004-11-13 15:50:49.000000000 +0000 -@@ -81,7 +81,7 @@ - int source; - int dest; ++++ proll-patch-15/src/udp.c 2005-08-14 10:17:19.000000000 +0000 +@@ -76,12 +76,9 @@ + * + * Open a new UDP socket. + */ +-int udp_open(daddr, source, dest) +-t_ipaddr daddr; +-int source; +-int dest; ++int udp_open(t_ipaddr daddr, int source, int dest) { - register unsigned char *addr; -+ const register unsigned char *addr; ++ const unsigned char *addr; /* Set global variables */ usource = source; -@@ -299,9 +299,6 @@ +@@ -101,16 +98,13 @@ + * + * IP receiver routine + */ +-static int ip_recv(buf, bufsize, addr) +-unsigned char *buf; +-int bufsize; +-unsigned char *addr; ++static int ip_recv(unsigned char *buf, unsigned int bufsize, unsigned char *addr) + { + struct iphdr *ipp = ((struct iphdr *)buf); + struct udphdr *udpp = ((struct udphdr *)(buf + IP_MIN_HSIZE)); + struct udp_pseudo psehdr; + +- int size; ++ unsigned int size; + t_ipaddr dadr; + + #ifdef DEBUG +@@ -194,13 +188,9 @@ + * + * Read one packet from a UDP socket + */ +-int udp_read(buf, bufsize, timeout, abortch) +-char *buf; +-int bufsize; +-int timeout; +-char abortch; ++int udp_read(char *buf, unsigned int bufsize, int timeout) + { +- int len; ++ unsigned int len; + + /* Wait until we get something */ + set_timeout(timeout); +@@ -299,9 +289,6 @@ */ int init_udp() { @@ -3193,9 +3679,21 @@ diff -ruN proll_18.orig/src/udp.c proll-patch10/src/udp.c /* Register IP packet type and set write buffer pointer */ if ((writebuf = reg_type(htons(ETH_P_IP), ip_recv)) == NULL) return(FALSE); -diff -ruN proll_18.orig/src/vcons_zs.c proll-patch10/src/vcons_zs.c +diff -ruN proll_18.orig/src/udp.h proll-patch-15/src/udp.h +--- proll_18.orig/src/udp.h 2001-12-24 05:12:34.000000000 +0000 ++++ proll-patch-15/src/udp.h 2005-08-14 10:16:40.000000000 +0000 +@@ -53,7 +53,7 @@ + extern int udp_open __P((t_ipaddr daddr, int source, int dest)); + + /* Read from a UDP socket */ +-extern int udp_read __P((char *buf, int bufsize, int timeout, char abortch)); ++extern int udp_read(char *buf, unsigned int bufsize, int timeout); + + /* Write to a UDP socket */ + extern int udp_write __P((char *buf, int writelen)); +diff -ruN proll_18.orig/src/vcons_zs.c proll-patch-15/src/vcons_zs.c --- proll_18.orig/src/vcons_zs.c 1970-01-01 00:00:00.000000000 +0000 -+++ proll-patch10/src/vcons_zs.c 2005-04-10 07:01:03.000000000 +0000 ++++ proll-patch-15/src/vcons_zs.c 2005-08-14 10:25:51.000000000 +0000 @@ -0,0 +1,68 @@ +/** + ** Console over 'zs' (Zilog serial port) @@ -3243,7 +3741,7 @@ diff -ruN proll_18.orig/src/vcons_zs.c proll-patch10/src/vcons_zs.c + return leng; +} + -+int vcon_zs_read(struct vconterm *t, char *data, int leng) ++int vcon_zs_read(struct vconterm *t, char *data, __attribute((unused)) int leng) +{ + unsigned zs_ptr = (unsigned) t->impl; + @@ -3260,14 +3758,14 @@ diff -ruN proll_18.orig/src/vcons_zs.c proll-patch10/src/vcons_zs.c + return ldb_bypass(zs_ptr + ZS_DATA) & 0xff; +} + -+void vcon_zs_fini(struct vconterm *t) ++void vcon_zs_fini(__attribute((unused)) struct vconterm *t) +{ + /* violent crash in the end */ + ; +} -diff -ruN proll_18.orig/src/vconsole.c proll-patch10/src/vconsole.c +diff -ruN proll_18.orig/src/vconsole.c proll-patch-15/src/vconsole.c --- proll_18.orig/src/vconsole.c 1999-11-08 03:10:28.000000000 +0000 -+++ proll-patch10/src/vconsole.c 2005-04-17 19:23:21.000000000 +0000 ++++ proll-patch-15/src/vconsole.c 2005-08-14 10:24:49.000000000 +0000 @@ -7,12 +7,17 @@ #include "vconsole.h" @@ -3336,7 +3834,7 @@ diff -ruN proll_18.orig/src/vconsole.c proll-patch10/src/vconsole.c int vcon_write(struct vconterm *t, char *data, int leng) { int l = leng; -@@ -40,29 +83,99 @@ +@@ -40,29 +83,101 @@ if (l <= 0) break; c = *data++; --l; @@ -3358,7 +3856,7 @@ diff -ruN proll_18.orig/src/vconsole.c proll-patch10/src/vconsole.c + hcon_scroll(hconp, 0, hcon_qydim(hconp), SM_UP, 1); + break; + default: -+ printk("Unhandled escape code '%c'\n", c); ++ //printk("Unhandled escape code '%c'\n", c); + break; + } break; @@ -3399,8 +3897,10 @@ diff -ruN proll_18.orig/src/vconsole.c proll-patch10/src/vconsole.c + case 'm': + break; + default: -+ printk("Unhandled escape code '%c', par[%d, %d, %d, %d, %d]\n", ++#if 0 ++ printk("Unhandled escape code '%c', par[%d, %d, %d, %d, %d]\n", + c, t->vc_par[0], t->vc_par[1], t->vc_par[2], t->vc_par[3], t->vc_par[4]); ++#endif + break; + } break; @@ -3446,7 +3946,7 @@ diff -ruN proll_18.orig/src/vconsole.c proll-patch10/src/vconsole.c + } else { + t->backc++; + } -+ if (t->vc_x + t->backc >= hcon_qxdim(hconp)) { ++ if ((unsigned int)t->vc_x + t->backc >= hcon_qxdim(hconp)) { + vcon_i_backflush(t); + t->vc_x = 0; + vcon_i_cursfeed(t); @@ -3454,10 +3954,32 @@ diff -ruN proll_18.orig/src/vconsole.c proll-patch10/src/vconsole.c } } } -@@ -100,9 +213,62 @@ +@@ -73,7 +188,7 @@ + static void vcon_i_cursfeed(struct vconterm *t) { + struct hconsole *hconp = t->impl; + +- if (++t->vc_y >= hcon_qydim(hconp)) { ++ if ((unsigned int)++t->vc_y >= hcon_qydim(hconp)) { + t->vc_y = hcon_qydim(hconp)-1; + hcon_scroll(hconp, 0, hcon_qydim(hconp), SM_UP, 1); + } +@@ -90,22 +205,75 @@ + t->backp = 0; t->backc = 0; + } + +-int vcon_putch(struct vconterm *t, char c) ++int vcon_putch(__attribute__((unused)) struct vconterm *t, __attribute__((unused)) char c) + { + return -1; + } + +-int vcon_read(struct vconterm *t, char *data, int leng) ++int vcon_read(__attribute__((unused)) struct vconterm *t, __attribute__((unused)) char *data, __attribute__((unused)) int leng) + { return 0; } +-int vcon_getch(struct vconterm *t) +static const unsigned char sunkbd_keycode[128] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3488,7 +4010,7 @@ diff -ruN proll_18.orig/src/vconsole.c proll-patch10/src/vconsole.c + +static int shiftstate; + - int vcon_getch(struct vconterm *t) ++int vcon_getch(__attribute__((unused)) struct vconterm *t) { - return -1; + int ch; @@ -3517,10 +4039,14 @@ diff -ruN proll_18.orig/src/vconsole.c proll-patch10/src/vconsole.c + return ch; } - void vcon_fini(struct vconterm *t) -diff -ruN proll_18.orig/src/vconsole.h proll-patch10/src/vconsole.h +-void vcon_fini(struct vconterm *t) ++void vcon_fini(__attribute__((unused)) struct vconterm *t) + { + /* violent crash in the end */ + ; +diff -ruN proll_18.orig/src/vconsole.h proll-patch-15/src/vconsole.h --- proll_18.orig/src/vconsole.h 1999-11-08 00:58:13.000000000 +0000 -+++ proll-patch10/src/vconsole.h 2005-03-02 12:40:12.000000000 +0000 ++++ proll-patch-15/src/vconsole.h 2005-03-02 12:40:12.000000000 +0000 @@ -6,6 +6,8 @@ #ifndef VCONSOLE_H #define VCONSOLE_H diff --git a/target-sparc/helper.c b/target-sparc/helper.c index ad1ae5bbb9..7436e4ff40 100644 --- a/target-sparc/helper.c +++ b/target-sparc/helper.c @@ -195,15 +195,17 @@ int get_physical_address (CPUState *env, target_phys_addr_t *physical, int *prot int cpu_sparc_handle_mmu_fault (CPUState *env, target_ulong address, int rw, int is_user, int is_softmmu) { - target_ulong virt_addr; target_phys_addr_t paddr; unsigned long vaddr; int error_code = 0, prot, ret = 0, access_index; error_code = get_physical_address(env, &paddr, &prot, &access_index, address, rw, is_user); if (error_code == 0) { - virt_addr = address & TARGET_PAGE_MASK; - vaddr = virt_addr + ((address & TARGET_PAGE_MASK) & (TARGET_PAGE_SIZE - 1)); + vaddr = address & TARGET_PAGE_MASK; + paddr &= TARGET_PAGE_MASK; +#ifdef DEBUG_MMU + printf("Translate at 0x%lx -> 0x%lx, vaddr 0x%lx\n", (long)address, (long)paddr, (long)vaddr); +#endif ret = tlb_set_page(env, vaddr, paddr, prot, is_user, is_softmmu); return ret; } diff --git a/target-sparc/op_helper.c b/target-sparc/op_helper.c index 695bc21e09..eaf5cb64e0 100644 --- a/target-sparc/op_helper.c +++ b/target-sparc/op_helper.c @@ -276,6 +276,10 @@ void helper_ld_asi(int asi, int size, int sign) case 4: ret = ldl_phys(T0 & ~3); break; + case 8: + ret = ldl_phys(T0 & ~3); + T0 = ldl_phys((T0 + 4) & ~3); + break; } break; default: @@ -396,6 +400,10 @@ void helper_st_asi(int asi, int size, int sign) default: stl_phys(T0 & ~3, T1); break; + case 8: + stl_phys(T0 & ~3, T1); + stl_phys((T0 + 4) & ~3, T2); + break; } } return; diff --git a/target-sparc/translate.c b/target-sparc/translate.c index c2ba2e35cd..9abcedda73 100644 --- a/target-sparc/translate.c +++ b/target-sparc/translate.c @@ -1897,6 +1897,11 @@ static void disas_sparc_insn(DisasContext * dc) #else gen_op_xor_T1_T0(); gen_op_wrpsr(); + save_state(dc); + gen_op_next_insn(); + gen_op_movl_T0_0(); + gen_op_exit_tb(); + dc->is_br = 1; #endif } break; @@ -2343,8 +2348,8 @@ static void disas_sparc_insn(DisasContext * dc) gen_op_store_FT0_fpr(rd); break; case 0x21: /* load fsr */ + gen_op_ldst(ldf); gen_op_ldfsr(); - gen_op_store_FT0_fpr(rd); break; case 0x22: /* load quad fpreg */ goto nfpu_insn; @@ -2426,9 +2431,8 @@ static void disas_sparc_insn(DisasContext * dc) gen_op_ldst(stf); break; case 0x25: /* stfsr, V9 stxfsr */ - gen_op_load_fpr_FT0(rd); - // XXX gen_op_stfsr(); + gen_op_ldst(stf); break; case 0x26: /* stdfq */ goto nfpu_insn;