Changes in kernel/arch/amd64/src/userspace.c [586cd56:f24d300] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/amd64/src/userspace.c
r586cd56 rf24d300 34 34 35 35 #include <userspace.h> 36 #include <arch/cpu.h>37 36 #include <arch/pm.h> 38 37 #include <arch/types.h> … … 51 50 ipl_t ipl = interrupts_disable(); 52 51 53 ipl &= ~(RFLAGS_CF | RFLAGS_PF | RFLAGS_AF | RFLAGS_ZF | RFLAGS_SF |54 RFLAGS_DF | RFLAGS_OF);52 /* Clear CF, PF, AF, ZF, SF, DF, OF */ 53 ipl &= ~(0xcd4); 55 54 56 55 asm volatile ( 57 "pushq %[udata_des]\n"58 "pushq %[stack_size]\n"59 "pushq %[ipl]\n"60 "pushq %[utext_des]\n"61 "pushq %[entry]\n"62 "movq %[uarg], %%rax\n"56 "pushq %[udata_des]\n" 57 "pushq %[stack_size]\n" 58 "pushq %[ipl]\n" 59 "pushq %[utext_des]\n" 60 "pushq %[entry]\n" 61 "movq %[uarg], %%rax\n" 63 62 64 /* %rdi is defined to hold pcb_ptr - set it to 0 */65 "xorq %%rdi, %%rdi\n"66 "iretq\n"67 :: [udata_des] "i" (gdtselector(UDATA_DES) | PL_USER),68 [stack_size] "r" (kernel_uarg->uspace_stack + THREAD_STACK_SIZE),69 [ipl] "r" (ipl),70 [utext_des] "i" (gdtselector(UTEXT_DES) | PL_USER),71 [entry] "r" (kernel_uarg->uspace_entry),72 [uarg] "r" (kernel_uarg->uspace_uarg)73 : "rax"74 );63 /* %rdi is defined to hold pcb_ptr - set it to 0 */ 64 "xorq %%rdi, %%rdi\n" 65 "iretq\n" 66 :: [udata_des] "i" (gdtselector(UDATA_DES) | PL_USER), 67 [stack_size] "r" (kernel_uarg->uspace_stack + THREAD_STACK_SIZE), 68 [ipl] "r" (ipl), 69 [utext_des] "i" (gdtselector(UTEXT_DES) | PL_USER), 70 [entry] "r" (kernel_uarg->uspace_entry), 71 [uarg] "r" (kernel_uarg->uspace_uarg) 72 : "rax" 73 ); 75 74 76 75 /* Unreachable */ 77 while (1) 78 ; 76 while (1); 79 77 } 80 78
Note:
See TracChangeset
for help on using the changeset viewer.