Browse Source

Get rid of exception_return

coderain 5 years ago
parent
commit
fce977c0d1
2 changed files with 2 additions and 19 deletions
  1. 1 2
      kernel/src/exception.c
  2. 1 17
      kernel/src/helpers.asm

+ 1 - 2
kernel/src/exception.c

@@ -75,8 +75,7 @@ static void raise_exception_internal(thread_t *thread, processor_mode_t mode, ex
         if (thread->kernel_handler.eip)
         {
             thread->kernel_handler.eax = 1;
-            thread->in_kernel--;
-            exception_return(thread->kernel_handler);
+            memcpy(exception_regs, &thread->kernel_handler, sizeof(registers_t));
         }
         else
         {

+ 1 - 17
kernel/src/helpers.asm

@@ -23,7 +23,6 @@ bits 32
 
 global init_cpu_gdt
 global vm86_start
-global exception_return
 global save_kernel_handler
 global syscall_function
 global reschedule
@@ -85,21 +84,6 @@ vm86_start:             pushfd
                         popad
                         iret
 
-;********************************************************************************
-; void exception_return(register_t regs)
-;********************************************************************************
-exception_return:       lea esi, [esp + 0x04]
-                        mov edi, dword [esp + 0x14]
-                        sub edi, 13 * 4
-                        mov esp, edi
-                        mov ecx, 13
-                        cld
-                        rep movsd
-                        add esp, 4
-                        popad
-                        add esp, 4
-                        iret
-
 ;********************************************************************************
 ; void save_kernel_handler(exception_handler_t *old_handler)
 ;********************************************************************************
@@ -151,7 +135,7 @@ reschedule:             push cs
                         cli
                         pop eax
                         mov dword [esp + 44], eax
-                        add dword [esp + 12], 16
+                        add dword [esp + 12], 20
                         push ds
                         push esp
                         call scheduler