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 hardwre
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    /* return 0 for supported (success), 1 for not supported (failure) */
49    if (strcmp (min_isa, "2.05") == 0) {
50       return !(isa_level >= 5);
51 
52    } else if (strcmp (min_isa, "2.06") == 0) {
53       return !(isa_level >= 6);
54 
55    } else if (strcmp (min_isa, "2.07") == 0) {
56       return !(isa_level >= 7);
57 
58    } else {
59       fprintf(stderr, "ERROR: invalid ISA version.  Valid versions numbers are:\n" );
60       fprintf(stderr, "       2.05, 2.06, 2.07\n" );
61       exit(2);
62    }
63 
64    return 1;
65 }
66