From c84e5b55e407c8e7f15f42119cda27e46ae4d91f Mon Sep 17 00:00:00 2001
From: d0p1 <contact@d0p1.eu>
Date: Sun, 18 Aug 2024 14:19:28 +0200
Subject: [PATCH] chore: sync repo

---
 include/elf.h          | 15 +++++++++++++++
 kernel/proc.inc        | 15 +++++++++++++++
 kernel/sched.inc       |  5 +++++
 kernel/sys/process.inc | 19 ++++++++++++++++---
 4 files changed, 51 insertions(+), 3 deletions(-)
 create mode 100644 kernel/sched.inc

diff --git a/include/elf.h b/include/elf.h
index a948a16..bce1a7e 100644
--- a/include/elf.h
+++ b/include/elf.h
@@ -3,6 +3,21 @@
 
 # include <stdint.h>
 
+# define ELF_MAG0 0x7F
+# define ELF_MAG1 0x45
+# define ELF_MAG2 0x4C
+# define ELF_MAG3 0x46
+
+# define EI_NIDENT 16
+
+struct elf_header 
+{
+	uint8_t e_ident[EI_NIDENT];
+	uint16_t e_type;
+	uint16_t e_machine;
+	uint32_t e_version;
+};
+
 /* TODO */
 
 #endif /* !ELF_H */
diff --git a/kernel/proc.inc b/kernel/proc.inc
index 9e92912..38f91d4 100644
--- a/kernel/proc.inc
+++ b/kernel/proc.inc
@@ -32,6 +32,21 @@ proc_alloc:
 	pop eax
 	ret
 
+context_switch:
+	mov ax, 0x23
+	mov ds, ax
+	mov es, ax
+	mov fs, ax
+	mov gs, ax
+
+	mov eax, esp
+	push 0x23
+	push eax
+	pushf
+	push 0x1b
+	; push addr
+	iret
+
 uNextpid dd 1
 uProcLock dd 0
 pCurrentProc dd 0
diff --git a/kernel/sched.inc b/kernel/sched.inc
new file mode 100644
index 0000000..6e4dc20
--- /dev/null
+++ b/kernel/sched.inc
@@ -0,0 +1,5 @@
+	;; File: shed.inc
+
+	;; Function: schedule
+schedule:
+	ret
diff --git a/kernel/sys/process.inc b/kernel/sys/process.inc
index 89394a6..f273846 100644
--- a/kernel/sys/process.inc
+++ b/kernel/sys/process.inc
@@ -1,9 +1,22 @@
 struc Context {
-	.edi dd ?
-	.esi dd ?
+	.gs  dw ?
+	.fs  dw ?
+	.es  dw ?
+	.ds  dw ?
+	.ss  dw ?
+
+	.eax dd ?
 	.ebx dd ?
+	.ecx dd ?
+	.edx dd ?
+	.esi dd ?
+	.edi dd ?
 	.ebp dd ?
-	.eip dd ?
+
+	.error  dd ?
+	.eip    dd ?
+	.cs     dd ?
+	.eflags dd ?
 }
 DEFN Context