]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Library/ArmLib/AArch64/AArch64ArchTimerSupport.S
ArmPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / ArmPkg / Library / ArmLib / AArch64 / AArch64ArchTimerSupport.S
CommitLineData
25402f5d
HL
1#------------------------------------------------------------------------------\r
2#\r
3# Copyright (c) 2011 - 2013, ARM Limited. All rights reserved.\r
0efaa42f 4# Copyright (c) 2016, Linaro Limited. All rights reserved.\r
25402f5d 5#\r
4059386c 6# SPDX-License-Identifier: BSD-2-Clause-Patent\r
25402f5d
HL
7#\r
8#------------------------------------------------------------------------------\r
9\r
0efaa42f
AB
10#include <AsmMacroIoLibV8.h>\r
11\r
12ASM_FUNC(ArmReadCntFrq)\r
25402f5d
HL
13 mrs x0, cntfrq_el0 // Read CNTFRQ\r
14 ret\r
15\r
16\r
17# NOTE - Can only write while at highest implemented EL level (EL3 on model). Else ReadOnly (EL2, EL1, EL0)\r
0efaa42f 18ASM_FUNC(ArmWriteCntFrq)\r
25402f5d
HL
19 msr cntfrq_el0, x0 // Write to CNTFRQ\r
20 ret\r
21\r
22\r
0efaa42f 23ASM_FUNC(ArmReadCntPct)\r
25402f5d
HL
24 mrs x0, cntpct_el0 // Read CNTPCT (Physical counter register)\r
25 ret\r
26\r
27\r
0efaa42f 28ASM_FUNC(ArmReadCntkCtl)\r
25402f5d
HL
29 mrs x0, cntkctl_el1 // Read CNTK_CTL (Timer PL1 Control Register)\r
30 ret\r
31\r
32\r
0efaa42f 33ASM_FUNC(ArmWriteCntkCtl)\r
c37e542b 34 msr cntkctl_el1, x0 // Write to CNTK_CTL (Timer PL1 Control Register)\r
25402f5d
HL
35 ret\r
36\r
37\r
0efaa42f 38ASM_FUNC(ArmReadCntpTval)\r
25402f5d
HL
39 mrs x0, cntp_tval_el0 // Read CNTP_TVAL (PL1 physical timer value register)\r
40 ret\r
41\r
42\r
0efaa42f 43ASM_FUNC(ArmWriteCntpTval)\r
25402f5d
HL
44 msr cntp_tval_el0, x0 // Write to CNTP_TVAL (PL1 physical timer value register)\r
45 ret\r
46\r
47\r
0efaa42f 48ASM_FUNC(ArmReadCntpCtl)\r
25402f5d
HL
49 mrs x0, cntp_ctl_el0 // Read CNTP_CTL (PL1 Physical Timer Control Register)\r
50 ret\r
51\r
52\r
0efaa42f 53ASM_FUNC(ArmWriteCntpCtl)\r
25402f5d
HL
54 msr cntp_ctl_el0, x0 // Write to CNTP_CTL (PL1 Physical Timer Control Register)\r
55 ret\r
56\r
57\r
0efaa42f 58ASM_FUNC(ArmReadCntvTval)\r
25402f5d
HL
59 mrs x0, cntv_tval_el0 // Read CNTV_TVAL (Virtual Timer Value register)\r
60 ret\r
61\r
62\r
0efaa42f 63ASM_FUNC(ArmWriteCntvTval)\r
25402f5d
HL
64 msr cntv_tval_el0, x0 // Write to CNTV_TVAL (Virtual Timer Value register)\r
65 ret\r
66\r
67\r
0efaa42f 68ASM_FUNC(ArmReadCntvCtl)\r
25402f5d
HL
69 mrs x0, cntv_ctl_el0 // Read CNTV_CTL (Virtual Timer Control Register)\r
70 ret\r
71\r
72\r
0efaa42f 73ASM_FUNC(ArmWriteCntvCtl)\r
25402f5d
HL
74 msr cntv_ctl_el0, x0 // Write to CNTV_CTL (Virtual Timer Control Register)\r
75 ret\r
76\r
77\r
0efaa42f 78ASM_FUNC(ArmReadCntvCt)\r
25402f5d
HL
79 mrs x0, cntvct_el0 // Read CNTVCT (Virtual Count Register)\r
80 ret\r
81\r
82\r
0efaa42f 83ASM_FUNC(ArmReadCntpCval)\r
25402f5d
HL
84 mrs x0, cntp_cval_el0 // Read CNTP_CTVAL (Physical Timer Compare Value Register)\r
85 ret\r
86\r
87\r
0efaa42f 88ASM_FUNC(ArmWriteCntpCval)\r
25402f5d
HL
89 msr cntp_cval_el0, x0 // Write to CNTP_CTVAL (Physical Timer Compare Value Register)\r
90 ret\r
91\r
92\r
0efaa42f 93ASM_FUNC(ArmReadCntvCval)\r
25402f5d
HL
94 mrs x0, cntv_cval_el0 // Read CNTV_CTVAL (Virtual Timer Compare Value Register)\r
95 ret\r
96\r
97\r
0efaa42f 98ASM_FUNC(ArmWriteCntvCval)\r
25402f5d
HL
99 msr cntv_cval_el0, x0 // write to CNTV_CTVAL (Virtual Timer Compare Value Register)\r
100 ret\r
101\r
102\r
0efaa42f 103ASM_FUNC(ArmReadCntvOff)\r
25402f5d
HL
104 mrs x0, cntvoff_el2 // Read CNTVOFF (virtual Offset register)\r
105 ret\r
106\r
107\r
0efaa42f 108ASM_FUNC(ArmWriteCntvOff)\r
25402f5d
HL
109 msr cntvoff_el2, x0 // Write to CNTVOFF (Virtual Offset register)\r
110 ret\r
111\r
112\r
113ASM_FUNCTION_REMOVE_IF_UNREFERENCED\r