/* EAX = 0000 0000 */ static void handle_std_base(struct cpu_regs_t *regs, struct cpuid_state_t *state) { char buf[13]; size_t i; state->curmax = regs->eax; printf("Maximum basic CPUID leaf: 0x%08x\n\n", state->curmax); *(uint32_t *)(&buf[0]) = regs->ebx; *(uint32_t *)(&buf[4]) = regs->edx; *(uint32_t *)(&buf[8]) = regs->ecx; buf[12] = 0; for (i = 0; i < sizeof(buf); i++) { /* End of vendor string */ if (buf[i] == 0) break; /* Character outside printable range */ if (buf[i] < 0x20 || buf[i] > 0x7E) buf[i] = '.'; } buf[12] = 0; printf("CPU vendor string: '%s'", buf); if (state->vendor == VENDOR_UNKNOWN ) { state->vendor = vendor_id(buf); } else { printf(" (overridden as '%s')", vendor_name(state->vendor)); } printf("\n\n"); }
int main(int argc, char** argv) { printf("Vendor: %s\n", vendor_name()); set_eflags(_AC_FLAG_); return 0; }