diff --git a/kernel/arch/i386/Thread.S b/kernel/arch/i386/Thread.S index 30e8811e..d0b6a04f 100644 --- a/kernel/arch/i386/Thread.S +++ b/kernel/arch/i386/Thread.S @@ -4,44 +4,17 @@ read_ip: popl %eax jmp *%eax -exit_thread_trampoline: - addl $4, %esp - pushl (%esp) - ret - # void start_thread(uint32_t sp, uint32_t ip) .global start_thread start_thread: - movl 8(%esp), %ecx - movl 4(%esp), %esp - movl $0, %ebp - pushl $exit_thread_trampoline - sti - jmp *%ecx + ud2 # void continue_thread(uint32_t sp, uint32_t ip) .global continue_thread continue_thread: - movl 8(%esp), %ecx - movl 4(%esp), %esp - movl $0, %eax - jmp *%ecx + ud2 -# void thread_jump_userspace(uint32_t sp, uint32_t ip) -.global thread_jump_userspace -thread_jump_userspace: - movl $0x23, %eax - movw %ax, %ds - movw %ax, %es - movw %ax, %fs - movw %ax, %gs - - movl 8(%esp), %ecx - movl 4(%esp), %esp - - pushl $0x23 - pushl %esp - pushfl - pushl $0x1B - pushl %ecx - iret +# void thread_userspace_trampoline(uint32_t sp, uint32_t ip, int argc, char** argv, char** envp) +.global thread_userspace_trampoline +thread_userspace_trampoline: + ud2 diff --git a/kernel/arch/x86_64/Thread.S b/kernel/arch/x86_64/Thread.S index 62973ada..de1e59ab 100644 --- a/kernel/arch/x86_64/Thread.S +++ b/kernel/arch/x86_64/Thread.S @@ -1,4 +1,4 @@ -# uint64_t read_() +# uint64_t read_ip() .global read_ip read_ip: popq %rax