Home | History | Annotate | Download | only in Ipf
      1 /// Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
      2 /// This program and the accompanying materials
      3 /// are licensed and made available under the terms and conditions of the BSD License
      4 /// which accompanies this distribution.  The full text of the license may be found at
      5 /// http://opensource.org/licenses/bsd-license.php
      6 ///
      7 /// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
      8 /// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
      9 ///
     10 /// Module Name: AccessGcr.s
     11 ///
     12 ///
     13 ///  IPF specific Global Control Registers accessing functions
     14 ///
     15 
     16 //---------------------------------------------------------------------------------
     17 //++
     18 // AsmReadDcr
     19 //
     20 // This routine is used to Read the value of Default Control Register (DCR).
     21 //
     22 // Arguments :
     23 //
     24 // On Entry :
     25 //
     26 // Return Value: The current value of DCR.
     27 //
     28 //--
     29 //----------------------------------------------------------------------------------
     30 .text
     31 .type   AsmReadDcr, @function
     32 .proc   AsmReadDcr
     33 
     34 AsmReadDcr::
     35          mov            r8 = cr.dcr;;
     36          br.ret.dpnt    b0;;
     37 .endp    AsmReadDcr
     38 
     39 //---------------------------------------------------------------------------------
     40 //++
     41 // AsmWriteDcr
     42 //
     43 // This routine is used to write the value to Default Control Register (DCR).
     44 //
     45 // Arguments :
     46 //
     47 // On Entry : The value need to be written to DCR
     48 //
     49 // Return Value: The value written to DCR.
     50 //
     51 //--
     52 //----------------------------------------------------------------------------------
     53 .text
     54 .type   AsmWriteDcr, @function
     55 .proc   AsmWriteDcr
     56 .regstk 1, 0, 0, 0
     57 
     58 AsmWriteDcr::
     59          mov            cr.dcr = in0
     60          mov            r8 = in0;;
     61          srlz.i;;
     62          srlz.d;;
     63          br.ret.dpnt    b0;;
     64 .endp    AsmWriteDcr
     65 
     66 
     67 //---------------------------------------------------------------------------------
     68 //++
     69 // AsmReadItc
     70 //
     71 // This routine is used to Read the value of Interval Timer Counter Register (ITC).
     72 //
     73 // Arguments :
     74 //
     75 // On Entry :
     76 //
     77 // Return Value: The current value of ITC.
     78 //
     79 //--
     80 //----------------------------------------------------------------------------------
     81 .text
     82 .type   AsmReadItc, @function
     83 .proc   AsmReadItc
     84 
     85 AsmReadItc::
     86          mov            r8 = ar.itc;;
     87          br.ret.dpnt    b0;;
     88 .endp    AsmReadItc
     89 
     90 //---------------------------------------------------------------------------------
     91 //++
     92 // AsmWriteItc
     93 //
     94 // This routine is used to write the value to Interval Timer Counter Register (ITC).
     95 //
     96 // Arguments :
     97 //
     98 // On Entry : The value need to be written to the ITC
     99 //
    100 // Return Value: The value written to the ITC.
    101 //
    102 //--
    103 //----------------------------------------------------------------------------------
    104 .text
    105 .type   AsmWriteItc, @function
    106 .proc   AsmWriteItc
    107 .regstk 1, 0, 0, 0
    108 
    109 AsmWriteItc::
    110          mov            ar.itc = in0
    111          mov            r8 = in0;;
    112          br.ret.dpnt    b0;;
    113 .endp    AsmWriteItc
    114 
    115 
    116 //---------------------------------------------------------------------------------
    117 //++
    118 // AsmReadItm
    119 //
    120 // This routine is used to Read the value of Interval Timer Match Register (ITM).
    121 //
    122 // Arguments :
    123 //
    124 // On Entry :
    125 //
    126 // Return Value: The current value of ITM.
    127 //
    128 //--
    129 //----------------------------------------------------------------------------------
    130 .text
    131 .type   AsmReadItm, @function
    132 .proc   AsmReadItm
    133 
    134 AsmReadItm::
    135          mov            r8 = cr.itm;;
    136          br.ret.dpnt    b0;;
    137 .endp    AsmReadItm
    138 
    139 //---------------------------------------------------------------------------------
    140 //++
    141 // AsmWriteItm
    142 //
    143 // This routine is used to write the value to Interval Timer Match Register (ITM).
    144 //
    145 // Arguments :
    146 //
    147 // On Entry : The value need to be written to ITM
    148 //
    149 // Return Value: The value written to ITM.
    150 //
    151 //--
    152 //----------------------------------------------------------------------------------
    153 .text
    154 .type   AsmWriteItm, @function
    155 .proc   AsmWriteItm
    156 .regstk 1, 0, 0, 0
    157 
    158 AsmWriteItm::
    159          mov            cr.itm = in0
    160          mov            r8 = in0;;
    161          srlz.d;
    162          br.ret.dpnt    b0;;
    163 .endp    AsmWriteItm
    164 
    165 
    166 //---------------------------------------------------------------------------------
    167 //++
    168 // AsmReadIva
    169 //
    170 // This routine is used to read the value of Interruption Vector Address Register (IVA).
    171 //
    172 // Arguments :
    173 //
    174 // On Entry :
    175 //
    176 // Return Value: The current value of IVA.
    177 //
    178 //--
    179 //----------------------------------------------------------------------------------
    180 .text
    181 .type   AsmReadIva, @function
    182 .proc   AsmReadIva
    183 
    184 AsmReadIva::
    185          mov            r8 = cr.iva;;
    186          br.ret.dpnt    b0;;
    187 .endp    AsmReadIva
    188 
    189 //---------------------------------------------------------------------------------
    190 //++
    191 // AsmWriteIva
    192 //
    193 // This routine is used to write the value to Interruption Vector Address Register (IVA).
    194 //
    195 // Arguments :
    196 //
    197 // On Entry : The value need to be written to IVA
    198 //
    199 // Return Value: The value written to IVA.
    200 //
    201 //--
    202 //----------------------------------------------------------------------------------
    203 .text
    204 .type   AsmWriteIva, @function
    205 .proc   AsmWriteIva
    206 .regstk 1, 0, 0, 0
    207 
    208 AsmWriteIva::
    209          mov            cr.iva = in0
    210          mov            r8 = in0;;
    211          br.ret.dpnt    b0;;
    212 .endp    AsmWriteIva
    213 
    214 
    215 //---------------------------------------------------------------------------------
    216 //++
    217 // AsmReadPta
    218 //
    219 // This routine is used to read the value of Page Table Address Register (PTA).
    220 //
    221 // Arguments :
    222 //
    223 // On Entry :
    224 //
    225 // Return Value: The current value of PTA.
    226 //
    227 //--
    228 //----------------------------------------------------------------------------------
    229 .text
    230 .type   AsmReadPta, @function
    231 .proc   AsmReadPta
    232 
    233 AsmReadPta::
    234          mov            r8 = cr.pta;;
    235          br.ret.dpnt    b0;;
    236 .endp    AsmReadPta
    237 
    238 //---------------------------------------------------------------------------------
    239 //++
    240 // AsmWritePta
    241 //
    242 // This routine is used to write the value to Page Table Address Register (PTA)).
    243 //
    244 // Arguments :
    245 //
    246 // On Entry : The value need to be written to PTA
    247 //
    248 // Return Value: The value written to PTA.
    249 //
    250 //--
    251 //----------------------------------------------------------------------------------
    252 .text
    253 .type   AsmWritePta, @function
    254 .proc   AsmWritePta
    255 .regstk 1, 0, 0, 0
    256 
    257 AsmWritePta::
    258          mov            cr.pta = in0
    259          mov            r8 = in0;;
    260          srlz.i;;
    261          srlz.d;;
    262          br.ret.dpnt    b0;;
    263 .endp    AsmWritePta