From 3a63d67c42e2d71efafb8a30f08758bf0a180c39 Mon Sep 17 00:00:00 2001 From: Aleksa Vuckovic Date: Tue, 24 Jan 2023 16:49:39 +0100 Subject: removing switch_process.c & registers.c --- kernel/src/scheduler/process.c | 38 ------------ kernel/src/scheduler/switch_process.S | 113 ---------------------------------- 2 files changed, 151 deletions(-) delete mode 100644 kernel/src/scheduler/process.c delete mode 100644 kernel/src/scheduler/switch_process.S (limited to 'kernel/src/scheduler') 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 -#include -#include -#include - -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 -- cgit v1.2.3