Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/arm64/src/arm64.c

    r84176f3 rdb17889  
    156156
    157157        /* Set program entry. */
    158         ELR_EL1_write((uint64_t) kernel_uarg->uspace_entry);
     158        ELR_EL1_write(kernel_uarg->uspace_entry);
    159159
    160160        /* Set user stack. */
    161         SP_EL0_write(((uint64_t) kernel_uarg->uspace_stack +
    162             kernel_uarg->uspace_stack_size));
     161        SP_EL0_write(kernel_uarg->uspace_stack +
     162            kernel_uarg->uspace_stack_size);
    163163
    164164        /* Clear Thread ID register. */
     
    167167        asm volatile (
    168168            /*
    169              * Clear all general-purpose registers, except x0 that holds an
    170              * argument for the user space.
     169             * Reset the kernel stack to its base value.
     170             *
     171             * Clear all general-purpose registers,
     172             * except x0 that holds an argument for
     173             * the user space.
    171174             */
     175            "mov sp, %[kstack]\n"
    172176            "mov x0, %[uspace_uarg]\n"
    173177            "mov x1, #0\n"
     
    202206            "mov x30, #0\n"
    203207            "eret\n"
    204             :: [uspace_uarg] "r" (kernel_uarg->uspace_uarg)
     208            :: [uspace_uarg] "r" (kernel_uarg->uspace_uarg),
     209              [kstack] "r" (((uint64_t) (THREAD->kstack)) +
     210              MEM_STACK_SIZE - SP_DELTA)
    205211        );
    206212
Note: See TracChangeset for help on using the changeset viewer.