Ignore:
File:
1 edited

Legend:

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

    r811770c r2902e1bb  
    4848void userspace(uspace_arg_t *kernel_uarg)
    4949{
    50         uint64_t rflags = read_rflags();
     50        ipl_t ipl = interrupts_disable();
    5151       
    52         rflags &= ~RFLAGS_NT;
    53         rflags |= RFLAGS_IF;
     52        ipl &= ~(RFLAGS_CF | RFLAGS_PF | RFLAGS_AF | RFLAGS_ZF | RFLAGS_SF |
     53            RFLAGS_DF | RFLAGS_OF);
    5454       
    5555        asm volatile (
    5656                "pushq %[udata_des]\n"
    5757                "pushq %[stack_top]\n"
    58                 "pushq %[rflags]\n"
     58                "pushq %[ipl]\n"
    5959                "pushq %[utext_des]\n"
    6060                "pushq %[entry]\n"
     
    6767                   [stack_top] "r" ((uint8_t *) kernel_uarg->uspace_stack +
    6868                       kernel_uarg->uspace_stack_size),
    69                    [rflags] "r" (rflags),
     69                   [ipl] "r" (ipl),
    7070                   [utext_des] "i" (GDT_SELECTOR(UTEXT_DES) | PL_USER),
    7171                   [entry] "r" (kernel_uarg->uspace_entry),
Note: See TracChangeset for help on using the changeset viewer.