Home | History | Annotate | Download | only in AArch64
      1 #------------------------------------------------------------------------------
      2 #
      3 # Copyright (c) 2011 - 2013, ARM Limited. All rights reserved.
      4 #
      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 #------------------------------------------------------------------------------
     14 
     15 .text
     16 .align 2
     17 
     18 GCC_ASM_EXPORT(ArmReadCntFrq)
     19 GCC_ASM_EXPORT(ArmWriteCntFrq)
     20 GCC_ASM_EXPORT(ArmReadCntPct)
     21 GCC_ASM_EXPORT(ArmReadCntkCtl)
     22 GCC_ASM_EXPORT(ArmWriteCntkCtl)
     23 GCC_ASM_EXPORT(ArmReadCntpTval)
     24 GCC_ASM_EXPORT(ArmWriteCntpTval)
     25 GCC_ASM_EXPORT(ArmReadCntpCtl)
     26 GCC_ASM_EXPORT(ArmWriteCntpCtl)
     27 GCC_ASM_EXPORT(ArmReadCntvTval)
     28 GCC_ASM_EXPORT(ArmWriteCntvTval)
     29 GCC_ASM_EXPORT(ArmReadCntvCtl)
     30 GCC_ASM_EXPORT(ArmWriteCntvCtl)
     31 GCC_ASM_EXPORT(ArmReadCntvCt)
     32 GCC_ASM_EXPORT(ArmReadCntpCval)
     33 GCC_ASM_EXPORT(ArmWriteCntpCval)
     34 GCC_ASM_EXPORT(ArmReadCntvCval)
     35 GCC_ASM_EXPORT(ArmWriteCntvCval)
     36 GCC_ASM_EXPORT(ArmReadCntvOff)
     37 GCC_ASM_EXPORT(ArmWriteCntvOff)
     38 
     39 ASM_PFX(ArmReadCntFrq):
     40   mrs   x0, cntfrq_el0           // Read CNTFRQ
     41   ret
     42 
     43 
     44 # NOTE - Can only write while at highest implemented EL level (EL3 on model). Else ReadOnly (EL2, EL1, EL0)
     45 ASM_PFX(ArmWriteCntFrq):
     46   msr   cntfrq_el0, x0           // Write to CNTFRQ
     47   ret
     48 
     49 
     50 ASM_PFX(ArmReadCntPct):
     51   mrs   x0, cntpct_el0           // Read CNTPCT (Physical counter register)
     52   ret
     53 
     54 
     55 ASM_PFX(ArmReadCntkCtl):
     56   mrs   x0, cntkctl_el1          // Read CNTK_CTL (Timer PL1 Control Register)
     57   ret
     58 
     59 
     60 ASM_PFX(ArmWriteCntkCtl):
     61   msr   cntkctl_el1, x0          // Write to CNTK_CTL (Timer PL1 Control Register)
     62   ret
     63 
     64 
     65 ASM_PFX(ArmReadCntpTval):
     66   mrs   x0, cntp_tval_el0        // Read CNTP_TVAL (PL1 physical timer value register)
     67   ret
     68 
     69 
     70 ASM_PFX(ArmWriteCntpTval):
     71   msr   cntp_tval_el0, x0        // Write to CNTP_TVAL (PL1 physical timer value register)
     72   ret
     73 
     74 
     75 ASM_PFX(ArmReadCntpCtl):
     76   mrs   x0, cntp_ctl_el0         // Read CNTP_CTL (PL1 Physical Timer Control Register)
     77   ret
     78 
     79 
     80 ASM_PFX(ArmWriteCntpCtl):
     81   msr   cntp_ctl_el0, x0         // Write to  CNTP_CTL (PL1 Physical Timer Control Register)
     82   ret
     83 
     84 
     85 ASM_PFX(ArmReadCntvTval):
     86   mrs   x0, cntv_tval_el0        // Read CNTV_TVAL (Virtual Timer Value register)
     87   ret
     88 
     89 
     90 ASM_PFX(ArmWriteCntvTval):
     91   msr   cntv_tval_el0, x0        // Write to CNTV_TVAL (Virtual Timer Value register)
     92   ret
     93 
     94 
     95 ASM_PFX(ArmReadCntvCtl):
     96   mrs   x0, cntv_ctl_el0         // Read CNTV_CTL (Virtual Timer Control Register)
     97   ret
     98 
     99 
    100 ASM_PFX(ArmWriteCntvCtl):
    101   msr   cntv_ctl_el0, x0         // Write to CNTV_CTL (Virtual Timer Control Register)
    102   ret
    103 
    104 
    105 ASM_PFX(ArmReadCntvCt):
    106   mrs  x0, cntvct_el0            // Read CNTVCT  (Virtual Count Register)
    107   ret
    108 
    109 
    110 ASM_PFX(ArmReadCntpCval):
    111   mrs   x0, cntp_cval_el0        // Read CNTP_CTVAL (Physical Timer Compare Value Register)
    112   ret
    113 
    114 
    115 ASM_PFX(ArmWriteCntpCval):
    116   msr   cntp_cval_el0, x0        // Write to CNTP_CTVAL (Physical Timer Compare Value Register)
    117   ret
    118 
    119 
    120 ASM_PFX(ArmReadCntvCval):
    121   mrs   x0, cntv_cval_el0        // Read CNTV_CTVAL (Virtual Timer Compare Value Register)
    122   ret
    123 
    124 
    125 ASM_PFX(ArmWriteCntvCval):
    126   msr   cntv_cval_el0, x0        // write to  CNTV_CTVAL (Virtual Timer Compare Value Register)
    127   ret
    128 
    129 
    130 ASM_PFX(ArmReadCntvOff):
    131   mrs   x0, cntvoff_el2          // Read CNTVOFF (virtual Offset register)
    132   ret
    133 
    134 
    135 ASM_PFX(ArmWriteCntvOff):
    136   msr   cntvoff_el2, x0          // Write to CNTVOFF (Virtual Offset register)
    137   ret
    138 
    139 
    140 ASM_FUNCTION_REMOVE_IF_UNREFERENCED
    141