Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/amd64/src/userspace.c

    r3fcea34 r5a5269d  
    3939#include <stdint.h>
    4040#include <arch.h>
     41#include <abi/proc/uarg.h>
    4142#include <mm/as.h>
    42 
    43 uintptr_t arch_get_initial_sp(uintptr_t stack_base, uintptr_t stack_size)
    44 {
    45         return stack_base + stack_size;
    46 }
    4743
    4844/** Enter userspace
     
    5147 *
    5248 */
    53 void userspace(uintptr_t pc, uintptr_t sp)
     49void userspace(uspace_arg_t *kernel_uarg)
    5450{
    5551        uint64_t rflags = read_rflags();
     
    6460            "pushq %[utext_des]\n"
    6561            "pushq %[entry]\n"
     62            "movq %[uarg], %%rax\n"
    6663
    6764            /* %rdi is defined to hold pcb_ptr - set it to 0 */
     
    6966            "iretq\n"
    7067            :: [udata_des] "i" (GDT_SELECTOR(UDATA_DES) | PL_USER),
    71               [stack_top] "r" (sp),
     68              [stack_top] "r" (kernel_uarg->uspace_stack +
     69              kernel_uarg->uspace_stack_size),
    7270              [rflags] "r" (rflags),
    7371              [utext_des] "i" (GDT_SELECTOR(UTEXT_DES) | PL_USER),
    74               [entry] "r" (pc)
     72              [entry] "r" (kernel_uarg->uspace_entry),
     73              [uarg] "r" (kernel_uarg->uspace_uarg)
     74            : "rax"
    7575        );
    7676
Note: See TracChangeset for help on using the changeset viewer.