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
{
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 number;
union {

View File

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

View File

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

View File

@ -36,7 +36,7 @@ void Scheduler::init()
idle_task.regs.rip = (uint64_t)&idle_task_function;
idle_task.regs.rsp = (uint64_t)KernelMemoryManager::get_page();
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");
idle_task.regs.rflags |= 0x200;
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.rsp = (uint64_t)KernelMemoryManager::get_pages(2); // 8 KB is enough for everyone, right?
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");
new_task->regs.rflags |= 0x200; // enable interrupts
new_task->task_sleep = 0;