/* print user CS/SS/CS3 to verify iretq frame selectors */
#include <stdio.h>
#include <stdint.h>
int main(void)
{
    uint16_t cs, ss;
    __asm__ volatile("mov %%cs, %0" : "=r"(cs));
    __asm__ volatile("mov %%ss, %0" : "=r"(ss));
    printf("CS=0x%x SS=0x%x\n", cs, ss);
    uint64_t rfl;
    __asm__ volatile("pushfq\n popq %0" : "=r"(rfl));
    printf("RFLAGS=0x%llx\n", (unsigned long long)rfl);
    return 0;
}
