18cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/** 28cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @file cpu_type_tests.c 38cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 48cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Copyright 2003 OProfile authors 58cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Read the file COPYING 68cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 78cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @author John Levon 88cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @author Philippe Elie 98cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */ 108cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 118cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <stddef.h> 128cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <stdio.h> 138cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <stdlib.h> 148cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <string.h> 158cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 168cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include "op_cpu_type.h" 178cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 188cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstatic struct cpu_type { 198cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd char const * name; 208cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd op_cpu type; 218cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd} cpu_str[] = { 228cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "i386/ppro", CPU_PPRO }, 238cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "i386/pii", CPU_PII }, 248cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "i386/piii", CPU_PIII }, 258cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "i386/athlon", CPU_ATHLON }, 268cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "timer", CPU_TIMER_INT }, 278cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "rtc", CPU_RTC }, 288cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "i386/p4", CPU_P4 }, 298cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "ia64/ia64", CPU_IA64 }, 308cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "ia64/itanium", CPU_IA64_1 }, 318cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "ia64/itanium2", CPU_IA64_2 }, 328cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "x86-64/hammer", CPU_HAMMER }, 338cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "i386/p4-ht", CPU_P4_HT2 }, 348cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "alpha/ev4", CPU_AXP_EV4 }, 358cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "alpha/ev5", CPU_AXP_EV5 }, 368cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "alpha/pca56", CPU_AXP_PCA56 }, 378cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "alpha/ev6", CPU_AXP_EV6 }, 388cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "alpha/ev67", CPU_AXP_EV67 }, 398cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "foo", CPU_NO_GOOD }, 408cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "-3", CPU_NO_GOOD }, 418cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "2927", CPU_NO_GOOD }, 428cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { "", CPU_NO_GOOD }, 438cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { NULL, CPU_NO_GOOD } 448cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}; 458cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 468cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 478cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstatic void test(struct cpu_type const * cpu) 488cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{ 498cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd char const * name; 508cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd op_cpu type; 518cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 528cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd name = op_get_cpu_name(cpu->type); 538cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd if (cpu->type != CPU_NO_GOOD && strcmp(cpu->name, name)) { 548cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd printf("for %d expect %s found %s\n", cpu->type, cpu->name, 558cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd name); 568cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd exit(EXIT_FAILURE); 578cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd } 588cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd if (cpu->type == CPU_NO_GOOD && strcmp("invalid cpu type", name)) { 598cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd printf("for %d expect %s found %s\n", cpu->type, 608cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd "invalid cpu type", name); 618cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd exit(EXIT_FAILURE); 628cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd } 638cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 648cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd type = op_get_cpu_number(cpu->name); 658cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd if (type != cpu->type) { 668cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd printf("for %s expect %d found %d\n", cpu->name, cpu->type, 678cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd type); 688cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd exit(EXIT_FAILURE); 698cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd } 708cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd} 718cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 728cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 738cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddint main(void) 748cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{ 758cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd struct cpu_type * cpu; 768cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd for (cpu = cpu_str; cpu->name; ++cpu) 778cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd test(cpu); 788cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd return 0; 798cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd} 80