Annotation of coherent/b/kernel/tools/emgenc.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * /conf/emgenc.c - C support for tool to generate emulator kernel.
                      3:  *
                      4:  * Usage:  /conf/emgenc <kernel-object-directory>
                      5:  *
                      6:  * Argument is "kCohxx", with "xx" >= 72.
                      7:  */
                      8: 
                      9: #define ANSLEN 10
                     10: 
                     11: #include <stdio.h>
                     12: #include <string.h>
                     13: #include <sys/sysi86.h>
                     14: 
                     15: /*
                     16:  * Get kernel revision level with uname().  Must be r72 or greater.
                     17:  *
                     18:  * Get ndp type with sysi86(SI86FPHW,).
                     19:  * If ndp present, ask if they want to continue.
                     20:  * If emulator present, exit with error status.
                     21:  */
                     22: main(argc, argv)
                     23: int argc;
                     24: char * argv[];
                     25: {
                     26:        int result;
                     27:        int rev = 0;
                     28:        int data;
                     29:        char ans[ANSLEN];
                     30: 
                     31:        if (argc < 2 || strncmp(argv[1], "kCoh", 4)) {
                     32:                fprintf(stderr,
                     33: "Missing kernel object directory /conf/kCoh72 or later.\n");
                     34:                exit(1);
                     35:        }
                     36:        fprintf(stderr, "Using kernel object directory %s.\n", argv[1]);
                     37:        rev = atoi(argv[1] + 4);
                     38:        if (rev < 72) {
                     39:                fprintf(stderr, "Can only attach emulator to r72 or later.\n");
                     40:                exit(1);
                     41:        }
                     42: 
                     43:        result = sysi86(SI86FPHW, &data);
                     44:        if (result >= 0) {
                     45:                switch (data) {
                     46:                        case FP_NO:
                     47:                                break;
                     48:                        case FP_SW:
                     49:                                break;
                     50:                        case FP_287:
                     51:                        case FP_387:
                     52:                                fprintf(stderr,
                     53: "Coprocessor detected.  You do not need FP emulation.\n\n"
                     54: "You may link the emulator module to the COHERENT kernel, but\n"
                     55: "the FP coprocessor, rather than the emulator, will be used.\n"
                     56: "To force use of the emulator on systems with a coprocessor, do\n"
                     57: "    /conf/patch -v <kernel-name> \"ndpType=1:s\"\n\n");
                     58:                                fprintf(stderr,
                     59: "Continue [y]? ");
                     60:                                result = fgets(ans, ANSLEN, stdin);
                     61:                                if (result
                     62:                                  && tolower(ans[0]) != 'y'
                     63:                                  && tolower(ans[0]) != '\n')
                     64:                                        exit(1);
                     65:                                break;
                     66:                        default:
                     67:                                fprintf(stderr, "unexpected result from SI86FPHW\n");
                     68:                                exit(1);
                     69:                }
                     70:        } else {
                     71:                perror(argv[0]);
                     72:                exit(1);
                     73:        }
                     74:        exit(0);
                     75: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.