From 68c5f8388b85cc50c6561d0bbaa33cfa6a296b73 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 17 Oct 2024 00:03:19 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=BD=D0=B0=D1=87=D0=B8=D0=BD=D0=B0?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=8F=20=D0=BF=D0=BE=D0=BB=D0=BD=D0=BE=D0=B5?= =?UTF-8?q?=20=D0=B8=D0=B7=D0=BD=D0=B0=D1=81=D0=B8=D0=BB=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 06-subroutines-interruptions/fuck-system.c | 30 +++++++++++++++++++ .../low-level-asm.asm | 7 +++++ 2 files changed, 37 insertions(+) create mode 100644 06-subroutines-interruptions/fuck-system.c create mode 100644 06-subroutines-interruptions/low-level-asm.asm diff --git a/06-subroutines-interruptions/fuck-system.c b/06-subroutines-interruptions/fuck-system.c new file mode 100644 index 0000000..df8495f --- /dev/null +++ b/06-subroutines-interruptions/fuck-system.c @@ -0,0 +1,30 @@ +#include +#include +#include + +typedef struct { + uint16_t size; + uint64_t adress; +} Fuck_IDT_register; + +extern void store_idt(Fuck_IDT_register *storage); + +static int __init fuck_system(void) +{ + pr_info("start to fuck system"); + struct desc_ptr newidtr; + gate_desc *oldint, *newint; + Fuck_IDT_register idt_register; + store_idt(&idt_register); + pr_info("idt register stored"); + return 0; +} + +static void __exit unfuck_system(void) +{ + pr_info("start to unfuck system"); +} + +module_init(fuck_system); +module_exit(unfuck_system); +MODULE_LICENSE("GPL"); diff --git a/06-subroutines-interruptions/low-level-asm.asm b/06-subroutines-interruptions/low-level-asm.asm new file mode 100644 index 0000000..9a6e57a --- /dev/null +++ b/06-subroutines-interruptions/low-level-asm.asm @@ -0,0 +1,7 @@ +global store_idt + +section .text + +store_idt: ; rdi - указатель + sidt [rdi] + ret