Como você detecta o tipo de arquitetura da CPU durante o tempo de execução com o GCC e o inline asm?

Eu preciso encontrar o tipo de arquitetura de uma CPU. Eu não tenho acesso ao / proc / cpuinfo, como a máquina está executando o syslinux. Eu sei que há uma maneira de fazer isso com o ASM embutido, mas acredito que minha sintaxe está incorreta, pois minha variável iedx não está sendo configurada corretamente.

Estou me arrastando junto com a ASM e de modo algum um especialista. Se alguém tiver alguma dica ou puder me apontar na direção certa, eu ficaria muito grato.

static int is64Bit(void) {
    int iedx = 0;
    asm("mov %eax, 0x80000001");
    asm("cpuid");
    asm("mov %0, %%eax" : : "a" (iedx));
    if ((iedx) && (1 << 29))
    {
        return 1;
    }
    return 0;
}

questionAnswers(1)

yourAnswerToTheQuestion