From 97299c839c0ef2854dd1930f5fbfd90a48f84374 Mon Sep 17 00:00:00 2001 From: kieron <kieron@6dbc8c32-bb84-406f-8558-d1cf31a0ab0c> Date: Fri, 19 May 2017 14:32:06 +0000 Subject: [PATCH] Paging stuff. git-svn-id: https://spexeah.com:8443/svn/Asuro@113 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c --- Asuro.iso | Bin 5083136 -> 5083136 bytes bin/kernel.bin | Bin 28900 -> 28900 bytes iso/boot/asuro.bin | Bin 28900 -> 28900 bytes lib/bios_data_area.ppu | Bin 2278 -> 2278 bytes lib/console.ppu | Bin 16074 -> 16074 bytes lib/gdt.ppu | Bin 2777 -> 2777 bytes lib/idt.ppu | Bin 2969 -> 2969 bytes lib/irq.ppu | Bin 930 -> 930 bytes lib/isr.ppu | Bin 1815 -> 1815 bytes lib/isr0.ppu | Bin 1981 -> 1981 bytes lib/isr1.ppu | Bin 1981 -> 1981 bytes lib/isr10.ppu | Bin 1994 -> 1994 bytes lib/isr11.ppu | Bin 1994 -> 1994 bytes lib/isr12.ppu | Bin 1994 -> 1994 bytes lib/isr13.ppu | Bin 1994 -> 1994 bytes lib/isr14.ppu | Bin 1994 -> 1994 bytes lib/isr15.ppu | Bin 1994 -> 1994 bytes lib/isr16.ppu | Bin 1994 -> 1994 bytes lib/isr17.ppu | Bin 1994 -> 1994 bytes lib/isr18.ppu | Bin 1994 -> 1994 bytes lib/isr2.ppu | Bin 1981 -> 1981 bytes lib/isr3.ppu | Bin 1981 -> 1981 bytes lib/isr32.ppu | Bin 1972 -> 1972 bytes lib/isr33.ppu | Bin 1983 -> 1983 bytes lib/isr4.ppu | Bin 1981 -> 1981 bytes lib/isr40.ppu | Bin 1972 -> 1972 bytes lib/isr5.ppu | Bin 1981 -> 1981 bytes lib/isr6.ppu | Bin 1981 -> 1981 bytes lib/isr7.ppu | Bin 1981 -> 1981 bytes lib/isr8.ppu | Bin 1981 -> 1981 bytes lib/isr9.ppu | Bin 1981 -> 1981 bytes lib/isr_types.ppu | Bin 1423 -> 1423 bytes lib/kernel.ppu | Bin 2098 -> 2143 bytes lib/keyboard.ppu | Bin 2966 -> 2966 bytes lib/libpconsole.a | Bin 64564 -> 64564 bytes lib/libpmultiboot.a | Bin 27222 -> 27222 bytes lib/libpsystem.a | Bin 124006 -> 127680 bytes lib/memorymanager.ppu | Bin 2320 -> 2320 bytes lib/multiboot.ppu | Bin 2886 -> 2886 bytes lib/paging.ppu | Bin 0 -> 2681 bytes lib/scheduler.ppu | Bin 2501 -> 2501 bytes lib/stub.o | Bin 5328 -> 5360 bytes lib/system.o | Bin 17452 -> 17992 bytes lib/system.ppu | Bin 9272 -> 9499 bytes lib/util.ppu | Bin 6674 -> 6674 bytes src/kernel.pas | 8 ++++++++ src/paging.pas | 26 ++++++++++++++++++++++++++ src/stub/stub.asm | 2 ++ src/system.pas | 5 +++++ 49 files changed, 41 insertions(+) create mode 100644 lib/paging.ppu diff --git a/Asuro.iso b/Asuro.iso index 6a40b6974090f0da50350ef9248692058e7ed446..ab7811918b13a571a52a4a9093bad6334b983d9c 100644 GIT binary patch delta 10498 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 UThy5)vLv36$SxCgIelgS11%l3&Hw-a delta 10368 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 diff --git a/bin/kernel.bin b/bin/kernel.bin index 5ba0bbcd75df53773f81c7be99f6ed30cb102a8e..9fd93488b986cd9163c2697e3f1052f4ece6cc16 100755 GIT binary patch delta 128 zcmaFzknzbw#tjYzOeS%goebVFF@|h5H0EbwEZOX6x`COoW%4JBa>f~xvn<0Hw`@LW vschoH$QtUDSz^op0_;GH!Dj=>8yT>G6#W0s526^+#5TXky~#M4vEVTPd$=PE delta 67 zcmaFzknzbw#tjYzOkZL*I~lxVViehIXw1*VXtLSSbOSS^%j8cM<%|)Nvn<0HOEw?0 XR5oE@0D{dLc{dp+E^wI4SnwDCPV^VK diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin index 5ba0bbcd75df53773f81c7be99f6ed30cb102a8e..9fd93488b986cd9163c2697e3f1052f4ece6cc16 100755 GIT binary patch delta 128 zcmaFzknzbw#tjYzOeS%goebVFF@|h5H0EbwEZOX6x`COoW%4JBa>f~xvn<0Hw`@LW vschoH$QtUDSz^op0_;GH!Dj=>8yT>G6#W0s526^+#5TXky~#M4vEVTPd$=PE delta 67 zcmaFzknzbw#tjYzOkZL*I~lxVViehIXw1*VXtLSSbOSS^%j8cM<%|)Nvn<0HOEw?0 XR5oE@0D{dLc{dp+E^wI4SnwDCPV^VK diff --git a/lib/bios_data_area.ppu b/lib/bios_data_area.ppu index 5582649c503dd646f707baffb728de5bfda14269..383ab2123b85948750ce00bca4488ff2692ffd01 100644 GIT binary patch delta 19 bcmaDR_)Ks@A;+oe$7MRwyKZf)%;f+8T|@~G delta 19 bcmaDR_)Ks@AxHY#>&bT7w?#Kr=5hc4T2Kgn diff --git a/lib/console.ppu b/lib/console.ppu index 6a88ded3dcbc086ef2914f451ff8530e5e5994af..74363deab1a857cbeb78a4975fd4e229bbe4f0af 100644 GIT binary patch delta 19 bcmX?Ad#ZLqGRLXv$7MRwyKZgFj<*8<X4nb5 delta 19 bcmX?Ad#ZLqGDrH`>&bT7w?#K*$J+q_W8?`c diff --git a/lib/gdt.ppu b/lib/gdt.ppu index 4f8f449210ba89b6c53fb2372aba6470e039f429..ee1a1d551be594f3906321c5f0b40b9f8d8ac3fb 100644 GIT binary patch delta 19 bcmca9dQ)^lG{>px$7MRwyKZevF5?0KT9ydi delta 19 bcmca9dQ)^lG)MZ|>&bT7w?#K5mvI3ASE2|@ diff --git a/lib/idt.ppu b/lib/idt.ppu index ff49d9632ad6b0e79963130cabb4146a6aa9640b..d6fe95035c4476d46634c7002bb2c06b9e98e4b1 100644 GIT binary patch delta 19 bcmbO!K2v-`G{>px$7MRwyKZevHsb~WQCkQi delta 19 bcmbO!K2v-`G)MZ|>&bT7w?#K5n{fjGPG<*@ diff --git a/lib/irq.ppu b/lib/irq.ppu index 46696e62bb931e14a6dbab4b66965f8311ecd1e4..c6cca14dc8366bea1302c9dc051860f9f19dbff4 100644 GIT binary patch delta 19 bcmZ3)zKDH7G{>px$7MRwyKZevwr2(aP>Bc? delta 19 bcmZ3)zKDH7G)MZ|>&bT7w?#K5+cN_IO_c|O diff --git a/lib/isr.ppu b/lib/isr.ppu index 86ddb5106a35e1950272cb4992544306a093404d..4848de78cc2cf00c73fc60f1c71faea09fbf2773 100644 GIT binary patch delta 19 bcmbQvH=S=nG{>px$7MRwyKZev-ogd|P}m5C delta 19 bcmbQvH=S=nG)MZ|>&bT7w?#K5Z(#!fP2>mj diff --git a/lib/isr0.ppu b/lib/isr0.ppu index c2519a8025eccb3ec8b9477c329c34445a20aab0..e89e9ad6c87efb7e26d75e8489e3ff81e24bcb7a 100644 GIT binary patch delta 19 bcmdnXzn6bPEXS$p$7MRwyKZevjbH}=RlNv& delta 19 bcmdnXzn6bPEJym=>&bT7w?#LmMz8|_QppGE diff --git a/lib/isr1.ppu b/lib/isr1.ppu index 366f4c2d19b28938a34b43de11a69db814b16e69..a23058fd3106462eded02c4c6083e3f10e8bce97 100644 GIT binary patch delta 19 bcmdnXzn6bPEXS$p$7MRwyKZevjbH}=RlNv& delta 19 bcmdnXzn6bPEJym=>&bT7w?#LmMz8|_QppGE diff --git a/lib/isr10.ppu b/lib/isr10.ppu index 45f679b1134ca049b4e7ad7c1f9604be7c057674..9b5a1b888c4cfab4289efdd8cd4a626b1e7ea61a 100644 GIT binary patch delta 19 bcmX@be~N!XJjbc($7MRwyKZevPi6-ISIG#a delta 19 bcmX@be~N!XJV*N5>&bT7w?#LmC$j?pRMiL* diff --git a/lib/isr11.ppu b/lib/isr11.ppu index 3e9d155a8b227704777dcc5fa71999a163797ac1..ca654e91382f1f4a70cf07682798355a38ba2537 100644 GIT binary patch delta 19 bcmX@be~N!XJjbc($7MRwyKZevPi6-ISIG#a delta 19 bcmX@be~N!XJV*N5>&bT7w?#LmC$j?pRMiL* diff --git a/lib/isr12.ppu b/lib/isr12.ppu index 8e4bb87d77e37dff294f0e9c2a659cdc2d36ff6d..ee81d54cef3d32cce7a586b9a174715bed1527f0 100644 GIT binary patch delta 19 bcmX@be~N!XJjbc($7MRwyKZevPi6-ISIG#a delta 19 bcmX@be~N!XJV*N5>&bT7w?#LmC$j?pRMiL* diff --git a/lib/isr13.ppu b/lib/isr13.ppu index e9c7490963320b53deef7064f07ed3d50f11276f..b436974935a5ee42862f1edd65f33812e446f5ac 100644 GIT binary patch delta 19 bcmX@be~N!XJjbc($7MRwyKZevPi6-ISIG#a delta 19 bcmX@be~N!XJV*N5>&bT7w?#LmC$j?pRMiL* diff --git a/lib/isr14.ppu b/lib/isr14.ppu index 2ab54ca804226a33335fdfc6e03c44ee26772136..d7947cb4db4c264588eb9b0f269e3e6c8a1a402f 100644 GIT binary patch delta 19 bcmX@be~N!XJjbc($7MRwyKZevPi6-ISIG#a delta 19 bcmX@be~N!XJV*N5>&bT7w?#LmC$j?pRMiL* diff --git a/lib/isr15.ppu b/lib/isr15.ppu index ca826396518c023dd97ebc92c2f6cc73cadd7097..ed43f454fd7dbf5be834c3390c1a1a0e13109e1b 100644 GIT binary patch delta 19 bcmX@be~N!XJjbc($7MRwyKZevPi6-ISIG#a delta 19 bcmX@be~N!XJV*N5>&bT7w?#LmC$j?pRMiL* diff --git a/lib/isr16.ppu b/lib/isr16.ppu index ee544e8720294ea14f523ef623c1be4e8ba0f0af..8e39a322fd04ea81e29ea45709f4ce725733a8e8 100644 GIT binary patch delta 19 bcmX@be~N!XJjbc($7MRwyKZevPi6-ISIG#a delta 19 bcmX@be~N!XJV*N5>&bT7w?#LmC$j?pRMiL* diff --git a/lib/isr17.ppu b/lib/isr17.ppu index 69dc6aa36a655c2c2f6de3ad3ab384520afdd603..36e621c582d89d8c4cce8ab05ea14f970097603d 100644 GIT binary patch delta 19 bcmX@be~N!XJjbc($7MRwyKZevPi6-ISIG#a delta 19 bcmX@be~N!XJV*N5>&bT7w?#LmC$j?pRMiL* diff --git a/lib/isr18.ppu b/lib/isr18.ppu index 1390d8a0eea049769e0cc2d8314d40352775437b..4439aa499807167362515f72cf78b3a9856f50bc 100644 GIT binary patch delta 19 bcmX@be~N!XJjbc($7MRwyKZevPi6-ISIG#a delta 19 bcmX@be~N!XJV*N5>&bT7w?#LmC$j?pRMiL* diff --git a/lib/isr2.ppu b/lib/isr2.ppu index 9c74264ede8bad8488b595743fb0a4b0519a649e..3f3b5ac81bb99e23e9916f1ef2cc5d68579a3ff9 100644 GIT binary patch delta 19 bcmdnXzn6bPEXS$p$7MRwyKZevjbH}=RlNv& delta 19 bcmdnXzn6bPEJym=>&bT7w?#LmMz8|_QppGE diff --git a/lib/isr3.ppu b/lib/isr3.ppu index eacddbe825fdcd2110d6ecfb58e67a17ce950e42..a244486de5978c8059e59dd1672b01c4345c88eb 100644 GIT binary patch delta 19 bcmdnXzn6bPEXS$p$7MRwyKZevjbH}=RlNv& delta 19 bcmdnXzn6bPEJym=>&bT7w?#LmMz8|_QppGE diff --git a/lib/isr32.ppu b/lib/isr32.ppu index 70f34f321684855329d4d775929f78f721a1354f..42ea1f018ff89d2b18cc6e6ef221a4055a8fd6c4 100644 GIT binary patch delta 19 bcmdnOzlDE7Jjbc($7MRwyKZev_hknFRD}p* delta 19 bcmdnOzlDE7JV*N5>&bT7w?#Lm`?3Q7QIQAH diff --git a/lib/isr33.ppu b/lib/isr33.ppu index 1e8894519a3beba277f4618d12481f39f93ad594..71d3b4d93d8d240b6730b613673bb1ea437ead67 100644 GIT binary patch delta 19 bcmdnbzn_0XJjbc($7MRwyKZevk6;G?RwoFA delta 19 bcmdnbzn_0XJV*N5>&bT7w?#LmN3a6`Q!@wh diff --git a/lib/isr4.ppu b/lib/isr4.ppu index 5a0d35f68ebf0e0440f332d8f7fb24d2c780fadf..07921b8b2047e16690032bc343a4f764bdc450e9 100644 GIT binary patch delta 19 bcmdnXzn6bPEXS$p$7MRwyKZevjbH}=RlNv& delta 19 bcmdnXzn6bPEJym=>&bT7w?#LmMz8|_QppGE diff --git a/lib/isr40.ppu b/lib/isr40.ppu index 74ddb1743399d52a3a5dafae69b27f117f76eb24..c82b5acb21202a4cce96c8e51c9c93bf844ccb0e 100644 GIT binary patch delta 19 bcmdnOzlDE7Jjbc($7MRwyKZev_hknFRD}p* delta 19 bcmdnOzlDE7JV*N5>&bT7w?#Lm`?3Q7QIQAH diff --git a/lib/isr5.ppu b/lib/isr5.ppu index 57e93f3acb4452fab669b9f8d775bf714fc0011b..3e0386cbce0c9ee699a97b668f368b59e0e7eb35 100644 GIT binary patch delta 19 bcmdnXzn6bPEXS$p$7MRwyKZevjbH}=RlNv& delta 19 bcmdnXzn6bPEJym=>&bT7w?#LmMz8|_QppGE diff --git a/lib/isr6.ppu b/lib/isr6.ppu index 9bd30e1969f1903b3b222df91088808cdbef5a86..a75d23f027abd0dc4994e956529b7f0871ba54f8 100644 GIT binary patch delta 19 bcmdnXzn6bPEXS$p$7MRwyKZevjbH}=RlNv& delta 19 bcmdnXzn6bPEJym=>&bT7w?#LmMz8|_QppGE diff --git a/lib/isr7.ppu b/lib/isr7.ppu index 74bf645fef0ae6855820ed68e1186d95e9363dd2..083e423fad32500aaecdc3160993b4c5dc6a97ad 100644 GIT binary patch delta 19 bcmdnXzn6bPEXS$p$7MRwyKZevjbH}=RlNv& delta 19 bcmdnXzn6bPEJym=>&bT7w?#LmMz8|_QppGE diff --git a/lib/isr8.ppu b/lib/isr8.ppu index 04d1b7ba2c8349c962858fc051ab59659d06d4a6..2d948be8c4efec567568ac2cca3a7dd0964a3783 100644 GIT binary patch delta 19 bcmdnXzn6bPEXS$p$7MRwyKZevjbH}=RlNv& delta 19 bcmdnXzn6bPEJym=>&bT7w?#LmMz8|_QppGE diff --git a/lib/isr9.ppu b/lib/isr9.ppu index e6808715c19223a24e4355a1ea6bfc8979795680..5978b17894b25d0ab6fdd1f2162f1d78add25206 100644 GIT binary patch delta 19 bcmdnXzn6bPEXS$p$7MRwyKZevjbH}=RlNv& delta 19 bcmdnXzn6bPEJym=>&bT7w?#LmMz8|_QppGE diff --git a/lib/isr_types.ppu b/lib/isr_types.ppu index d00461c4c015b72ddc62728b049fb6d0e2e1d292..938a2a1cba08e33b6a009cfc1d8538a42e43e732 100644 GIT binary patch delta 19 acmeC@?&qG6&T*>xahZ<vu3H=P6<7gI^#}3* delta 19 acmeC@?&qG6&XNB1da|ANZPAVS3akK30S90J diff --git a/lib/kernel.ppu b/lib/kernel.ppu index 202e80089938fb40e0c14cd33936d3f17c01c828..c14d3a6db961153223a6f5a49e3981572fed0e11 100644 GIT binary patch delta 240 zcmdlaa9=<%ARyGx*p#K2k%5`vK!6g1IR^tn+KrX}17(9|iZC!R$W2t#m)yxO7b(oh zz`)4NR$N(JlA3#}`f-_#^sZYIGe7dP6(pu-=A|=5%Fhyha3gYZ7~>j7{>{ux7a19a zCSPO{oBWzNi&0{77)v6b0MJ0T+@#FBw0s6ek;z9{<oN}GLhQLoxj-|LL1Ld-v>639 z%d=K6>Vm9il;s2Ifmp%7D8$AJ<T6NtWJLLaBx`nVVrCvl<0`g(pe<JH+eCzb;yfze Uu0ejTKJl4(nI#NB2^J1L0I+*IM*si- delta 198 zcmcaFut`8MARyGx*p#K2k%5`vK!6eh7Y75wT^^Tr;W4SJMHm<uWG5=>OGciNjbvbC zU|?isE3PaqNzF}vdp+4s`?l!B%#V|E8CNj!Z5Cs?$jB%-S%6t=@;~M*M)Ap+EQx&l zKm*uvlQQ$t@);O~C*NR^=NAA9vF9e`CZ=a5gT&ZawHf(08?ja}3QGc|7)AMjBx`nV oVrCvl`Z`-b(5!U!Z6bm|aUK<K*C0PvpZLtY%n}Bmgdv9>01<dF_y7O^ diff --git a/lib/keyboard.ppu b/lib/keyboard.ppu index 8445b8b1bc12cd4fe6e2108eb27b5a3681885633..5eaacf0e6b5c7a4b6e06eb639b640251cbc6cf7e 100644 GIT binary patch delta 19 bcmbOxK23Z=D#xkn$7MRwyKZgF)#L^MQGW;{ delta 19 bcmbOxK23Z=Do6U;>&bT7w?#MRYH|YrPKyVT diff --git a/lib/libpconsole.a b/lib/libpconsole.a index 2af4c4f992feb54d540ecc073839f3b296e9e2fd..e5ef38d8d7550c27419b259fff10ab1e915d30ab 100644 GIT binary patch delta 862 zcmdn;gL%sj<_R)vMh4~<=4Km}WH_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~Fu<bs;SW)bCWa7`D~E+Mg%7$?iA2yDKky#S_RbA#S3xPk<uYjAdho)Y8c zIP)Dag_A+fHMR<eId}5}J1KUUw>G%KZJBHU^u~P8`7ndP{Al0VaDIYO(&o6p5;z}Z z?)wmKn7NxG*<j4cAf<V+2&D~r5}Oi_!F7V9^-@u!Hy_AA$Um4azIkzuE?hmxrnmXh zaN|J%tXgs!E)U}KRxqQ;>(=~+%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>-#57PCWCeUJk10EhCd0u delta 862 zcmdn;gL%sj<_R)vhDMeK=B68!WH_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~Fu<bs;SW)bCWa7`D~E+Mg%7$?iA2yDKky#S_RbA#S3xPk<uYjAdho)Y8c zIP)Dag_A+fHMR<eId}5}J1KUUw>G%KZJBHU^u~P8`7ndP{Al0VaDIYO(&o6p5;z}Z z?)wmKn7NxG*<j4cAf<V+2&D~r5}Oi_!F7V9^-@u!Hy_AA$Um4azIkzuE?hmxrnmXh zaN|J%tXgs!E)U}KRxqQ;>(=~+%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>-#57PCWCeUJk10EZ|4Yx diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index d81ad7391ff3a0f6462eb2939b8a2c5fb9d75a42..b0894276bea954290c3f4b22579c95baf8e4e43a 100644 GIT binary patch delta 567 zcmcb1h4I=I#tAZPMh4~<=4Km}_*kLL$rr@MHv6#tVn*ic32kTMH`dG7S1>fOG==B^ zDiq&r&-0xLL!l{#Lb1(yLI*GvnxiV*d_mj@W-XBI$T)ev0smwhW|_(V3_Lg6Yq2m+ z?vyIvw?xzBAm;$n1$O)##Un_3@y)fWf@pj#h{?AZg*Km1+sDWU@)?@PZff%*X%gGa zqVK|j@TmCaYBMRu&Gjbt8Bqm)B6(7L^F&K_6hpSyEI{ImZ|-)MVw_xWA~<;g6VK$= z?rS&ay9zS$8DP4m+xahw!Asq^kqi>se8%$x3V(y|7aoMe#5Ny@3PO?Bi)%sQpG!oI TopXshnD{JE+_AYJ{TUMgNGhli delta 567 zcmcb1h4I=I#tAZPhDMeK=B68!_*kLL$rr@MHv6#tVn*ic32kTMH`dG7S1>fOG==B^ zDiq&r&-0xLL!l{#Lb1(yLI*GvnxiV*d_mj@W-XBI$T)ev0smwhW|_(V3_Lg6Yq2m+ z?vyIvw?xzBAm;$n1$O)##Un_3@y)fWf@pj#h{?AZg*Km1+sDWU@)?@PZff%*X%gGa zqVK|j@TmCaYBMRu&Gjbt8Bqm)B6(7L^F&K_6hpSyEI{ImZ|-)MVw_xWA~<;g6VK$= z?rS&ay9zS$8DP4m+xahw!Asq^kqi>se8%$x3V(y|7aoMe#5Ny@3PO?Bi)%sQpG!oI TopXshnD{JE+_AYJ{TUMgisq+d diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 900f30fb6263e25a5be8b4674b9395b4f0a1dbd4..b686df0735e38351e2faf3e8e0c2e5ed9423163e 100644 GIT binary patch delta 10319 zcmb`N3s_ZUy2sxa*g}H3$xCEjfJ`k7x1ge986boh0s@kjc|k!T74nu{PMa>4X<4>( z)|7cm)6q#pm%7R+#WeGRNoH#1QOC;B$tmop)79qx?zPt5ALx0`d5&j2kG|jU|J~m2 z_O8q3%<j<YZ$e*f<Bj(u_D<{-9qoyhOZ`7Ox>t{Q<j6IuF%dJ-%_E4S2M~4nnkeof zQG5tdPd8ETHbi~ni25ZFB@ZM@%_mAn*@5GU20c%dvw|qElBnQaqG5-LhNJGN8;Qnv zJw(M>L?si5Cd?u#L&3?_MAMEF&G?z<$tWUkZ=z?063v`JH0w`9bKWJIdz5J2WugTw zi2f8$v@nNg@g$;UFA=SHhiFv|(HeBL_7qXo6{3xB(1e3q;NS-+TRn<sM>*QwRYA1p zRic`uL<cq!9o$XyIT}BDmgqRVKM8vp-ku?%a}h-6qlmumNc2MwqD!enKjsttQb=^A z924{uamY)=p^J$dR}nWkOzi%ZxJ3l<O>Kx<cO-7>A&%}xd}}6g$KmAV+b0lrole}X zf;fIQanJe0y;l(T-ALT;7;*B~#Hn?}15hp#dUhpo-W|jRD~X5gC4Q)wc+_*mW8NYz zMqbGl;t9Km%MKDxK1Dq3JK`B|;>pIu-YDW{;Ka;$;#qKFPNtW5?gPa0#uLwn6FM4t z<2B+%7{Sst#LM3$UWvw5*Al-2XV#q|-tYtQ=BC8&!HMhs=l%a^<T~2$UiS#DqjU7_ zz5Xe@E(d!5-`4Q^T}IcCyBlX@WM$-!%o~=MpEhXZkd%!41j^0N‰EEDg!s!+Vg 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 UBea#*!*g}Lo6JRj<2^zD2Fe(<&;S4c delta 9625 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 diff --git a/lib/memorymanager.ppu b/lib/memorymanager.ppu index cd36fb2d2629323dd64039ac25d6358f8b06a848..f51fd2fb9b308541317d2d16c20b36711b4b9a06 100644 GIT binary patch delta 19 bcmbOrG(l)WKF6u*$7MRwyKZePpUD9LQG^JN delta 19 bcmbOrG(l)WK1cf7>&bT7w?#LW&*T6APLK!u diff --git a/lib/multiboot.ppu b/lib/multiboot.ppu index 641f26cccac6150d7b182cb3f4f3c43919bd2268..c97dd0c2aefbe67b49d53c2ea35b6ba5f13c357a 100644 GIT binary patch delta 19 bcmX>mc1&zSI>)K%$7MRwyKZgFzs>~!S(*tl delta 19 bcmX>mc1&zSI!F53>&bT7w?#MRU*`e<R;CD` diff --git a/lib/paging.ppu b/lib/paging.ppu new file mode 100644 index 0000000000000000000000000000000000000000..97047017e5a5e51a29e9af7c244aa97f5f60b9f4 GIT binary patch literal 2681 zcmcguO>A355Z+n)Ikscx$959hI3%gkQs|FVRUFEtwMvL0Xyi7IDyxFXi64$7*N&ba z5rGrpz>zEB#tDflH^hMp7Y<xOoGNkR%BeJzFyHLYb5emgR7~{t&CYypW_I@5b?Wu4 zYu8^*e@rT+zN?>8ck@c==Hln&M?W{SN~tA&AY=RxW%gU0ZoiYpWDDj=XgY7qSNB`P zFKMw^hB1{H9uDL1;SV4FdT@FEn_qw~!VzRGdZ2ka4O6Dj>+bAZa|_WSgq(^{g`%8{ zTpa6d8OLS3hZmKJ$INDPv$1+7W}T)31lOd36#Ozvk;<|UhQjk!Zn}WCB-Nx%oRZnp z|ChMx61#fFq=E%&PLoP%sW?ndn&euA{%EnJWK7E#7#-gy5xAogeo>reyZ#h%Jm4To zw8t>d@<T7f=Hy#e%+6kAjjmt=C#(~`$ws}^2^+1QUbxziqeHkTO@A43$mTvs%S`)R z`mqh5^dG?KCm_cPv?}If^(Y*M{g~O53wRDeWlqksqO0&^??>Gjxfxn=&_#<wsRo(> zbZZz!cLr@h<y)XGVqig?ShlXB3k5_C8+*~<z0MxPFSy9p*a<=F4IHg0Yz*Stt=+xQ z6q5HfzXmJ|)?^C7>B!c0cf;W@Y%9voxyZMHW5N6!Ke~z|6ujPz;zPzQJKS4rg<wS& z_|a9gE?0}=XuaPK-)HPahn0iRUM%S)!4`PTuk{8ytsZtw(YUYm9d<#mAX5M?fuMHK z>h=^BJgx%}3szzZ02^{|M6HKmt=*0k6+LzzKo+Eh=p(}~bX$nRZ*b@%eiU8Ca0RXX z1alVnio!4M!*gL5Zn1=2C12^MNN43dzjd|5;|RM-o?V|=Si&w`qa*Apd3Jqap$WSx zY&pfQl4sXf7M`$c2Jn;YD*Kwhw(x{q=<W!+%AQ?lBm~Sb%bQ~@dyh|9bO0ijJ;A;Q zjs*lW&=*+Cf-alg512CLONavb(Y!|Zb%re`_*L=M{$#-kzs|D7@oUE89$8$%uX(oQ z<bpB$n)TS<EH>d6?htwf9r@k*u=FR;dB3n_av1H4{EbBZMk2Y9NIn6aEN8LkoCGku zoQ6&&A9^)seXOc^)>rHtr|1?xsOi7uW1w<XpbOv(Ex>Aj)fELKdtf|BWPiiGXBppA zz`M!%sr#8Sh8DQV4GesH<{GE0fn8@9E>x=EUx=ba^QV!fW~7iC9yA5e$s<eC26U4_ zOA@Kd<Aei+yYYa3Ht5W(gj)3|EP2A^bEvZh^(LckAlB@QJQlG;F3N!x0tv;QyNuKP zcc0%A+b3c8{D|#}aMt;SJ}7#6dZz#x!gC21X%kZ`Z$sD2=qc>eKgxK$wzj^pw%zS_ z<Kts`m%rM>m$d9+>B9QPdShkV07vmC=HGreT~d7n&Cv#NmoT5f))iJp3P4ur4ynFP PPe<4_+T`IGq2s>+=nM|l literal 0 HcmV?d00001 diff --git a/lib/scheduler.ppu b/lib/scheduler.ppu index 9c8e4896864c67b42262841962aceaed3d7648db..d0d99e340b9c329d6887d89ac01a8d047bd89ade 100644 GIT binary patch delta 19 bcmX>qd{lTsI>)K%$7MRwyKZgF590&?SPclM delta 19 bcmX>qd{lTsI!F53>&bT7w?#MRhj9V`RT&5t diff --git a/lib/stub.o b/lib/stub.o index 0ec3473e1b4127741f26f452069aa4f75481cfd4..831794ec901e8a50018e8772fe89a806cd5d6cf8 100644 GIT binary patch delta 130 zcmcbh`9X7o3?pO0WLZXK)&^k)2Aj#QjLM7$HfJ&}7gS_tWIzIp3>rYbAzXxsL4UHL zu)N|AxCjG-00Sd~Bv2I(R7`+@i9um=qA)unUwlAfda6riQEGBYeo^J*bP>zR^F<5+ DDf$&O delta 99 zcmeyMc|mi73?pN}WLZXK)&gM$2HnZ7jLM7)HfJ&}7gYSgfD9NJBpDeP4B<jd3<{GC gh2;ggfTBE5Q2_=f2EomR!t9Kb+eIuU9}qDB0AH>TFaQ7m diff --git a/lib/system.o b/lib/system.o index 3870b08b961a374e6efeb45ba4c1555337799fb9..6db25fd7437dd4ffb681dbe7e9774bdf83bc7833 100644 GIT binary patch literal 17992 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 VkL7jvr*+Rm*MN7OG2TAW{Xeep&h!8P literal 17452 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 diff --git a/lib/system.ppu b/lib/system.ppu index 3bae12581d2b34347d25560e5bfeaf9dbd72326b..4126106ae2480abfdaf1e14de5ac1e8c718dae81 100644 GIT binary patch delta 2105 zcmY+Fd2G~06vyZ7(MyiCZuk7{{`M-ZP)iS}NRb|)h~>!Aa+xA^OG~@3*~NAXo+-fu zs#FkO#nN&VsQh6tL7N~NB8@SG5GBT#s>CQ!Vu)9W2LUAFo0(rn++@GM_vSNizVA0P z+n!l8R3D5+SC*E~w!8$)%*LW2_D6)Vi_ibCrO5li<yywrn|p&Z&D%lW+t>z)cizu2 z_4ER>nuzq#(@amh$o3nVMPvg;mLakOMph=WK_kl%*^rT0MRw50GDUXC$g)LtSZ4E> zOph4QC*ZJ=`9*fr$fV&h%6P-afsH23KLcdq3hTj2(R`KAYG6i%*_b;b#%rjG!5s_N zCLW9EX3eOcaV5Js%!doBNKf(Q>2sF8RuCZxWEzp2SWVfPdnRW7H}US>sm4^Qx+P3* z9~zxx>$k!f9?kQ?c|4b=!zcJ%UI0Gd=kUT;s5x}_7Uwzqa21;zLHG$@bcEnK4m*P3 z8)T!=ieP_)G-q|ZwXHGT8Bew|m;zRAbqB9HA|{g=bDRNFmKlqjKGPI4E_Ui*$4$-v zc(9K&fN#^tH2jpb2!ACl!^y4y%)w%p7v^KVONRxxk>YyXL2(pMkgme>E`Q}(x*Sfj z0((8Fb@}R4XRGpWQE)Mbk0;X=vlQ$=-R*@WR=RaaV-v;C;Z}D5w&8%=4?FNZcM$sU zYtnuAH;oLS#}kIbINzhe2sV+vh0k~ba0(Ald>T(vd=|g-_~0Y_%cDPffy`Z^v$dod zk*Bxb+u9{XpA<CyzuvyU<z5XgW6~RdE4arSh97a%8-ibOob-3RMS2r8Eg$~DTCKoj zvEU}nZ_2UYE-e5yJgEi2ftN@%yiOw_yx$iH71Eh|MMnwJ>_{S&Y;Q@W5^76|vC$WV zS=jB1z+4<8t;Tb{LRg5`d<C!sZT|fE4YY{d@Ge@!8rcv}w5bKw5cCL#G-+03ORO^< zOQscHhh6><wBmlh4jb__>1G@!-GVp#0eAtOdKk82rLI9QuF(r%H*V8|(2vLTd>F(F z`i!1oa^P2bjJ~XxzTn(Rn!C8JVOiah=4j1hb<N9GF0HL=U|`D-w-8Q<8rpFFk?r+T zl(jzA*&0vA=>6?BG4mu%bQ1yl%cPkdoo!v+3F<y?s=)7BSda1UuMoGk$`f@=7W9lN z-o=aQK-=2eI;lTd{2^hvZ+*OW^ZJe$LAR{^Six60?53MKhk-UlEPRomyhyvrpJi}b zTEW04@n;I}p;|%9%NY129ar?V3Ce#1x}@JI-@V+oOZo<7Q{Su7eY}*z(jM{+$=YiQ z;{@iuVM%{ew10wf--x7tD&N<+@4`eXM%z41`rcNh`*~@!yY|^MU9kswDZM|Vhun@g zB$iE2mn-ulmq$22G&4G}Su^A*Oj7uO!o2GuiE|YmRG7E@ki;%4`AhF1;caZ#OzG`c z)dxkj*fH9$5?LKl_>jWfyHw)o3LjROdzVRELfFOMAM8hjx3Ounq<4j?9v0OLQr#^H z+O^rTdLCg10k9t>wX90T>96F&d^Z@YC6zbx7-iO#wefU0gSqlB77>(he4Jp0jnlFc z29?rw8BPvYcxwo)5NlCDpEW!-Wie*U##q>mTf@2ct)sE0_&8Kyf4IdrLgA!H;}eZ5 W>XtUglW{u#D*0an*amzclK(G-DpMB# delta 1939 zcmZXVYiv|S6vyw`M_;y3b=l{=ckk}r+S)es$!eO0@+brgn8tzuHQ=_p!jfgTDJ{js zbbVlWRBOvA6xvb>AJ7;hXbnMQurWrAA=Vh9Mhy^Se1QfHA=nu8%*^e8@xz`w|M|^- z&bc#lXUAI3t_robuCJ+E<aiDgyE5GxR*FqU+4Ad`9g8czS+GP=loLatDtpa@Hq@4Y zmN(umux0mv;<ORzr>C8sF0Kw*%E8r$rE<7BY^hqVj##RIt5Hiixf-)nE?480%IE5+ zP?d_16Bg7sJZ34Kt4T}MPW9QZ0A`#cRiIdXc6ze%kMrW2sHMPP4i+C}ZQi=sG_^G6 za()r(fIoTH?C8|f#lz0*Y4Unmx2u|BPIIQGJ(W;k9yr<HGerHI)=<n_v8y|gjwj-h zze_y8c`e2K<^LP-J`Hg50d*7|%QM?MrTHUbh;9`=!P9OXKF1k%2)@SO-C?+lE>8%4 zz$nG5xWQxE{;*-6$FSYB;iN~i{cXedJV9{aC656G2fPLpW5^o>H!h{9VvJ%KpYa-6 z8EvU3pqUl0?8)w1Z?_Q7(YSiN=nX&v&Qf~``h7uIi48s-*5F2;+VBwhJ^Te$Q*=I% z?vB>WH`pL2U&G&SYphGMO?Zl?isOtg0Ne12&wx%W^y{z_EBqmN3fEG67Bked7YF<i zeLyB!&k~tCGs#=)Jd87b6-M!@-+)Oh3aD@r%L4|yhN}Y_yot#`5YFO0YM;ZG16tDu za<WZ)vX0v;`<S5Ew9N$b&E8}@@t*;oqFs%^7g(x>;ahB>_#JMi_!ADQCGZ=bQA=&t z?RZJmZL@a#M>Rk}LkmT6=wzuhCAg9l3(WRRCY6Y#Z(FcJjB5tmh0jy;;z^1+p4UQP z;?J51<v33_p&IM-GKk`1dMPyGZoLGS;j6j|tMI%Yga`3QJq+uxAQ*&4u$<!K*h29M z+!iz-h5f+@bm6I>3cK(^uoU|6dN2gL(QTB#erz-<vV&A5P<_+%vkvzjYUOpry5h-n zETzER#r*IeqJcgl;Mz+ucWYN-M^CDo<b00D35%1lkFYb|o9UtrTTsN|3F+O>yvcNT zVoQP!hkJgO^H-#~pP4(w`g?`>bqQZ!u!j!a{R#x;apzkE#RvN$!5ju_q6(;jz9Z?t z9IdNWKofMDXjYhCn!{{&bb&vVc?VhE9U`wGin<_Y9%5DoS>BMaekSRGIm+^e1^r4= zRI-+t<&6k@QRW?Hc~_<~F<Rylk@tJ)J;-Km?Gc}FnXvvM=^;Ty&G!m=ji}hc5u&-R zY_YPe>T<D#HzYqSIV-zDV0MiP`w@v**_8s@Xg|baj`G~rdMy;W^N0%b7&p%?Shh;I z*(kxsC1<&-1$Ie%RAQF9Mqt0pJ;8HZYgQ+68`6A?o9AxzdNLc-a}RNGDNd4dJj}0} zXd(3~N+n*4MDJw(Beh(!K1GS*edeM&8mVV7>!s_m*KF60Q?t-)+t{{l#oEoubdq+h OLHu!m(u_CEl79hpK|X*0 diff --git a/lib/util.ppu b/lib/util.ppu index 36244b36d7443689736835335ebb861e2d92de63..4187a1c436435950c1fc09ea24eb476c72af358e 100644 GIT binary patch delta 19 bcmbPaGRb5@EXS$p$7MRwyKZevT`LIyRaXet delta 19 bcmbPaGRb5@EJym=>&bT7w?#Lmu9XA;Qey~3 diff --git a/src/kernel.pas b/src/kernel.pas index 32ba8712..ffc46138 100644 --- a/src/kernel.pas +++ b/src/kernel.pas @@ -57,6 +57,14 @@ begin STI; isr32.hook(uint32(@bios_data_area.tick_update)); + {z:= 1; + while true do begin + console.writeintln(z); + pint:= kalloc(65000); + if pint = nil then while true do begin end else pint^:= 1234; + z:=z+1; + end;} + //drivers keyboard.init(keyboard_layout); diff --git a/src/paging.pas b/src/paging.pas index bc9cdbd8..a8e7294e 100644 --- a/src/paging.pas +++ b/src/paging.pas @@ -2,6 +2,32 @@ unit paging; interface +type + PPageTableEntry = ^TPageTableEntry; + + TPageTableEntry = bitpacked record + Present, Writable, UserMode, WriteThrough, + NotCacheable, Accessed, Dirty, AttrIndex, + GlobalPage: Boolean; + Avail: UBit3; + FrameAddr: UBit20; + end; + + PPageDirEntry = ^TPageDirEntry; + TPageDirEntry = bitpacked record + Present, Writable, UserMode, WriteThrough, + NotCacheable, Accessed, Reserved, PageSize, + GlobalPage: Boolean; + Avail: UBit3; + TableAddr: UBit20; + end; + + TPageDirectory = Array[1..1024] of TPageDirEntry; + PPageDirectory = ^TPageDirectory; + +Var + PageDirectory : TPageDirectory; external name '_PageDirectory'; + implementation end. \ No newline at end of file diff --git a/src/stub/stub.asm b/src/stub/stub.asm index 8b662ab5..0e8989ef 100644 --- a/src/stub/stub.asm +++ b/src/stub/stub.asm @@ -41,6 +41,8 @@ KERNEL_PAGE_NUMBER equ (KERNEL_VIRTUAL_BASE >> 22) section .data align 0x1000 +_PageDirectory equ BootPageDirectory +global _PageDirectory BootPageDirectory: dd 0x00000083 times (KERNEL_PAGE_NUMBER - 1) dd 0 diff --git a/src/system.pas b/src/system.pas index 8ae0d456..891596b0 100644 --- a/src/system.pas +++ b/src/system.pas @@ -13,6 +13,7 @@ interface const KERNEL_VIRTUAL_BASE = $C0000000; + KERNEL_PAGE_NUMBER = KERNEL_VIRTUAL_BASE SHR 22; type //internal types @@ -53,6 +54,10 @@ type Void = ^uInt32; + //Alternate Types + UBit3 = 0..(1 shl 3) - 1; + UBit20 = 0..(1 shl 20) - 1; + implementation end.