From abf0b2bdc1064d819c3037097b0a2bf1877738e3 Mon Sep 17 00:00:00 2001 From: c0repwn3r Date: Mon, 9 May 2022 10:24:54 -0400 Subject: [PATCH] Obliterate interrupt code for rewriting --- bin/kernel.bin | Bin 4256 -> 4256 bytes kernel.elf | Bin 0 -> 21560 bytes obj/kernel/platform/interrupts/idt.o | Bin 3084 -> 3084 bytes obj/kernel/platform/interrupts/int.o | Bin 1536 -> 1600 bytes os-image.bin | Bin 4768 -> 4768 bytes src/kernel/kernel.c | 14 -- src/kernel/platform/interrupts/idt.c | 20 -- src/kernel/platform/interrupts/idt.h | 27 --- src/kernel/platform/interrupts/int.asm | 286 ------------------------- src/kernel/platform/interrupts/isr.c | 89 -------- src/kernel/platform/interrupts/isr.h | 48 ----- 11 files changed, 484 deletions(-) create mode 100755 kernel.elf delete mode 100644 src/kernel/platform/interrupts/idt.c delete mode 100644 src/kernel/platform/interrupts/idt.h delete mode 100644 src/kernel/platform/interrupts/int.asm delete mode 100644 src/kernel/platform/interrupts/isr.c delete mode 100644 src/kernel/platform/interrupts/isr.h diff --git a/bin/kernel.bin b/bin/kernel.bin index 287711404c2652281636f916fc59be1473700b78..c74729f8b179e5c4c6638a81686ea93178e85210 100755 GIT binary patch delta 1316 zcmb8uO-K}B7zgl~ot<@eU3J&b)&20R=+Fm2Se-)ZkV%Klvce!Nq--D$A%q}|AxKn8 zH65~$M4|{%gh)2(VCX@_p+gc9eRz`RWut>&kYC&L&OA>ZItBaR=l}k8W@njscer}E zdVI~R&RFZ-q&jcK^kn37Tu~skna%c2hkJj7+P_+jdQx4nuIRPun$@o-Jvj+$RBtuo z2|Vz)dmwz26OXQ!czNUR*`0EIW@|ko*GIS3JCe9Q;I5%cRTTLpMU3!~!&-dFLjLGx-DMNu9S?AK}VI~zih@LZf;2hBylLie$ubI41NA!+KhZ>?O zCLa`JP4|+sY&o#*-j(z`lOF`p7p4GwB3fb!!W7X@rd${&`o$E2A)-x}%#@J_x5#|> z_?&x@57&wEnF^qdD9RLu6GSyk5jaG&i>VNH676Ryf+$hF$yN+HStC;kKgaYbrc(Is zKFIWWrZSi#YG;bV8=`AWK&?7$tq1n0v)10=c6>h_Ts3X2)z&WES+KPf&U9F@wEU~ABYx4_oU z{`<)VTkDNkz8*~d1@76mRd|qQj3cTY6B8K`3}HqwZ~s54@&}a|eJcO} delta 1268 zcmb8uPe>F|90%~3-5uRsS9jOHtGhdD;>n;WDuO7YLly;FLPilNl-5K+2kB5W#a_yE zQRh&H{z#FBz_7ZE2P;sbgNsCeFgoa=;P;q7C^|U0ZNKOIet8b|yYKrxyf?$lz8!5I zZJt;Os6*CjKv(ZsNllMGN+}9t{uGPZnOOEmTIh^vEX#NNWc-Mi$xbA3J}=lj>^OLD%$n?sYTDDom@I^s_c^FAp_DT|)W z=6&*`N#AGl}Uw*L|G;uoFwXJ@W642}>9ra0^-`o&ZUZA1m8Do7BOns^Y_UVk-cWO1e%{vGWkQ!Olb zKcwBtR0p#}o0t+XNwkxx9>$3FF*SfyC?1tZ)jrIYgzL1dlPLukh`O25aDwPOlgxZ*q${fZO=M$9dMBoe8eYxrSmW z&PO?@PF@Z^=dB$4&TBaY99s^W^IQ%k&Qm#*I*(l==sb`;kZj@Bqp+QE`b{O!QKVi&NApMF+Jiae!L2*h8&G$dfIvQY+f1)rn?m2~kI_ zUX)X75PsRV;FhFV#z&T$Q(}o)T70Lbi?7rg#d~bZOFPo;w-%#Kn8Zk|$;{wCxf|1q pxrVug8O1!qOkrj*UogKh1x&nAQPP<0n7x<|%o$7{Cj0+UmA@B=SsDNU diff --git a/kernel.elf b/kernel.elf new file mode 100755 index 0000000000000000000000000000000000000000..aaa10e149b963691be5a04ee36a718ec9a4a0b27 GIT binary patch literal 21560 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 literal 0 HcmV?d00001 diff --git a/obj/kernel/platform/interrupts/idt.o b/obj/kernel/platform/interrupts/idt.o index 3237090596397b9a30c956ef82e2dc15c0aee6e2..19c16469e678213f8bff0feceae0e64c2aee7f18 100644 GIT binary patch delta 14 VcmeB?=#kjq$;2qR*^B8ACjcPc1SkLi delta 14 VcmeB?=#kjq$;2qV*^B8ACjcPo1S$Xk diff --git a/obj/kernel/platform/interrupts/int.o b/obj/kernel/platform/interrupts/int.o index d09d14e2411dd2580acaa7067df44906ed456286..83d980db18c095d4e6720c8dc2d2ba6743e38163 100644 GIT binary patch literal 1600 zcmb7@O-K}B7{}jr)^+W});`s~!-G()JENK1Bq~TcNJK@1wreBnw7bg82o*s=;mJHi zgb+kX1Vw}==@22&A%dw04-pZb!iVWlp29?Xo@d`-pXk)U`~H8wcjo`jFgttg$nm4G zSWHDnOc|zyrA8mr?BHWE!iz7NR_@GG?>e4l|CwX9;4~&7aPl3^c`8hKmtA{?ctfvdRpqLT!lQ#rNZFs*_d=W001xdu*fu7z&SIyl6soORHtDFtaw_0X(o zJv3?B04YryA)#p#EG^Uhm9rTZG;M)-O%3o>QzOi3YJ#_#w!)02Z7{8AJ3Q62112@? zgb5^k)#W4Y+n0Qm_VS+Z`q>=P`P1N`+qu-Yn%ZwjY#W5TZ^-xWTJ zd|x9^rH7`-IcIJA{8n?-IU%-YxtW`bpu-=)J;~=k~W=wB3?jXdNzO z{edC3*g9D9ZPy(c_C3OM)+?$(&+W@+OBV{Z%iKRyEDn|WJbxrdp2_fR@@(Bw3ns)4z0ktFL6nH1aO;0{I+I3;PBlXk#*O0odMSETGqq0KuF>!?Qi*Hk zlU#+gVZ?Af9CT(4hI!r$7GvQdSPQWZT#gaemtrBxAe5y&bS8Oc&&YIJ&tzQWr}Gc< zGx^!s-}CeHM?y;tKPmh5DsY4&)D*RddO@v7J*5^^52(e|B(-97hgyl6pjN8J1E)-l z5tplLfwM@B2F_x2IdGP!OMz3Nh687*JcHZOmSys!rno$=sZzFUs*;B^EtmT=t&rO_ zt(2{rR>?+9)v`|0YFVwRMpkHABcqyX<)^A7kAW{3eiMAf@Con@!*7Gf4ZjP%W%zyYJ;NV^9~u4({M_)D z;5UX(f!`bc7Ay^)0e?6ABlwTupTMR1BcS*34PI&Z4|uKNbMSh@h39rBPNdyjI+Ga4 zr2L+KH=F3o`Dxc39PmBDrj(ZzeV*IVo5~%_q+RCj{%p2C*WvktUF6NpJX<{5JSTZ> z;klLPO+0Vrc?-{5X|_0Pan|Cj#aWB97H2KaTAZ~wYjM`*tj$@Qvo>dK&f1){Icsy) W=B&-xBxjQr-pE2#0gLF*OxItr1wo|% diff --git a/os-image.bin b/os-image.bin index de78a72c2d7239f4a4746ffe17fee39fd01867bc..218db708d6c841564aeda1b6a80853549a25fd5c 100644 GIT binary patch delta 1316 zcmb8uO-K}B7zgl~9d~DS*LBy=)%{R3>Cgv3Se-)ZkS!fH`@|qDq--D$A%q}|AxKn8 zH65~$M4|{%gh)2(VCX@_p+gc9eRz`RWut>&kYC&L&OA>ZItBaR=l}k8W@njscesAI zetgZR&RFZdq&jcK^kn37Tu~ssnalM~hkJhn+rL^VJ*lo(SM)k{&Fa^a9z9`=>aAux zfd?LQ4}_0$;?a!~FK_%kyHl>uY^`VH`pDLLdlJ|C-8IyxiXy+{u*78-ZI6@_QWjmA zvpw?VmELCE^ZzynWAZ$I+ECy|&bf4Em`Q~WqUTH=I7c+bq(KwWYorT~l+{bCBj5YeVfX4)u(TVy_b ze9pZH!F8e#QxUWgMVZ2IoT!#50tbn9G8MxPqJ2yy5G86f*-F7nmSQU7=a@OkR1V+W z2bnp~Q~`5D?MzX4Lv)R)5}pxtGgX1Lk!zM)HPgoygC08UE>j$?5_8T8Ri#D-}L! zMwyU1TmF`Eu}rN(0JW(2My*oJQ>zlQ)M8?iT3k#}ONf`$l468fwRni_RZpl%yI)*m x-o$_YAm#~X0`nfTfLX$F|90%~3U3X`7SKamR>h6w~?8%@gDuO7YLly;FLPilNl-5K+2kB5W#a_yE zQRh&H{z#FBz_7ZE2P;sdgNsCeFgoa=;P;q7C^|U0ZNKOIet8b|yYKrxyf?$lz8y)A zq{ml+>Y%k6)Ybb|Lepc9lZpbFKgD8pI-30vIrr2$r0MFUbzW;xr>p@@_su1(F|E`5 zCKn#|7QzQP;_6Tev8V8F_ij1wSf3Bd`GNKMlAQ1K=FqGvio8fzNBrqw-X|p?Wzmz_ zyia}t(l=Q{p=Gl-A@_wch5|Q>Yqz$qF{yBgD9hx7Q$&4CerO{aVk&{{ME95iu#xBy zQxGbPrgzIxHVsz2w_=Ymg+LI!WGaQvL=#M9Fh%s5DGcL8Q%n(fK=jTdGh>uPA6cH4 zRlpUZPfV3?hG>B)3P*_qQw;VH{bH(uR-yt^HN=TD6A!}L>#uS2~>GgBNUh;}hGz$npvrbe&|#bffQ+DF(DaD$e0FeTw4Q5RDRP7+;U()nQ8 zz1DoVMeVm%!`swhYfB`J-^U}a+1cGcpXs)vN^U;)Hn*4qxPuRTf@fXX>CnoYYbb`| ze3XOg^-pHZEvE>kOUdSQnJd=awJaLVX^HBCu=dNp%Im50Ib_QG{;@onL zawqE=W`($l2T-o56ql(*MGv)@I8Ciev{S1V2dUMFz0_)jJlXOpb)uD8z1To4F6yZ@ zh;nL;!Y|ua+>#K>_{ef|QY=wRiSN{O@s(PWc#lnaWmmNMt;JX~CO%x%Y-aGE+=c1E pT*utTj9{K)CNZ;^FPPt$0w&g^C@IVi%sxyz<}9Wcll}jw%3qz