summaryrefslogtreecommitdiffstats
path: root/arch/x86_64/usermode.c
blob: 8975993a531c6c46ee0f7ec842e9ac79f122bc72 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15


__attribute__((noreturn))
static void
s_enter_usermode(void *ip, void *sp)
{
    __asm__ volatile("mov %0, %%rsp; \
                      movq %1, %%rcx; \
                      movq $0x202, %%r11; \
                      cli; \
                      swapgs; \
                      sysretq"::
                      "r"(sp), "r"(ip): "memory");
    for(;;);
}