Home | History | Annotate | Download | only in Ipf
      1 /// @file
      2 ///  IPF specific AsmReadKrX() and AsmWriteKrX() functions, 'X' is from '0' to '6'
      3 ///
      4 /// Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>
      5 /// This program and the accompanying materials
      6 /// are licensed and made available under the terms and conditions of the BSD License
      7 /// which accompanies this distribution.  The full text of the license may be found at
      8 /// http://opensource.org/licenses/bsd-license.php.
      9 ///
     10 /// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     11 /// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     12 ///
     13 /// Module Name: AccessKr.s
     14 ///
     15 ///
     16 
     17 //---------------------------------------------------------------------------------
     18 //++
     19 // AsmReadKr0
     20 //
     21 // This routine is used to get KR0.
     22 //
     23 // Arguments :
     24 //
     25 // On Entry :  None.
     26 //
     27 // Return Value: The value store in KR0.
     28 //
     29 //--
     30 //----------------------------------------------------------------------------------
     31 .text
     32 .type   AsmReadKr0, @function
     33 .proc   AsmReadKr0
     34 
     35 AsmReadKr0::
     36         mov             r8 = ar.k0;;
     37         br.ret.dpnt     b0;;
     38 .endp   AsmReadKr0
     39 
     40 //---------------------------------------------------------------------------------
     41 //++
     42 // AsmWriteKr0
     43 //
     44 // This routine is used to Write KR0.
     45 //
     46 // Arguments :
     47 //
     48 // On Entry :  None.
     49 //
     50 // Return Value: The value written to the KR0.
     51 //
     52 //--
     53 //----------------------------------------------------------------------------------
     54 
     55 .text
     56 .type   AsmWriteKr0, @function
     57 .proc   AsmWriteKr0
     58 .regstk 1, 3, 0, 0
     59 
     60 AsmWriteKr0::
     61         alloc loc1=ar.pfs,1,4,0,0 ;;
     62         mov             loc2 = psr;;
     63         rsm             0x6000;;                      // Masking interrupts
     64         mov             ar.k0 = in0
     65         srlz.i;;
     66         mov             psr.l = loc2;;
     67         srlz.i;;
     68         srlz.d;;
     69         mov             r8 = in0;;
     70         mov ar.pfs=loc1 ;;
     71         br.ret.dpnt     b0;;
     72 .endp   AsmWriteKr0
     73 
     74 
     75 //---------------------------------------------------------------------------------
     76 //++
     77 // AsmReadKr1
     78 //
     79 // This routine is used to get KR1.
     80 //
     81 // Arguments :
     82 //
     83 // On Entry :  None.
     84 //
     85 // Return Value: The value store in KR1.
     86 //
     87 //--
     88 //----------------------------------------------------------------------------------
     89 .text
     90 .type   AsmReadKr1, @function
     91 .proc   AsmReadKr1
     92 
     93 AsmReadKr1::
     94         mov             r8 = ar.k1;;
     95         br.ret.dpnt     b0;;
     96 .endp   AsmReadKr1
     97 
     98 //---------------------------------------------------------------------------------
     99 //++
    100 // AsmWriteKr1
    101 //
    102 // This routine is used to Write KR1.
    103 //
    104 // Arguments :
    105 //
    106 // On Entry :  None.
    107 //
    108 // Return Value: The value written to the KR1.
    109 //
    110 //--
    111 //----------------------------------------------------------------------------------
    112 .text
    113 .type   AsmWriteKr1, @function
    114 .proc   AsmWriteKr1
    115 
    116 AsmWriteKr1::
    117         mov             ar.k1 = in0
    118         mov             r8 = in0;;
    119         br.ret.dpnt     b0;;
    120 .endp   AsmWriteKr1
    121 
    122 
    123 //---------------------------------------------------------------------------------
    124 //++
    125 // AsmReadKr2
    126 //
    127 // This routine is used to get KR2.
    128 //
    129 // Arguments :
    130 //
    131 // On Entry :  None.
    132 //
    133 // Return Value: The value store in KR2.
    134 //
    135 //--
    136 //----------------------------------------------------------------------------------
    137 .text
    138 .type   AsmReadKr2, @function
    139 .proc   AsmReadKr2
    140 
    141 AsmReadKr2::
    142         mov             r8 = ar.k2;;
    143         br.ret.dpnt     b0;;
    144 .endp   AsmReadKr2
    145 
    146 //---------------------------------------------------------------------------------
    147 //++
    148 // AsmWriteKr2
    149 //
    150 // This routine is used to Write KR2.
    151 //
    152 // Arguments :
    153 //
    154 // On Entry :  None.
    155 //
    156 // Return Value: The value written to the KR2.
    157 //
    158 //--
    159 //----------------------------------------------------------------------------------
    160 .text
    161 .type   AsmWriteKr2, @function
    162 .proc   AsmWriteKr2
    163 
    164 AsmWriteKr2::
    165         mov             ar.k2 = in0
    166         mov             r8 = in0;;
    167         br.ret.dpnt     b0;;
    168 .endp   AsmWriteKr2
    169 
    170 
    171 //---------------------------------------------------------------------------------
    172 //++
    173 // AsmReadKr3
    174 //
    175 // This routine is used to get KR3.
    176 //
    177 // Arguments :
    178 //
    179 // On Entry :  None.
    180 //
    181 // Return Value: The value store in KR3.
    182 //
    183 //--
    184 //----------------------------------------------------------------------------------
    185 .text
    186 .type   AsmReadKr3, @function
    187 .proc   AsmReadKr3
    188 
    189 AsmReadKr3::
    190         mov             r8 = ar.k3;;
    191         br.ret.dpnt     b0;;
    192 .endp   AsmReadKr3
    193 
    194 //---------------------------------------------------------------------------------
    195 //++
    196 // AsmWriteKr3
    197 //
    198 // This routine is used to Write KR3.
    199 //
    200 // Arguments :
    201 //
    202 // On Entry :  None.
    203 //
    204 // Return Value: The value written to the KR3.
    205 //
    206 //--
    207 //----------------------------------------------------------------------------------
    208 .text
    209 .type   AsmWriteKr3, @function
    210 .proc   AsmWriteKr3
    211 
    212 AsmWriteKr3::
    213         mov             ar.k3 = in0
    214         mov             r8 = in0;;
    215         br.ret.dpnt     b0;;
    216 .endp   AsmWriteKr3
    217 
    218 
    219 //---------------------------------------------------------------------------------
    220 //++
    221 // AsmReadKr4
    222 //
    223 // This routine is used to get KR4.
    224 //
    225 // Arguments :
    226 //
    227 // On Entry :  None.
    228 //
    229 // Return Value: The value store in KR4.
    230 //
    231 //--
    232 //----------------------------------------------------------------------------------
    233 .text
    234 .type   AsmReadKr4, @function
    235 .proc   AsmReadKr4
    236 
    237 AsmReadKr4::
    238         mov             r8 = ar.k4;;
    239         br.ret.dpnt     b0;;
    240 .endp   AsmReadKr4
    241 
    242 //---------------------------------------------------------------------------------
    243 //++
    244 // AsmWriteKr4
    245 //
    246 // This routine is used to Write KR4.
    247 //
    248 // Arguments :
    249 //
    250 // On Entry :  None.
    251 //
    252 // Return Value: The value written to the KR4.
    253 //
    254 //--
    255 //----------------------------------------------------------------------------------
    256 .text
    257 .type   AsmWriteKr4, @function
    258 .proc   AsmWriteKr4
    259 
    260 AsmWriteKr4::
    261         mov             ar.k4 = in0
    262         mov             r8 = in0;;
    263         br.ret.dpnt     b0;;
    264 .endp   AsmWriteKr4
    265 
    266 
    267 //---------------------------------------------------------------------------------
    268 //++
    269 // AsmReadKr5
    270 //
    271 // This routine is used to get KR5.
    272 //
    273 // Arguments :
    274 //
    275 // On Entry :  None.
    276 //
    277 // Return Value: The value store in KR5.
    278 //
    279 //--
    280 //----------------------------------------------------------------------------------
    281 .text
    282 .type   AsmReadKr5, @function
    283 .proc   AsmReadKr5
    284 
    285 AsmReadKr5::
    286         mov             r8 = ar.k5;;
    287         br.ret.dpnt     b0;;
    288 .endp   AsmReadKr5
    289 
    290 //---------------------------------------------------------------------------------
    291 //++
    292 // AsmWriteKr5
    293 //
    294 // This routine is used to Write KR5.
    295 //
    296 // Arguments :
    297 //
    298 // On Entry :  None.
    299 //
    300 // Return Value: The value written to the KR5.
    301 //
    302 //--
    303 //----------------------------------------------------------------------------------
    304 .text
    305 .type   AsmWriteKr5, @function
    306 .proc   AsmWriteKr5
    307 
    308 AsmWriteKr5::
    309         mov             ar.k5 = in0
    310         mov             r8 = in0;;
    311         br.ret.dpnt     b0;;
    312 .endp   AsmWriteKr5
    313 
    314 
    315 //---------------------------------------------------------------------------------
    316 //++
    317 // AsmReadKr6
    318 //
    319 // This routine is used to get KR6.
    320 //
    321 // Arguments :
    322 //
    323 // On Entry :  None.
    324 //
    325 // Return Value: The value store in KR6.
    326 //
    327 //--
    328 //----------------------------------------------------------------------------------
    329 .text
    330 .type   AsmReadKr6, @function
    331 .proc   AsmReadKr6
    332 
    333 AsmReadKr6::
    334         mov             r8 = ar.k6;;
    335         br.ret.dpnt     b0;;
    336 .endp   AsmReadKr6
    337 
    338 //---------------------------------------------------------------------------------
    339 //++
    340 // AsmWriteKr6
    341 //
    342 // This routine is used to write KR6.
    343 //
    344 // Arguments :
    345 //
    346 // On Entry :  None.
    347 //
    348 // Return Value: The value written to the KR6.
    349 //
    350 //--
    351 //----------------------------------------------------------------------------------
    352 .text
    353 .type   AsmWriteKr6, @function
    354 .proc   AsmWriteKr6
    355 
    356 AsmWriteKr6::
    357         mov             ar.k6 = in0
    358         mov             r8 = in0;;
    359         br.ret.dpnt     b0;;
    360 .endp   AsmWriteKr6
    361