| [444] | 1 | /* | 
|---|
 | 2 |  * PDC support | 
|---|
 | 3 |  */ | 
|---|
 | 4 | #define OPT_PDC_CACHE           5 | 
|---|
 | 5 | #define OPT_PDC_ADD_VALID       12 | 
|---|
 | 6 | #define OPT_PDC_CHASSIS         2       /* LED's */ | 
|---|
 | 7 | #define OPT_PDC_IODC            8       /* console I/O */ | 
|---|
 | 8 | #define IODC_CONSOLE_OUT        3       /* bytes out serial port */ | 
|---|
 | 9 | #define IODC_CONSOLE_IN         2       /* bytes in serial port */ | 
|---|
 | 10 |  | 
|---|
 | 11 | #define PGZ_MEM_PDC             0x0388  /* location of PDC_ENTRY in memory */ | 
|---|
 | 12 | #define PGZ_CONSOLE_STRUCT      0x3A0   /* console config info */ | 
|---|
 | 13 | #define CALL_PDC                (*(int (*)())((int *)(*((int *)PGZ_MEM_PDC)))) | 
|---|
 | 14 |  | 
|---|
 | 15 | #define putDebugChar outbyte | 
|---|
 | 16 | #define getDebugChar inbyte | 
|---|
 | 17 |  | 
|---|
 | 18 | /* | 
|---|
 | 19 |  * IODC support | 
|---|
 | 20 |  */ | 
|---|
 | 21 | #define MAX_BUS_CONVERTERS      6 | 
|---|
 | 22 | #define MAX_LAYERS              6 | 
|---|
 | 23 | #define IO_CONSOLE_INPUT        2 | 
|---|
 | 24 | #define IO_CONSOLE_OUTPUT       3 | 
|---|
 | 25 |  | 
|---|
 | 26 | struct _dev { | 
|---|
 | 27 |         unsigned char   flags;                  /* auto-search and auto-boot  */ | 
|---|
 | 28 |         unsigned char   bus_convert[MAX_BUS_CONVERTERS]; | 
|---|
 | 29 |         unsigned char   pm;                     /* fixed field of HPA         */ | 
|---|
 | 30 |         unsigned int    layer[MAX_LAYERS];      /* device dependent layers    */ | 
|---|
 | 31 |         unsigned int    hpa;                    /* device HPA                 */ | 
|---|
 | 32 |         unsigned int    spa;                    /* device SPA                 */ | 
|---|
 | 33 |         unsigned int    *iodc_io;               /* address of ENTRY_IO in mem */ | 
|---|
 | 34 |         unsigned int    class;                  /* device class               */ | 
|---|
 | 35 | }; | 
|---|
 | 36 |  | 
|---|
 | 37 | /* | 
|---|
 | 38 |  * Register defintions | 
|---|
 | 39 |  */ | 
|---|
 | 40 | #define gr0     %r0                     /* always ZERO */ | 
|---|
 | 41 | #define gr1     %r1                     /* ADDIL results only */ | 
|---|
 | 42 | #define gr2     %r2                     /* return address */ | 
|---|
 | 43 | #define gr3     %r3                     /* scratch registers */ | 
|---|
 | 44 | #define gr4     %r4 | 
|---|
 | 45 | #define gr5     %r5 | 
|---|
 | 46 | #define gr6     %r6 | 
|---|
 | 47 | #define gr7     %r7 | 
|---|
 | 48 | #define gr8     %r8 | 
|---|
 | 49 | #define gr9     %r9 | 
|---|
 | 50 | #define gr10    %r10 | 
|---|
 | 51 | #define gr11    %r11 | 
|---|
 | 52 | #define gr12    %r12 | 
|---|
 | 53 | #define gr13    %r13 | 
|---|
 | 54 | #define gr14    %r14 | 
|---|
 | 55 | #define gr15    %r15 | 
|---|
 | 56 | #define gr16    %r16 | 
|---|
 | 57 | #define gr17    %r17 | 
|---|
 | 58 | #define gr18    %r18 | 
|---|
 | 59 | #define gr19    %r19                    /* 4th temp register */ | 
|---|
 | 60 | #define gr20    %r20                    /* 3rd temp register */ | 
|---|
 | 61 | #define gr21    %r21                    /* 2rd temp register */ | 
|---|
 | 62 | #define gr22    %r22                    /* 1rd temp register */ | 
|---|
 | 63 | #define gr23    %r23                    /* argument 3 */ | 
|---|
 | 64 | #define gr24    %r24                    /* argument 2 */ | 
|---|
 | 65 | #define gr25    %r25                    /* argument 1 */ | 
|---|
 | 66 | #define gr26    %r26                    /* argument 0 */ | 
