Remove ds from context, no need for it in x86_64, use ss instead
This commit is contained in:
parent
1b3b93d8bb
commit
4401b31440
@ -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 {
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user