From: "Edgar E. Iglesias" <[email protected]>
Signed-off-by: Edgar E. Iglesias <[email protected]>
---
target-arm/helper.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/target-arm/helper.c b/target-arm/helper.c
index a4bab78..d849b30 100644
--- a/target-arm/helper.c
+++ b/target-arm/helper.c
@@ -1147,6 +1147,7 @@ static CPAccessResult gt_cntfrq_access(CPUARMState *env,
const ARMCPRegInfo *ri)
{
/* CNTFRQ: not visible from PL0 if both PL0PCTEN and PL0VCTEN are zero */
if (arm_current_el(env) == 0 && !extract32(env->cp15.c14_cntkctl, 0, 2)) {
+ env->exception.target_el = 1;
return CP_ACCESS_TRAP;
}
return CP_ACCESS_OK;
@@ -1157,6 +1158,7 @@ static CPAccessResult gt_counter_access(CPUARMState *env,
int timeridx)
/* CNT[PV]CT: not visible from PL0 if ELO[PV]CTEN is zero */
if (arm_current_el(env) == 0 &&
!extract32(env->cp15.c14_cntkctl, timeridx, 1)) {
+ env->exception.target_el = 1;
return CP_ACCESS_TRAP;
}
return CP_ACCESS_OK;
@@ -1169,6 +1171,7 @@ static CPAccessResult gt_timer_access(CPUARMState *env,
int timeridx)
*/
if (arm_current_el(env) == 0 &&
!extract32(env->cp15.c14_cntkctl, 9 - timeridx, 1)) {
+ env->exception.target_el = 1;
return CP_ACCESS_TRAP;
}
return CP_ACCESS_OK;
--
1.9.1