On 10/02/2020 15.56, Paolo Bonzini wrote: > On 10/02/20 15:35, Thomas Huth wrote: >> #define GP_ASM(stmt, in, clobber) \ >> - asm ("mov" W " $1f, %[expected_rip]\n\t" \ >> + asm volatile ( \ >> + "mov" W " $1f, %[expected_rip]\n\t" \ >> "movl $2f-1f, %[skip_count]\n\t" \ >> "1: " stmt "\n\t" \ >> "2: " \ >> @@ -159,7 +160,7 @@ static int do_ring3(void (*fn)(const char *), const char *arg) >> : [ret] "=&a" (ret) >> : [user_ds] "i" (USER_DS), >> [user_cs] "i" (USER_CS), >> - [user_stack_top]"m"(user_stack[sizeof user_stack]), >> + [user_stack_top]"m"(user_stack[sizeof(user_stack) - 2]), > > This should be "- sizeof(long)" in order to keep the stack aligned. > > I can fix this when I apply. Thanks! Thomas