From 5a2004b486c5cdcdfe8fc21098d80c72acc6b717 Mon Sep 17 00:00:00 2001 From: kieron Date: Mon, 22 May 2017 00:49:38 +0000 Subject: [PATCH] FUUUUUUUUUUUUUUUUUUUUUUU git-svn-id: https://spexeah.com:8443/svn/Asuro@176 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c --- Asuro.iso | Bin 5091328 -> 5091328 bytes bin/kernel.bin | Bin 37092 -> 37092 bytes iso/boot/asuro.bin | Bin 37092 -> 37092 bytes lib/gdt.ppu | Bin 2777 -> 3470 bytes lib/isr13.ppu | Bin 1994 -> 2005 bytes lib/kernel.ppu | Bin 2355 -> 2366 bytes lib/libpconsole.a | Bin 64564 -> 64564 bytes lib/libpmultiboot.a | Bin 29040 -> 29040 bytes lib/libpsystem.a | Bin 140320 -> 140320 bytes lib/tss.ppu | Bin 3132 -> 3187 bytes lib/vmemorymanager.ppu | Bin 5584 -> 5584 bytes src/gdt.pas | 46 ++++++++++++++++++++++++++------- src/isr/isr13.pas | 13 +++++++--- src/kernel.pas | 8 +++++- src/tss.pas | 57 ++++++++++++++++++++++++++++++++++++----- 15 files changed, 104 insertions(+), 20 deletions(-) diff --git a/Asuro.iso b/Asuro.iso index 365407e3e88f155468ea1c1a20a34f90bdcb327f..8fd335fa1f191e617eb3861341eca84ced02d461 100644 GIT binary patch delta 14836 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 delta 14469 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 SN%&M?q1QGajOUhJAO9E2hW>p3 delta 4087 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 SN%&M?q1QGajOUhJAO9E2hW>p3 delta 4087 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 diff --git a/lib/isr13.ppu b/lib/isr13.ppu index e938eb98c7745006b5d2232688d5c54910a5002e..0a17ba05d96317d44696af18dfa1a12549b79790 100644 GIT binary patch delta 88 zcmX@bf0bV`ARyGx*p#K2k%5`vK!6g%T6PA89oCa)|GK3APndy$L1dz$E^~pZ(!{_^ sj9Qyj7*!ZKIT#s$iWwM;Cc81EF&a)@%hbbYKG}--Fr)kCf6Ql?0U(wavH$=8 delta 78 zcmV-U0I~no56TZAP*7DdGc^Q*0RRI4z)&Ipq6Yu~xI2@Z`qD4{6951J6Okb;14-Z@ kkx|kCAG0I@Bmt9C0%QRylehwm0WgzA1H%D8vk3&u1B%8L{r~^~ diff --git a/lib/kernel.ppu b/lib/kernel.ppu index c1095b9b93d151d5bee95540f3c5b0cd6f1deab2..b598c7920238013d6939610f7b86329c3e4c83d4 100644 GIT binary patch delta 133 zcmdliv`B9@a)IbsCu Vk>s3#Y@f-CIIF6_nq&2_xvaLY6!j>e3@}}r<0ZK*fJBo zE6x-Z+7iNs7)*!9RgihMlJxxvnDR-iuTq7&6t|JY0Tm9^1!B=^z!DS?wp|X1w~U&& zZ_30+JZZeKCy{Hi1$L}8vT(S}H$!U99<^NNU;UIeiD%`S;HF?rs6p3miSBY-Q>kk< z2|AtoOxZM{Y}DgUyKd;RahU?NQ@&MhBL?*SD80~-m>#3J-ew-dxc53~2Q9fU7)cR$b!@7`yEOcBq2ut3ir@>ffsEM7=ri6Os2gV8H- z>G5xKP&V1M;UcTmUQ%9K5aM<9Q4*YT=( wBTQ}`k_un18O&C3MY`sO)2kU`F;@RI%MdIM_l6^}*nhFSVT#40eQ)RT7dVIhg8%>k delta 812 zcmZuvODIHP6z<*`QRq&2+^I24zzm=2GtAoDCG>H8Bf<&#*SQ-!(|w~@pF6%Nz|V$o{A5)=@&T@H!2jGDM_ z%EU)JX}qx~k!!LAc5F4WaJbAfLu&ROwOr<1{gifzXXcpTCVx$+LDz1H?s8mHscUu# zI?MOT6GIkPwuq46b6VoXpKQCxp0h~wmD*L|5ru6H%LKa|J6#l(uV#qFSpC;5L$Em98;-+3Pxg^yI6lSBXJjS9%O=Z#W&aTyg}x+^8Y|^ z#WpYC+|D%FUz7_;L#gN=bQSy-dinYah9;J#CSV7Etp#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+GXVf$pq9Y^ delta 539 zcmezHi1EWC#tE{l2F3+3Pxg^yI6lSBXJjS9%O=Z#W&aTyg}x+^8Y|^ z#WpYC+|D%FUz7_;L#gN=bQSy-dinYah9;J#CSV7Etp#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+GXVg25|!ux diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 09f2fd0c344d4fa0d66008e1fb1f4bac7b09610e..c8952e56a27cfbd2eb1d64f9b94272ad431f8a64 100644 GIT binary patch delta 3015 zcmZuze@xX?6yJHtH006K9H_*6;+B>9g2_u<6JL%>Y@jQ((Ht^<%*Uo!*3>o=*K#@A z=*eySVl#!JoHh~Ot&Td)m-q{L;G2b(P@pp!!{oj!)vZ+^TSn_n0_!=2;sH;jyTP7 z-dO${r7Ez_PMwlPVBLS3VafU*lN><*LpomBw2}R^G10VfK!!GP7Q|q%QpUER<(?8n zY|DUVKl)xLh&|h^giwkzg}=2#rq|or4Ea771C{O=1J&&u12ud+25M_yNF}a!H=jTy zu6MT?>2Dh;(s^SeT`g0a67^G?u8HM6Zu!{WUMsZWmO_x;{T%6V3kO;qPx@QOam^`l z_dhg(iUG@9y^tu7*@BI+8IB^=CfFe+g5OozmRHb_>HcH^Dt@B>Wp zkM1vw<)|aYz0Q#c;UlSdsidR#NyiLhxlcQoGF|cPNYfmn8LA+XJz1&S0UTFU$u|K6s5G{Tg!p3BBUQTbKYrP3Px-Rq+!Mz zkj+lew83R%Fu_t&jgpD)tcL9tK*JALS3tsSGf33K5G$&|E;@4F2L=_L8#k0 zPQsq8!1t%glu|#6iGZ`FZht-H-DAEpoU7RMD0_$Fk@lW|F7=xmAMUih$Jj2%3tF3A zxN+Jiz{B4lxE5FLcDzu4L4fwcjk6n}6FlY>p5TSns{f3%RAfb6`gmO01n0RhG%Ia$ zl#ra{EUek*I7qOa1)2pl#*wc%3!7UVC)F0x7C)X;UE%SAc7^IXBRPtp!*(wip`#Eq z2E%YpRK(nPpxrjBcaV1WTS-Jxr3a2uJN3P-rcm2EP3AdekzGAuYnf!UW0OVBFxlPH zwi*&Tk}S||k&W-NwM;VFvB}~wCYy1|RzpHXrL>#(Ht^<%*Uo!*3>o=*K#@A z=*eySVl#!JoHh~Ot&Td)m-q{L;G2b(P@H-C5>J#hr$!&wA<0%U|Hn*A_%%;dI&P`^RF?;@&(KjocQfmiO}8*r1Zdz5E^- zEBF;G&ms$b(6l&Bl&7T0EB;atuLtVI;e~1Tw)-J-DdNS|Vo^~~c<~kMUxmm;MPFF- zGG45yq<2XVv&V~5tlyhjYh*>~ca|b2J%P=>yTx>6ULV zzrb{Xm5Fri<%x9dLz(>5OzBdafK^CQ(4nSLl(2;nsYjyS_| z-dOe<*LpomByn+3+G10tXP=+>g7Q|4nO2#&$<(?8n zZ1bRIKk{A|h}~PQgiwkzg}<#-rZ?Ey4Ea772bFCf2i5Nw2Q_{?4r*^?NF}as7oR{S zu5Xta>2I4T(s|<}T_aPQ6ZKP@uZm^8Zu!WbJ}b20) zsiQ=r?`b3UD0pT5i34nF6kZfbjxX;@j@O(`j=$TT9RDzyh|7vg86YcT*DZH-n^#=A zo7A=A{fWOiM~VKzxDj{_rpu;*YA$XqPrYW#G$yL#;Ek^=elQ%|_z5uR{*;)&srVO`jN+(}kG`f$Jh%QH-iBX?P3h8$UPf0Pws z%@HN{FKA}p18!*~4}5^RF5pT~$ivpjF*lWV)%5!&)opy94u?c&L5p!Z4b~a6Qo(9D zrIk<~nb_cgIe^>J;ii)ijix$ftBVM!h`PsQ35PNqj0zY%Ga<2{4U$!)-FSN@`~Xw@ zWBUtZIqFDpuX7|q_(&>VD(UEb!ZE{G?o$q?OjkZL+BC^J$yhKCP9|w>8u(SlRzE~B zFdq_bfhr`>J_K3A!UEuwDUY!1g+w{ipb*Z*9ffd>qodsEd(kE_0(Ep%E!~|ZJh%5? z=q31@i;jx58vlF+rg5y}Ss6I(RmisPSM4J)MJcWL)-vF$2AxCP_6=`HF-e0 zQ?Pdn@cn5rr8JCTBH)avJJ3LR_n7Yt=PEWm%HHmHq`fDgTm9z72Rm%VM!D?E0IVN`>Z$8wMO+LNmE5XdN`-H{r653tqRi)Wa!=v~!qyRki)GTTncYU#D4_IBS|K k##Fj@Cr@{6u>keDo|@+$TU81+e6wBFI~xPDT|=(_0Wv_~9smFU diff --git a/lib/tss.ppu b/lib/tss.ppu index ba1cf3c67bb6f1e0aa7d131e9ff88730514d0f7b..e70f44165807065d7353cf0e28d941eb04575bd3 100644 GIT binary patch delta 453 zcmZvYy-QnR6o=0*Hy=0m3e6xyp%s+ed(*8d(LW%g3R$G+qO@8KCbW{qFKRW$uhzC9 z`7I7E4&qSgU?M>fD$Xu$f~y@WNTC%9UD}f&Ti@Z~;d#${hWE7XS6gQ)HQe2s@E0M5 zoTa*CphaZ(VYI$jn6HIIq_^Dp*ceH4m4`Y^r2md~uVu%}xr$GG)esKR4}q8veJ#@3 zl<@y+^STGZFTN@!_{@l7k~@ZrDIOUPrg>#}NLTzWX6X4HWH{vakY!%WOYUiT#d9sQ zyj9OJ5^(UEeStXg98;g?hH`Zc&)xx z3ArfJ3&pU`LG=yh)Hk`SzQwQV+q_YKN860yJ)f8^cKFnE@PW&whmSna@`)GfCEl9_ zoNzAu1JC)wilfYu<>82RD}gHSEEmUYwUg0r`g_guz2QDnBogMV-Oerhf&Ek4eWUBP ReLG{FAkY|x{9&}k`3Fv~Zh`;+ delta 385 zcmXYtO(=tL9LN7Z&t9JGA+?khsYiRBXHv?vcIV(An&RTH12Qo$nas@F%==sBD`iq{ zBpgf}Oo>`KIk-4DDF-PIN+}1wmEYmhr%(MZ-!Eszsrvn`)iqvIf`lY){N&0}a&8tvc#>*`Wc;eh#xl9>&=IR@{Bl3N0sL?oglg7k2=&Y``pj+`#y0y1GRz2Gn4^#_ z8bwjXjG=`&jxpv0_L-B&T3j@RcZ*Kba9CXwhtI0h3FQ7!$ zX%V%ui gdt_pointer.limit then begin + gdt_pointer.limit:= lLimit; + end; gdt_entries[Gate_Number].base_low := (Base AND $FFFF); gdt_entries[Gate_Number].base_middle := (Base SHR 16) AND $FF; gdt_entries[Gate_Number].base_high := (Base SHR 24) AND $FF; @@ -70,15 +99,14 @@ end; procedure init(); begin console.writestringln('GDT: INIT START.'); - gdt_pointer.limit := (sizeof(TGDT_Entry) * 5) - 1; - gdt_pointer.base := uint32(@gdt_entries); + gdt_pointer.limit:= 0; + gdt_pointer.base := uint32(@gdt_entries); set_gate($00, $00, $00, $00, $00); //OFFSET: 0 set_gate($01, $00, $FFFFFFFF, $9A, $CF); //OFFSET: 8 set_gate($02, $00, $FFFFFFFF, $92, $CF); //OFFSET: 16 set_gate($03, $00, $FFFFFFFF, $FA, $CF); //OFFSET: 24 set_gate($04, $00, $FFFFFFFF, $F2, $CF); //OFFSET: 32 - console.writestringln('GDT: FLUSH.'); - flush_gdt(uint32(@gdt_pointer)); + flush; console.writestringln('GDT: INIT END.'); end; diff --git a/src/isr/isr13.pas b/src/isr/isr13.pas index 6ace63c9..bdbca9c1 100644 --- a/src/isr/isr13.pas +++ b/src/isr/isr13.pas @@ -28,14 +28,21 @@ var procedure Main(); interrupt; var - i : integer; - + i : integer; + ec : uint32; + begin + asm + MOV EAX, [ESP-4] + MOV ec, EAX + end; CLI; for i:=0 to MAX_HOOKS-1 do begin if uint32(Hooks[i]) <> 0 then Hooks[i](void(13)); end; - console.writestringln('General Protection Fault.'); + console.writestring('General Protection Fault. ['); + console.writehex(ec); + console.writestringln(']'); util.halt_and_catch_fire; end; diff --git a/src/kernel.pas b/src/kernel.pas index 5692ac4b..2d9cd84b 100644 --- a/src/kernel.pas +++ b/src/kernel.pas @@ -42,6 +42,7 @@ var pint2 : puint32; keyboard_layout : array [0..1] of TKeyInfo; i : uint32; + cEIP : uint32; begin multibootinfo:= mbinfo; @@ -51,6 +52,10 @@ begin console.writestringln('Booting Asuro...'); + for i:=0 to 100000000 do begin + + end; + if (multibootmagic <> MULTIBOOT_BOOTLOADER_MAGIC) then begin console.setdefaultattribute(console.combinecolors(Red, Black)); console.writestringln('Multiboot Compliant Boot-Loader Needed!'); @@ -62,11 +67,12 @@ begin idt.init(); isr.init(); irq.init(); + tss.init(); pmemorymanager.init(); vmemorymanager.init(); lmemorymanager.init(); - tss.init(); scheduler.init(); + while true do begin end; diff --git a/src/tss.pas b/src/tss.pas index adbeb8db..e21d6011 100644 --- a/src/tss.pas +++ b/src/tss.pas @@ -17,9 +17,9 @@ uses console; type - { + {TTaskStateSegment = packed record Res1 : uint16; - IOPBOffset : uint16; + IOMap : uint16; LDTR : uint16; Res2 : uint16; GS : uint16; @@ -54,8 +54,9 @@ type ESP0 : uint32; LINK : uint16; Res12 : uint16; - } - + end; + PTaskStateSegment = ^TTaskStateSegment;} + { Res12 : uint16; LINK : uint16; @@ -143,6 +144,36 @@ type end; PTaskStateSegment = ^TTaskStateSegment; + {TTaskStateSegment = packed record + link : uint32; + esp0 : uint32; + ss0 : uint32; + esp1 : uint32; + ss1 : uint32; + esp2 : uint32; + ss2 : uint32; + cr3 : uint32; + eip : uint32; + eflags : uint32; + eax : uint32; + ecx : uint32; + edx : uint32; + ebx : uint32; + esp : uint32; + ebp : uint32; + esi : uint32; + edi : uint32; + es : uint32; + cs : uint32; + ss : uint32; + ds : uint32; + fs : uint32; + gs : uint32; + ldt : uint32; + iomap : uint32; + end; + PTaskStateSegment = ^TTaskStateSegment;} + var TaskStateSegment : TTaskStateSegment; ptrTaskStateSegment : PTaskStateSegment = @TaskStateSegment; @@ -154,15 +185,27 @@ implementation procedure init; var cESP : uint32; + cCR3 : uint32; begin - ptrTaskStateSegment^.ss0:= $10; - ptrTaskStateSegment^.iomap:= sizeof(TTaskStateSegment); - gdt.set_gate($05, uint32(ptrTaskStateSegment) - KERNEL_VIRTUAL_BASE, sizeof(TTaskStateSegment), $89, $40); //OFFSET: 40 + console.writehexln(uint32(ptrTaskStateSegment)); + ptrTaskStateSegment^.ss0:= $08; + ptrTaskStateSegment^.iomap:= sizeof(TTaskStateSegment)-1; asm MOV cESP, ESP + MOV EAX, CR3 + MOV cCR3, EAX end; + console.writewordln(sizeof(TTaskStateSegment)); ptrTaskStateSegment^.esp0:= cESP; + //ptrTaskStateSegment^.CR3:= cCR3; + console.writestring('OLD LIMIT: '); + console.writewordln(gdt.gdt_pointer.limit); + //gdt.set_gate($05, uint32(ptrTaskStateSegment)-KERNEL_VIRTUAL_BASE, sizeof(TTaskStateSegment)-1, $89, $40); //OFFSET: 40 + console.writestring('NEW LIMIT: '); + console.writewordln(gdt.gdt_pointer.limit); + gdt.reload; + while true do begin end; console.writestringln('A'); asm mov AX, 40