|---|
 | 67 | #define gr27    %r27                    /* global data pointer */ | 
|---|
 | 68 | #define gr28    %r28                    /* return value */ | 
|---|
 | 69 | #define gr29    %r29                    /* return value, static link */ | 
|---|
 | 70 | #define gr30    %r30                    /* stack pointer */ | 
|---|
 | 71 | #define gr31    %r31                    /* millicode return pointer */ | 
|---|
 | 72 |  | 
|---|
 | 73 | /* | 
|---|
 | 74 |  * extra definitions, calling conventions | 
|---|
 | 75 |  */ | 
|---|
 | 76 | #define rp              gr2             /* return address */ | 
|---|
 | 77 | #define sp              gr30            /* stack pointer */ | 
|---|
 | 78 | #define dp              gr27            /* global data area pointer */ | 
|---|
 | 79 |  | 
|---|
 | 80 | /* | 
|---|
 | 81 |  * extra definitions, argument passing | 
|---|
 | 82 |  */ | 
|---|
 | 83 | #define Arg0            gr26            /* pdc function to perform */ | 
|---|
 | 84 | #define Arg1            gr25            /* args to the pdc function */ | 
|---|
 | 85 | #define Arg2            gr24 | 
|---|
 | 86 | #define Arg3            gr23 | 
|---|
 | 87 |  | 
|---|
 | 88 | /* | 
|---|
 | 89 |  * Special Processor Registers | 
|---|
 | 90 |  */ | 
|---|
 | 91 | #define SAR             %cr11           /* shift amount register */ | 
|---|
 | 92 | #define IVA             %cr14           /* Interruption Vector Address */ | 
|---|
 | 93 | #define EIEM            %cr15           /* EIEM reg */ | 
|---|
 | 94 | #define EIR             %cr23           /* EIR reg */ | 
|---|
 | 95 | #define TIMER           %cr16           /* interval timer */ | 
|---|
 | 96 | #define CCR             %cr10           /* coprocessor control reg. */ | 
|---|
 | 97 |  | 
|---|
 | 98 | /* | 
|---|
 | 99 |  * ASCII escape code | 
|---|
 | 100 |  */ | 
|---|
 | 101 | #define NULL    0x00    /* <break>      soft-reset      (input only) */ | 
|---|
 | 102 | #define DELP    0x03    /* <ctrl>C      del-collapse    (input only, non-std) */ | 
|---|
 | 103 | #define DELE    0x04    /* <ctrl>D      del-to_eol      (input only, non-std) */ | 
|---|
 | 104 | #define BELL    0x07    /* <ctrl>G      bell - audio */ | 
|---|
 | 105 | #define BS      0x08    /* <ctrl>H      back space      (left arrow) */ | 
|---|
 | 106 | #define HT      0x09    /* <ctrl>I      horizontal tab */ | 
|---|
 | 107 | #define LF      0x0a    /* <ctrl>J      line feed       (down arrow) */ | 
|---|
 | 108 | #define VT      0x0b    /* <ctrl>K      vertical tab    (up arrow) */ | 
|---|
 | 109 | #define FF      0x0c    /* <ctrl>L      form feed       (right arrow) */ | 
|---|
 | 110 | #define RTN     0x0d    /* <ctrl>M      carrage return */ | 
|---|
 | 111 | #define CR      0x0d    /* <ctrl>M      carrage return */ | 
|---|
 | 112 |  | 
|---|
 | 113 | #define INSC    0x0e    /* <ctrl>N      insert char     (input only, non-std) */ | 
|---|
 | 114 | #define XON     0x11    /* <ctrl>Q      DC1 - continue */ | 
|---|
 | 115 | #define BT      0x12    /* <ctrl>R      reverse tab     (input only, non-std) */ | 
|---|
 | 116 | #define XOFF    0x13    /* <ctrl>S      DC3 - wait */ | 
|---|
 | 117 | #define INSE    0x16    /* <ctrl>V      insert-expand   (input only, non-std) */ | 
|---|
 | 118 | #define DELC    0x18    /* <ctrl>X      delete char     (input only, non-std) */ | 
|---|
 | 119 | #define CLRH    0x1a    /* <ctrl>Z      clear/home      (input only) */ | 
|---|
 | 120 | #define ESC     0x1b    /* <ctrl>[      escape          (must call key again) */ | 
|---|
 | 121 | #define ENDL    0x1c    /* <ctrl>\      cursor-to-eol   (input only, non-std) */ | 
|---|
 | 122 | #define HOME    0x1e    /* <ctrl>^      cursor home     (input only) */ | 
|---|
 | 123 | #define DEL     0x7f    /* <shift>BS    destructive backspace */ | 
|---|