1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 
5 /* main() */
main(int argc,char ** argv)6 int main(int argc, char **argv)
7 {
8    /* This program is passed in a minimum ISA that the underlying hardware
9     * needs to support.  If the HW supports this ISA or newer, return 0
10     * for supported.  Otherwise, return 1 for not supported.  Return 2 for
11     * usage error.
12     *
13     *  First argument is required, it must be an ISA version number.
14     *  Second argument "-debug" is optional.  If passed, then the defined ISA
15     *  values are printed.
16     */
17    char *min_isa;
18    int isa_level = 0;
19    int debug = 0;
20 
21    /* set the isa_level set by the Make */
22 
23    if ((argc == 3) && (strcmp(argv[2], "-debug") == 0)) {
24       debug = 1;
25 
26    } else if (argc != 2) {
27       fprintf(stderr, "usage: min_power_ISA <ISA> [-debug]\n" );
28       exit(2);
29    }
30 
31    min_isa = argv[1];
32 
33 #ifdef HAS_ISA_2_05
34    if (debug) printf("HAS_ISA_2_05 is set\n");
35    isa_level = 5;
36 #endif
37 
38 #ifdef HAS_ISA_2_06
39    if (debug) printf("HAS_ISA_2_06 is set\n");
40    isa_level = 6;
41 #endif
42 
43 #ifdef HAS_ISA_2_07
44    if (debug) printf("HAS_ISA_2_07 is set\n");
45    isa_level = 7;
46 #endif
47 
48 #ifdef HAS_ISA_3_00
49    if (debug) printf("HAS_ISA_3_00 is set\n");
50    isa_level = 8;
51 #endif
52 
53    /* return 0 for supported (success), 1 for not supported (failure) */
54    if (strcmp (min_isa, "2.05") == 0) {
55       return !(isa_level >= 5);
56 
57    } else if (strcmp (min_isa, "2.06") == 0) {
58       return !(isa_level >= 6);
59 
60    } else if (strcmp (min_isa, "2.07") == 0) {
61       return !(isa_level >= 7);
62 
63    } else if (strcmp (min_isa, "3.00") == 0) {
64       return !(isa_level >= 8);
65 
66    } else {
67       fprintf(stderr, "ERROR: invalid ISA version '%s'.  Valid versions numbers are:\n", min_isa);
68       fprintf(stderr, "       2.05, 2.06, 2.07, 3.00\n" );
69       exit(2);
70    }
71 
72    return 1;
73 }
74