From c84e5b55e407c8e7f15f42119cda27e46ae4d91f Mon Sep 17 00:00:00 2001 From: d0p1 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 +# 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