summaryrefslogtreecommitdiffhomepage
path: root/dev/Kernel/HALKit/AMD64/HalInterruptAPI.asm
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-03-23 19:13:48 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-03-23 19:15:17 +0100
commita13e1c0911c0627184bc38f18c7fdda64447b3ad (patch)
tree073a62c09bf216e85a3f310376640fa1805147f9 /dev/Kernel/HALKit/AMD64/HalInterruptAPI.asm
parent149fa096eb306d03686b3b67e813cf1a78e08cd0 (diff)
meta(kernel): Reworked repository's filesystem structure.
Removing useless parts of the project too. Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel/HALKit/AMD64/HalInterruptAPI.asm')
-rw-r--r--dev/Kernel/HALKit/AMD64/HalInterruptAPI.asm402
1 files changed, 0 insertions, 402 deletions
diff --git a/dev/Kernel/HALKit/AMD64/HalInterruptAPI.asm b/dev/Kernel/HALKit/AMD64/HalInterruptAPI.asm
deleted file mode 100644
index ffea6707..00000000
--- a/dev/Kernel/HALKit/AMD64/HalInterruptAPI.asm
+++ /dev/null
@@ -1,402 +0,0 @@
-;; /*
-;; * ---------------------------------------------------
-;; *
-;; * Copyright (C) 2024-2025, Amlal EL Mahrouss, all rights reserved.
-;; *
-;; * File: HalInterruptAPI.asm
-;; * Purpose: Interrupt API, redirect raw interrupts into their handlers.
-;; *
-;; * ---------------------------------------------------
-;; */
-
-[bits 64]
-
-%define kInterruptId 50
-
-%macro IntExp 1
-global __NE_INT_%1
-__NE_INT_%1:
- cld
-
- std
-
- o64 iret
-%endmacro
-
-%macro IntNormal 1
-global __NE_INT_%1
-__NE_INT_%1:
- cld
-
- std
-
- o64 iret
-%endmacro
-
-; This file handles the core interrupt table
-; Last edited 31/01/24
-
-global ke_handle_irq
-global kInterruptVectorTable
-
-extern idt_handle_gpf
-extern idt_handle_pf
-extern ke_io_write
-extern idt_handle_ud
-extern idt_handle_generic
-extern idt_handle_breakpoint
-
-section .text
-
-__NE_INT_0:
- cld
-
- mov al, 0x20
- out 0x20, al
-
- push rcx
- call idt_handle_generic
- pop rcx
-
- std
-
- o64 iret
-
-__NE_INT_1:
- cld
-
- mov al, 0x20
- out 0x20, al
-
- push rcx
- call idt_handle_generic
- pop rcx
-
- std
-
- o64 iret
-
-__NE_INT_2:
- cld
-
- mov al, 0x20
- out 0x20, al
-
- push rcx
- call idt_handle_generic
- pop rcx
-
- std
-
- o64 iret
-
-;; @brief Triggers a breakpoint and freeze the process. RIP is also fetched.
-__NE_INT_3:
- cld
-
- mov al, 0x20
- out 0x20, al
-
- push rcx
- mov rcx, rsp
- call idt_handle_generic
- pop rcx
-
- std
-
- o64 iret
-
-__NE_INT_4:
- cld
-
- mov al, 0x20
- out 0x20, al
-
-
- push rcx
- call idt_handle_generic
- pop rcx
-
- std
-
- o64 iret
-
-__NE_INT_5:
- cld
-
- mov al, 0x20
- out 0x20, al
-
- std
-
- o64 iret
-
-;; Invalid opcode interrupt
-__NE_INT_6:
- cld
-
- mov al, 0x20
- out 0x20, al
-
- push rcx
- call idt_handle_generic
- pop rcx
-
- std
-
- o64 iret
-
-__NE_INT_7:
- cld
-
- mov al, 0x20
- out 0x20, al
-
- push rcx
- call idt_handle_generic
- pop rcx
-
- std
-
- o64 iret
-
-;; Invalid opcode interrupt
-__NE_INT_8:
- cld
-
- mov al, 0x20
- out 0xA0, al
- out 0x20, al
-
- push rcx
- call idt_handle_generic
- pop rcx
-
- std
-
- o64 iret
-
-IntNormal 9
-IntExp 10
-IntExp 11
-
-IntExp 12
-
-__NE_INT_13:
- cld
-
- mov al, 0x20
- out 0xA0, al
- out 0x20, al
-
- push rcx
- call idt_handle_gpf
- pop rcx
-
- std
-
- o64 iret
-
-__NE_INT_14:
- cld
-
- mov al, 0x20
- out 0xA0, al
- out 0x20, al
-
- push rcx
- call idt_handle_pf
- pop rcx
-
- std
-
- o64 iret
-
-IntNormal 15
-IntNormal 16
-IntExp 17
-IntNormal 18
-IntNormal 19
-IntNormal 20
-IntNormal 21
-
-IntNormal 22
-
-IntNormal 23
-IntNormal 24
-IntNormal 25
-IntNormal 26
-IntNormal 27
-IntNormal 28
-IntNormal 29
-IntExp 30
-IntNormal 31
-
-[extern idt_handle_scheduler]
-
-__NE_INT_32:
- cld
-
- mov al, 0x20
- out 0xA0, al
- out 0x20, al
-
- push rax
- mov rcx, rsp
- call idt_handle_scheduler
- pop rax
-
- std
-
- o64 iret
-
-IntNormal 33
-
-IntNormal 34
-IntNormal 35
-IntNormal 36
-IntNormal 37
-IntNormal 38
-IntNormal 39
-IntNormal 40
-
-IntNormal 41
-
-IntNormal 42
-IntNormal 43
-IntNormal 44
-IntNormal 45
-IntNormal 46
-IntNormal 47
-IntNormal 48
-IntNormal 49
-
-[extern hal_system_call_enter]
-[extern hal_kernel_call_enter]
-
-__NE_INT_50:
- cld
-
- mov al, 0x20
- out 0xA0, al
- out 0x20, al
-
- push rax
- mov rax, hal_system_call_enter
-
- mov rcx, r8
- mov rdx, r9
-
- call rax
- pop rax
-
- std
-
- o64 iret
-
-__NE_INT_51:
- cld
-
- mov al, 0x20
- out 0xA0, al
- out 0x20, al
-
- push rax
- mov rax, hal_kernel_call_enter
-
- mov rcx, r8
- mov rdx, r9
-
- call rax
- pop rax
-
- std
-
- o64 iret
-
-IntNormal 52
-
-IntNormal 53
-IntNormal 54
-IntNormal 55
-IntNormal 56
-IntNormal 57
-IntNormal 58
-IntNormal 59
-IntNormal 60
-
-%assign i 61
-%rep 195
- IntNormal i
-%assign i i+1
-%endrep
-
-section .text
-
-[global hal_load_gdt]
-
-hal_load_gdt:
- cld
-
- lgdt [rcx]
-
- mov ax, 0x10
- mov ds, ax
- mov es, ax
- mov fs, ax
- mov gs, ax
- mov ss, ax
-
- mov rax, 0x08
- push rax
- push hal_reload_segments
-
- o64 retf
-
-extern hal_real_init
-
-hal_reload_segments:
- std
- jmp hal_real_init
- ret
-
-global hal_load_idt
-
-hal_load_idt:
- lidt [rcx]
-
- ; Master PIC initialization
- mov al, 0x11 ; Start initialization in cascade mode
- out 0x20, al ; Send initialization command to Master PIC
- out 0xA0, al ; Send initialization command to Slave PIC
-
- ; Remap the PIC to use vectors 32-39 for Master and 40-47 for Slave
- mov al, 0x20 ; Set Master PIC offset to 32
- out 0x21, al ; Send offset to Master PIC
-
- mov al, 0x28 ; Set Slave PIC offset to 40
- out 0xA1, al ; Send offset to Slave PIC
-
- ; Configure Master PIC to inform Slave PIC at IRQ2
- mov al, 0x04 ; Tell Master PIC there is a Slave PIC at IRQ2
- out 0x21, al
-
- ; Configure Slave PIC identity
- mov al, 0x02 ; Tell Slave PIC its cascade identity
- out 0xA1, al
-
- ; Set both PICs to 8086 mode
- mov al, 0x01 ; 8086 mode
- out 0x21, al
- out 0xA1, al
-
- ret
-
-section .data
-
-kInterruptVectorTable:
- %assign i 0
- %rep 256
- dq __NE_INT_%+i
- %assign i i+1
- %endrep