Annotation of qemu/roms/qemu-palcode/osf.h, revision 1.1

1.1     ! root        1: /*
        !             2: *****************************************************************************
        !             3: **                                                                          *
        !             4: **  Copyright � 1993, 1994                                                 *
        !             5: **  by Digital Equipment Corporation, Maynard, Massachusetts.              *
        !             6: **                                                                          *
        !             7: **  All Rights Reserved                                                            *
        !             8: **                                                                          *
        !             9: **  Permission  is  hereby  granted  to  use, copy, modify and distribute   *
        !            10: **  this  software  and  its  documentation,  in  both  source  code  and   *
        !            11: **  object  code  form,  and without fee, for the purpose of distribution   *
        !            12: **  of this software  or  modifications  of this software within products   *
        !            13: **  incorporating  an  integrated   circuit  implementing  Digital's  AXP   *
        !            14: **  architecture,  regardless  of the  source of such integrated circuit,   *
        !            15: **  provided that the  above copyright  notice and this permission notice   *
        !            16: **  appear  in  all copies,  and  that  the  name  of  Digital  Equipment   *
        !            17: **  Corporation  not  be  used  in advertising or publicity pertaining to   *
        !            18: **  distribution of the  document  or  software without specific, written   *
        !            19: **  prior permission.                                                      *
        !            20: **                                                                          *
        !            21: **  Digital  Equipment  Corporation   disclaims  all   warranties  and/or   *
        !            22: **  guarantees  with  regard  to  this  software,  including  all implied   *
        !            23: **  warranties of fitness for  a  particular purpose and merchantability,   *
        !            24: **  and makes  no  representations  regarding  the use of, or the results   *
        !            25: **  of the use of, the software and documentation in terms of correctness,  *
        !            26: **  accuracy,  reliability,  currentness  or  otherwise;  and you rely on   *
        !            27: **  the software, documentation and results solely at your own risk.       *
        !            28: **                                                                          *
        !            29: **  AXP is a trademark of Digital Equipment Corporation.                   *
        !            30: **                                                                          *
        !            31: *****************************************************************************
        !            32: */
        !            33: 
        !            34: /*
        !            35: **  Seg0 and Seg1 Virtual Address (VA) Format
        !            36: **
        !            37: **       Loc   Size    Name    Function
        !            38: **      -----  ----    ----    ---------------------------------
        !            39: **     <42:33>  10     SEG1    First level page table offset
        !            40: **     <32:23>  10     SEG2    Second level page table offset
        !            41: **     <22:13>  10     SEG3    Third level page table offset
        !            42: **     <12:00>  13     OFFSET  Byte within page offset
        !            43: */
        !            44: 
        !            45: #define VA_V_SEG1      33
        !            46: #define        VA_M_SEG1       (0x3FF<<VA_V_SEG1)
        !            47: #define VA_V_SEG2      23
        !            48: #define VA_M_SEG2      (0x3FF<<VA_V_SEG2)
        !            49: #define VA_V_SEG3      13
        !            50: #define VA_M_SEG3      (0x3FF<<VA_V_SEG3)
        !            51: #define VA_V_OFFSET    0
        !            52: #define VA_M_OFFSET    0x1FFF
        !            53: 
        !            54: /*
        !            55: **  Virtual Address Options: 8K byte page size
        !            56: */
        !            57: 
        !            58: #define        VA_S_SIZE       43
        !            59: #define        VA_S_OFF        13
        !            60: #define VA_S_SEG       10
        !            61: #define VA_S_PAGE_SIZE 8192
        !            62: 
        !            63: /*
        !            64: **  Page Table Entry (PTE) Format
        !            65: **
        !            66: **      Extent Size    Name    Function
        !            67: **      ------ ----    ----    ---------------------------------
        !            68: **     <63:32>   32    PFN     Page Frame Number
        !            69: **     <31:16>   16    SW      Reserved for software
        !            70: **     <15:14>    2    RSV0    Reserved for hardware SBZ
        !            71: **        <13>    1    UWE     User Write Enable
        !            72: **        <12>    1    KWE     Kernel Write Enable
        !            73: **     <11:10>    2    RSV1    Reserved for hardware SBZ
        !            74: **         <9>    1    URE     User Read Enable
        !            75: **         <8>    1    KRE     Kernel Read Enable
        !            76: **         <7>    1    RSV2    Reserved for hardware SBZ
        !            77: **       <6:5>    2    GH      Granularity Hint
        !            78: **         <4>    1    ASM     Address Space Match
        !            79: **         <3>    1    FOE     Fault On Execute
        !            80: **         <2>    1    FOW     Fault On Write
        !            81: **         <1>    1    FOR     Fault On Read
        !            82: **         <0>    1    V       Valid
        !            83: */
        !            84: 
        !            85: #define        PTE_V_PFN       32
        !            86: #define PTE_M_PFN      0xFFFFFFFF00000000
        !            87: #define PTE_V_SW       16
        !            88: #define PTE_M_SW       0x00000000FFFF0000
        !            89: #define PTE_V_UWE      13
        !            90: #define PTE_M_UWE      (1<<PTE_V_UWE)
        !            91: #define PTE_V_KWE      12
        !            92: #define PTE_M_KWE      (1<<PTE_V_KWE)
        !            93: #define PTE_V_URE      9
        !            94: #define PTE_M_URE      (1<<PTE_V_URE)
        !            95: #define PTE_V_KRE      8
        !            96: #define PTE_M_KRE      (1<<PTE_V_KRE)
        !            97: #define PTE_V_GH       5
        !            98: #define PTE_M_GH       (3<<PTE_V_GH)
        !            99: #define PTE_V_ASM      4
        !           100: #define PTE_M_ASM      (1<<PTE_V_ASM)
        !           101: #define PTE_V_FOE      3
        !           102: #define PTE_M_FOE      (1<<PTE_V_FOE)
        !           103: #define PTE_V_FOW      2
        !           104: #define PTE_M_FOW      (1<<PTE_V_FOW)
        !           105: #define PTE_V_FOR      1
        !           106: #define PTE_M_FOR      (1<<PTE_V_FOR)
        !           107: #define PTE_V_VALID    0
        !           108: #define PTE_M_VALID    (1<<PTE_V_VALID)
        !           109: 
        !           110: #define PTE_M_KSEG     0x1111
        !           111: #define PTE_M_PROT     0x3300
        !           112: 
        !           113: /*
        !           114: **  System Entry Instruction Fault (entIF) Constants:
        !           115: */
        !           116: 
        !           117: #define IF_K_BPT        0x0
        !           118: #define IF_K_BUGCHK     0x1
        !           119: #define IF_K_GENTRAP    0x2
        !           120: #define IF_K_FEN        0x3
        !           121: #define IF_K_OPCDEC     0x4
        !           122: 
        !           123: /*
        !           124: **  System Entry Hardware Interrupt (entInt) Constants:
        !           125: */
        !           126: 
        !           127: #define INT_K_IP       0x0
        !           128: #define INT_K_CLK      0x1
        !           129: #define INT_K_MCHK     0x2
        !           130: #define INT_K_DEV      0x3
        !           131: #define INT_K_PERF     0x4
        !           132: 
        !           133: /*
        !           134: **  System Entry MM Fault (entMM) Constants:
        !           135: */
        !           136: 
        !           137: #define        MM_K_TNV        0x0
        !           138: #define MM_K_ACV       0x1
        !           139: #define MM_K_FOR       0x2
        !           140: #define MM_K_FOE       0x3
        !           141: #define MM_K_FOW       0x4
        !           142: 
        !           143: /*
        !           144: **  Process Control Block (PCB) Offsets:
        !           145: */
        !           146: 
        !           147: #define PCB_Q_KSP      0x0000
        !           148: #define PCB_Q_USP      0x0008
        !           149: #define PCB_Q_PTBR     0x0010
        !           150: #define PCB_L_PCC      0x0018
        !           151: #define PCB_L_ASN      0x001C
        !           152: #define PCB_Q_UNIQUE   0x0020
        !           153: #define PCB_Q_FEN      0x0028
        !           154: #define PCB_Q_RSV0     0x0030
        !           155: #define PCB_Q_RSV1     0x0038
        !           156: 
        !           157: /*
        !           158: **  Processor Status Register (PS) Bit Summary
        !           159: **
        !           160: **     Extent  Size    Name    Function
        !           161: **     ------  ----    ----    ---------------------------------
        !           162: **       <3>    1      CM      Current Mode
        !           163: **     <2:0>    3      IPL     Interrupt Priority Level
        !           164: **/
        !           165: 
        !           166: #define        PS_V_CM         3
        !           167: #define PS_M_CM                (1<<PS_V_CM)
        !           168: #define        PS_V_IPL        0
        !           169: #define        PS_M_IPL        (7<<PS_V_IPL)
        !           170: 
        !           171: #define        PS_K_KERN       (0<<PS_V_CM)
        !           172: #define PS_K_USER      (1<<PS_V_CM)
        !           173: 
        !           174: #define        IPL_K_ZERO      0x0
        !           175: #define IPL_K_SW0      0x1
        !           176: #define IPL_K_SW1      0x2
        !           177: #define IPL_K_DEV0     0x3
        !           178: #define IPL_K_DEV1     0x4
        !           179: #define IPL_K_CLK      0x5
        !           180: #define IPL_K_IP       0x6
        !           181: #define IPL_K_RT       0x6
        !           182: #define IPL_K_PERF      0x6
        !           183: #define IPL_K_PFAIL     0x6
        !           184: #define IPL_K_MCHK     0x7
        !           185: 
        !           186: #define IPL_K_LOW      0x0
        !           187: #define IPL_K_HIGH     0x7
        !           188: 
        !           189: /*
        !           190: **  SCB Offset Definitions:
        !           191: */
        !           192: 
        !           193: #define SCB_Q_FEN              0x0010
        !           194: #define SCB_Q_ACV              0x0080
        !           195: #define SCB_Q_TNV              0x0090
        !           196: #define SCB_Q_FOR              0x00A0
        !           197: #define SCB_Q_FOW              0x00B0
        !           198: #define SCB_Q_FOE              0x00C0
        !           199: #define SCB_Q_ARITH            0x0200
        !           200: #define SCB_Q_KAST             0x0240
        !           201: #define SCB_Q_EAST             0x0250
        !           202: #define SCB_Q_SAST             0x0260
        !           203: #define SCB_Q_UAST             0x0270
        !           204: #define SCB_Q_UNALIGN          0x0280
        !           205: #define SCB_Q_BPT              0x0400
        !           206: #define SCB_Q_BUGCHK           0x0410
        !           207: #define SCB_Q_OPCDEC           0x0420
        !           208: #define SCB_Q_ILLPAL           0x0430
        !           209: #define SCB_Q_TRAP             0x0440
        !           210: #define SCB_Q_CHMK             0x0480
        !           211: #define SCB_Q_CHME             0x0490
        !           212: #define SCB_Q_CHMS             0x04A0
        !           213: #define SCB_Q_CHMU             0x04B0
        !           214: #define SCB_Q_SW0              0x0500
        !           215: #define SCB_Q_SW1              0x0510
        !           216: #define SCB_Q_SW2              0x0520
        !           217: #define SCB_Q_SW3              0x0530
        !           218: #define        SCB_Q_SW4               0x0540
        !           219: #define SCB_Q_SW5              0x0550
        !           220: #define SCB_Q_SW6              0x0560
        !           221: #define SCB_Q_SW7              0x0570
        !           222: #define SCB_Q_SW8              0x0580
        !           223: #define SCB_Q_SW9              0x0590
        !           224: #define SCB_Q_SW10             0x05A0
        !           225: #define SCB_Q_SW11             0x05B0
        !           226: #define SCB_Q_SW12             0x05C0
        !           227: #define SCB_Q_SW13             0x05D0
        !           228: #define SCB_Q_SW14             0x05E0
        !           229: #define SCB_Q_SW15             0x05F0
        !           230: #define SCB_Q_CLOCK            0x0600
        !           231: #define SCB_Q_INTER            0x0610
        !           232: #define SCB_Q_SYSERR           0x0620
        !           233: #define SCB_Q_PROCERR          0x0630
        !           234: #define SCB_Q_PWRFAIL          0x0640
        !           235: #define SCB_Q_PERFMON          0x0650
        !           236: #define SCB_Q_SYSMCHK          0x0660
        !           237: #define SCB_Q_PROCMCHK         0x0670
        !           238: #define SCB_Q_PASSREL          0x0680
        !           239: 
        !           240: /*
        !           241: **  Stack Frame (FRM) Offsets:
        !           242: **
        !           243: **  There are two types of system entries for OSF/1 - those for the
        !           244: **  callsys CALL_PAL function and those for exceptions and interrupts.
        !           245: **  Both entry types use the same stack frame layout.  The stack frame
        !           246: **  contains space for the PC, the PS, the saved GP, and the saved
        !           247: **  argument registers a0, a1, and a2.  On entry, SP points to the
        !           248: **  saved PS.
        !           249: */
        !           250: 
        !           251: #define        FRM_Q_PS        0x0000
        !           252: #define FRM_Q_PC       0x0008
        !           253: #define FRM_Q_GP       0x0010
        !           254: #define FRM_Q_A0       0x0018
        !           255: #define FRM_Q_A1       0x0020
        !           256: #define FRM_Q_A2       0x0028
        !           257: 
        !           258: #define FRM_K_SIZE     48
        !           259: 
        !           260: /*
        !           261: **  Halt Codes:
        !           262: */
        !           263: 
        !           264: #define HLT_K_RESET        0x0000
        !           265: #define HLT_K_HW_HALT      0x0001
        !           266: #define HLT_K_KSP_INVAL            0x0002
        !           267: #define HLT_K_SCBB_INVAL    0x0003
        !           268: #define HLT_K_PTBR_INVAL    0x0004
        !           269: #define HLT_K_SW_HALT      0x0005
        !           270: #define HLT_K_DBL_MCHK     0x0006
        !           271: #define HLT_K_MCHK_FROM_PAL 0x0007
        !           272: 
        !           273: /*
        !           274: **  Machine Check Codes:
        !           275: */
        !           276: 
        !           277: #define MCHK_K_TPERR       0x0080
        !           278: #define MCHK_K_TCPERR      0x0082
        !           279: #define MCHK_K_HERR        0x0084
        !           280: #define MCHK_K_ECC_C       0x0086
        !           281: #define MCHK_K_ECC_NC      0x0088
        !           282: #define MCHK_K_UNKNOWN     0x008A
        !           283: #define MCHK_K_CACKSOFT            0x008C
        !           284: #define MCHK_K_BUGCHECK            0x008E
        !           285: #define MCHK_K_OS_BUGCHECK  0x0090
        !           286: #define MCHK_K_DCPERR      0x0092
        !           287: #define MCHK_K_ICPERR      0x0094
        !           288: #define MCHK_K_RETRY_IRD    0x0096
        !           289: #define MCHK_K_PROC_HERR    0x0098
        !           290: 
        !           291: /*
        !           292: ** System Machine Check Codes:
        !           293: */
        !           294: 
        !           295: #define MCHK_K_READ_NXM     0x0200
        !           296: #define MCHK_K_SYS_HERR     0x0202
        !           297: 
        !           298: /*
        !           299: **  Machine Check Error Status Summary (MCES) Register Format
        !           300: **
        !           301: **      Extent Size    Name    Function
        !           302: **      ------ ----    ----    ---------------------------------
        !           303: **       <0>     1     MIP     Machine check in progress
        !           304: **       <1>     1     SCE     System correctable error in progress
        !           305: **       <2>     1     PCE     Processor correctable error in progress
        !           306: **       <3>     1     DPC     Disable PCE error reporting
        !           307: **       <4>     1     DSC     Disable SCE error reporting
        !           308: */
        !           309: 
        !           310: #define MCES_V_MIP     0
        !           311: #define MCES_M_MIP     (1<<MCES_V_MIP)
        !           312: #define MCES_V_SCE     1
        !           313: #define MCES_M_SCE     (1<<MCES_V_SCE)
        !           314: #define MCES_V_PCE     2
        !           315: #define MCES_M_PCE     (1<<MCES_V_PCE)
        !           316: #define MCES_V_DPC     3
        !           317: #define MCES_M_DPC     (1<<MCES_V_DPC)
        !           318: #define MCES_V_DSC     4
        !           319: #define MCES_M_DSC     (1<<MCES_V_DSC)
        !           320: 
        !           321: #define MCES_M_ALL      (MCES_M_MIP | MCES_M_SCE | MCES_M_PCE | MCES_M_DPC \
        !           322:                          | MCES_M_DSC)
        !           323: 
        !           324: /*
        !           325: **  Who-Am-I (WHAMI) Register Format
        !           326: **
        !           327: **      Extent Size    Name    Function
        !           328: **      ------ ----    ----    ---------------------------------
        !           329: **       <7:0>   8     ID      Who-Am-I identifier
        !           330: **       <15:8>   1    SWAP    Swap PALcode flag - character 'S'
        !           331: */
        !           332: 
        !           333: #define WHAMI_V_SWAP   8
        !           334: #define WHAMI_M_SWAP   (1<<WHAMI_V_SWAP)
        !           335: #define WHAMI_V_ID     0
        !           336: #define WHAMI_M_ID     0xFF
        !           337: 
        !           338: #define WHAMI_K_SWAP    0x53    /* Character 'S' */
        !           339: 
        !           340: /*
        !           341:  * OSF/1 PAL-code-imposed page table bits
        !           342:  */
        !           343: #define _PAGE_VALID     0x0001
        !           344: #define _PAGE_FOR       0x0002  /* used for page protection (fault on read) */
        !           345: #define _PAGE_FOW       0x0004  /* used for page protection (fault on write) */
        !           346: #define _PAGE_FOE       0x0008  /* used for page protection (fault on exec) */
        !           347: #define _PAGE_ASM       0x0010
        !           348: #define _PAGE_KRE       0x0100  /* xxx - see below on the "accessed" bit */
        !           349: #define _PAGE_URE       0x0200  /* xxx */
        !           350: #define _PAGE_KWE       0x1000  /* used to do the dirty bit in software */
        !           351: #define _PAGE_UWE       0x2000  /* used to do the dirty bit in software */

unix.superglobalmegacorp.com

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