From 1b3503bef6cfc82e94e7a14dfb63c5696a7ac910 Mon Sep 17 00:00:00 2001 From: c0repwn3r Date: Sat, 14 May 2022 20:28:50 -0400 Subject: [PATCH] Interrupts are (for the most part) working --- bin/shade.bin | Bin 22504 -> 22504 bytes bin/shade.iso | Bin 26603520 -> 26603520 bytes include/shade/platform/interrupts/isr.h | 58 ++++++++++++++++-------- src/kernel/platform/interrupts/int.asm | 1 + src/kernel/platform/interrupts/isr.c | 5 +- src/kernel/platform/ports.c | 2 + 6 files changed, 43 insertions(+), 23 deletions(-) diff --git a/bin/shade.bin b/bin/shade.bin index 3d2c531911cb5ef9092a5c961e4e199a5273ab53..117886589ed94d1ebcb39bd1fa79482fb6fd145f 100755 GIT binary patch delta 2122 zcmY+FZERCz6vv69sV$0~a@e8@vusv5;)uik!QDu10TvW1Ri8LyN)h}M_J1|tfN=$+Q?bPX z!w#q%(&d1UapyZ0FXJ7n91^wTd5kNW@^07~jA}ni*dM%4jzcLJl>_j1@Bz6ULi&99ut%B`(=c~!RABl3goHQnkG5Z!Rc45t#7Qe8D zW)bXt*XCo^XBZYI6!=hqeEhBdij!P@9`Dg@HLs|etEy%bOzTaZhyRZsR(MX~rMSzx z>c@rHeOwwY7jE*d@)(9UT?4hnd6iQ&YkuD3k<~Bz!tdbK!I#ZZ`I|Y_{FTi8j{C0#}uCG8-6!q%KfkV+ zSVca!9s5s`&uz$l7TVSZV0x`v=Z0kRB2|Q-Ara8IJ(<2ubQ#2uaqj@~|*@lYAZ?_IH!d!^D1pd>$_L z_mfYHwhyYI?1Cx9&98Cpuo<*iV5Dmc;Ql3nv7l}roAsx_pPMO{!8iN>8o?51N z;!9pVfL_><4#e*4Yv6eT^1ISVnTA5NzW+Kn36oY^D~K`9f_&eg+TndKO? zbQR~sHN&*sC2LvL@C?Yx;KjclQazMwhB_26Wkvc>bDkTRKkoP5 z@8_I*`|dj@jeSzuC*>)B)s{1>gcwS!6qo&>scG}e!nb8Y*hkUKhlCJ?i)#6v8*@{@ zpw(GrYVt6gU-xo&5M%OnDq0Qpi?B7i-snK{okXcHuB;YkaU&n`g4)pe99P0NRJH@g z)N+Fd_Tp?PvFM&!ubA*y+F`cKoFjhLc*7=SdE+)rC^%WO9=SsiTnYEDI_-fKoaLpL z@v#TyJ>VSjh6gU-EHsrU;f*~+^SaP36Oe%MzX*D5p^t!|JjP^^y2)9^?2-Es^z z>UGTqp5{H=7@llDk50jv_2CSktoWnfJnLTR{qUULY2>D*={tT76MdiJm>NDTN~KcD zykyR}SJ~miEiTrFg?;321jBE-e8wKeW#N(nIR%Ci`~OQ$adru>?53O@D(5$q^O&0h z3wqTvv$qB{sG#dAsKyOC@IM=Wcx%qJWy}$GV$K52hJ3R#LgbcxgB1l$ncpm1FRTy9 zvQVrW25aJS%9^Y>BaQNkFy4|7m85G)b0h(Pr93QKWUcqHPRgE_LTWc%KEAH&#>ihS&;G}SZr;v>f&E%8$(#BqH9g~E$xxY zRb{JXMY&&WKua~_I0V{a@*`-(5ugXh5g5SnT`+Mx1QR$;!1=bA)^HVmZL5`ELtt}E zwn8J0ozR2hOV+^Vqaou|(0y?A`qgI%cNanmE(x`AKG@#M=Mr&EA%f&{$*{kUd@dpO z>&d5*+R47SmjKrogDvE9&9VP5`CNnSXUOk>E00EXu1Ka&6U{&*8P&NynZ8bR7jz|~ zU?;-?AZGxw7*F-e;o=z4gD{Sii_o=$33|v9Vt;uwr=x&Il zqdGS#(|?F&p$jRuEz`C5&p_>*gKRpgx-Q+Uza4fvX&VJSfHAjY%mmD(N3=~r*wg!@ z{0@q}&01v$uJ<;{%TV7pg5zXgQlDP!X4g=5C;lu@*;$BWl3G;|c4nI7UtngM@rS_| fIPQR}nSEMFT90pirCh6uz=iD(%33SX|AYJ&sS~K) diff --git a/bin/shade.iso b/bin/shade.iso index c0efe351fc2e40090e768863be6ec0ad25ea3d98..90b35203518d162fa4ff042ce856a0a2fd6e682a 100644 GIT binary patch delta 62647 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 diff --git a/include/shade/platform/interrupts/isr.h b/include/shade/platform/interrupts/isr.h index 1f341d8..b8309fb 100644 --- a/include/shade/platform/interrupts/isr.h +++ b/include/shade/platform/interrupts/isr.h @@ -9,33 +9,53 @@ static int err_count = 0; typedef struct { struct { - uint64_t cr4; - uint64_t cr3; - uint64_t cr2; - uint64_t cr0; - } control_registers; + uint64_t resv0; + uint64_t resv1; + uint64_t resv2; + uint64_t resv3; + } broken; struct { - uint64_t rdi; - uint64_t rsi; - uint64_t rdx; - uint64_t rcx; - uint64_t rbx; - uint64_t rax; - } general_registers; + uint64_t resv0; + uint64_t resv1; + uint64_t resv2; + uint64_t resv3; + uint64_t resv4; + uint64_t resv5; + } broken_2; struct { - uint64_t rbp; - uint64_t vector; + uint64_t resv0; uint64_t error_code; - uint64_t rip; - uint64_t cs; - uint64_t rflags; - uint64_t rsp; - uint64_t dss; + uint64_t resv1; + uint64_t vector; + uint64_t resv2; + uint64_t resv3; + uint64_t resv4; + uint64_t resv5; } base_frame; } isr_xframe_t; +/* +List of pushed things in order: +error_code +vector +rbp +rax +rbx +rcx +rdx +rsi +rdi +cr0 +cr2 +cr3 +cr4 +ds +0 + +*/ + __attribute__((noreturn)) void exception_handler(isr_xframe_t frame); diff --git a/src/kernel/platform/interrupts/int.asm b/src/kernel/platform/interrupts/int.asm index e7485c8..624dc1e 100644 --- a/src/kernel/platform/interrupts/int.asm +++ b/src/kernel/platform/interrupts/int.asm @@ -74,6 +74,7 @@ isr_xframe_assembler: mov ss, ax lea rdi, [rsp + 0x10] + call exception_handler pop rax diff --git a/src/kernel/platform/interrupts/isr.c b/src/kernel/platform/interrupts/isr.c index 0b26405..c6517ce 100644 --- a/src/kernel/platform/interrupts/isr.c +++ b/src/kernel/platform/interrupts/isr.c @@ -2,7 +2,6 @@ #include void exception_handler(isr_xframe_t frame) { - err_count++; char s[256]; itoa(err_count, s); print_str(" "); @@ -10,13 +9,11 @@ void exception_handler(isr_xframe_t frame) { print_str(": cpu: check_exception "); itoa(frame.base_frame.vector, s); print_str(s); - print_str(" @ "); - itoa(frame.base_frame.rip, s); - print_str(s); print_str(" err_code => "); itoa(frame.base_frame.error_code, s); print_str(s); print_str("\n"); + err_count++; if (err_count > ERR_MAX) { print_str("cpu: ierr hit err_max, halt"); __asm__ __volatile__("cli; hlt"); diff --git a/src/kernel/platform/ports.c b/src/kernel/platform/ports.c index 9e061fe..92bc592 100644 --- a/src/kernel/platform/ports.c +++ b/src/kernel/platform/ports.c @@ -1,3 +1,5 @@ +#include + /* * Read 1 byte from specified port */