From 126ec01343ac894e0739d345c766c6a7c9bd0b7e Mon Sep 17 00:00:00 2001 From: kieron Date: Sat, 20 May 2017 18:25:38 +0000 Subject: [PATCH] ds git-svn-id: https://spexeah.com:8443/svn/Asuro@145 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c --- .bochsrc | 6 +- Asuro.iso | Bin 5156864 -> 5156864 bytes lib/kernel.ppu | Bin 2174 -> 2136 bytes lib/libpconsole.a | Bin 64564 -> 64564 bytes lib/libpmultiboot.a | Bin 27222 -> 29040 bytes lib/libpsystem.a | Bin 129474 -> 129474 bytes lib/multiboot.o | Bin 5368 -> 5548 bytes lib/multiboot.ppu | Bin 2886 -> 3002 bytes lib/pmemorymanager.ppu | Bin 2278 -> 4131 bytes lib/vmemorymanager.ppu | Bin 4384 -> 4384 bytes src/kernel.pas | 10 ++- src/multiboot.pas | 4 ++ src/pmemorymanager.pas | 148 +++++++++++++++++++++++++++++++++-------- src/stub/stub.asm | 6 +- src/vmemorymanager.pas | 6 +- 15 files changed, 136 insertions(+), 44 deletions(-) diff --git a/.bochsrc b/.bochsrc index a7842072..2c976176 100644 --- a/.bochsrc +++ b/.bochsrc @@ -53,7 +53,7 @@ #display_library: amigaos #display_library: beos #display_library: carbon -#display_library: macintosh +display_library: sdl #display_library: nogui #display_library: rfb, options="timeout=60" # time to wait for client #display_library: sdl, options="fullscreen" # startup in fullscreen mode @@ -775,5 +775,5 @@ i440fxsupport: enabled=1 # romimage: file=:bios:BIOS-bochs-latest, address=0xf0000 # floppya: 1_44=[fd:], status=inserted #======================================================================= -display_library: sdl -magic_break: enabled=1 +#display_library: sdl +#magic_break: enabled=1 diff --git a/Asuro.iso b/Asuro.iso index 8b06ece94d29fc638fb47e9e2a0d73834a12837e..3ca62d685ad2af27ec280ec909b8d28cb8ef0492 100644 GIT binary patch delta 14879 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 NcqbH!O^LR`{|EFcr~Lo` delta 12119 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 delta 172 zcmca1@J~Q7ARyGx*p#K2k%5`vK!6fM7zYDG?mw;hmAmWiN;5Dp$WBz$XL^`EF-Vo; z#I2v6YMx)@Ce~l&i27;2OJ>RG3zK6QYZxOZ-(;M`!^nVulLMJ7HqU1gU}R%t1{%UN zc@?w5=Kahe%)A;*Kt2@cOjckwWiMWC=8XBzAiMM3?>pcBo&P^K^lAvb8hrVwm8{lbXS=ri z^hC*-qJk&=*^tD!@URXtFI0?)Z@`pK;(ZM&xU$+)NFP+;Q02s<--rbSh8?Fv;$4#_ z?wd35iRm2PI$-3QY=K>?Qx+!YrDn)3+NY-T(u*IpP2vT`Cb%tI7Y(3mwY914|BO13)&_ska59wSBYqV&M$1W$Cq>6CWRDkIG8HBsamI|{7hgX6 zK|J<5^(^8MPtSV@<9X4=d%7{i&r5eduo>RHPlTD0SdhaNT9AmpNdjdxEQza)_%kU0 z8XDK4e+)vh$*zr8SgrP|y6W$>jO`*?9}6Y0U_gSl%^R|1!5Ol}IZn4+G)D~cN4JYN yE~mik_7UmuWjjE%ie1w+H=JEA5RdVOuPemA5f9;giN$08#q+*UJRa|S3(H^k4F-My delta 862 zcmdn;gL%sj<_R)vMwXVQ<|Z4JWH_MA$p-x5o1;0tG9&n6o8K+i%rse^pBpN+*?|8a zTz-O`_-1e6U>3Og<>H%ni%*8jgUrj8-VEb!-r#D)I60zFVDf}Ufyo7>qLclTxF_o| zNpIe$;K~FuG%KZJBHU^u~P8`7ndP{Al0VaDIYO(&o6p5;z}Z z?)wmKn7NxG*(=~+%Y*d0HVDJzLHyE|XgD8a-`kGY@DKy>zji-I;!AA) z)%OX`H{gdRklj<@3FN_aXU5I^(@rzOg7(35KDYxw26E4Si)O$UCILgee0>E4Lla9= zNU{W`MUc_^U@A8oET7M~IdJJsxUmMyE8xb0{Bd-ZH{2gU{^a)|-jf}AST@(J-vd_% zirLW3;tH^|)}R-%`Pk()xID;tnb-AUc?0Z-zHdP18DMi>-#57PCWCeUJk10EqI(MV diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index 98bbd1a4a09da868c71f4c4464d37ed97dbc392e..01680bf8f27cb9e7dacc2ef53072a33b3b60b9ef 100644 GIT binary patch delta 2943 zcmbtWeQZ-z6hHU9cI!rMJ2u+6P3Ran*jVYuHd$CgyY_7~_G7f&aK-sRqI?7y3jSdf znyADtqT(@{=pz23@%!s(G|?!;Xow+ZF$OdWQU6dQ!GH-EQKsj-_qx3f{mYwmzw
  • ILuDCqao9}Vk&zdsZShIO@nV=VwI1+W(ZoGAcz0boG_ zU||D5EAb`w0U)pN!7u57fs*oJWW(!b=vy&~E8O**V zg0?E7a-8ycwUqs$Y~_LZ?@I1SU}B{|)ZN!JgVk0f5h>G}p79%~RbJm_!3H^yw(P>{5?yQzwy>ln?YPOaAHr&xy;d^Iqlh8`tCj>s)KgV!R z!c??Ecd&0-a)&F6*VBKy|4A83gB9!gP`pWCsk;uJm7I8b=v8e(sS}si?$aKMpO^4J zx+2nZgR+d1MT^d>9ZMdTUA$2$dgQf5x_f$Y*uG30#gpkpVk=%sKixBPMEGccu+vU9 zhCE|2PL{=FLyu^2pCdmz`_gd-uwk8Owl@oaYL-eKM`k1qQXAXAkxv#CB79iD5lbX; zL>z`?Z6O!oV}M ziBw8zP|YiGa%nMK(y?JRrDTQ*Ye~0aR%bpIWX((qvWbzDLZ#m=RhC}XKSla#ifVXy zH~}?Zh~+pXJ-(iks$>$RFpAB@(p-a4XHLm0xlx6!mAzNe+1!}QxfWo0PH?NOiMC2L z^>5a@vAoUz-BgKVAeL8Dvp6Gznd*(crVC@koRQu_sKRv%p2rPpJ^sATQ{wGq3_C0) zfwxwfx0AqIqRhFMyamcUL<0A%%zH`TewF!Z61cQ7kCMRU7{d+kRudy8#u+KVdXsN6ae|Qo?PH|C_b}4_zn}4HfG2c4 zZBvZ}n)qWAr%e3b#Ge@H!HbME(cg@n^x~!^6CD6vM$(5FX`TdQ7hTXy++^yvFw%1s z1O1zu@bBy1k#@*Z1>g7<0H_6!D*#Gd0N$$r z+gAW88vv?L0o2C;nqCBG`4C|DEr7NlK*!Snp>crj*8qBZ0s2P)22KM+F9K-O{1eI> z{}WFhVm*#+>^-Gi?-BOc>}DCv7x3tB%J(HJpK~sV>)flKbFYXj>vpbd9(~UFspxLs zJ+;T@4~E(;&S-)qwryVAxoNRif4O?6pifo(A-KC9Ia?~Rs!EG1uRdQ_ExB58@rJPX z8?Q<1d|lCcj^+BDmLka&*tnMTW`RBEaI*?qsowD9=Yp%PV3F<%R7$R3fo3%7SbMk4 zMMW0`_v*L1w+n2lO40w``;EZ%w_CEH$yJfP8!FKL>3Jx+{Zw;-Cy!p*e?fBlLmMZ& z`r^R9B3tPz@Ul37VX2NgqD%K3#5(+&H%glHh$eXSoyi4>{S>n}^w`=0T|qWo(j-){ zed#Kpjg6&eg(M4i?r>iN02_WlrZ0&!`8TxeWaSh`Jfne#=N*S56&+QP7|R{uNMr~} zkvTIMj~qr;Vk|UWCACZ}9qmgb(%EQyAdyW&S}2IMY5p|M+pTKO*cNmQ#KH$sYiVez zmW?HbRSIwBLP{o?G!!!-BWy%H6z!*sjkFy7S|k>Y6IYC+wL~P9?N4OlX_U6EOT4mj zfE*UB#s;z}wI7$@FCMw3g_GHs8b6R8L~Yl)#<#VS!n>Ko5Sf^YrE6kg>3RJG>h`r& ziUZATDjgo8l#KWo5G6GpLBT9G9@eM^v(6zkr4AiZX|}NUs+JfU$x^OqxVa&?b?#Rq z0jpA;f6f5--vy4oa7xYc;>--zsyF+prALyKkKVXL;D8{pF{h53%?p@&>p8Y@ z3=!hKBq92tW(w5+ql7+y=ea&Zh<@JZIB#MOZgSx^$Gh zE%-vfaTg)#0m5cB(a_93IX*9RvK!;I@);DD*ze=D_Ca)wx3Mx&BX>CQoU>JD8GGj$ zMVxiAnIg}&3^p9~wQ&*2G<$ub>Jj&u)aCDDt3A!^=Q@SikNKNCAQeUN$=lpOAS(vg z%LJ*Y*o{B&$8f%DOH^UYr5~^t?22A{JS+$?BZo7SitrYDW3o}`W|t=$<%8JxVPodr uq{6N=*17|mZcdLrc;Y3=)v@u`;;$D0dS%#fK^pHJflW83SHJY!qWB-LqO*el diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 7559fd254d7e3844b65264d79a1c35b32278a3d5..fd91a214b4e2dcfc363d02c292e275041a976ba4 100644 GIT binary patch delta 2960 zcmZ`*eN2^A7~g}2U(oKghFFf>(3lWIz%SSs-Q5O@Om|%pYAhRN&w1bXoc9B|f4$G|oacFd z&*!;Aw-*iFUKClCzP`Auw50gU+}@SOCyA70v0ql+SzwiutNYVPuP4L6Xy^^_v41@y zY4%Hl4jGkR&6i4=VPRTs6n|&;2%cN34ndEGlCGiVx_Sn;d;4at0G@}&mS<802)t2os=C8Gz zZK|`IZK@MyGui&~(>JLA)W~9ce{7KX z(d1iGrW~GbV9}&GVknbna!eZ^`g0WA#_}3~GHh%ytb=r%NaLx*Jcab*BMj zJeAU#eB|cUd3s3SV87nFW)05A{{GVf;1)$IxvcQ6+H2BuE-Ac=tZ})y{u!6~5{G+O z&ApFIn+TAad!yX5094Hf?gLeG{4N6ST>`4;9o^Z~TLA^M(hZAw(=t$lVLPFCaz_v# z$CkSJ!3?+rbhjIp8GDvv>nxQC;^7A^LSzM~{^cm>4a_GV2GzkLkN{85fiu=f0u+%L zPd;LX!lSD#mg9LAA(?M+gM#5^O_9Y7dVi7E6~k%eMj#ZC>moE>w!v~)yg~e_O<*aI zKz5d!2xf?5?iS0yDVp0u4{U`|VUFHk3)`5#It0th=d>9ZaBI*DdQ0LDc;}8-}b`;Qc0l{(ceh@nGF8d4p=3X z1pCrDP<^dA-LVtGO5fOVys{qVY%hvnLd)8k-7pL;JwkJiRDk^T22lO1P>N`b`y1g0 z6*E5JJo2*bZh#^Xqu9-vJopM+0hhj7(bQo)i0c;g3-01$|A z?@6;fBCUIP+i9?G8;Z!Np6KVh1*3wqCL=Lj{KK=(c|+tn#j(!h2S0^TOZ|NuCt_Ik zr|gv!J;lMrkMzMHxbzp+#$KDFJU-6ggi|$-B09oR-)ysF(8r?}VM5(SfFdxfyNO*A zZk*jrasIOT_+^;Pmvt8-8l8r?nic_^y9upUfNB45OEx&$R?M1qM&mPJ`AfWl-<^Tc GwEqCHPqyCx delta 2960 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 literal 5368 zcma)AZHQde8GdJHv$M%&&8}%hqHRN>AjZy4Heg+|`|( zbY@lzg*FI6TeQ*=p;YmQ3ZjUpp!h>Y1;3?*>L0<4vUaw~ z>Nb##Pejdv)icD#x@b=}%nom}nr|=^#?=AHwHj~ImNGcH(eMwhX~Uc}&LQqt}mKGrDtZW^7_)GIk{#htd)sbtkUf zArikzO+|)xh>PZInNTpY6K-SBC&r;ayp1Y35N9PE!%RKZn|ZF~`@2i^_UZcS?&;*g zWP0~>YJYkvm7bbT$<%VQ;ZNPW;QGPkC$9AlXc2oJ~QvmDw7BP`0DS6;w3zlUd5TMy2XOG;3%7FW+vx& zRe2qDs^44a5FcRqXXr-;=qD0|T3&|sGL9rvl|y?~=tL%)EkmRBOQNz+$ld`K+|3|u zsk;uhFjqufRon`zu0DMS`jI|qIx&~a%vZuH@=o5%6;C?M9+W~!tyEHypdQt|taHMh zbxc)>*?czV7Rc2zk;oUb6>qj!D^wv;+bnDAK)MnZmo37;0j@56*o zhv7fOgqzCn3z%>-1tTF3V!|75_|Gum%{KfIOb+R`#?YT9z|9)Co)^Gx4UER45xoZbKLUQM#h(E`Y4JC~%NG9}{3VP3 z6Z}<+@4zGbsl{&u|Bc06>yc)EPJ!>&Yh*oPt&4 z|Gqw>K-@Ls*^jKgpORKanZt+)CAwy9L*x-k{HZxmtC*o&!xIQ3sp=B0)E^tSnZl_!`e<%2~IN z$w?$p|Ct~XzuzDdA?%o^4;7IBefo%hDg4|<9J`8$$K@PCdBnbi<4E`O+n2>wMmz^O z_Um-3Z$DWqXM;V3gF^TIOLk`7(>9fSCWo_6)t2Rog?S_DHf_-UV!*EDfSmxtvNLDd zZWcAVYx)8VPG)E77O3|}Z`B*ABeiaBvXMnk4dz4_$!&?FIWMaUcUf<&-c8o4>)9$$ zMRVCZkeUuyXn^B%%~2sB==@qor7MEI46 zh*Klt$Mq@V5s`CR{tF`FJf-m!jUQ_KT;ty~{#WA_To>Z2^}#<)4m?Uk9+!x`1tJcU z72+)-buIr95%xdV_?X7$HNH%Q-@8P_`G`0p@>^m?W5=^7GiP-g7~MW=PWcPSo8v?eV~4E}`cU<6*qPr3Ef~j1@zrOCb&T}Rn_rGno9nL?cgC54t12=Q39yJY%*zx(Xf64s{b}vH4 Z-m`Aj$N72u*>($)A{UT=I^I)b_dm&US)c#_ diff --git a/lib/multiboot.ppu b/lib/multiboot.ppu index 831f0fe67cd4db6c21c413d7a88fb06f899d460b..e356cbc4b0efd4c96963edd5d5840d0e48342481 100644 GIT binary patch delta 276 zcmX>mwo6Aj0 z*uC+75~DCHGfS8BNoHPJJ_Dl_3oB3*1Y&_EFfgz%Bm-$}Ad68<8A$TM)#oOrXC^Z+TEjJ@ zf;BKOOta+_LFCFWhkfsnfxlg ep*|s=PX7KO@tJvBt}t221W)BMh2jIAZBD>WdhPln=_d%voi8*w&i%iIJu3>oHrJz0tON%pW?FM x&H{?$fJ7OsC-ZV=C@2A${3^boJ|Uh?{{A8HnR%HdKsiQMkTyn!qRCUaRRNYfA!Yyo diff --git a/lib/pmemorymanager.ppu b/lib/pmemorymanager.ppu index fef27735eba692bfa39d1ad31b59b01355827f99..23d63314a17210b61b8b2f1c5a6b7f871d1e72da 100644 GIT binary patch literal 4131 zcmb_fPmGgA6rcBX`)_yIW!ZKYaCgO0KEK|(la%38>Vwp+R->jsnBT|S_p|7;7m zF&Gnw2KC^Dpi$z1gGap?g@Xq*#)Bt~e@-MuPu@I;RI|R{`@Z@5C&g`u)6ARqz4x1$ zH}B27nWj=F_w9eG?+PiG`aBg}712;y}a-~C^gTW}|73ve}7uqlMw9o;eX_;dbLwXjL7BaDfKXEdinL9E+pLx;6gN(SL zbCdFsV)rRE_+Vy6u>GXm06IOqq?+Abti^}}twLu^PZKx;fItUZp&mVbQ$O6QcWHgs zp++prgpyE0s7q*{P+n`(ihv%@|NlraO6yM#|8Vo@-t3_kR-Cp=&!QDA{$N%xyIXV` zu3N3r@d`lU2sOj8?!rpIWQOs!UiP$;Z9?6@#lB`}LlO~>P-@P_010-4mg)mnZf zS4c?Sik0fsRRD;KOXPhF!P=+(8aStdI<1f+N2MyzU0@HaHR&u41d0Nq+-_74B zl1(huMq&nUs%qBEQeDvo2RUM+IBlq%T#X6z^+yYZ@=C6bQHLDtRvQaDcL)~w%9qGh zD(2}-S<$cq-EKoA!vNZV!L%FGOxrqm{^a*U@My5lhUcmlDxr^jIvNolDMTV9|dC1Vf-0 zjaQjc1PghNt1i!j@%3WS%M82>G?n_bMf*A|ipJyfv)Lm|j)xcL)6a%yqv>bolF@iL z%=bY&7EP{aFFYo}4sBr0z09#buP88P%}C0G1zbv8`7(0t;?@WaG4=5NEtpjX@6_N5 zi&3zd1J>okj=0EQ6oDaExa#scn4TQ*9s_RzO|LnQ*wx{PWNguPL(>Cr$a>4iCbX8c zkvV5c!GK=U+nAWkyIiq;@OnwW+=9R^AENDPw|&LHuYsm_oZZ&Bq@(FrtXpW;TT(Nk zn|J~p(J?2YA7frFpK@(RbdDWRnnF*heL~79< zlPH3)gR2q3R_R;L)l5ZG+hqgsJ0)nZVT#-4iQB?ZPr)pmt)FA?j0SJB!B23D6Zg1` zi~H7F(RcRLtVYX?$GQWI<_#pf!Dtj&LJ{ncr|r?0RY$=09rsOjxNk8U zKd$|kh^BgvE$%dmz)=e=#x3@2+(kydB*tYNm_ku&A$ikWT8mv%Hs-C`&THE<`> Kf_!ukTKg9*w7d%d delta 956 zcmZ8f&rcIk5Pq}lZnxdq+S)EZM1G|pT0Njay#PW)BBt5^9;!q{*oJDM&>9Vi$iWz5 z^wP}1lP9>C7|+HS!^M*q?_4-}(SHCn>NneM4^A@Q`{tY3=}h0-?)nz%&Sq~6oE_Ak zl4?@B*&g-DQtIZx$cOfwFJB#{lvC{ZBm=(@C<~);f4i>*I)S@rKsspAnwZ`oSI3`!L2i zy^~*(6^$6u*YJ=?@jKligFox%fWP(An=(KOuC*J$K(_2w+?5B4?4ZPASgm2bU|PEg zv@-LntM1}VNl~~_8uJTfPciM6w8q%LHW6SS;XUwv2^9Y^hT{Vst-+ui0p2%L_AuB* z38|Gg%!%fQLesL&Wl?>b#l?6MeyyOoV9VDgT0WD#`wE+D<1|m?iNc6_Z7vRdh?1@z#hY;`Ei_D z&mmxAl6YUe_z7gOEqJ0ai70d+lhDr~zYUfHeZmtu@9C|Z6!LCLRiSlzdH@)m$u6x| z3RpJdE|<#diXzS4ue?ICMaq(Lk9uLHfXh8>dpT0Cp&j$GL11vjeKhB96btz!+embH zCGv(tPQL8A^`dya&l^tKr;f@s%RfYE`F64X3c#0m)*iCgpj1R9hj;ARWw6Gg@($%m zP%;8cq_Uau%=M{UX7t+V#Q4-)ZEieWBo(Q3bV&0#ioY#3XBu?N;;c=LGKY+_3OxV- delta 25 hcmZ3Wv_NS>0+V>!#3XBusGs(`WR{%1uyJX%004eb3bFtI diff --git a/src/kernel.pas b/src/kernel.pas index a5a1413a..be30828f 100644 --- a/src/kernel.pas +++ b/src/kernel.pas @@ -24,23 +24,21 @@ implementation procedure kmain(mbinfo: Pmultiboot_info_t; mbmagic: uint32); stdcall; [public, alias: 'kmain']; var c : uint8; - mbi : Pmultiboot_info_t; - mbm : uint32; z : uint32; dds : uint32; pint : puint32; pint2 : puint32; - keyboard_layout : array [0..1] of TKeyInfo; begin - mbi:= mbinfo; - mbm:= mbmagic; + multibootinfo:= mbinfo; + multibootmagic:= mbmagic; + console.init(); console.writestringln('Booting Asuro...'); - if (mbm <> MULTIBOOT_BOOTLOADER_MAGIC) then begin + if (multibootmagic <> MULTIBOOT_BOOTLOADER_MAGIC) then begin console.setdefaultattribute(console.combinecolors(Red, Black)); console.writestringln('Multiboot Compliant Boot-Loader Needed!'); console.writestringln('HALTING'); diff --git a/src/multiboot.pas b/src/multiboot.pas index 3c8f06b7..95b85ed8 100644 --- a/src/multiboot.pas +++ b/src/multiboot.pas @@ -54,6 +54,10 @@ type mtype: uint32; end; +var + multibootinfo : Pmultiboot_info_t = nil; + multibootmagic : uint32; + implementation end. diff --git a/src/pmemorymanager.pas b/src/pmemorymanager.pas index 2cfcf0ae..4bc5b013 100644 --- a/src/pmemorymanager.pas +++ b/src/pmemorymanager.pas @@ -4,42 +4,133 @@ interface uses util, - console; + console, + multiboot; type TPhysicalMemoryEntry = packed record - Present : Boolean; - MappedTo : uint32; + Scanned : Boolean; + Present : Boolean; + Allocated : Boolean; + MappedTo : uint32; end; TPhysicalMemory = array[0..1023] of TPhysicalMemoryEntry; procedure init; +function alloc_block(block : uint16; caller : uint32) : boolean; function new_block(caller : uint32) : uint16; procedure free_block(block : uint16; caller : uint32); implementation var - PhysicalMemory: TPhysicalMemory; + PhysicalMemory : TPhysicalMemory; + nPresent : uint32; + +procedure set_memory_area_present(base : uint64; length : uint64; present : boolean); +var + BlockHigh, BlockLow : uint16; + +begin + BlockLow:= base SHR 22; + BlockHigh:= base+length SHR 22; + if not present then begin + PhysicalMemory[BlockLow].Scanned:= True; + PhysicalMemory[BlockHigh].Scanned:= True; + PhysicalMemory[BlockLow].Present:= False; + PhysicalMemory[BlockHigh].Present:= False; + end else begin + If not PhysicalMemory[BlockLow].Scanned then begin + PhysicalMemory[BlockLow].Scanned:= True; + PhysicalMemory[BlockLow].Present:= True; + end; + If not PhysicalMemory[BlockHigh].Scanned then begin + PhysicalMemory[BlockHigh].Scanned:= True; + PhysicalMemory[BlockHigh].Present:= True; + end; + end; +end; + +procedure walk_memory_map; +var + mmap : Pmemory_map_t; + address : uint32; + length : uint32; + i : uint16; + +begin + address:= multibootinfo^.mmap_addr + KERNEL_VIRTUAL_BASE; + length:= multibootinfo^.mmap_length; + mmap:= Pmemory_map_t(address); + for i:=0 to 1023 do begin + PhysicalMemory[i].Present:= True; + PhysicalMemory[i].Allocated:= False; + PhysicalMemory[i].Scanned:= False; + PhysicalMemory[i].MappedTo:= 0; + end; + while uint32(mmap) < (address + length) do begin + console.writewordln(mmap^.mtype); + if mmap^.mtype <> $01 then begin + set_memory_area_present(mmap^.base_addr, mmap^.length, False); + end; + mmap:= Pmemory_map_t(uint32(mmap)+mmap^.size+sizeof(mmap^.size)); + end; + nPresent:= 0; + for i:=0 to 1023 do begin + if PhysicalMemory[i].Present then nPresent:= nPresent + 1; + end; +end; + +procedure force_alloc_block(block : uint16; caller : uint32); +begin + PhysicalMemory[block].Allocated:= True; + PhysicalMemory[block].MappedTo:= caller; + console.writestring('PMM: 4MiB Block Force Allocated @ '); + console.writeword(block); + console.writestring(' ['); + console.writehex(block SHL 22); + console.writestring(' - '); + console.writehex(((block+1) SHL 22)); + console.writestringln(']'); +end; procedure init; begin console.writestringln('PMM: INIT BEGIN.'); - with PhysicalMemory[0] do begin - Present:= True; - MappedTo:= 0; - end; - with PhysicalMemory[1] do begin - Present:= True; - MappedTo:= 0; - end; - with PhysicalMemory[2] do begin - Present:= True; - MappedTo:= 0; - end; + walk_memory_map; + force_alloc_block(0, 0); + force_alloc_block(1, 0); + force_alloc_block(2, 0); //First 12MiB reserved for Kernel/BIOS. + console.writestring('PMM: '); + console.writeword(nPresent); + console.writestringln('/1024 Block Available for Allocation.'); console.writestringln('PMM: INIT END.'); end; +function alloc_block(block : uint16; caller : uint32) : boolean; +begin + alloc_block:= false; + if (PhysicalMemory[block].Present) then begin + if PhysicalMemory[block].Allocated then begin + alloc_block:= false; + end else begin + PhysicalMemory[block].Allocated:= True; + PhysicalMemory[block].MappedTo:= caller; + console.writestring('4MiB Block Allocated @ '); + console.writeword(block); + console.writestring(' ['); + console.writehex(block SHL 22); + console.writestring(' - '); + console.writehex(((block+1) SHL 22)); + console.writestringln(']'); + alloc_block:= true; + end; + end else begin + GPF; + alloc_block:= false; + end; +end; + function new_block(caller : uint32) : uint16; var i : uint16; @@ -47,18 +138,13 @@ var begin new_block:= 0; for i:=2 to 1023 do begin - if not PhysicalMemory[i].Present then begin - PhysicalMemory[i].Present:= True; - PhysicalMemory[i].MappedTo:= caller; - new_block:= i; - console.writestring('4MiB Block Added @ '); - console.writeword(i); - console.writestring(' ['); - console.writehex(i SHL 22); - console.writestring(' - '); - console.writehex(((i+1) SHL 22)); - console.writestringln(']'); - exit; + if PhysicalMemory[i].Present then begin + if not PhysicalMemory[i].Allocated then begin + if alloc_block(i, caller) then begin + new_block:= i; + exit; + end; + end; end; end; end; @@ -73,11 +159,15 @@ begin GPF; exit; end; + if not PhysicalMemory[block].Present then begin + GPF; + exit; + end; if PhysicalMemory[block].MappedTo <> caller then begin GPF; exit; end; - PhysicalMemory[block].Present:= false; + PhysicalMemory[block].Allocated:= false; end; end. \ No newline at end of file diff --git a/src/stub/stub.asm b/src/stub/stub.asm index a1e66e96..ce536f12 100644 --- a/src/stub/stub.asm +++ b/src/stub/stub.asm @@ -81,11 +81,11 @@ _loader: jmp ecx kstart: - mov dword [BootPageDirectory], 0 - invlpg [0] + mov dword [BootPageDirectory], 0 + invlpg [0] mov esp, KERNEL_STACK+KERNEL_STACKSIZE ;Create kernel stack push eax ;Multiboot magic number - add ebx, KERNEL_VIRTUAL_BASE + add ebx, KERNEL_VIRTUAL_BASE push ebx ;Multiboot info call kmain ;Call kernel entrypoint cli ;Clear interrupts diff --git a/src/vmemorymanager.pas b/src/vmemorymanager.pas index 1801aa9c..8823bcba 100644 --- a/src/vmemorymanager.pas +++ b/src/vmemorymanager.pas @@ -81,14 +81,14 @@ begin mov eax, rldpd mov CR3, eax end; - console.writestringln('New Page Added:'); + console.writestringln('VMM: New Page Added:'); - console.writestring('- P:'); + console.writestring('VMM: - P:'); console.writehex(page_number); console.writestring('-->B:'); console.writehexln(block); - console.writestring('- P:['); + console.writestring('VMM: - P:['); console.writehex(page_number SHL 22); console.writestring(' - '); console.writehex(((page_number+1) SHL 22));