Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia64/include/register.h

    r598f90e r8b4d6cb  
    2727 */
    2828
    29 /** @addtogroup ia64
     29/** @addtogroup ia64   
    3030 * @{
    3131 */
     
    3636#define KERN_ia64_REGISTER_H_
    3737
    38 #define DCR_PP_MASK  (1 << 0)
    39 #define DCR_BE_MASK  (1 << 1)
    40 #define DCR_LC_MASK  (1 << 2)
    41 #define DCR_DM_MASK  (1 << 8)
    42 #define DCR_DP_MASK  (1 << 9)
    43 #define DCR_DK_MASK  (1 << 10)
    44 #define DCR_DX_MASK  (1 << 11)
    45 #define DCR_DR_MASK  (1 << 12)
    46 #define DCR_DA_MASK  (1 << 13)
    47 #define DCR_DD_MASK  (1 << 14)
    48 
    49 #define CR_IVR_MASK  0x0f
    50 
    51 #define PSR_IC_MASK   (1 << 13)
    52 #define PSR_I_MASK    (1 << 14)
    53 #define PSR_PK_MASK   (1 << 15)
    54 #define PSR_DT_MASK   (1 << 17)
    55 #define PSR_DFL_MASK  (1 << 18)
    56 #define PSR_DFH_MASK  (1 << 19)
    57 #define PSR_RT_MASK   (1 << 27)
    58 #define PSR_IT_MASK   (1 << 36)
    59 
    60 #define PSR_CPL_SHIFT         32
    61 #define PSR_CPL_MASK_SHIFTED  3
    62 
    63 #define PFM_MASK  (~0x3fffffffff)
    64 
    65 #define RSC_MODE_MASK   3
    66 #define RSC_PL_MASK     12
     38#define CR_IVR_MASK     0xf
     39#define PSR_IC_MASK     0x2000
     40#define PSR_I_MASK      0x4000
     41#define PSR_PK_MASK     0x8000
     42
     43#define PSR_DT_MASK     (1 << 17)
     44#define PSR_RT_MASK     (1 << 27)
     45
     46#define PSR_DFL_MASK    (1 << 18)
     47#define PSR_DFH_MASK    (1 << 19)
     48
     49#define PSR_IT_MASK     0x0000001000000000
     50
     51#define PSR_CPL_SHIFT           32
     52#define PSR_CPL_MASK_SHIFTED    3
     53
     54#define PFM_MASK        (~0x3fffffffff)
     55
     56#define RSC_MODE_MASK   3
     57#define RSC_PL_MASK     12
    6758
    6859/** Application registers. */
    69 #define AR_KR0       0
    70 #define AR_KR1       1
    71 #define AR_KR2       2
    72 #define AR_KR3       3
    73 #define AR_KR4       4
    74 #define AR_KR5       5
    75 #define AR_KR6       6
    76 #define AR_KR7       7
    77 /* ARs 8-15 are reserved */
    78 #define AR_RSC       16
    79 #define AR_BSP       17
    80 #define AR_BSPSTORE  18
    81 #define AR_RNAT      19
    82 /* AR 20 is reserved */
    83 #define AR_FCR       21
    84 /* ARs 22-23 are reserved */
    85 #define AR_EFLAG     24
    86 #define AR_CSD       25
    87 #define AR_SSD       26
    88 #define AR_CFLG      27
    89 #define AR_FSR       28
    90 #define AR_FIR       29
    91 #define AR_FDR       30
    92 /* AR 31 is reserved */
    93 #define AR_CCV       32
    94 /* ARs 33-35 are reserved */
    95 #define AR_UNAT      36
    96 /* ARs 37-39 are reserved */
    97 #define AR_FPSR      40
    98 /* ARs 41-43 are reserved */
    99 #define AR_ITC       44
    100 /* ARs 45-47 are reserved */
    101 /* ARs 48-63 are ignored */
    102 #define AR_PFS       64
    103 #define AR_LC        65
    104 #define AR_EC        66
    105 /* ARs 67-111 are reserved */
    106 /* ARs 112-127 are ignored */
     60#define AR_KR0          0
     61#define AR_KR1          1
     62#define AR_KR2          2
     63#define AR_KR3          3
     64#define AR_KR4          4
     65#define AR_KR5          5
     66#define AR_KR6          6
     67#define AR_KR7          7
     68/* AR 8-15 reserved */
     69#define AR_RSC          16
     70#define AR_BSP          17
     71#define AR_BSPSTORE     18
     72#define AR_RNAT         19
     73/* AR 20 reserved */
     74#define AR_FCR          21
     75/* AR 22-23 reserved */
     76#define AR_EFLAG        24
     77#define AR_CSD          25
     78#define AR_SSD          26
     79#define AR_CFLG         27
     80#define AR_FSR          28
     81#define AR_FIR          29
     82#define AR_FDR          30
     83/* AR 31 reserved */
     84#define AR_CCV          32
     85/* AR 33-35 reserved */
     86#define AR_UNAT         36
     87/* AR 37-39 reserved */
     88#define AR_FPSR         40
     89/* AR 41-43 reserved */
     90#define AR_ITC          44
     91/* AR 45-47 reserved */
     92/* AR 48-63 ignored */
     93#define AR_PFS          64
     94#define AR_LC           65
     95#define AR_EC           66
     96/* AR 67-111 reserved */
     97/* AR 112-127 ignored */
    10798
    10899/** Control registers. */
    109 #define CR_DCR   0
    110 #define CR_ITM   1
    111 #define CR_IVA   2
    112 /* CR3-CR7 are reserved */
    113 #define CR_PTA   8
    114 /* CR9-CR15 are reserved */
    115 #define CR_IPSR  16
    116 #define CR_ISR   17
    117 /* CR18 is reserved */
    118 #define CR_IIP   19
    119 #define CR_IFA   20
    120 #define CR_ITIR  21
    121 #define CR_IIPA  22
    122 #define CR_IFS   23
    123 #define CR_IIM   24
    124 #define CR_IHA   25
    125 /* CR26-CR63 are reserved */
    126 #define CR_LID   64
    127 #define CR_IVR   65
    128 #define CR_TPR   66
    129 #define CR_EOI   67
    130 #define CR_IRR0  68
    131 #define CR_IRR1  69
    132 #define CR_IRR2  70
    133 #define CR_IRR3  71
    134 #define CR_ITV   72
    135 #define CR_PMV   73
    136 #define CR_CMCV  74
    137 /* CR75-CR79 are reserved */
    138 #define CR_LRR0  80
    139 #define CR_LRR1  81
    140 /* CR82-CR127 are reserved */
     100#define CR_DCR          0
     101#define CR_ITM          1
     102#define CR_IVA          2
     103/* CR3-CR7 reserved */
     104#define CR_PTA          8
     105/* CR9-CR15 reserved */
     106#define CR_IPSR         16
     107#define CR_ISR          17
     108/* CR18 reserved */
     109#define CR_IIP          19
     110#define CR_IFA          20
     111#define CR_ITIR         21
     112#define CR_IIPA         22
     113#define CR_IFS          23
     114#define CR_IIM          24
     115#define CR_IHA          25
     116/* CR26-CR63 reserved */
     117#define CR_LID          64
     118#define CR_IVR          65
     119#define CR_TPR          66
     120#define CR_EOI          67
     121#define CR_IRR0         68
     122#define CR_IRR1         69
     123#define CR_IRR2         70
     124#define CR_IRR3         71
     125#define CR_ITV          72
     126#define CR_PMV          73
     127#define CR_CMCV         74
     128/* CR75-CR79 reserved */
     129#define CR_LRR0         80
     130#define CR_LRR1         81
     131/* CR82-CR127 reserved */
    141132
    142133#ifndef __ASM__
    143134
    144 #ifdef KERNEL
    145 #include <typedefs.h>
    146 #else
    147 #include <sys/types.h>
    148 #endif
     135#include <arch/types.h>
    149136
    150137/** Processor Status Register. */
    151 typedef union {
    152         uint64_t value;
    153         struct {
    154                 unsigned int : 1;
    155                 unsigned int be : 1;   /**< Big-Endian data accesses. */
    156                 unsigned int up : 1;   /**< User Performance monitor enable. */
    157                 unsigned int ac : 1;   /**< Alignment Check. */
    158                 unsigned int mfl : 1;  /**< Lower floating-point register written. */
    159                 unsigned int mfh : 1;  /**< Upper floating-point register written. */
    160                 unsigned int : 7;
    161                 unsigned int ic : 1;   /**< Interruption Collection. */
    162                 unsigned int i : 1;    /**< Interrupt Bit. */
    163                 unsigned int pk : 1;   /**< Protection Key enable. */
    164                 unsigned int : 1;
    165                 unsigned int dt : 1;   /**< Data address Translation. */
    166                 unsigned int dfl : 1;  /**< Disabled Floating-point Low register set. */
    167                 unsigned int dfh : 1;  /**< Disabled Floating-point High register set. */
    168                 unsigned int sp : 1;   /**< Secure Performance monitors. */
    169                 unsigned int pp : 1;   /**< Privileged Performance monitor enable. */
    170                 unsigned int di : 1;   /**< Disable Instruction set transition. */
    171                 unsigned int si : 1;   /**< Secure Interval timer. */
    172                 unsigned int db : 1;   /**< Debug Breakpoint fault. */
    173                 unsigned int lp : 1;   /**< Lower Privilege transfer trap. */
    174                 unsigned int tb : 1;   /**< Taken Branch trap. */
    175                 unsigned int rt : 1;   /**< Register Stack Translation. */
    176                 unsigned int : 4;
    177                 unsigned int cpl : 2;  /**< Current Privilege Level. */
    178                 unsigned int is : 1;   /**< Instruction Set. */
    179                 unsigned int mc : 1;   /**< Machine Check abort mask. */
    180                 unsigned int it : 1;   /**< Instruction address Translation. */
    181                 unsigned int id : 1;   /**< Instruction Debug fault disable. */
    182                 unsigned int da : 1;   /**< Disable Data Access and Dirty-bit faults. */
    183                 unsigned int dd : 1;   /**< Data Debug fault disable. */
    184                 unsigned int ss : 1;   /**< Single Step enable. */
    185                 unsigned int ri : 2;   /**< Restart Instruction. */
    186                 unsigned int ed : 1;   /**< Exception Deferral. */
    187                 unsigned int bn : 1;   /**< Register Bank. */
    188                 unsigned int ia : 1;   /**< Disable Instruction Access-bit faults. */
    189         } __attribute__ ((packed));
    190 } psr_t;
     138union psr {
     139        uint64_t value;
     140        struct {
     141                unsigned : 1;
     142                unsigned be : 1;        /**< Big-Endian data accesses. */
     143                unsigned up : 1;        /**< User Performance monitor enable. */
     144                unsigned ac : 1;        /**< Alignment Check. */
     145                unsigned mfl : 1;       /**< Lower floating-point register written. */
     146                unsigned mfh : 1;       /**< Upper floating-point register written. */
     147                unsigned : 7;
     148                unsigned ic : 1;        /**< Interruption Collection. */
     149                unsigned i : 1;         /**< Interrupt Bit. */
     150                unsigned pk : 1;        /**< Protection Key enable. */
     151                unsigned : 1;
     152                unsigned dt : 1;        /**< Data address Translation. */
     153                unsigned dfl : 1;       /**< Disabled Floating-point Low register set. */
     154                unsigned dfh : 1;       /**< Disabled Floating-point High register set. */
     155                unsigned sp : 1;        /**< Secure Performance monitors. */
     156                unsigned pp : 1;        /**< Privileged Performance monitor enable. */
     157                unsigned di : 1;        /**< Disable Instruction set transition. */
     158                unsigned si : 1;        /**< Secure Interval timer. */
     159                unsigned db : 1;        /**< Debug Breakpoint fault. */
     160                unsigned lp : 1;        /**< Lower Privilege transfer trap. */
     161                unsigned tb : 1;        /**< Taken Branch trap. */
     162                unsigned rt : 1;        /**< Register Stack Translation. */
     163                unsigned : 4;
     164                unsigned cpl : 2;       /**< Current Privilege Level. */
     165                unsigned is : 1;        /**< Instruction Set. */
     166                unsigned mc : 1;        /**< Machine Check abort mask. */
     167                unsigned it : 1;        /**< Instruction address Translation. */
     168                unsigned id : 1;        /**< Instruction Debug fault disable. */
     169                unsigned da : 1;        /**< Disable Data Access and Dirty-bit faults. */
     170                unsigned dd : 1;        /**< Data Debug fault disable. */
     171                unsigned ss : 1;        /**< Single Step enable. */
     172                unsigned ri : 2;        /**< Restart Instruction. */
     173                unsigned ed : 1;        /**< Exception Deferral. */
     174                unsigned bn : 1;        /**< Register Bank. */
     175                unsigned ia : 1;        /**< Disable Instruction Access-bit faults. */
     176        } __attribute__ ((packed));
     177};
     178typedef union psr psr_t;
    191179
    192180/** Register Stack Configuration Register */
    193 typedef union {
    194         uint64_t value;
    195         struct {
    196                 unsigned int mode : 2;
    197                 unsigned int pl : 2;    /**< Privilege Level. */
    198                 unsigned int be : 1;    /**< Big-endian. */
    199                 unsigned int : 11;
    200                 unsigned int loadrs : 14;
    201         } __attribute__ ((packed));
    202 } rsc_t;
     181union rsc {
     182        uint64_t value;
     183        struct {
     184                unsigned mode : 2;
     185                unsigned pl : 2;        /**< Privilege Level. */
     186                unsigned be : 1;        /**< Big-endian. */
     187                unsigned : 11;
     188                unsigned loadrs : 14;
     189        } __attribute__ ((packed));
     190};
     191typedef union rsc rsc_t;
    203192
    204193/** External Interrupt Vector Register */
    205 typedef union {
    206         uint8_t vector;
    207         uint64_t value;
    208 } cr_ivr_t;
     194union cr_ivr {
     195        uint8_t  vector;
     196        uint64_t value;
     197};
     198
     199typedef union cr_ivr cr_ivr_t;
    209200
    210201/** Task Priority Register */
    211 typedef union {
    212         uint64_t value;
    213         struct {
    214                 unsigned int : 4;
    215                 unsigned int mic: 4;  /**< Mask Interrupt Class. */
    216                 unsigned int : 8;
    217                 unsigned int mmi: 1;  /**< Mask Maskable Interrupts. */
    218         } __attribute__ ((packed));
    219 } cr_tpr_t;
     202union cr_tpr {
     203        struct {
     204                unsigned : 4;
     205                unsigned mic: 4;                /**< Mask Interrupt Class. */
     206                unsigned : 8;
     207                unsigned mmi: 1;                /**< Mask Maskable Interrupts. */
     208        } __attribute__ ((packed));
     209        uint64_t value;
     210};
     211
     212typedef union cr_tpr cr_tpr_t;
    220213
    221214/** Interval Timer Vector */
    222 typedef union {
    223         uint64_t value;
    224         struct {
    225                 unsigned int vector : 8;
    226                 unsigned int : 4;
    227                 unsigned int : 1;
    228                 unsigned int : 3;
    229                 unsigned int m : 1;       /**< Mask. */
    230         } __attribute__ ((packed));
    231 } cr_itv_t;
     215union cr_itv {
     216        struct {
     217                unsigned vector : 8;
     218                unsigned : 4;
     219                unsigned : 1;
     220                unsigned : 3;
     221                unsigned m : 1;                 /**< Mask. */
     222        } __attribute__ ((packed));
     223        uint64_t value;
     224};
     225
     226typedef union cr_itv cr_itv_t;
    232227
    233228/** Interruption Status Register */
    234 typedef union {
    235         uint64_t value;
     229union cr_isr {
    236230        struct {
    237231                union {
    238232                        /** General Exception code field structuring. */
     233                        struct {
     234                                unsigned ge_na : 4;
     235                                unsigned ge_code : 4;
     236                        } __attribute__ ((packed));
    239237                        uint16_t code;
    240                         struct {
    241                                 unsigned int ge_na : 4;
    242                                 unsigned int ge_code : 4;
    243                         } __attribute__ ((packed));
    244238                };
    245239                uint8_t vector;
    246                 unsigned int : 8;
    247                 unsigned int x : 1;   /**< Execute exception. */
    248                 unsigned int w : 1;   /**< Write exception. */
    249                 unsigned int r : 1;   /**< Read exception. */
    250                 unsigned int na : 1;  /**< Non-access exception. */
    251                 unsigned int sp : 1;  /**< Speculative load exception. */
    252                 unsigned int rs : 1;  /**< Register stack. */
    253                 unsigned int ir : 1;  /**< Incomplete Register frame. */
    254                 unsigned int ni : 1;  /**< Nested Interruption. */
    255                 unsigned int so : 1;  /**< IA-32 Supervisor Override. */
    256                 unsigned int ei : 2;  /**< Excepting Instruction. */
    257                 unsigned int ed : 1;  /**< Exception Deferral. */
    258                 unsigned int : 20;
    259         } __attribute__ ((packed));
    260 } cr_isr_t;
     240                unsigned : 8;
     241                unsigned x : 1;                 /**< Execute exception. */
     242                unsigned w : 1;                 /**< Write exception. */
     243                unsigned r : 1;                 /**< Read exception. */
     244                unsigned na : 1;                /**< Non-access exception. */
     245                unsigned sp : 1;                /**< Speculative load exception. */
     246                unsigned rs : 1;                /**< Register stack. */
     247                unsigned ir : 1;                /**< Incomplete Register frame. */
     248                unsigned ni : 1;                /**< Nested Interruption. */
     249                unsigned so : 1;                /**< IA-32 Supervisor Override. */
     250                unsigned ei : 2;                /**< Excepting Instruction. */
     251                unsigned ed : 1;                /**< Exception Deferral. */
     252                unsigned : 20;
     253        } __attribute__ ((packed));
     254        uint64_t value;
     255};
     256
     257typedef union cr_isr cr_isr_t;
    261258
    262259/** CPUID Register 3 */
    263 typedef union {
    264         uint64_t value;
     260union cpuid3 {
    265261        struct {
    266262                uint8_t number;
     
    270266                uint8_t archrev;
    271267        } __attribute__ ((packed));
    272 } cpuid3_t;
     268        uint64_t value;
     269};
     270
     271typedef union cpuid3 cpuid3_t;
    273272
    274273#endif /* !__ASM__ */
Note: See TracChangeset for help on using the changeset viewer.