From 131762059a275765c09feb429c60c796c645c0da Mon Sep 17 00:00:00 2001 From: kieron Date: Sun, 8 Apr 2018 12:47:39 +0000 Subject: [PATCH] git-svn-id: https://spexeah.com:8443/svn/Asuro@396 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c --- Asuro.iso | Bin 5107712 -> 5107712 bytes bin/kernel.bin | Bin 49380 -> 53476 bytes iso/boot/asuro.bin | Bin 49380 -> 53476 bytes lib/E1000.ppu | Bin 13706 -> 14388 bytes lib/PCI.ppu | Bin 7430 -> 7430 bytes lib/kernel.ppu | Bin 4236 -> 4303 bytes lib/libpconsole.a | Bin 102784 -> 102784 bytes lib/libpmultiboot.a | Bin 29040 -> 29040 bytes lib/libpsystem.a | Bin 155060 -> 155060 bytes src/driver/network/E1000.pas | 71 +++++++++++++++++++++++++++++------ 10 files changed, 59 insertions(+), 12 deletions(-) diff --git a/Asuro.iso b/Asuro.iso index 2fd1bc414ed3145d56676ab396efd68fc5891f5c..21f54ae670f15c5fa3a02327ddc34861e4113e2a 100644 GIT binary patch delta 9109 zcmbW74Nz5e8pb^+c)=@O5RoqtM8qp1-v}b&6)ztFiGulW(J|M>GR1Q9qaDk!ss8IY zZo_o5gXTKf>~7j@n;+YndouN!eNNMjKP0ekCU&@#q z4I6)BwllVbm4s=57nM9&%&*)2qJ$Q6w!}V=CFDeirpq}2bbC&auJS~(eZ4WIH0Bwl zK=+qY(*3&>d9FGIJdd3U)~+bqC|puz zXXWBS#C}J`7kvkI`{j4E+Xlo!PZP^K4RoI|t2qsV1%6NU(!U3T|Lga(lp4f>t7-5# z)j;?6>NT{?8Ze}nYG_E?YCz6QHPnNy7I-eMrSrM97WB|qOFcN80iFxakmsf|Kv#W+ zbUlcr)e&1=2Ruva$g>@>q_f19p9MV}Jxe`YI}1D$&xH&;AahK4W_&=tI!D2p&Vd4v z=V>X6&I5LUS<`tih_HI{%&P~wef5R3%m%;;8>n7!1Ms}wK%RyRKv!^qbVV0{uH^#h zbU%P0<^Mp#eHXEMVjnaDS#BfA-fRTrPB#X-{(50Lo3m0apHxNL-=I>O=-j^C1ll>) zMD1K_0{#ij)Xs~|fE{4g&NV>Uxb{B2w2@YM8F;R^ zOrAxEwJ_7QfO`2Yypk4Budan=){AtRKay_kkD&LeAH%hr4-lJsg}w|nT>-i}W)4>Y zTX>ap60ydsbY1FNfo^dt?O_XI&CGN^A>B``L#&yZt_|thSch11TLSIx8qgJ9<1b0X zx|s!B2fB6FsrOG2yLX+kjBf|J4ei7}MeJTXWtn&b=r-OU-9HfPyFpnd-2}R~ZW8+( zvB%7&bO7Dk9h7B1Vve13&f+@3*?q5*&hF=(;9BYHq-$k-7q}kQb?u=Y{S4U3pXtnh zh*%plL$`VKlLyjYUPhkF_EprkKXw^qd8^x3bKltwI_>JFPW^9z%4=>><(;=cH#cq# zyaT$Vo3bpk%3|&BfXi-E*IRD`|K{7|?{o*S7w&{;X0}J45$Wcvthx9eTX%;lJh%f= zX5J;9ddkxEFY?>>czy zo-ud+Li|16+Di@T?*o%1_bJ$x`=Fuv`_xeXeGn}B0eP-{02-=#Kn?XEmf1%a<@!EQ zue^`ywf6zf zwSO3f=n)&e3Tc9)q8&PQxg*jZb!6wC98pIJPRgMBMz%TIdMTl2Gxd-YH}HcKG71~c zqj`QfYW}m~%BxyLFCEgZ)UozM9ctjZjvMfBM%tI0SzF|cw5`spHMk&J;KH=X1!Zn= z;eK@^P~H3yT=!i_>zRI}N5=E?Z2X2Eoxln`pTL`X6xlSABd;2XXo-#9gw*89=VY}j z(w5rj&#ov{@-qtku*vf1Q?xs-5BM4#sSH_Nuwj{6Gfs)HTvpsZGAN$3d;=Qf zN`r0rkha;V!3|AvsT)sniyP{w*^OtVb4S`2+*!NX9rau7&Re+Sj+`?_DaL{Ck#o~i zGT`@*T0V-a+#H2^Pxj#6U-m#%j(KqYYmg?5X8Q7Is2$C_Zih74lj$l?q%E=0PDoS6 zaNX5okhXM;l1sbxLbT9}wZ)Kj*r=B`)OvH~osf2Uv$Ky6(!T1$bSI=;KJ4u0i?nNe zS-T6;ZeJyQ;7Q0a<(cqFc-@ar!cISQ5<2|&BzTTR8CH(vgvDdgS#2B3XI1ZyoR|2s z^A>+}6lQ=WVWVD=P#bB}Mxw)d zJ(8zkh(g+eDApE1+G?YQXsC@=!Uo>2^HTHh-<7DX(VRgagC>(7!+YNxgYwtLu(lU! z(_&e>Di&#v#SVUx$(z3b|BPCVjpHhd;!vjt;&@6;aVUT2G|rGS4Q1FfO<6~Kk4GnJ zW&EJa(q%zvZWR8`YmK+fFacFroS*~`c$suwV0~lj1lLAg0%z@oE*aCg#%t5j6w0S7 z+TX6Iy^v-n@~vxABGT3+vesz^qWLqFXwA832Aa{88GP00laO|465sZUlF)80C2_yQ zW+LZ>Gue6bOr))zsRRv}sq6D;YS&O@y8R6^BbkrK+GMnv@?>Qm9e`Pgu9(FmFPep# zYn{c;1{0zMCfmhprJmsB!B-igmP9&@QXiQVA1#8|iY1gGN z{TrnBQwBd?h*Zm(9&jpOpTk=!o`d$#W}|vDO0d+-L)Zpsi<$EoQql02rt041WGYpiXbT_ND(Z>L@7d~ zm?VW!ipf%hN-;%>Fe#==5iUi96p>OyNf9kYj1;j_#7Qwtig+m!q?j&6q7*ZvNRncv z6vq%B|V)1^)w# CvQfGK delta 9113 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 aY|FV`9Z2tkkET%e`nfopk9}}1^8W#z*SPfn diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin index a00ed762403df66d597944f32e654585f9f86b1c..64d9999b3cbbcb2ac50e88ea45ea3afa7a28d5e4 100755 GIT binary patch delta 20752 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 aY|FV`9Z2tkkET%e`nfopk9}}1^8W#z*SPfn diff --git a/lib/E1000.ppu b/lib/E1000.ppu index f6089fc8742d2d97d048a823a83d5423a1ef7aa2..930e0ddd0ad5fc6d156f9e059a052f6a6a8e219a 100644 GIT binary patch literal 14388 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 literal 13706 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 A@c;k- diff --git a/lib/PCI.ppu b/lib/PCI.ppu index 334c2dffd5d7a5828358fd59f1fbb4b0073f419a..1a295b37e0e2440d3a849c1dde4a38fdcd01bb6e 100644 GIT binary patch delta 83 zcmZp(YO|W)#kBn9MxP}Dj4Yc!3TQJjR&16PvIJ6-!-caLS8hHe?90eFd$WM39~>QQ= delta 83 zcmZp(YO|W)#dJ%0qt6lnM%K+A1+*C%D>usuSpuoa;lf#rt2Q4J_GM(8vspmYkBxEr exc~!0W|?MY+c(2nBL)Tr^NEW3tjlknjMCm1 z`jC-hUGS}|JCCGom~6)+t9FL%S;py7wql?%2EpQz{G!D4)ZD~85Sf}+BD8+axsTzu zPE1Z_+R7-iS(14c^W@8Hf&xs;AoYwu$jSs{C`|5WmSO`ll@Lso$&M^yo3+?=7#Y1L zhjS$I$pV$KKs1EU5TD^P|(5~N5}21v4I=O$+6fy@x*>1WiNyqISikhJ3U;a3F8vS+5}1O3W>0019REWimQUzRDNPr;04$Fxig3(-Y(z9u;rb zAU{{1_{_Y_5};9xU^g%_*sw4#fZV_+ssJQ8N>XzRGV=4YfhxG6Dx82SbigWrRM)7V8 zeaOf$t1V||Pr?nu$#zV#9Lv9SOYJ#nrZ~BgX)B}jW^?9Q%#3oA_1Ppi7#UcZfSTne zuVt2E12Yv7Oy$Xq%wn58*mW2gJtvoPB-+RTm9pg~W#*;jGcaljvI4mb42%rCV48tJ z3`lb^FfeNXX(lCEAjzJal$)5InG94tS%_1cQD(Cp=L05TNuU&?s5Fpd&CX5C%mYb> z@$@t5PJYHS4M^7V`tU1&v}dO0oUCs=^7VLIF@yR Y&;;vH29lzfT9S(Mf!?v7yih<704s829{>OV diff --git a/lib/libpconsole.a b/lib/libpconsole.a index 8c731dea06589f5d3249738d9a5617ea7521d9d2..af92642abb66c72d62f9a4e6a6327ceef2468ab3 100644 GIT binary patch delta 1480 zcmZXUe@IhN6vw%%nPX2-tM{Z3e-vmcb54f{YStft@eBpSg2}`M{SuVu4?}~6P&sJ5 zywxZwrpx{?3)j(JgGTy?g+!v@AE5-Js1yY&k{THG-qhW5?Z5Xq-|xBSzH{!q?m&V& zkf5X+%j~uidocU4dF_k(S45aM|JuUvc{c$AeUd7$5X_`5AP2k`k8Wiu^@L=&x%(1! zSTnw3EZ?(&QO>!AaW#*_LCbxlQl&zMAzKX&4O(P6WE+LOr8f+0A23zck6fTs+~H9m zPD3kik`HxbNzRd1VVj?w}g2V2)$P+ zz?7pOXDQBcY-@9kVN{%2onxm$IHTa~aWnw%w_Zp@eJE)+Z9}MUlvdRx!+CcvUc}nf zi|Z_1#%+g(o+wgjq(N`F5lq)xP#BaRyjNeXg~;&YHjYti#u4~8{Mp9!X;PH0E529`(M*x?Di!+0)iL<=-f?wp+d6V_cEUxR%>&~MK&c-o!>`l*r^az?a(J-ZnqIr tUVN$|Rh*UTtb<&^H9DKf>0IW~w)cvSTK|J#gU{cH6t(~W delta 1480 zcmZXUe@IhN6vw%%nZqZj)teOJj{;3)?nh$;YStft@fH&d3nmj6^h;2pKMV~PLZy(s zywxZwrpx{?3+=dGgCzaKLLyP{k5Gb9REh&D8YLL@-qhW5*MIMGzTb1tedpYJeZdr8 zFh$PM+w5kCWw_vR+S(Tl#6(y~`?ZPT^G*Uf`XozWA(+itL=Jc_9^K4T+7*`I=FUsl zVb1-Iv3yqyqf~ec<7zR7gQojPrE-M?Lslma4Vol6WF3RujvG3*518K9k6a*E+~H9m z;5v8>Wl(d6MCAix^lFm;8HYNtBo#`}s;lt=C!`R@NS(S~Rn0I;0--j{TSj>l2)$P+ zz_hy`XUU!kY-{n3W0XB=onxoMIHUCJaWnu3G+#(Xec0P-*n&{oD6Oi=fb+gyyokA@ z7uShi#%+g(T`NeXkvgsAdN5pXLSc}5@Lv5c6OrJ>Z5*TK+#~SuZV+b$9$*Kw_f2B8 z;Sr~n4(WWk`Xx`PU>dDJ}k+ zt>A^xNFT;GpE#WP!r}ZPho7SyE-!Pq@?!%b5Yw+W!2d0scp-gdLt10wD$n_UIaW$^ zgb&#DNrC;TNrCFLL_kq%;`)t>JCg+0|2n<_<>a=6TMINQEyg5A+m3`od(YyX_b=rV z^n$HT!{PXU8ln;{AYOC^H0~t+a2eU^e_28fE3P7PkxfZd7WNP)I~Ag$9{P05tyW?v tPE1v#vZqp+bCWB$MtcJ}UBo=<_Fl13Ykx4J^LKX>_DUO-P&aw2`v;D`5vKqE diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index b5c32f48c34c748dbfe35588aa0d29858f402462..d7c449d001e75080ca6db598e3e75806b6a0a653 100644 GIT binary patch delta 539 zcmezHi1EWC#tE{lmZnA~rW=)fSs|>+3Pxg^yI6lSBXJjS9%O=Z#W&aTyg}x+^8Y|^ z#WpYC+|D%FUz7_;L#gN=bQSy-dinYahNecwhF}MPtp#h9mqXTCtEk1eIbZ%0Ba(5o ziZTe-iErMjqJ`j!ZT_Wx6v36)d`DXlm8;1(`L7xOWEmEr&1$;)82L%mlxRl*6ISXlWyAlLikX8^Lu*^WJ83U7b3Xgo6o!bLsop= z4QM9FNq3m|HY<1^M>dz)mj|I!Y_nFtNn|cx$Uv^-C)^D2%?tC+GXVh00+%NM delta 539 zcmezHi1EWC#tE{l#-;}5h8vZ9Ss|>+3Pxg^yI6lSBXJjS9%O=Z#W&aTyg}x+^8Y|^ z#WpYC+|D%FUz7_;L#gN=bQSy-dinYahNecwhF}MPtp#h9mqXTCtEk1eIbZ%0Ba(5o ziZTe-iErMjqJ`j!ZT_Wx6v36)d`DXlm8;1(`L7xOWEmEr&1$;)82L%mlxRl*6ISXlWyAlLikX8^Lu*^WJ83U7b3Xgo6o!bLsop= z4QM9FNq3m|HY<1^M>dz)mj|I!Y_nFtNn|cx$Uv^-C)^D2%?tC+GXVgfbCwVQ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 4f12030112ee3e670c23f3c12d5f707c729ae97c..4e0e08051181e87c441b94d2d11795f0094724c6 100644 GIT binary patch delta 3459 zcmZWseQZ=k5YIeXOQDA?;2o&oMG`+K^ozDYz*339=4kNXylp=YZ{8Y^0yrMcMMk@xx;GI!6>>b1e+;tJ#4_)APl8keY> zP_L%tl8%K>k*?(JEb!dlU^gJ!V;y#RaB3d{gPC{}rQ((V3?qv!jAnZh8#Ke#gsPGi zL@PgqT-G^$k5tiR(mB3~l%+(G1K|;@WzrcLiZExV(w#s`lA_4P@F*5Y`z3g~kT8WaIoM=AGMzZ{z$RzHJMF__i%D_;zM1K30;K2COpovgAj3xV%R^$W+#q-)03g zm2~Czh^(;(1t)=ATpDF0{mZK`l@zaVv&=%}PC+EI@QQBXU4B-&kXt=0`~8bHh!wB! z2fK2!+Lb&6BDE`ZzArwGU_TVqLX0dktIG8JSF8@RPT^u_*9M8VKM4{Yp9P6yHw1}U zn{1+w)ofNrL`ObSvl%mr2|4~%i^^bSDQ2|wYcr#jrM8Ubv(#OOtTW}4)LrLwf?>Nc zqyO%e85M^h6|1w@(sEk{3~0mmK~TrE>1=<+Hx{Q03u`*rU(rmu9y!>?Lya;pX>mm`>N3U`lHgj(FL`#3le6AlZq!ISfD1j6KcDqPuX)G=C1oL6iPVR2TDKF z2l6)bfwG(XK+9U}5cBwr0NK3X{PKu;;2!^dTNG^3g}Zif>18EiKAfzmJC+oSU zL@_0DSbgWW(pZ;CeP=T(yP?X~&)|*P{UZHA%{ngf^v0@0-y*q>#Bc_f|EdxzFfTm9d2cMYQXG^^p(%)!4dlIONHZfnCiRmZDgvauC zUxp4_IymM?kx_R6m~SpG%7EL}G;q@6^B{}=>VcuQ9yl@sMuZu2U3d^=F5uo-V0&wv z94#jRo$)qAkyyt7Uh+B&u_Dm7-?BJee9{8wZ^=%+=uKE{$v&Qu3)PmrkD`2ur!NLo z*&L4%Aq~Vj4)iMKiH*XNihxn^eARMOmtz&EP7!NGxAj9%52L7@ z0`6aF7Mc!F1Wp^S%ZspdqEqzZwz}KU>Rk(`#XkssVhyN{HVAP?RW8SXYpX?uYf0wvn;Hh0w=IMW z0fQ|5vZ;FHD!62W;4;lP%%XN^=R-!W7B$Q)*KG{4F_emFH~ QG2@K~Gq^wa%{OrGe+YM!4*&oF delta 3459 zcmZWseQZ=k5YIeXOQDA?;2o&oMG`+K^n=nC0+vb)Hb;v`009G7+iPewP!jyWP(vX^ zK_e6wTtNy2k)l#4Y|Bci*zje)pf%aP&TnUaGdnvo zd#~zPWYw|Ak`dua$qA{6hn}q-X{=~*mgZu2N8ama$lN_gtJel6#TCZ8@t2r9E-6tr zpI|Y%f2?DsF)AXdD> zAMDD_YFF|Qh}5ps`M&r#g8fib3o)|HtSZyYRrI^vyug#2BmfA9!&r)_Bvd)xGQg)r!35M;) zjQ+bg%4RIJWoOUrE;FrW?J2SFXvrnCJO-&mY3EUf8de?>FtdgNdm4>iibkTZwX zF`ID?sbj|N?5jfW>yJwBMi_7)y9|ILU`f+do9q0gCkqA9i1)^m6 zJ44`kV|Fea7{d<^g&K%S2+e@f93W$rXZ7$aPO#rF9@fKe4L31iM+;wp8NBytD3e(+ zL5g65$RcldgBr#n4LLk|6qKuL6aYn_Sy%mY6r2Ql^acB&bhl$(G~JrvO&()n!mDUA zo*56Jtw#~ldymH_fvx#m{Fw>h0-8P<9DHI*pDp!bNPnaG>`9<5+QfWmCZ?Yp6CTUo zeHl7z>EM_nMMm8PV7|G$CTsfxqy3Tf$gnv zav6gK8o@sp1v4V zWpg}6gftNAIMAz@FJ1!8@<5^)^LS|?s0UC7C;~>s^Hs}DU5-_tIz_A%-PR95J&dAq z3b=ozS!g;y5jbtQE-%8;iB8sw+v;vZt9LD&7XKjli8Y`)+91RoRk<7kj?X;_pc5p#J>74WOp5zRPhpsKxn9n}Y$0fS!RE?%D!BL$vW?28W!- z=Wh!!L!g1rD-V%-s}1hJZoVd(Kqlt*sUrt|ghvZ)zB1-nI}j z1PrqH%ckm)tKgCig3C1Hkc+RG`*hh2D4;+60e-zO*Zgi)oW8?x=YY&5M^(io){?C4 zb_m(nyOQjmt`IWZG06hm78$N3*{cstGW4JPt~h5)!-aIAFQU; zG%P^x6da{nAJeR+)ifV(?XRiVReW;zC<2YLX(Kf(z{Jp|#fjqMw+3lyl#8k9qX;w_ zE?Nd#QIrkU%yPoDYJ=;;OcktWCqMV3RxwU~&)^4AKWn5q`Hq>|N9Hh_qxn_d@x!S> Ri%B&e%;5guH{Za${{bOIjtl?* diff --git a/src/driver/network/E1000.pas b/src/driver/network/E1000.pas index 56de769a..555218ef 100644 --- a/src/driver/network/E1000.pas +++ b/src/driver/network/E1000.pas @@ -11,7 +11,8 @@ uses drivertypes, util, IDT, - PCI; + PCI, + terminal; const INTEL_VEND = $8086; @@ -144,6 +145,19 @@ var tx_descs : array[0..E1000_NUM_TX_DESC-1] of PE1000_tx_desc; rx_curr : uint16; tx_curr : uint16; + TestPacket : Array[0..41] of uint8 = ( $ff, $ff, $ff, $ff, $ff, $ff, { eth dest (broadcast) } + $52, $54, $00, $12, $34, $56, { eth source } + $08, $06, { eth type } + $00, $01, { ARP htype } + $08, $00, { ARP ptype } + $06, { ARP hlen } + $04, { ARP plen } + $00, $01, { ARP opcode: ARP_REQUEST } + $52, $54, $00, $12, $34, $56, { ARP hsrc } + 169, 254, 13, 37, { ARP psrc } + $00, $00, $00, $00, $00, $00, { ARP hdst } + 192, 168, 0, 128 { ARP pdst } + ); procedure writeCommand(p_address : uint16; p_value : uint32); var @@ -330,8 +344,25 @@ begin end; procedure handleReceive(); +var + old_cur : uint16; + got_packet : boolean; + buf : puint8; + len : uint16; + begin + while (rx_descs[rx_curr]^.status AND $1) > 0 do begin + got_packet:= true; + buf:= puint8(rx_descs[rx_curr]^.address); + len:= rx_descs[rx_curr]^.length; + //Inject Packet into Network Stack + + rx_descs[rx_curr]^.status:= 0; + old_cur:= rx_curr; + rx_curr:= (rx_curr + 1) mod E1000_NUM_RX_DESC; + writeCommand(REG_RXDESCTAIL, old_cur); + end; end; procedure writeCardType(); @@ -366,19 +397,20 @@ begin console.outputln('E1000 Driver', 'Interrupt Fired.'); console.output('E1000 Driver', 'Int Status: '); console.writehexln(status); - case status of - $04:begin - - end; - $10:begin - - end; - $80:begin - handleReceive(); - end; + if (status AND $04) > 0 then begin + startLink(); + end else if (Status AND $10) > 0 then begin + //Good Threshold + end else if (Status AND $80) > 0 then begin + handleReceive(); end; end; +procedure console_command_sendtest(params : PParamList); +begin + sendPacket(void(@TestPacket), 42); +end; + function load(ptr : void) : boolean; var PCI_Info : PPCI_Device; @@ -423,6 +455,9 @@ begin txinit(); load:= true; + + if load then registercommand('E1000_SEND_TEST', @console_command_sendtest, 'Test sending a ARP Request'); + console.outputln('E1000 Driver', 'Load Finish.'); end; @@ -479,8 +514,20 @@ begin end; function sendPacket(p_data : void; p_len : uint16) : sint32; -begin +var + old_cur : uint8; +begin + tx_descs[tx_curr]^.address:= uint64(p_data - KERNEL_VIRTUAL_BASE); + tx_descs[tx_curr]^.length:= p_len; + tx_descs[tx_curr]^.cmd:= CMD_EOP OR CMD_IFCS OR CMD_RS OR CMD_RPS; + tx_descs[tx_curr]^.status:= 0; + old_cur:= tx_curr; + tx_curr:= (tx_curr + 1) MOD E1000_NUM_TX_DESC; + writeCommand(REG_TXDESCTAIL, tx_curr); + while (tx_descs[old_cur]^.status AND $FF) = 0 do begin + end; + sendPacket:= 0; end; end. \ No newline at end of file