3939.text
4040.align 2
4141
42+ GCC_ASM_EXPORT(ArmReadHcrEl2)
43+ GCC_ASM_EXPORT(ArmReadAA64MMFR1EL1)
44+ GCC_ASM_EXPORT(ArmReadAA64MMFR4EL1)
4245GCC_ASM_EXPORT(ArmReadCntFrq)
4346GCC_ASM_EXPORT(ArmReadCntPct)
4447GCC_ASM_EXPORT(ArmReadCntkCtl)
4548GCC_ASM_EXPORT(ArmWriteCntkCtl)
49+ GCC_ASM_EXPORT(ArmReadCntkCtl12)
50+ GCC_ASM_EXPORT(ArmWriteCntkCtl12)
4651GCC_ASM_EXPORT(ArmReadCntpTval)
4752GCC_ASM_EXPORT(ArmWriteCntpTval)
53+ GCC_ASM_EXPORT(ArmReadCntpTval02)
54+ GCC_ASM_EXPORT(ArmWriteCntpTval02)
4855GCC_ASM_EXPORT(ArmReadCntpCtl)
56+ GCC_ASM_EXPORT(ArmReadCntpCtl02)
4957GCC_ASM_EXPORT(ArmReadCntvTval)
5058GCC_ASM_EXPORT(ArmWriteCntvTval)
59+ GCC_ASM_EXPORT(ArmReadCntvTval02)
60+ GCC_ASM_EXPORT(ArmWriteCntvTval02)
5161GCC_ASM_EXPORT(ArmReadCntvCtl)
5262GCC_ASM_EXPORT(ArmWriteCntvCtl)
63+ GCC_ASM_EXPORT(ArmReadCntvCtl02)
64+ GCC_ASM_EXPORT(ArmWriteCntvCtl02)
5365GCC_ASM_EXPORT(ArmReadCntvCt)
5466GCC_ASM_EXPORT(ArmReadCntpCval)
5567GCC_ASM_EXPORT(ArmWriteCntpCval)
68+ GCC_ASM_EXPORT(ArmReadCntpCval02)
69+ GCC_ASM_EXPORT(ArmWriteCntpCval02)
5670GCC_ASM_EXPORT(ArmReadCntvCval)
5771GCC_ASM_EXPORT(ArmWriteCntvCval)
72+ GCC_ASM_EXPORT(ArmReadCntvCval02)
73+ GCC_ASM_EXPORT(ArmWriteCntvCval02)
5874GCC_ASM_EXPORT(ArmReadCntvOff)
5975GCC_ASM_EXPORT(ArmWriteCntvOff)
6076GCC_ASM_EXPORT(ArmReadCnthpCtl)
@@ -66,6 +82,20 @@ GCC_ASM_EXPORT(ArmWriteCnthvCtl)
6682GCC_ASM_EXPORT(ArmReadCnthvTval)
6783GCC_ASM_EXPORT(ArmWriteCnthvTval)
6884GCC_ASM_EXPORT(ArmWriteCntpCtl)
85+ GCC_ASM_EXPORT(ArmWriteCntpCtl02)
86+
87+ ASM_PFX(ArmReadHcrEl2):
88+ mrs x0, hcr_el2 // Read HCR_EL2
89+ ret
90+
91+ ASM_PFX(ArmReadAA64MMFR1EL1):
92+ mrs x0, id_aa64mmfr1_el1 // Read ID_AA64MMFR1_EL1
93+ ret
94+
95+ ASM_PFX(ArmReadAA64MMFR4EL1):
96+ //mrs x0, id_aa64mmfr4_el1 // Read ID_AA64MMFR4_EL1
97+ mrs x0, s3_0_c0_c7_4
98+ ret
6999
70100ASM_PFX(ArmReadCntFrq):
71101 mrs x0, cntfrq_el0 // Read CNTFRQ
@@ -81,55 +111,92 @@ ASM_PFX(ArmReadCntkCtl):
81111 mrs x0, cntkctl_el1 // Read CNTK_CTL (Timer PL1 Control Register)
82112 ret
83113
114+ ASM_PFX(ArmReadCntkCtl12):
115+ mrs x0, cntkctl_el12 // Read CNTK_CTL (Timer PL1 Control Register) when EL2 Host
116+ ret
84117
85118ASM_PFX(ArmWriteCntkCtl):
86119 msr cntkctl_el1, x0 // Write to CNTK_CTL (Timer PL1 Control Register)
87120 isb
88121 ret
89122
123+ ASM_PFX(ArmWriteCntkCtl12):
124+ msr cntkctl_el12, x0 // Write to CNTK_CTL (Timer PL1 Control Register) when EL2 Host
125+ isb
126+ ret
90127
91128ASM_PFX(ArmReadCntpTval):
92- mrs x0, cntp_tval_el0 // Read CNTP_TVAL (PL1 physical timer value register)
129+ mrs x0, cntp_tval_el0 // Read CNTP_TVAL (PL1 physical timer value register)
130+ ret
131+
132+ ASM_PFX(ArmReadCntpTval02):
133+ mrs x0, cntp_tval_el02 // Read CNTP_TVAL (PL1 physical timer value register) when EL2 Host
93134 ret
94135
95136ASM_PFX(ArmWriteCntpTval):
96137 msr cntp_tval_el0, x0 // Write to CNTP_TVAL (PL1 physical timer value register)
97138 isb
98139 ret
99140
141+ ASM_PFX(ArmWriteCntpTval02):
142+ msr cntp_tval_el02, x0 // Write to CNTP_TVAL (PL1 physical timer value register) EL2 Host
143+ isb
144+ ret
100145
101146ASM_PFX(ArmReadCntpCtl):
102- mrs x0, cntp_ctl_el0 // Read CNTP_CTL (PL1 Physical Timer Control Register)
147+ mrs x0, cntp_ctl_el0 // Read CNTP_CTL (PL1 Physical Timer Control Register)
148+ ret
149+
150+ ASM_PFX(ArmReadCntpCtl02):
151+ mrs x0, cntp_ctl_el02 // Read CNTP_CTL (PL1 Physical Timer Control Register) when EL2 Host
103152 ret
104153
105154
106155ASM_PFX(ArmWriteCntpCtl):
107- msr cntp_ctl_el0, x0 // Write to CNTP_CTL (PL1 Physical Timer Control Register)
156+ msr cntp_ctl_el0, x0 // Write CNTP_CTL (PL1 Physical Timer Control Register)
108157 isb
109158 ret
110159
160+ ASM_PFX(ArmWriteCntpCtl02):
161+ msr cntp_ctl_el02, x0 // Write CNTP_CTL (PL1 Physical Timer Control Register) when EL2 Host
162+ isb
163+ ret
111164
112165ASM_PFX(ArmReadCntvTval):
113166 mrs x0, cntv_tval_el0 // Read CNTV_TVAL (Virtual Timer Value register)
114167 ret
115168
169+ ASM_PFX(ArmReadCntvTval02):
170+ mrs x0, cntv_tval_el02 // Read CNTV_TVAL_EL02 (Virtual Timer Value register)
171+ ret
116172
117173ASM_PFX(ArmWriteCntvTval):
118174 msr cntv_tval_el0, x0 // Write to CNTV_TVAL (Virtual Timer Value register)
119175 isb
120176 ret
121177
178+ ASM_PFX(ArmWriteCntvTval02):
179+ msr cntv_tval_el02, x0 // Write to CNTV_TVAL_EL02 (Virtual Timer Value register)
180+ isb
181+ ret
122182
123183ASM_PFX(ArmReadCntvCtl):
124184 mrs x0, cntv_ctl_el0 // Read CNTV_CTL (Virtual Timer Control Register)
125185 ret
126186
187+ ASM_PFX(ArmReadCntvCtl02):
188+ mrs x0, cntv_ctl_el02 // Read CNTV_CTL_EL02 (Virtual Timer Control Register)
189+ ret
127190
128191ASM_PFX(ArmWriteCntvCtl):
129192 msr cntv_ctl_el0, x0 // Write to CNTV_CTL (Virtual Timer Control Register)
130193 isb
131194 ret
132195
196+ ASM_PFX(ArmWriteCntvCtl02):
197+ msr cntv_ctl_el02, x0 // Write to CNTV_CTL_EL02 (Virtual Timer Control Register)
198+ isb
199+ ret
133200
134201ASM_PFX(ArmReadCntvCt):
135202 mrs x0, cntvct_el0 // Read CNTVCT (Virtual Count Register)
@@ -140,23 +207,37 @@ ASM_PFX(ArmReadCntpCval):
140207 mrs x0, cntp_cval_el0 // Read CNTP_CTVAL (Physical Timer Compare Value Register)
141208 ret
142209
210+ ASM_PFX(ArmReadCntpCval02):
211+ mrs x0, cntp_cval_el02 // Read CNTP_CTVAL_EL02 (Physical Timer Compare Value Register)
212+ ret
143213
144214ASM_PFX(ArmWriteCntpCval):
145215 msr cntp_cval_el0, x0 // Write to CNTP_CTVAL (Physical Timer Compare Value Register)
146216 isb
147217 ret
148218
219+ ASM_PFX(ArmWriteCntpCval02):
220+ msr cntp_cval_el02, x0 // Write to CNTP_CTVAL_EL02 (Physical Timer Compare Value Register)
221+ isb
222+ ret
149223
150224ASM_PFX(ArmReadCntvCval):
151225 mrs x0, cntv_cval_el0 // Read CNTV_CTVAL (Virtual Timer Compare Value Register)
152226 ret
153227
228+ ASM_PFX(ArmReadCntvCval02):
229+ mrs x0, cntv_cval_el02 // Read CNTV_CTVAL_EL02 (Virtual Timer Compare Value Register)
230+ ret
154231
155232ASM_PFX(ArmWriteCntvCval):
156233 msr cntv_cval_el0, x0 // write to CNTV_CTVAL (Virtual Timer Compare Value Register)
157234 isb
158235 ret
159236
237+ ASM_PFX(ArmWriteCntvCval02):
238+ msr cntv_cval_el02, x0 // write to CNTV_CTVAL_EL02 (Virtual Timer Compare Value Register)
239+ isb
240+ ret
160241
161242ASM_PFX(ArmReadCntvOff):
162243 mrs x0, cntvoff_el2 // Read CNTVOFF (virtual Offset register)
0 commit comments