[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v1] s390x/cpumodel: wire up cpu type + id for TC
From: |
David Hildenbrand |
Subject: |
Re: [Qemu-devel] [PATCH v1] s390x/cpumodel: wire up cpu type + id for TCG |
Date: |
Fri, 2 Jun 2017 16:27:55 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.0 |
On 02.06.2017 16:04, Aurelien Jarno wrote:
> On 2017-06-02 12:52, David Hildenbrand wrote:
>>
>>>> +
>>>> +#ifndef CONFIG_USER_ONLY
>>>> +void HELPER(stidp)(CPUS390XState *env, uint64_t addr)
>>>> +{
>>>> + S390CPU *cpu = s390_env_get_cpu(env);
>>>> + uint64_t cpuid = s390_cpuid_from_cpu_model(cpu->model);
>>>> +
>>>> + if (addr & 0x7) {
>>>> + program_interrupt(env, PGM_SPECIFICATION, ILEN_LATER_INC);
>>>> + return;
>>>> + }
>>>> +
>>>> + /* basic mode, write the cpu address into the first 4 bit of the ID */
>>>> + cpuid |= ((uint64_t)env->cpu_num & 0xf) << 54;
>>>> + cpu_stq_data(env, addr, cpuid);
>>>> +}
>>>> +#endif
>>>
>>> I don't really see the point of using an helper instead of just updating
>>> the existing code. From what I understand the cpuid does not change at
>>> runtime, so the s390_cpuid_from_cpu_model function can also be called
>>> from translate.c.
>>>
>>> Aurelien
>>>
>>
>> From what I can see, conditional exceptions are more complicated to
>> implement without helpers (involves generating compares, jumps and so
>
> In that case you don't need to do any compare an jump. It's a standard
> load/store alignement check, you can just specify the MO_ALIGN flag to
> the tcg_gen_qemu_st_i64 function.
>
Thanks for the hint, will look into that. And also add low-address
protection checks.
--
Thanks,
David