Annotation of coherent/b/kernel/tools/emgenc.c, revision 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.