"mov %%edx,8(%%esi)\n\t"
"pop %%ebx"
#else
"push %%rbx\n\t"
"mov %%ebx,%%edi\n\t"
"cpuid\n\t"
"mov %%ebx,(%%rsi)\n\t"
"mov %%ecx,4(%%rsi)\n\t"
"mov %%edx,8(%%rsi)\n\t"
"pop %%rbx"
"mov %%edi,%%ebx\n\t"
#endif
: "=a" (u), "=c" (foo)
: "a" (0x40000000), "c" (0), "S" (signature)
: "%edx"
: "%edx", "%edi"
);
signature[12] = 0;