From 57b6845ed4d467f6f286769cd5b3e1d2bcf8c1ad Mon Sep 17 00:00:00 2001 From: kieron Date: Fri, 19 May 2017 23:09:35 +0000 Subject: [PATCH] VMem & PMem git-svn-id: https://spexeah.com:8443/svn/Asuro@124 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c --- Asuro.iso | Bin 5083136 -> 5083136 bytes bin/kernel.bin | Bin 41188 -> 28900 bytes iso/boot/asuro.bin | Bin 28900 -> 28900 bytes lib/kernel.ppu | Bin 2187 -> 2165 bytes lib/libpconsole.a | Bin 64564 -> 64564 bytes lib/libpmultiboot.a | Bin 27222 -> 27222 bytes lib/libpsystem.a | Bin 127680 -> 127680 bytes lib/pmemorymanager.ppu | Bin 2424 -> 2424 bytes lib/system.ppu | Bin 9499 -> 9499 bytes lib/vmemorymanager.ppu | Bin 1941 -> 2357 bytes src/kernel.pas | 7 ++- src/pmemorymanager.pas | 126 ++++++++++++++--------------------------- src/util.pas | 6 ++ src/vmemorymanager.pas | 106 +++++++++++++++++++++++++++------- 14 files changed, 139 insertions(+), 106 deletions(-) diff --git a/Asuro.iso b/Asuro.iso index a215036d5f248202328e44b26bd3b8c9f7b70fc5..389f2825dbee306a191ba791a91375de38044f47 100644 GIT binary patch delta 11799 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 T4VsK)$Yh51~NlZ#!Nby1lh$3 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 diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin index 3e7ebd2b5a599895a7d8898a1141b795bfc342e4..50bc81144415b83149d76e771afdd25c028ada40 100755 GIT binary patch delta 2432 zcmZve4NP2B7RT=!=D+|$=ZzhP0fvv(wqjfB)FL8ki>>I!k7%RS?ph+SF0^h{bfK;r zyU@^9UZz!=>&IrZ#@$p?qY=STGE}yCF3r)p&1xH?)M|xV?CWAGQDmvIy#3!d50XtJ zx#xH8IsbR=nfulF#W+X`OO$FqVEGD1_A@?+q?i$)J-A{<&&{G1~EsH&8lc)J(@~rjHEneQSxp zpNlT*q;1<4>$vzBJVMIc-(IJigEA{vP+3+Y#5+oVi!r$_?tNhoGP}%{c}W$Ehn%^6 zyyK_96C=s{W4dYGq$+tz<)&byN{RccA$(IBU^ZhzTUM&8f%cQn(zEz9o95h95ptS4kJ_qu$gz)U2Ez1Yn0 zEO;NQw(pirx#il3{7ddHaKA@$aliezs6iHn7l#L;v%Tx-ZtoXaP4e!rdNxMG&|)`~ zHV@juIcP z(iT9A+n(BMJ4vVDQ(oz zMxn*yt$te(w7GNI99NsEv_*TfPo!bj7p=#xe<;rvMcQ_&&ewYptW?1R%Bxe}3-GLs zxW(3;^I%rsK3bXBUu#0`cR+3A2jAoEdV3NkHXoPic=oMH4Xdeu3MwBJu15aUcAN^ul8EMQbAJ%+m&}%c@?v1 zpLNY#x?Xuhaz{y#X2};z`nB=IFH1GeBZ7%d3o0@+Ga<_w(>x{7#81n<)wC`-cA2g0 z3ddd!n;46I>(Sa1CszeDtzC|lJDDqY$&ZSt&2Q9B7_C#r_Gx3#`1B^@!m+cLPIsJ{ zFwPpMzHfZl_$qnm^_bZ&JkCM$__S>&%{Np48;p}@GXjCWb)H>jD_O6pcS~G?U($QR zw&S%E@z$yMc6BWFAtP{98qr0@VCT?c8`D6ax8_hAisQ&D>Kw9g*oeO#LTzj3m~Fcv z%Xc1?qKi5Xdk4Ex1$x_N-Zds?js*IS-5lsU(HIYHP**h?p<2cE3)*9+odp`>SOE1K z_p7*DWcGws$0C!d)-PoG2e6XqFmMGE1FM+c2g;c~0Ip;@3RE!t3%H8uBcPJ$IB+%7 z$3Tqf6W}tYA>cZu&j26O=RhXYDc}*NVc;>Q)4*?-&b;0hGaqI88q*dg3wWIA-#{zV zH^3IA^T5MQ<3Kahcfh?&6F@D~B#^^21qh}efqJHC;CDOPF+^j_D!*wL`!rrZDgarU>wRrUKyCOi^GPQ!&uM zR0=%Av=DfZX%VoTX$i1`sSLQBX(@o3%Yn9~Oe<2;7*NV|MQTTUrII zX1W$w!?YTxW~v6RXIcxaWx4@a$8;lb1JhPu7t=$)?m_ho;_SH(&*!#tI5e)uL)vED z`Xk(XCSZ<_z})r&%==%!41Ni-TAeQa!!U1s1@p#fn5@rWUPdje^gr+l@d{YG&%*3G z1+(WPw>xNZN;KLV&KKb#--tHn|u z+JPRqa%EHn-0$o_PvYEF8T4lL<^^(VeWx6+kIAxz=z=Fhy7@fDOBlTvhcNz$F@!OS b@m->}p)@DWjG6oP?T}jYD_Wg=wYlnlqe1f- delta 1641 zcmZvce@NVA9LJyM?(|OYoZoBr`-k2{Gf?!dmgudOERIP*&1h`2e&`6bAaJB(fuJj8 zI}S~IXh~RXMKvnJcKvahql*mNe@-H395u_uQ;sPVE|dE9{(QgRJ2u$C^XBt>KCjR7 ze4gj|-e+}%udeWMA0L?TAK*iuzxY|XX|+lOl$a$}#hAFfJ0Myh%nYO274}QQnFpMHa5d#t&g!w-;DO% z&Bo^tVvi&@_oW7`_nElis^?4u-F5aK${5RFFgYdK-Fy8+V8$|MEx1YrhsbJyTGuUEc{TdqpYtz{PSiHJ^*GnY^ zYa=$Gu|cp_oehG;6Bul%!J3H;YHSE>vCf9TdJ3%FU`vS&X>1s5kP7+XwiaJ+CTu_2$PrFv+od&y$-&uKR-yf=GBBB3pgVn?j&_>j*T|X_ z;mUCL6wNPcbF$K~^gLuR*++Q~QS=Ln9)y)j*ix+)`4l-9$T>vTcVso?!#2665bh)^ zC(c!d`E~JC}s;|nRNP|F0)Auri1nCoc9WQgG$<{X%w2a$JR}} zBfWiJIp-b1e!muJ8X3$~KZjkruH%-SImiS5LiXQ;ytfM3`!{6rDn$GOY1o1!e}xSH z1{u5txk70l&`FhlVA)m3@joD)E0C!xkV8L1p7jS`WfJ--Di{ytme9!EIF)KSjMQh~}H*r|{`tJF7LmN{2l3r>fqeNzPA; zhM3nud+9wAj`moH9QhtJo!*LDi_(!jiupoo&n|O3!bEpxQvB6fZ@alu$y!}XRz!}5 o{KGINFy6)Z1S5m-Eyi;CnWK?1^Gq~5F>zAx-t+u`__#OzKO5+M@c;k- diff --git a/lib/kernel.ppu b/lib/kernel.ppu index 625797780bd58d854a6687ff333a8bd740d0d6fd..ebef6820b7fcf6ba50fb7f0d629ed58318112f04 100644 GIT binary patch delta 146 zcmeAc{3;+D5D;o;Y|7Hi$iU2SAV7)1mxF=filVPYma*L|(TTFgOnE62gPwEDu`9lo z9^biVvLoYKM%l^l8COmI$h2W|Jo9sA@i&YNaPR@dW&)Zaz&SaQU1D+pJImxsc7C>> hK=I#$HgW$&QR`8I32uXIwQolu2yzN2Xbm*E2EnwcZ*Mj$bbyUmfnis?APLE-0Y^Xi3x6su<}kc=}+oN()+dc!lXkd z2PmK0yhwi+LUXy%LAdPZ31%G-4#+)5R#6c5fH=$S*x2C~f}AkfO+jGuBez8mlR!?M z@3|178N`Y9oeMKoVsg2W_vX03GKA6ZLiiv?gM23*`4LrVUMy5;;bqB9i6>Ac^->X% zn-63_WgqrQY+jtBkFeoQz8t~^)snMtLpJkPup(r1YyKkixHO0%JY3Qe2jK)>m)!iW z;|;{0AkMe$7huljhkd+Y&A@oQ4v~J?C%O5@bZy4X{L{`df`bbp@&l$@YBTTbw-DVQ zC!S)Oe0%{fNEy(CQ%nLTMtb@B3JQiMmZnC=AkmGBt05L_T)cpB^Z6CGVP=YNKC;RW z?$*igLVPAW^ssEMS-%hB8&C{{ZkAL4n_YPMF2t0;>z*=j+a{-fL$cb`5Y6hqpO2XU Dz%K?v delta 721 zcmdn;gL%sj<_U7lhL$E973DcV^yI?J5}TtrzB7Y3n?FuG%`{nop9e1E&i@iDGx=ek z_+~HRFcz@P#>EnwcZ*Mj$bbyUmfnis?APLE-0Y^Xi3x6su<}kc=}+oN()+dc!lXkd z2PmK0yhwi+LUXy%LAdPZ31%G-4#+)5R#6c5fH=$S*x2C~f}AkfO+jGuBez8mlR!?M z@3|178N`Y9oeMKoVsg2W_vX03GKA6ZLiiv?gM23*`4LrVUMy5;;bqB9i6>Ac^->X% zn-63_WgqrQY+jtBkFeoQz8t~^)snMtLpJkPup(r1YyKkixHO0%JY3Qe2jK)>m)!iW z;|;{0AkMe$7huljhkd+Y&A@oQ4v~J?C%O5@bZy4X{L{`df`bbp@&l$@YBTTbw-DVQ zC!S)Oe0%{fNEy(CQ%nLTMtb@B3JQiMmZnC=AkmGBt05L_T)cpB^Z6CGVP=YNKC;RW z?$*igLVPAW^ssEMS-%hB8&C{{ZkAL4n_YPMF2t0;>z*=j+a{-fL$cb`5Y6hqpO2XU DEyxE) diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index 628c442182b58cd18e6ef046e31ba77ebbfccdf7..74dae6b18842c238fd3c52112a415a0bbcc5a53f 100644 GIT binary patch delta 481 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 K?+wA(xc>m-m4LVa diff --git a/lib/pmemorymanager.ppu b/lib/pmemorymanager.ppu index c7567ae77f86618434500087f4acd790af2a11c3..de5668bdf47664f4b6f15050ba29fc338f20d566 100644 GIT binary patch delta 25 hcmew%^h0Pu0+VdY#3X-?Id;X@(&Ib#Y}~n@0|1Jr3o!ry delta 25 hcmew%^h0Pu0+WCI#3X+XWwphNzfOy2-?(!>2LOus3n>5q diff --git a/lib/system.ppu b/lib/system.ppu index 4126106ae2480abfdaf1e14de5ac1e8c718dae81..bbc70c3f28d2f26038a87f785be85e5012a155f9 100644 GIT binary patch delta 13 UcmbR3HQQ@K08?o4#-Nib043}NRR910 delta 13 UcmbR3HQQ@K087%Q6rMN!Pwdo5?2xK1MUjD$q@Y5%a41-gRYi(j%WYXrN?eKYg^ zX6$->?c{s!M=z3yh#%{7B9jv0@@fC)P3w#6Ng>26Gw2XA(Zueyv+a6&+jh_1bi61g z*I<4Hnw;8ietXCE&$W-OzX@X`?(g}1XZz-74|W%iT)T%=iI&^*-L7*&{^ESS`0!WE z<(Vm#9ofm1Jbf6Zc&^*o*cma~@B~B&CE>Xs4u$2Il5Hi&m26<3X<`{)U0-chstc^s zWDJKyNW>zrtFI`DB-=2N{=bzEgAG4YM`eS9gXx5to;1^v#6P~kNjN*LTn!wCmr~6{ zv@}aOh!>aUo}YZz?3Y*TVoJsXKiK%3s?MF^lLY;#>VF=((jLcHgNfe4TtL@Z(FIv# zjZPr%6UGQzrdj7^TIzU}Uf4u$X!3>-0PN6^g4Qmf_o zzS93?pom{X(}1D~tDR3dyr~eX?lv0{KW?!sWLS=! z>AD+s7Yq0rh2T%v1VRShV3q|`IaS)VJ6#=FF2ruK1%&W*BJjYZo4}RYZ7!cLC?CRi zfMtTCAUQy>X&z};9m6A9>2u~w%%CBX%!K4o*g6!p4yo3mrwRnjK({WIePt%G=Qq%4 z17ZPtUBS1Zs~8gq82nNi4&}FO{0;z`A4iR#O@CaiRL?fntEF1$Or>Eh*Or?&;lCPP ztpsKOEr5ZQkP0q8{C&$Y$^)^Ftd`i*Okzhoofc`|c^F z@(S=hn=}Z%k6dON)1V*N^cpkevMeWp8}GFG{A(g;c1CS=BScLC6`U8K4r|m;Y@27M znJJbT<5U1DXt&vNiy3sAd6t>-(=4N%UWXrsS9KLg+~GM84UibZmOQB5p=YDLgA9EM z`vUyE%N)>sD3ZG%i(0&tMoSK7hC}*|7yOPzGzTw0GKY33TKjwC-_{?zWiIl*w19j6 z2aYiG2xIafO^lv<1~ko$se-X~YQKZl%GuJARbFc}Dz&Cn=f1X@~ literal 1941 zcmb_cJxo(k6u#%Rg%;aV;I)VpK`n@iCd8Pii!|5}5{pe+R6=6&XkVa7f5>~a2|5`E z1{WvezZkP?d`ug5(b82||15QO@@I^XK)fH9`!PKQz$}8&~W({6J#G$hEOBs-| zN6M0vhosEnLj%OJE4P%(r_!IH=<~seLc-_4R_;6`{EUMl_`erdoC{~9t6s;kqwbdK zh^^+h4q{OqOhCr!M2s*MsqsiD&m5fMWaO3o(&%HbpzpF@%UH|RSEysKoPy4wm%Olw zI>jqGi`s>4BW$63hMRx2Y@})pV*>{A(od@^vZ~8oxl>$E%2)fiP`&}D?4c_Otm4>r zXAIrcYYjnz0U0Xm5SK&ayinq>_-`8JhPG1C1s!&wqc#qKT2M@`f6>&9biKsTAs0Gn zLlGyER^k|YAVY+7^VBno6P8(oJspb?&y#^IwVJj_5cM@%Nkwu=8@D` zcRrCu%O4u?)VAUCjQP2}N3t`_!2Fv(1_~z%R5*_P2(%sVq97lku|j305oBk-ey#;G zODgIS%C!BRC>oVVU$DsnA;FIS9K|fqHk-znNyYmdcK(=pvB8hDphQewwZpbCW>O<8 z!;U`(HEy9^vF#F2u|Ad|J17S<>62Hn7%C&N1f1f_`fn6M;DYyVB>ioid zK2c~t@VoN}@^5dJybhQaR?Z;64_+0DB4stv?nefOXk_(Bd}0iUT4)93 0 then blocks:= blocks + 1; - kalloc:= nil; - for i:=0 to MAX_ENTRIES-1 do begin - miss:= false; - for j:=0 to blocks-1 do begin - if Memory_Manager[i+j].Present then begin - miss:= true; - break; - end; - end; - if not miss then begin - kalloc:= void(Memory_Start+(i * ALLOC_SPACE)); - for j:=0 to blocks-1 do begin - Memory_Manager[i+j].Present:= true; - Memory_Manager[i+j].Length:= 0; - if j = 0 then Memory_Manager[i+j].Length:= blocks; - end; - console.writestring('Allocated '); - console.writeint(blocks); - console.writestring(' Block(s). [Block: '); - console.writeint(i); - console.writestringln(']'); - break; - end; + with PhysicalMemory[1] do begin + Present:= True; + MappedTo:= 0; end; end; -procedure kfree(area : void); +function newblock(caller : uint32) : uint16; var - Block : uint32; - bLength : uint8; - i : uint32; + i : uint16; begin - if uint32(area) < Memory_Start then begin - asm - INT 13 - end; - end; - Block:= (uint32(Area) - Memory_Start) div ALLOC_SPACE; - if Memory_Manager[Block].Present then begin - If Memory_Manager[Block].Length > 0 then begin - bLength:= Memory_Manager[Block].Length; - for i:=0 to bLength-1 do begin - Memory_Manager[Block+i].Present:= False; - end; - //console.writestring('Freed '); - //console.writeint(bLength); - //console.writestring(' Block(s). [Block: '); - //console.writeint(Block); - //console.writestringln(']'); - end else begin - asm - INT 13 - end; + newblock:= 0; + for i:=2 to 1023 do begin + if not PhysicalMemory[i].Present then begin + PhysicalMemory[i].Present:= True; + PhysicalMemory[i].MappedTo:= caller; + newblock:= i; + exit; end; + end; +end; + +procedure freeblock(block : uint16; caller : uint32); +begin + if block > 1023 then begin + GPF; + exit; end; + if block < 2 then begin + GPF; + exit; + end; + if PhysicalMemory[block].caller <> caller then begin + GPF; + exit; + end; + PhysicalMemory[block].Present:= false; end; end. \ No newline at end of file diff --git a/src/util.pas b/src/util.pas index 2ae715dd..937b2388 100644 --- a/src/util.pas +++ b/src/util.pas @@ -18,6 +18,7 @@ uses procedure CLI(); procedure STI(); +procedure GPF(); function hi(b : uint8) : uint8; function lo(b : uint8) : uint8; function switchendian(b : uint8) : uint8; @@ -61,6 +62,11 @@ asm STI end; +procedure GPF(); assembler; +asm + INT 13 +end; + function switchendian(b : uint8) : uint8; [public, alias: 'util_switchendian']; begin switchendian:= (lo(b) SHL 4) OR hi(b); diff --git a/src/vmemorymanager.pas b/src/vmemorymanager.pas index a078b05c..5fcd2c5d 100644 --- a/src/vmemorymanager.pas +++ b/src/vmemorymanager.pas @@ -2,22 +2,12 @@ unit vmemorymanager; interface -type - {PPageTableEntry = ^TPageTableEntry; - TPageTableEntry = bitpacked record - Present, - Writable, - UserMode, - WriteThrough, - NotCacheable, - Accessed, - Dirty, - AttrIndex, - GlobalPage: Boolean; - Available: UBit3; - FrameAddress: UBit20; - end;} +uses + util, + pmemorymanager, + console; +type PPageDirEntry = ^TPageDirEntry; TPageDirEntry = bitpacked record Present, @@ -30,15 +20,93 @@ type PageSize, GlobalPage: Boolean; Available: UBit3; - TableAddress: UBit20; + Address: UBit20; end; - TPageDirectory = Array[1..1024] of TPageDirEntry; + TPageDirectory = Array[0..1023] of TPageDirEntry; PPageDirectory = ^TPageDirectory; -Var - PageDirectory : TPageDirectory; external name '_PageDirectory'; +var + PageDirectory : PPageDirectory; + +procedure init; +function new_page(page_number : uint16) : boolean; +function new_page_at_address(address : uint32) : boolean; +procedure free_page(page_number : uint16); implementation +function load_current_page_directory : PPageDirectory; +var + Directory : uint32; + +begin + asm + MOV EAX, CR3 + MOV Directory, EAX + end; + Directory:= Directory + KERNEL_VIRTUAL_BASE; + load_current_page_directory:= PPageDirectory(Directory); +end; + +procedure init; +var + i : uint32; + +begin + console.writestringln('VMM: INIT BEGIN.'); + PageDirectory:= load_current_page_directory; + console.writestringln('VMM: INIT END.'); +end; + +function new_page(page_number : uint16) : boolean; +var + block : uint16; + page : uint16; + +begin + new_page:= false; + if PageDirectory^[block].Present then exit; + if PageDirectory^[block].Reserved then exit; + block:= pmemorymanager.newblock(uint32(PageDirectory)); + if block < 2 then begin + GPF; + exit; + end else begin + PageDirectory^[block].Present:= true; + PageDirectory^[block].Address:= block; + PageDirectory^[block].PageSize:= true; + new_page:= true; + end; +end; + +function new_page_at_address(address : uint32) : boolean; +var + page_number : uint16; + +begin + page_number:= address SHR 22; + new_page_at_address:= new_page(page_number); +end; + +procedure free_page(page_number : uint16); +begin + if PageDirectory^[page_number].Present then begin + asm + invlpg [page_number] + end; + end else begin + GPF; + end; +end; + +function free_page_at_address(address : uint32); +var + page_number : uint16; + +begin + page_number:= address SHR 22; + free_page(page_number); +end; + end. \ No newline at end of file