diff --git a/src/kernel/cpu.h b/src/kernel/cpu.h index fe51896..9510e04 100644 --- a/src/kernel/cpu.h +++ b/src/kernel/cpu.h @@ -4,7 +4,6 @@ struct cpu_state { - uint64_t ds; uint64_t r15, r14, r13, r12, r11, r10, r9, r8; uint64_t rdi, rsi, rbp, rbx, rdx, rcx, rax; uint64_t interrupt, errorcode; diff --git a/src/kernel/debug.cpp b/src/kernel/debug.cpp index c6bd72b..71dbc29 100644 --- a/src/kernel/debug.cpp +++ b/src/kernel/debug.cpp @@ -34,7 +34,6 @@ print_regs(const cpu_state ®s) print_reg("sp0", tss_get_stack(0)); cons->puts("\n"); - print_reg(" ds", regs.ds); print_reg(" cs", regs.cs); print_reg(" ss", regs.ss); diff --git a/src/kernel/push_all.inc b/src/kernel/push_all.inc index 57cd945..35c5fc4 100644 --- a/src/kernel/push_all.inc +++ b/src/kernel/push_all.inc @@ -1,32 +1,31 @@ %macro push_all_and_segments 0 - push rax - push rcx - push rdx - push rbx - push rbp - push rsi - push rdi + ; ss ; rsp + a8 + ; rsp ; rsp + a0 + ; rflags ; rsp + 98 + ; cs ; rsp + 90 + ; rip ; rsp + 88 + ; error ; rsp + 80 + ; vector ; rsp + 78 - push r8 - push r9 - push r10 - push r11 - push r12 - push r13 - push r14 - push r15 + push rax ; rsp + 70 + push rcx ; rsp + 68 + push rdx ; rsp + 60 + push rbx ; rsp + 58 + push rbp ; rsp + 50 + push rsi ; rsp + 48 + push rdi ; rsp + 40 - mov ax, ds - push rax + push r8 ; rsp + 38 + push r9 ; rsp + 30 + push r10 ; rsp + 28 + push r11 ; rsp + 20 + push r12 ; rsp + 18 + push r13 ; rsp + 10 + push r14 ; rsp + 08 + push r15 ; rsp + 00 %endmacro %macro pop_all_and_segments 0 - pop rax - mov ds, ax - mov es, ax - mov fs, ax - mov gs, ax - pop r15 pop r14 pop r13 diff --git a/src/kernel/scheduler.cpp b/src/kernel/scheduler.cpp index 37ab1af..5dae5a8 100644 --- a/src/kernel/scheduler.cpp +++ b/src/kernel/scheduler.cpp @@ -141,7 +141,7 @@ scheduler::load_process(const char *name, const void *data, size_t size) // Highest state in the stack is the process' kernel stack for the loader // to iret to: - state->ds = state->ss = ss; + state->ss = ss; state->cs = cs; state->rflags = rflags_int; state->rip = 0; // to be filled by the loader @@ -151,7 +151,7 @@ scheduler::load_process(const char *name, const void *data, size_t size) // iret to this which will kick off the loading: cpu_state *loader_state = reinterpret_cast(sp0) - 2; - loader_state->ds = loader_state->ss = kss; + loader_state->ss = kss; loader_state->cs = kcs; loader_state->rflags = rflags_noint; loader_state->rip = reinterpret_cast(ramdisk_process_loader);