From 24a5f0334fe23970b4caed13302dc5a195b0269e Mon Sep 17 00:00:00 2001 From: kieron Date: Thu, 5 Apr 2018 14:55:50 +0000 Subject: [PATCH] git-svn-id: https://spexeah.com:8443/svn/Asuro@332 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c --- bin/kernel.bin | Bin 49380 -> 49380 bytes iso/boot/asuro.bin | Bin 49380 -> 49380 bytes lib/kernel.ppu | Bin 3540 -> 3573 bytes lib/libpconsole.a | Bin 81668 -> 81668 bytes lib/libpmultiboot.a | Bin 29040 -> 29040 bytes lib/libpsystem.a | Bin 155060 -> 155060 bytes src/driver/AHCI.pas | 41 +++++++++++++++++++++++++++++++++++++---- src/kernel.pas | 12 ++++++++++-- 8 files changed, 47 insertions(+), 6 deletions(-) diff --git a/bin/kernel.bin b/bin/kernel.bin index 08a538d27b1ffe44d4c7464df1bdeee507fcd702..20b7bd8f2a1db1749aaa3b0f485175c725207910 100755 GIT binary patch delta 8817 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 delta 7371 zcmai24O~>!w%>CYWS~(-5kban(|KlkKTy8pRlZJ^&`#&VS$Ccaz3t)^HhX$gPR6f^YI zC5&y@%NRS8!%U9c(+1WUCYH?McT5%1hHSoTV2sbHSjNP{#c&_YFAp>geHD>hlr1`q zGEgj;&F>6+A@DzA7;8Z^#!9+^lnX^BhiHl6e;PDhx*5(p2aOsu0H#J=Cu^xVF`C@u zAMK$53neM|L7o@5L26vc7X$|Ie*~_T5*G5sLt?BU^2!c5U&uSVDu!$vIugWhS@h$`;8gH&>(>VEoYk)J!R}`G(%R zo}xF)pUCZRF|lz0W2!|yrv{ty-qvNaQ{)S9wB`57C%j6?`@`m2dc`@CG27Wm&j2X? zJ7W%~Z=3Aus&@aT(ntBSX+@%+1tnOo>Nbz^wrYY|g9+%&1{z`Al=#xtWC@$`x z`G#+%{1^HC=9_xkiC~Hy;dIVm#kbS}&dV-L&BwoKk3<6$Uo1jf?&`>w`Rt%c%jD+r z1%}-jJ>@CBwv3);VJJ^AAbJGNWO<5_1`-CX*I&MDTiIdD7q*>U7ta}(wvrW1@MYQZ z*R~A!8&pdHDOCAxv%PDg#pZT_d) zN_wT8K4Jt<9$D&p0cfYU*!KYcVB|E(p2hD84VDgO@yO7a!M7fuQWDQNozC*VsHJ`N z0lq0TTo=nLLdVanDl<9CuH@faey-#zL&?vE{L!{R!pfiC@(+{4=}mg)pnt{c$bcLQ zmbbxYf7rwQKcB(fVf`&e?Rgp}3X^zbc!gA+$(zEXj15RhTpNXA z-a4BS*gwiN^wMniV`v$m(U>Tl#v@08Hj6iniZZsUv~Z$jsx&ibnI4+IM!QE8Ch|!0 z4!>Ub+me0jd&~Hr%n_q{(3LH|wh^S9##6*P4f1=b^2fI2zP1N_69aq7_-%8l1o!v| zi?xqNiw#3rssx*txE;!v60{5Ob!h%gX?k(P1D%IvOY;^3h_T$aGqw_pW{>$8G?nqX z2daWbjL%3e_f1rX$-ig|F_*OJTdeLnEMSV6#(as0{Tc55a6iWC=_cCHW2}zU^T~Rh zseo1r~0ZA^8kvs{(F;yJkEPF(iDdY!G8+GmKi$`^D+%%DT{WQ0v#fI z7)D${V@HQ-`yij1He8p^n?^?&&3}a98a4s3HA7vENUTPNXEg?Ct1(CvCh*8eEMgjO zii|R*tF(KGmafvqfR^r|1!y#HQ5er7$AFf~o5n;L*QqqT2*lPjl{OZ%G!JdCMl*@R z$vko_XeqpDY?QG|rG*eJRi#CNmg=DeYP5c$@O~Z{1zIw1ii$FxP-(-7mZH+4K}+$_ zhG;Z{D2%g5M*Hb}t`cEaFi#k_t)C#>Xn%9uXvw#1ntS4MOoMfq{D%qA#?o@w4-Q4} ziAfZkC&!qE>`8J*uMF0rdx?0S8?%>KG10~bl{JJ|(_E}run^w$?y4NFvHXY?tFmIF zjjbvRiz_B3x>)ytmFQuGXe?i1-S@P$%EZ{kb9$!q5OLRFs;&lliu6K8N72iG-yqFE z+WKD|3}S=FVJ~SRecZwjPaunO>M|DY$|B+{z(XLie9-s|M4T0bjo`HtgCnlcq&^=2a0`LANvk348)%|* z3L57G{>8)~Yc)K}&ndNJTn4=}^b9={iXM&F?lPVr<1`8xPs~B%(R_;n7wyq#0;15& z`!AUy3bOw3;6ySko_L%S=1SW4i3XqD9T z7LcEDx5+VF%p$cC3oFLcLc ze~t7ZN)G9Dr28owNUw(8Qjs?r2REY}VwUsFdig1{!IqQ`>z}a%>>CFf`Ntxwk@=Ut zNqW0@94zIr-KMpuJg7DwF^`Zf6fvEES$Z22bMT5*@(7F7Fid9|E!Iu~hr2<8*x~{E zxj~~??gIIk$s>YQ!WBGpwtgZSxUE26_G7+Kig)u>lT)m}CflkeixhtkXUaLxPbs6( zmZ486JH&hn<0CQ&P&1xRfSPeS-q@~;qcjW|TWJZ@1OnZlL2UAX%*6avda_YuyHGwM zez+^;5Aj?gA{uaR1HIl z&tTSEDMq+KgV^B#O>WRA)@vXinGifny{XS}Hb;u_H1VEU#WeK;smN+zd67yvOc7w2X6$=L@2C)p_ zQL^^(>oZ1%tRv${81b!v<9|_JFZ%xID;xIm!O2Ud$M*8g$-RlW-#VSezx;x;_14$r zUa+3#IV$oUeW$UFu-iv}0o}f4 z;bOh6fuCL+Gw&)fW4bAD#s^{--jRwRD1@L>84j_{1NpkVE{Gft^dl-6#EW9C3*wWP zBn;{TA0M&Z;s?AtQRnln*^8Eh=`f!!E=}`kOhdlYs_b1$^K`mC`|5|1by9W}uU{UX zzO)Jhr(!ph&nr2kPbR&sGf3G;y)iD!???|(Ev0|Wy9Y)6(G|Ge?)1fwt=xCTHIsTu zSsGj1f?LKhyTRVQLZ_4Rs`%}d@uB6!|5iAib;;Q{#CUy!TdpK*7->qCea^#=z`2^+ zR~1O*)jT?;<>zW?RG`AeF{yellm=NX2c)ZS%IQ40kwv6bqu(FNCgKs@}hP z*pPN|nNA#X5DoNx>Zs;1tE2oL&oVg-tVL-(z}K#xAYDGd`RdaFHx7XCeh2QUTU>=u zx(@JFYa*nc1ANz-MxBAjuU%%mdJs-+bU0b#tDYSj*9J>D^Z2E;r-$^AZU0wz(#!hp zz~dlP#lR1(i;oGZfhhxh#GXfRECF#UfO7FaRqD;?#Pl?cdw&hrtq+zUMy#JM6`$rS z*RPQhYIyVd0A%s$`mq6OxM5$a;ld#hjt|ULDdSyYc5b4SRl|4XZZy|gu<|)HUdty= zXT>6O(CM7{fVL3S2uLZa;Q^1#HRe4F;LaCFW52h0Z$*y;OR)?2;YV7HRjTcCvguv6 z4X{1P4{x|`EUgFctG^*oZ9OmE7%=WQ0VM!z8NIe-v*<-krIEnRZg7maNuW~C9UJFJ zv5UBI6W9F*uiYe@>svrvVb+(l8r;7i(V0c5%|?J-r@*>e&*wfG>?0^*_h0$uxf4y6 z#keDeQ@IHL2p&dz-jwo04sTX8z6- z5yPiZux$u-vBhVW}g7^K$1T zx1k9Job}-w3LBrlb?7XYi{?<$8

