summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/Makefile2
-rw-r--r--kernel/include/process.h25
-rw-r--r--kernel/include/registers.h61
-rw-r--r--kernel/src/scheduler/process.c38
-rw-r--r--kernel/src/scheduler/switch_process.S113
5 files changed, 0 insertions, 239 deletions
diff --git a/kernel/Makefile b/kernel/Makefile
index dc75b20..9417ffd 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -33,9 +33,7 @@ OBJS = \
src/mem/paging.o \
src/misc/graphics.o \
src/misc/stdbuff.o \
- src/scheduler/process.o \
src/scheduler/scheduler.o \
- src/scheduler/switch_process.o \
src/sys/syscall_asm.o \
src/sys/syscall.o \
src/sys/userspace_asm.o \
diff --git a/kernel/include/process.h b/kernel/include/process.h
deleted file mode 100644
index 7e8f59d..0000000
--- a/kernel/include/process.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef PROCESS_H
-#define PROCESS_H
-
-#include <registers.h>
-#include <libk/list.h>
-
-#define STATUS_READY 0
-#define STATUS_RUNNING 1
-#define STATUS_WAITING 2
-
-struct process_t {
- registers_t registers;
- list_t* next;
- uint32_t status;
- uint32_t pid;
- uint32_t time_using_cpu;
-};
-typedef struct process_t process_t;
-
-extern process_t process_list;
-extern process_t current_process;
-
-void create_process(uint64_t rip, uint64_t param1, uint64_t param2);
-
-#endif
diff --git a/kernel/include/registers.h b/kernel/include/registers.h
deleted file mode 100644
index 373e557..0000000
--- a/kernel/include/registers.h
+++ /dev/null
@@ -1,61 +0,0 @@
-#ifndef REGISTERS_H
-#define REGISTERS_H
-
-#include <types.h>
-
-#define RAX 0x0
-#define RBX 0x8
-#define RCX 0x10
-#define RDX 0x18
-#define RSI 0x20
-#define RDI 0x28
-#define RSP 0x30
-#define RBP 0x38
-#define R8 0x40
-#define R9 0x48
-#define R10 0x50
-#define R11 0x58
-#define R12 0x60
-#define R13 0x68
-#define R14 0x70
-#define R15 0x78
-#define RIP 0x80
-#define RFLAGS 0x88
-#define CR3 0x90
-#define CS 0x98
-#define DS 0x9c
-#define SS 0x100
-#define ES 0x104
-#define FS 0x108
-#define GS 0x10c
-
-struct registers_t {
- uint64_t rax;
- uint64_t rbx;
- uint64_t rcx;
- uint64_t rdx;
- uint64_t rsi;
- uint64_t rdi;
- uint64_t rsp;
- uint64_t rbp;
- uint64_t r8;
- uint64_t r9;
- uint64_t r10;
- uint64_t r11;
- uint64_t r12;
- uint64_t r13;
- uint64_t r14;
- uint64_t r15;
- uint64_t rip;
- uint64_t rflags;
- uint64_t cr3;
- uint16_t cs;
- uint16_t ds;
- uint16_t ss;
- uint16_t es;
- uint16_t fs;
- uint16_t gs;
-} __attribute__((packed, aligned(8)));
-typedef struct registers_t registers_t;
-
-#endif
diff --git a/kernel/src/scheduler/process.c b/kernel/src/scheduler/process.c
deleted file mode 100644
index 92c6ab3..0000000
--- a/kernel/src/scheduler/process.c
+++ /dev/null
@@ -1,38 +0,0 @@
-#include <types.h>
-#include <registers.h>
-#include <heap.h>
-#include <process.h>
-
-process_t process_list;
-process_t current_process;
-
-void create_process(uint64_t rip, uint64_t param1, uint64_t param2)
-{
- process_t* process = (process_t*)kalloc(sizeof(process_t));
- registers_t* regs = &process->registers;
- regs->rax = 0;
- regs->rbx = 0;
- regs->rcx = 0;
- regs->rdx = 0;
- regs->rsi = 0;
- regs->rdi = 0;
- regs->rsp = 0;
- regs->rbp = 0;
- regs->r8 = 0;
- regs->r9 = 0;
- regs->r10 = 0;
- regs->r11 = 0;
- regs->r12 = 0;
- regs->r13 = 0;
- regs->r14 = 0;
- regs->r15 = 0;
- regs->rflags = 0;
-
- uint64_t stack_size = 4*4096;
- regs->rsp = (uint64_t)kalloc(4*4096) + stack_size - 8;
- regs->rip = rip;
- regs->rdi = param1;
- regs->rsi = param2;
- process->status = STATUS_READY;
- process->time_using_cpu = 0;
-}
diff --git a/kernel/src/scheduler/switch_process.S b/kernel/src/scheduler/switch_process.S
deleted file mode 100644
index 7209d37..0000000
--- a/kernel/src/scheduler/switch_process.S
+++ /dev/null
@@ -1,113 +0,0 @@
-.extern current_process
-.extern schedule
-
-.text
-
-.set RAX, 0x0
-.set RBX, 0x8
-.set RCX, 0x10
-.set RDX, 0x18
-.set RSI, 0x20
-.set RDI, 0x28
-.set RSP, 0x30
-.set RBP, 0x38
-.set R8, 0x40
-.set R9, 0x48
-.set R10, 0x50
-.set R11, 0x58
-.set R12, 0x60
-.set R13, 0x68
-.set R14, 0x70
-.set R15, 0x78
-.set RIP, 0x80
-.set RFLAGS, 0x88
-.set CR3, 0x90
-.set CS, 0x98
-.set DS, 0x9c
-.set SS, 0x100
-.set ES, 0x104
-.set FS, 0x108
-.set GS, 0x10c
-
-.macro save_regs
- mov %rax, RAX(%rsp)
- mov %rbx, RBX(%rsp)
- mov %rax, RAX(%rsp)
- mov %rbx, RBX(%rsp)
- mov %rcx, RCX(%rsp)
- mov %rdx, RDX(%rsp)
- mov %rsi, RSI(%rsp)
- mov %rdi, RDI(%rsp)
-# mov %rsp, RSP(%rsp)
- mov %rbp, RBP(%rsp)
- mov %r8, R8(%rsp)
- mov %r9, R9(%rsp)
- mov %r10, R10(%rsp)
- mov %r11, R11(%rsp)
- mov %r12, R12(%rsp)
- mov %r13, R13(%rsp)
- mov %r14, R14(%rsp)
- mov %r15, R15(%rsp)
-# mov %rip, RIP(%rsp)
-
- pushfq
- pop %rax
- mov %rax, RFLAGS(%rsp)
-
-# mov %cr3, CR3(%rsp)
- mov %cs, CS(%rsp)
- mov %ds, DS(%rsp)
- mov %ss, SS(%rsp)
- mov %es, ES(%rsp)
- mov %fs, FS(%rsp)
- mov %gs, GS(%rsp)
-.endm
-
-.macro restore_regs
- mov RBX(%rsp), %rbx
- mov RAX(%rsp), %rax
- mov RBX(%rsp), %rbx
- mov RCX(%rsp), %rcx
- mov RDX(%rsp), %rdx
- mov RSI(%rsp), %rsi
- mov RDI(%rsp), %rdi
-# mov RSP(%rsp), %rsp
- mov RBP(%rsp), %rbp
- mov R8(%rsp), %r8
- mov R9(%rsp), %r9
- mov R10(%rsp), %r10
- mov R11(%rsp), %r11
- mov R12(%rsp), %r12
- mov R13(%rsp), %r13
- mov R14(%rsp), %r14
- mov R15(%rsp), %r15
-# mov RIP(%rsp), %rip
-
- mov RFLAGS(%rsp), %rax
- push %rax
- popfq
-
- mov RAX(%rsp), %rax
-
-# mov CR3(%rsp), %cr3
- mov CS(%rsp), %cs
- mov DS(%rsp), %ds
- mov SS(%rsp), %ss
- mov ES(%rsp), %es
- mov FS(%rsp), %fs
- mov GS(%rsp), %gs
-.endm
-
-
-.global switch_process
-switch_process:
- # save current process context
- mov current_process, %rsp
- save_regs
-
- # get which process is next
- call schedule
-
- # restore next process context
- mov current_process, %rsp
- restore_regs