Changeset ae7d03c in mainline for kernel/arch/ia32/src/userspace.c
- Timestamp:
- 2018-05-10T13:39:19Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- e8975278
- Parents:
- b277bef
- git-author:
- Jiri Svoboda <jiri@…> (2018-05-10 07:38:12)
- git-committer:
- Jiri Svoboda <jiri@…> (2018-05-10 13:39:19)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/src/userspace.c
rb277bef rae7d03c 53 53 54 54 asm volatile ( 55 56 55 /* Set up GS register (virtual register segment) */ 56 "movl %[vreg_des], %%gs\n" 57 57 58 59 60 61 62 63 58 "pushl %[udata_des]\n" 59 "pushl %[stack_top]\n" 60 "pushl %[eflags]\n" 61 "pushl %[utext_des]\n" 62 "pushl %[entry]\n" 63 "movl %[uarg], %%eax\n" 64 64 65 66 65 /* %edi is defined to hold pcb_ptr - set it to 0 */ 66 "xorl %%edi, %%edi\n" 67 67 68 69 70 71 72 73 74 75 76 77 78 79 68 "iret\n" 69 : 70 : [eflags_mask] "i" (~EFLAGS_NT), 71 [udata_des] "i" (GDT_SELECTOR(UDATA_DES) | PL_USER), 72 [stack_top] "r" ((uint8_t *) kernel_uarg->uspace_stack + 73 kernel_uarg->uspace_stack_size), 74 [eflags] "r" ((eflags & ~(EFLAGS_NT)) | EFLAGS_IF), 75 [utext_des] "i" (GDT_SELECTOR(UTEXT_DES) | PL_USER), 76 [entry] "r" (kernel_uarg->uspace_entry), 77 [uarg] "r" (kernel_uarg->uspace_uarg), 78 [vreg_des] "r" (GDT_SELECTOR(VREG_DES)) 79 : "eax"); 80 80 81 81 /* Unreachable */ 82 while (true); 82 while (true) 83 ; 83 84 } 84 85
Note:
See TracChangeset
for help on using the changeset viewer.