K-dljCD{r6nio3&XEBh{brp@*HTcyHQBCVPA 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 delta 7371 zcmai24O~>!w%>CYWS~(-5kban(|KlkKTy8pRlZJ^&`#&VS$Ccaz3t)^HhX$gPR6f^YI zC5&y@%NRS8!%U9c(+1WUCYH?McT5%1hHSoTV2sbHSjNP{#c&_YFAp>geHD>hlr1`q zGEgj;&F>6+A@DzA7;8Z^#!9+^lnX^BhiHl6e;PDhx*5(p2aOsu0H#J=Cu^xVF`C@u zAMK$53neM|L7o@5L26vc7X$|Ie*~_T5*G5sLt?BU^2!c5U&uSVDu!$vIugWhS@h$`;8gH&>(>VEoYk)J!R}`G(%R zo}xF)pUCZRF|lz0W2!|yrv{ty-qvNaQ{)S9wB`57C%j6?`@`m2dc`@CG27Wm&j2X? zJ7W%~Z=3Aus&@aT(ntBSX+@%+1tnOo>Nbz^wrYY|g9+%&1{z`Al=#xtWC@$`x z`G#+%{1^HC=9_xkiC~Hy;dIVm#kbS}&dV-L&BwoKk3<6$Uo1jf?&`>w`Rt%c%jD+r z1%}-jJ>@CBwv3);VJJ^AAbJGNWO<5_1`-CX*I&MDTiIdD7q*>U7ta}(wvrW1@MYQZ z*R~A!8&pdHDOCAxv%PDg#pZT_d) zN_wT8K4Jt<9$D&p0cfYU*!KYcVB|E(p2hD84VDgO@yO7a!M7fuQWDQNozC*VsHJ`N z0lq0TTo=nLLdVanDl<9CuH@faey-#zL&?vE{L!{R!pfiC@(+{4=}mg)pnt{c$bcLQ zmbbxYf7rwQKcB(fVf`&e?Rgp}3X^zbc!gA+$(zEXj15RhTpNXA z-a4BS*gwiN^wMniV`v$m(U>Tl#v@08Hj6iniZZsUv~Z$jsx&ibnI4+IM!QE8Ch|!0 z4!>Ub+me0jd&~Hr%n_q{(3LH|wh^S9##6*P4f1=b^2fI2zP1N_69aq7_-%8l1o!v| zi?xqNiw#3rssx*txE;!v60{5Ob!h%gX?k(P1D%IvOY;^3h_T$aGqw_pW{>$8G?nqX z2daWbjL%3e_f1rX$-ig|F_*OJTdeLnEMSV6#(as0{Tc55a6iWC=_cCHW2}zU^T~Rh zseo1r~0ZA^8kvs{(F;yJkEPF(iDdY!G8+GmKi$`^D+%%DT{WQ0v#fI z7)D${V@HQ-`yij1He8p^n?^?&&3}a98a4s3HA7vENUTPNXEg?Ct1(CvCh*8eEMgjO zii|R*tF(KGmafvqfR^r|1!y#HQ5er7$AFf~o5n;L*QqqT2*lPjl{OZ%G!JdCMl*@R z$vko_XeqpDY?QG|rG*eJRi#CNmg=DeYP5c$@O~Z{1zIw1ii$FxP-(-7mZH+4K}+$_ zhG;Z{D2%g5M*Hb}t`cEaFi#k_t)C#>Xn%9uXvw#1ntS4MOoMfq{D%qA#?o@w4-Q4} ziAfZkC&!qE>`8J*uMF0rdx?0S8?%>KG10~bl{JJ|(_E}run^w$?y4NFvHXY?tFmIF zjjbvRiz_B3x>)ytmFQuGXe?i1-S@P$%EZ{kb9$!q5OLRFs;&lliu6K8N72iG-yqFE z+WKD|3}S=FVJ~SRecZwjPaunO>M|DY$|B+{z(XLie9-s|M4T0bjo`HtgCnlcq&^=2a0`LANvk348)%|* z3L57G{>8)~Yc)K}&ndNJTn4=}^b9={iXM&F?lPVr<1`8xPs~B%(R_;n7wyq#0;15& z`!AUy3bOw3;6ySko_L%S=1SW4i3XqD9T z7LcEDx5+VF%p$cC3oFLcLc ze~t7ZN)G9Dr28owNUw(8Qjs?r2REY}VwUsFdig1{!IqQ`>z}a%>>CFf`Ntxwk@=Ut zNqW0@94zIr-KMpuJg7DwF^`Zf6fvEES$Z22bMT5*@(7F7Fid9|E!Iu~hr2<8*x~{E zxj~~??gIIk$s>YQ!WBGpwtgZSxUE26_G7+Kig)u>lT)m}CflkeixhtkXUaLxPbs6( zmZ486JH&hn<0CQ&P&1xRfSPeS-q@~;qcjW|TWJZ@1OnZlL2UAX%*6avda_YuyHGwM zez+^;5Aj?gA{uaR1HIl z&tTSEDMq+KgV^B#O>WRA)@vXinGifny{XS}Hb;u_H1VEU#WeK;smN+zd67yvOc7w2X6$=L@2C)p_ zQL^^(>oZ1%tRv${81b!v<9|_JFZ%xID;xIm!O2Ud$M*8g$-RlW-#VSezx;x;_14$r zUa+3#IV$oUeW$UFu-iv}0o}f4 z;bOh6fuCL+Gw&)fW4bAD#s^{--jRwRD1@L>84j_{1NpkVE{Gft^dl-6#EW9C3*wWP zBn;{TA0M&Z;s?AtQRnln*^8Eh=`f!!E=}`kOhdlYs_b1$^K`mC`|5|1by9W}uU{UX zzO)Jhr(!ph&nr2kPbR&sGf3G;y)iD!???|(Ev0|Wy9Y)6(G|Ge?)1fwt=xCTHIsTu zSsGj1f?LKhyTRVQLZ_4Rs`%}d@uB6!|5iAib;;Q{#CUy!TdpK*7->qCea^#=z`2^+ zR~1O*)jT?;<>zW?RG`AeF{yellm=NX2c)ZS%IQ40kwv6bqu(FNCgKs@}hP z*pPN|nNA#X5DoNx>Zs;1tE2oL&oVg-tVL-(z}K#xAYDGd`RdaFHx7XCeh2QUTU>=u zx(@JFYa*nc1ANz-MxBAjuU%%mdJs-+bU0b#tDYSj*9J>D^Z2E;r-$^AZU0wz(#!hp zz~dlP#lR1(i;oGZfhhxh#GXfRECF#UfO7FaRqD;?#Pl?cdw&hrtq+zUMy#JM6`$rS z*RPQhYIyVd0A%s$`mq6OxM5$a;ld#hjt|ULDdSyYc5b4SRl|4XZZy|gu<|)HUdty= zXT>6O(CM7{fVL3S2uLZa;Q^1#HRe4F;LaCFW52h0Z$*y;OR)?2;YV7HRjTcCvguv6 z4X{1P4{x|`EUgFctG^*oZ9OmE7%=WQ0VM!z8NIe-v*<-krIEnRZg7maNuW~C9UJFJ zv5UBI6W9F*uiYe@>svrvVb+(l8r;7i(V0c5%|?J-r@*>e&*wfG>?0^*_h0$uxf4y6 z#keDeQ@IHL2p&dz-jwo04sTX8z6- z5yPiZux$u-vBhVW}g7^K$1T zx1k9Job}-w3LBrlb?7XYi{?<$8

K-dljCD{r6nio3&XEBh{brp@*HTcyHQBCVPA zn3%5P{I#u9b$X5u)X|NAmC%=At8RlWmbBqlG5ae&v*q8g?d-VNQr~gh{@}LF{j9BI zJn#Vu;NzFkboHRQh9_4@O=zCS9w?O8(byZ&?EP;vFTaVV1M4NeAeZM}L30$dC2nB% z5`X>?&8~}Rir+wU_%NEn*U-Fp4o$@&G&Mh;13_|kapc(sgqVLkP%Ult)*smEcfWwK*y7Igwk=&;?UEu&QAw9qLm`S#|b3 z2UB$@myc>f2D-gSl9$=uS5u|q%5y7t$e|8jx7omb55F_B-DYy&)0VvtNi+8jB#}Ob zgkUEjDWiAq>XQ%ki9>$vHa_6_)njX*62(0(Nm>Y!MorQU8hFj~N5j?uMTafg;~G#v zk~hsOc?a=_j}(Ug){Cs<6;$E!YOJu|Ir6p6&+XU#48K*I?(6Q3;gjmZyv?){d`jJL zs=k7{tPvCiK^VEw&7Q4vMWw!R-@ZWJQ#Wq>92*PSxttdBFcxv5s+P_>jt@AN<>z)ojCIFejdFMYFBY-2En@2NyV>^2%SAk>=NY`YhD(zEVNzn&4{JP!g z(>AQ$O4CSxCl1@IUVl+1S&s08#_;fN+$O;!Y0@k&xXNWIB$dI67x+_+=6g?|OPinV=CRdVx32y@xzl`GUf^#xPWH1LaYeEmvH#MTu1}>2gjHRJyVsD`k{*AO6oMoz z6G@tIl2lmR5Ao8ImpmKLzfLsY)U<96!EjcmgQ8KN%AF+TPm*>3l6SAeilZindmUW! z&4W(O{CA^mKegCn4$*Qa=^BNLQ;%AITT?VBB}F(TMUtL1cXHIHy(>Et*`Y$wiu6tVw#A5&t2E qc_d|p20X0E98Ip#)x?9TP-p}RT&r<3??e-GqIR&4BErU z!FJWz#Py8XtI1+aYZy;%KFs96G&z7xY%()z&SV2t4o1_>xva*lyeF7|`k>&<M~0JkRVSD?uE$#vXWoUfpApC^Ch7U%nmq>_<&av-+`n)x?9TP-p}RTvl;^d~CnGp!Zd7_^6x z?)&N}x%M+RQ-m4pbgw^aGGywl6@D zZ%mU@d8!OwLM1-|X@q8wyBW2(f#e?~%|H(_a84HB&1MvuT*Ir#C^2~+uOXw{s7Rs_8bTp`-|jtk6MDP9^ZT9O`E$>g+!mAD z;#5nWzq6~md!cQq-uR*+w*sPVbC(4jAiV|QKxg~#375-tva6#bP|0CR8GcINP^rch z*su?XR-#M;b76SWbO#kYA>2|nA%xrwrWiEOycvCV48I`l1I*Ms3MAAN!n99^TmFj( zx$pYvhX}d&>KPlMrD!9aaM)?d*_sLpWH0;;_6lZuhN#9-0ejC()j|hn?|Fp0!0o;a zLMftv)}J#WNRc-?85@D!mlv>-p=PmC6l0*p+6cWl+DJz-b|?v7#R5{| zJ+{w&A@#2HL4R@)Lwxk(UQytCZXNf*;jb585zbD_ zu(`N_Fy!WUo)ILqa_2Q?&V`@yTPQT3kHFzVff(zD@=6`HWca*9HQLhq#Rlv0WLPTd zn4oz$94D~6`oZ+0e6H6Y!#D_s-ZgwI6*lrEe-!; delta 1065 zcmZuwUr1A76z98LE2q@0#_n~ZZPJL=u-j&h!Jv_Z?@GHH%f^7y~WQMd-EhRyvlmLwWd~rA_H{xc3#@)t{Ro zCSAcoYH}2}t0rYAjEK9;X^a|90>7?4K(DM%f!r95#I|{nWF8Z;m$r9%;rnRnsdud(2GR={;-ep(u>P6rjwRL-Y-N*0Z0-}?#=Of|%*@mobmKQ7Ot<3{+&nZ} zLY6^xGUs6AQK}&X&2wTsK>_d6Kge>s({KP;HQ5GN@^OUKWd*(!)^Q&k{(SKT;mni_ zn+qEVBW`}@IYCluciwR3T==p08-)h+5ja>X5o7&OU2ejb44;>%Mq7Hn++tmx42xwQ z6EqKp69kr4KA3)#&-HpWii2?IUBkyxV`HC-htV%_A%A%fxrK)87V?h$Wbly58!fOG VeA0Nr4Wremp8rgp4~5B+@DFjIMScJP diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index a501fa1c49f2461e2f531b90fa636dead7df67c7..792aaa1d1fd36301f8d6bd1b0fb9f53013781e35 100644 GIT binary patch delta 539 zcmezHi1EWC#tE{lCdQ@~78{j(Ss|>+3Pxg^yI6lSBXJjS9%O=Z#W&aTyg}x+^8Y|^ z#WpYC+|D%FUz7_;L#gN=bQSy-dinYahNebFmS6{ftp#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+GXVfTHkXnB delta 539 zcmezHi1EWC#tE{l#^&Zm#v7G+3Pxg^yI6lSBXJjS9%O=Z#W&aTyg}x+^8Y|^ z#WpYC+|D%FUz7_;L#gN=bQSy-dinYahNebFmS6{ftp#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+GXVg3JC@i0 diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 0a51904362d05f2ed3e5ac0171e516af4d85b944..550bef31054e57d5dfb3b9c5a5ab44806967a141 100644 GIT binary patch delta 3459 zcmZWseQZ=k5YIeXq0qw?@D5b)B8eXq`bAqxz*339=4kN>a`)`V+-Tl_)ADmOq{5j zP_L%tl8%K>k*=ieEb!dlU^gJ!V;pvQNJ<|9gPC{}q~ewU3@3{&jA45c8Z^V!gsPGh zL@PgqT-G^Zk5tiR(mA1tlqE-!1L6Hy%cL_h6k*Ozr8|L?Bu0{p;gKwm_Dk?yx1=E@ zc`nv5&84fd2d^|qHHrUaQzISIGRc&zro+?QY)S%UQ?hnjiazG?R@+44@m?ZjHyrG> z+2=wG$;SCj%saOa-^TeteA^ZT@oigR@a@c2e5@od4OnIFWyz272zifqkg2RIzs(A0 zD(TAa5m{po3QhvKxHQs8`j=N>Dk)y!W|@V`oq|Ya;T7G&yZo$lA-8&1_WKuY5G!8c z4|e5dwJUiDL~2*+d|!OrpZ!o&3(>O7tSZyYRrI^vyug#2BmfA9!&r)_Bvd)xGQg)r!35M^+ zjQ+bg%4RIJWoOUrE;FrW?J2SFXvrnCJO-&mY3EUf8de?>FtdgNdm4>iibkTZwX zF`ID?sbj|N?5jfW>yJwBMiN}fR*$q{;hECvSuukA+GcCyg2RnMJ4x%R-Q_QMQjM2v)-cdF} zBoFU2>P67rt*S`obPT(9zrhy1KJCIDDX2OCv2eIol^Ti>@-)=@9^~;^VPH-@0Z;@Q zX#5Uv(6ia#W!{W1pdBB;68azlY(teNIY8ci%peC{9}N{e>Tz%Y9pnI8kqA9i1)^m6 zJ44}lV|Fea6wMC~gBpmA56ytm94KRzXZ7$aPO#rF9@fKejW97`M+;wp8NBytD3e(+ zL5g65$RcldgBr#n4LLk&G?c4r6aYn_Sy%mYG@Jx_^acB&bhl$)G~JrvO&)7v!mDUA zo*4(Btw#~ldymJB2V3*G_%o^C0-8P<9DHI*pDp!bNPlDa>`9<5+QfWmCZ?Yp6CT6g zeHl7z>EM_nMMm8PV7|G$CTsfxqy3Tf$gnv za=MO(VMW^l6^cQ7pg6LA4T~RPhSkG zvN;~3zcdi*SkSAOFJ1!8@<5^)^LS|?s0UC7C;~>s^Hs}DU5-_tIz_A%-PR95J&dAq z3b=ozS!g;y5jbtQE-%8;iAvUs+v;vZt9LD&7XKjli8Y`)+91RoRk<7kj@6rmx32^B zIto;sRG8$^xJ_8s;_pc5-~s%<4WOp5zRPhpsKxn9n}Y$0fS!S9?%D!BLzMAi28W!- z=Wh!!L!g1}?G<67lx?jAF(Mns?Q4Pin+UO{fT$eA$`tpM~w#@@){`}V^w zs|;LJfD}P}I`VauR$njs5%PK6Vc03vsQ@SfXGr#W2j6+b42t89N~l<4%7q56H8pfw z-gP{L3;~0z<%Frq%T8HjxRzws>rD-V%-s}1hJZoVd(Kqlt*sUrt|ghvZ)zB1-nI}j z1Prpc%ckm)tKgCig3C1Hkc+RG`*hh2D4;+60e-zO*Zgi)oW8?x=YY&5M^(io){?C4 zb_m(HyOQjmt`IWZG06hm78$N3*{cstGW4JPt~h5)!-aIAFQU; zG%P^x6da{nAJeR+)ifV(9iXY#ReW;zC<2YLX(Kc&z=Y7I#fjqMw+3r!l#8k9qX;w_ zE?S0IQIrkS%yPoDYJ=;;O%<$XCqMV3R*@*bXYd25pEXjQe8)`fBXgL|(flg!_~F!` RMNcpu%;5guH{Za${{dg8mR0}& delta 3459 zcmZWseQZ=k5YIeXOQDA?;2o&oMG`+K^b=YLSSm5t94#IJ1Powpuc6gIN$>+h4TTT| zjZj>01t}Cnib|odEi0vB!;`0etivu3PU%BnFcWX0RNNAPVPw&T(QHp*gJ#&8P}MjE z(aKLDmvyG@kt(`OI#ZiS+4v}OAUuM#OgbY&5$5bvx)VrAQWUuu9>oG_zXb1fOBzy= z=VBexT)HZI@Jf?ZllWgYHPSIHlT68KIy}A2rX)}{C2O~(=wlvlwM`@*?>MxRhgduiq&D(DO~LA+92`vCqbg)vmkNoh9EI( zlTGxon$7Bn=*UNEHe*IHA;-UJQ5mc(#f-LoZDzEx)RxhFma^-Rb*6lhvg^D~Fl;ww z^xwTQqv8;xVs#c^e^h!mx}a8eLBh;%Qt?Ct3)BR6LT$J7DSOVt+;!iDLJ24PKaMvy_y{tschm#ex=UIi~WIflE zD5gXXtMB|)8tXEt?`&peH&odgI)R(PI)R(bv?K!@?C7mJh?!_iF{?f?Mjv~4N7)FG zJiODW7eRZssv?=w(d^#+23z?0vDCNy@)#2nUPYVn z%yPXcw(Cgw{sG5zG2@L2xt z%g|v<2ge*KGU_e>^UdW&8F1U022Of>9%S)fJuuYP14m}Sh%jTW3lD8FeY;TQ| zqvZskGv0d*h%0BQ>ByBv3eTAaVMIT)Y_=oyINt}XC0L>n(=aL9Rl z{&ET9Uc^riMZ0Z3`ho zz#xmiY^ol)3NG0oxJ)w+x%is7PnX?*0{YV*;MWUt&F^N#={p>E4#-?`R8?GJEy>z$ zhmeiEE6M)p3L(QClPu6}k>OgBz5383!~cW%ytoGrO7}vhD4!SiRJ}@54bJiN!D?Df z!vge9!BM*PG0kdPP4n^A{+fDS#V3c4BG4$CHd4a^Obl&WoG3niYmlZ!xtN+hia?{` zqGhlZMcGizEGJy6Hn={_RKa?7@^epW6-n}Y20xJcStHfScg)m2GKbk5&9Cx~A5INg QOser<2KNWQ`3CO&4=MzbQ~&?~ diff --git a/src/driver/AHCI.pas b/src/driver/AHCI.pas index e7101a7e..8c4b31b7 100644 --- a/src/driver/AHCI.pas +++ b/src/driver/AHCI.pas @@ -17,7 +17,8 @@ uses drivertypes, drivermanagement, lmemorymanager, - console; + console, + vmemorymanager; type @@ -197,7 +198,7 @@ type cfis : array[0..64] of uint8; acmd : array[0..16] of uint8; rsv : array[0..48] of uint8; - prdt : array[0..1] of TPRD_Entry; + prdt : array[0..7] of TPRD_Entry; end; var @@ -240,14 +241,14 @@ begin devID.id2:= $00000006; devID.id3:= $00000001; devID.ex:= nil; - drivermanagement.register_driver('AHCI Controller', @devID, @load) + drivermanagement.register_driver('AHCI Controller', @devID, @load); end; function load(ptr : void) : boolean; begin ahciController := ptr; hba := THBAptr(PPCI_Device(ahciController)^.address5); - + new_page_at_address(uint32(hba)); check_ports(); load:= true; exit; @@ -324,19 +325,26 @@ var i : uint32; spin : uint32 = 0; begin + console.writestringln('1'); pport := @hba^.ports[port]; + new_page_at_address(uint32(pport)); pport^.istat := $ffff; slot := find_cmd_slot(port); if slot = -1 then exit(false); + console.writestringln('2'); cmdHeader := @pport^.clb; + new_page_at_address(uint32(cmdHeader)); cmdHeader += slot; cmdHeader^.w := false; cmdHeader^.PRDTL := uint16(((count - 1) shr 4) + 1); + console.writestringln('3'); cmdTable := @cmdheader^.ctba; + new_page_at_address(uint32(cmdTable)); memset(uint32(cmdTable), 0, sizeof(TCommand_Table) + (cmdheader^.PRDTL-1) * sizeof(TPRD_Entry)); + console.writestringln('4'); for i:= 0 to cmdHeader^.PRDTL -1 do begin cmdTable^.prdt[i].data_base_address := uint32(buf); cmdTable^.prdt[i].data_byte_count := 8*1024-1; @@ -345,12 +353,15 @@ begin count -= 16; end; + console.writestringln('5'); cmdTable^.prdt[i].data_base_address := uint32(buf); cmdTable^.prdt[i].data_byte_count := (count shl 9)-1; cmdTable^.prdt[i].interrupt_oc := true; + console.writestringln('6'); //setup command cmdfis := @cmdTable^.cfis; + new_page_at_address(uint32(cmdfis)); cmdfis^.coc := true; cmdfis^.command := $25; cmdfis^.lba0 := uint8(startl); @@ -363,18 +374,22 @@ begin cmdfis^.count_low := count and $FF; cmdfis^.count_high:= (count shr 8) and $FF; + console.writestringln('7'); while (pport^.tfd and $88) and spin < 1000000 do begin spin += 1; end; + console.writestringln('8'); if spin = 1000000 then begin console.writestringln('AHCI controller: port is hung!'); read:= false; exit; end; + console.writestringln('9'); pport^.ci := 1 shl slot; + console.writestringln('10'); while true do begin if(pport^.ci and (1 shl slot)) = (1 shl slot) then break; if(pport^.istat and (1 shl 30)) = (1 shl 30) then begin @@ -384,12 +399,14 @@ begin end; end; + console.writestringln('11'); if(pport^.istat and (1 shl 30)) = (1 shl 30) then begin console.writestringln('AHCI controller: Disk read error!'); read:= false; exit; end; + console.writestringln('12'); read:= true; exit; end; @@ -404,19 +421,26 @@ var i : uint32; spin : uint32 = 0; begin + console.writestringln('1'); pport := @hba^.ports[port]; + new_page_at_address(uint32(pport)); pport^.istat := $ffff; slot := find_cmd_slot(port); if slot = -1 then exit(false); + console.writestringln('2'); cmdHeader := @pport^.clb; + new_page_at_address(uint32(cmdHeader)); cmdHeader += slot; cmdHeader^.w := false; cmdHeader^.PRDTL := uint16(((count - 1) shr 4) + 1); + console.writestringln('3'); cmdTable := @cmdheader^.ctba; + new_page_at_address(uint32(cmdTable)); memset(uint32(cmdTable), 0, sizeof(TCommand_Table) + (cmdheader^.PRDTL-1) * sizeof(TPRD_Entry)); + console.writestringln('4'); for i:= 0 to cmdHeader^.PRDTL -1 do begin cmdTable^.prdt[i].data_base_address := uint32(buf); cmdTable^.prdt[i].data_byte_count := 8*1024-1; @@ -425,11 +449,14 @@ begin count -= 16; end; + console.writestringln('5'); cmdTable^.prdt[i].data_base_address := uint32(buf); cmdTable^.prdt[i].data_byte_count := (count shl 9)-1; cmdTable^.prdt[i].interrupt_oc := true; + console.writestringln('6'); cmdfis := @cmdTable^.cfis; + new_page_at_address(uint32(cmdfis)); cmdfis^.coc := true; cmdfis^.command := $35; cmdfis^.lba0 := uint8(startl); @@ -442,18 +469,22 @@ begin cmdfis^.count_low := count and $FF; cmdfis^.count_high:= (count shr 8) and $FF; + console.writestringln('7'); while (pport^.tfd and $88) and spin < 1000000 do begin spin += 1; end; + console.writestringln('8'); if spin = 1000000 then begin console.writestringln('AHCI controller: port is hung!'); write:= false; exit; end; + console.writestringln('9'); pport^.ci := 1 shl slot; + console.writestringln('10'); while true do begin if(pport^.ci and (1 shl slot)) = (1 shl slot) then break; if(pport^.istat and (1 shl 30)) = (1 shl 30) then begin @@ -463,12 +494,14 @@ begin end; end; + console.writestringln('11'); if(pport^.istat and (1 shl 30)) = (1 shl 30) then begin console.writestringln('AHCI controller: Disk write error!'); write:= false; exit; end; + console.writestringln('12'); write:= true; exit; end; diff --git a/src/kernel.pas b/src/kernel.pas index 762a4a0b..e774b58b 100644 --- a/src/kernel.pas +++ b/src/kernel.pas @@ -129,11 +129,19 @@ begin console.writestringln('DRIVERS: INIT END.'); console.writestring('AHCI TEST'); + console.writestringln('A'); + atmp:= puint16(kalloc(sizeof(uint16))); + console.writestringln('B'); atmp^ := 4242; + console.writestringln('C'); AHCI.write(0, $5, $1, 1, atmp); + console.writestringln('D'); atmp^ := 365; - AHCI.read(9, $5, $1, 1, atmp); - console.writeint(temp); + console.writestringln('E'); + AHCI.read(0, $5, $1, 1, atmp); + console.writestringln('F'); + console.writeint(atmp^); + console.writestringln('G'); console.writestringln(''); console.setdefaultattribute(console.combinecolors(Green, Black));