Ignore:
File:
1 edited

Legend:

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

    r5a5269d r63a045c  
    7171arch_ops_t *arch_ops = &mips32_ops;
    7272
     73/*
     74 * Why the linker moves the variable 64K away in assembler
     75 * when not in .text section?
     76 */
     77
    7378/* Stack pointer saved when entering user mode */
    74 // FIXME: This won't work with SMP unless thread creation is globally serialized.
    75 uintptr_t supervisor_sp;
     79uintptr_t supervisor_sp __attribute__((section(".text")));
    7680
    7781size_t cpu_count = 0;
     
    103107#endif
    104108
    105         str_cpy(bargs, CONFIG_BOOT_ARGUMENTS_BUFLEN, bootinfo->bootargs);
    106 
    107109        /* Initialize machine_ops pointer. */
    108110        machine_ops_init();
     
    167169        cp0_status_write(cp0_status_read() | (cp0_status_exl_exception_bit |
    168170            cp0_status_um_bit | cp0_status_ie_enabled_bit));
    169         cp0_epc_write(kernel_uarg->uspace_entry);
    170         userspace_asm(kernel_uarg->uspace_stack +
    171             kernel_uarg->uspace_stack_size,
    172             kernel_uarg->uspace_uarg,
    173             kernel_uarg->uspace_entry);
     171        cp0_epc_write((uintptr_t) kernel_uarg->uspace_entry);
     172        userspace_asm(((uintptr_t) kernel_uarg->uspace_stack +
     173            kernel_uarg->uspace_stack_size),
     174            (uintptr_t) kernel_uarg->uspace_uarg,
     175            (uintptr_t) kernel_uarg->uspace_entry);
    174176
    175177        while (true)
Note: See TracChangeset for help on using the changeset viewer.