[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-arm] [Qemu-devel] [PATCH 1/6] target-arm: correct CNTFRQ acces
From: |
Peter Maydell |
Subject: |
Re: [Qemu-arm] [Qemu-devel] [PATCH 1/6] target-arm: correct CNTFRQ access rights |
Date: |
Mon, 8 Feb 2016 15:30:21 +0000 |
On 8 February 2016 at 15:25, Sergey Fedorov <address@hidden> wrote:
> On 05.02.2016 19:44, Peter Maydell wrote:
>> Correct some corner cases we were getting wrong for
>> CNTFRQ access rights:
>> * should UNDEF from 32-bit Secure EL1
>> * only writable from the highest implemented exception level,
>> which might not be EL1 now
>> + switch (arm_current_el(env)) {
>> + case 0:
>> + if (!extract32(env->cp15.c14_cntkctl, 0, 2)) {
>> + return CP_ACCESS_TRAP;
>> + }
>> + /* EL0 reads are forbidden by the .access fields */
>
> s/reads/writes/ ?
Yes.
>> + break;
>> + case 1:
>> + if (!isread && (arm_feature(env, ARM_FEATURE_EL2)
>> + || arm_feature(env, ARM_FEATURE_EL3))) {
>> + return CP_ACCESS_TRAP_UNCATEGORIZED;
>> + }
>> + if (!isread && ri->state == ARM_CP_STATE_AA32 &&
>> + arm_is_secure_below_el3(env)) {
>> + /* Accesses from 32-bit Secure EL1 UNDEF (*not* trap to EL3!) */
>> + return CP_ACCESS_TRAP_UNCATEGORIZED;
>> + }
>> + break;
>> + case 2:
>> + if (!isread && arm_feature(env, ARM_FEATURE_EL3)) {
>> + return CP_ACCESS_TRAP_UNCATEGORIZED;
>> + }
>> + break;
>> + case 3:
>> + break;
>> }
>> return CP_ACCESS_OK;
>> }
>
> Maybe calculating "the highest implemented exception level" could
> simplify reading of the code a bit? E.g.:
>
> int highest_el = arm_feature(env, ARM_FEATURE_EL3) ? 3 :
> arm_feature(env, ARM_FEATURE_EL2) ? 2 : 1;
>
> We would probably want to have a dedicated static inline function for
> this similar to HighestEL() from ARMv8 ARM pseudocode.
Mmm, that might look neater. I'll have a play with the code.
thanks
-- PMM
- Re: [Qemu-arm] [Qemu-devel] [PATCH 5/6] target-arm: Implement MDCR_EL2.TDA and MDCR_EL2.TDA traps, (continued)
[Qemu-arm] [PATCH 4/6] target-arm: Implement MDCR_EL2.TDRA traps, Peter Maydell, 2016/02/05
[Qemu-arm] [PATCH 3/6] target-arm: Implement MDCR_EL3.TDOSA and MDCR_EL2.TDOSA traps, Peter Maydell, 2016/02/05
[Qemu-arm] [PATCH 6/6] target-arm: Report correct syndrome for FPEXC32_EL2 traps, Peter Maydell, 2016/02/05
[Qemu-arm] [PATCH 1/6] target-arm: correct CNTFRQ access rights, Peter Maydell, 2016/02/05