qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v4 26/40] target/arm: Update define_one_arm_cp_reg_with_opaqu


From: Richard Henderson
Subject: Re: [PATCH v4 26/40] target/arm: Update define_one_arm_cp_reg_with_opaque for VHE
Date: Thu, 5 Dec 2019 07:09:30 -0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.1

On 12/4/19 2:38 PM, Alex Bennée wrote:
> 
> Richard Henderson <address@hidden> writes:
> 
>> On 12/4/19 10:58 AM, Alex Bennée wrote:
>>>> @@ -7437,13 +7437,10 @@ void define_one_arm_cp_reg_with_opaque(ARMCPU *cpu,
>>>>              mask = PL0_RW;
>>>>              break;
>>>>          case 4:
>>>> +        case 5:
>>>>              /* min_EL EL2 */
>>>>              mask = PL2_RW;
>>>>              break;
>>>> -        case 5:
>>>> -            /* unallocated encoding, so not possible */
>>>> -            assert(false);
>>>> -            break;
>>>
>>> This change is fine - I don't think we should have asserted here anyway.
>>> But don't we generate an unallocated exception if the CPU is v8.0?
>>
>> This change is only for validation of the system registers themselves.  It 
>> has
>> nothing to do with the usage of system registers from the actual guest.
> 
> So what is the mechanism that feeds back to the translator?

The existence of a structure in the hash table.

> access_check_cp_reg only seems to care about XSCALE. I guess
> cp_access_ok would trip if you weren't at EL2 but what if you are a v8.0
> at EL2?

This is sanity-checking the structure as it goes into the hash table.  The
version check happens when creating the structure -- we don't create registers
that exist only for v8+ if the cpu is a v7.


r~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]