示例#1
0
/* 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");
}
示例#2
0
int main(int argc, char** argv) {
  printf("Vendor: %s\n", vendor_name());
  set_eflags(_AC_FLAG_);
  return 0;
}