Remove ds from context, no need for it in x86_64, use ss instead

This commit is contained in:
apio 2022-09-21 21:03:24 +02:00
parent 1b3b93d8bb
commit 4401b31440
4 changed files with 3 additions and 14 deletions

View File

@ -4,7 +4,6 @@
struct Context struct Context
{ {
uint64_t cr2; uint64_t cr2;
uint64_t ds;
uint64_t r15, r14, r13, r12, r11, r10, r9, r8, rsi, rdi, rbp, rdx, rcx, rbx, rax; uint64_t r15, r14, r13, r12, r11, r10, r9, r8, rsi, rdi, rbp, rdx, rcx, rbx, rax;
uint64_t number; uint64_t number;
union { union {

View File

@ -6,6 +6,7 @@ struct StackTracer
StackTracer(); StackTracer();
StackTracer(uintptr_t base_pointer); StackTracer(uintptr_t base_pointer);
void trace(); void trace();
void trace_with_ip(uintptr_t ip);
private: private:
uintptr_t m_base_pointer; uintptr_t m_base_pointer;

View File

@ -62,13 +62,6 @@ asm_common:
push r14 push r14
push r15 push r15
mov r8, ds
push r8
mov r8, 0x10
mov ds, r8
mov es, r8
mov r8, cr2 mov r8, cr2
push r8 push r8
@ -84,10 +77,6 @@ _asm_interrupt_exit:
mov BYTE [__is_in_interrupt_handler], 0 mov BYTE [__is_in_interrupt_handler], 0
pop r8
mov ds, r8
mov es, r8
pop r15 pop r15
pop r14 pop r14
pop r13 pop r13

View File

@ -36,7 +36,7 @@ void Scheduler::init()
idle_task.regs.rip = (uint64_t)&idle_task_function; idle_task.regs.rip = (uint64_t)&idle_task_function;
idle_task.regs.rsp = (uint64_t)KernelMemoryManager::get_page(); idle_task.regs.rsp = (uint64_t)KernelMemoryManager::get_page();
idle_task.regs.cs = 0x08; idle_task.regs.cs = 0x08;
idle_task.regs.ds = 0x10; idle_task.regs.ss = 0x10;
asm volatile("pushfq; movq (%%rsp), %%rax; movq %%rax, %0; popfq;" : "=m"(idle_task.regs.rflags)::"%rax"); asm volatile("pushfq; movq (%%rsp), %%rax; movq %%rax, %0; popfq;" : "=m"(idle_task.regs.rflags)::"%rax");
idle_task.regs.rflags |= 0x200; idle_task.regs.rflags |= 0x200;
idle_task.task_sleep = 1000; idle_task.task_sleep = 1000;
@ -62,7 +62,7 @@ void Scheduler::add_kernel_task(void (*task)(void))
new_task->regs.rip = (uint64_t)task; new_task->regs.rip = (uint64_t)task;
new_task->regs.rsp = (uint64_t)KernelMemoryManager::get_pages(2); // 8 KB is enough for everyone, right? new_task->regs.rsp = (uint64_t)KernelMemoryManager::get_pages(2); // 8 KB is enough for everyone, right?
new_task->regs.cs = 0x08; new_task->regs.cs = 0x08;
new_task->regs.ds = 0x10; new_task->regs.ss = 0x10;
asm volatile("pushfq; movq (%%rsp), %%rax; movq %%rax, %0; popfq;" : "=m"(new_task->regs.rflags)::"%rax"); asm volatile("pushfq; movq (%%rsp), %%rax; movq %%rax, %0; popfq;" : "=m"(new_task->regs.rflags)::"%rax");
new_task->regs.rflags |= 0x200; // enable interrupts new_task->regs.rflags |= 0x200; // enable interrupts
new_task->task_sleep = 0; new_task->task_sleep = 0;