|
233 | 233 | .Lskip_fgt_\@: |
234 | 234 | .endm |
235 | 235 |
|
| 236 | +.macro __init_el2_fgt2 |
| 237 | + mrs x1, id_aa64mmfr0_el1 |
| 238 | + ubfx x1, x1, #ID_AA64MMFR0_EL1_FGT_SHIFT, #4 |
| 239 | + cmp x1, #ID_AA64MMFR0_EL1_FGT_FGT2 |
| 240 | + b.lt .Lskip_fgt2_\@ |
| 241 | + |
| 242 | + mov x0, xzr |
| 243 | + mrs x1, id_aa64dfr0_el1 |
| 244 | + ubfx x1, x1, #ID_AA64DFR0_EL1_PMUVer_SHIFT, #4 |
| 245 | + cmp x1, #ID_AA64DFR0_EL1_PMUVer_V3P9 |
| 246 | + b.lt .Lskip_pmuv3p9_\@ |
| 247 | + |
| 248 | + orr x0, x0, #HDFGRTR2_EL2_nPMICNTR_EL0 |
| 249 | + orr x0, x0, #HDFGRTR2_EL2_nPMICFILTR_EL0 |
| 250 | + orr x0, x0, #HDFGRTR2_EL2_nPMUACR_EL1 |
| 251 | +.Lskip_pmuv3p9_\@: |
| 252 | + msr_s SYS_HDFGRTR2_EL2, x0 |
| 253 | + msr_s SYS_HDFGWTR2_EL2, x0 |
| 254 | + msr_s SYS_HFGRTR2_EL2, xzr |
| 255 | + msr_s SYS_HFGWTR2_EL2, xzr |
| 256 | + msr_s SYS_HFGITR2_EL2, xzr |
| 257 | +.Lskip_fgt2_\@: |
| 258 | +.endm |
| 259 | + |
236 | 260 | .macro __init_el2_gcs |
237 | 261 | mrs_s x1, SYS_ID_AA64PFR1_EL1 |
238 | 262 | ubfx x1, x1, #ID_AA64PFR1_EL1_GCS_SHIFT, #4 |
|
283 | 307 | __init_el2_nvhe_idregs |
284 | 308 | __init_el2_cptr |
285 | 309 | __init_el2_fgt |
| 310 | + __init_el2_fgt2 |
286 | 311 | __init_el2_gcs |
287 | 312 | .endm |
288 | 313 |
|
|
0 commit comments