qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 31/35] cpu: Move icount_decr to CPUNegativeOffse


From: Richard Henderson
Subject: Re: [Qemu-devel] [PATCH 31/35] cpu: Move icount_decr to CPUNegativeOffsetState
Date: Mon, 25 Mar 2019 10:38:37 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1

On 3/25/19 10:23 AM, Paolo Bonzini wrote:
>> RFC: I had problems with the build system moving qom/cpu.c
>> from common-obj-y to obj-y.  Then I tried just splitting out
>> a piece of it, and ran into odder build system issues.  Then
>> I hacked Makefile.target in a way that doesn't look right,
>> but works.
>>
>> Question: Should I bother splitting qom/cpu.c at all?  Just
>> move the whole thing to obj-y (with non-broken build changes,
>> obviously, whatever that might be).
> 
> I think you should, because moving it to obj-y would be a major headache
> if we ever were to resurrect the multiarch patches by Peter C.
> 
> That said, does cpu_neg really need env_neg and thus ArchCPU?

At one point point during development I had a pointer in CPUState to the
icount_decr.  But I didn't like having to copy this initialization into
target/*/ as with the setting of env_ptr.


> 1) define CPUTLB in terms of MAX_MMU_MODES (12) instead of NB_MMU_MODES

Plausible, now that unused mmu modes consume < 100 bytes
instead of many kB.

> 
> 2) assert that
> 
>    offsetof(ArchCPU, env) - offsetof(ArchCPU, neg) ==
>       sizeof(CPUNegativeOffsetState)

This requires that alignof(neg) == alignof(env), lest there be extra padding in
between the two structures.  But perhaps that's just a matter of adjusting the
declaration like so:

    CPUNegativeOffsetState neg QEMU_ALIGNED(__alignof(CPUArchState));

In any case the _Static_assert would let us know.

> 
> 3) use this in cpu_neg to go from cpu->env_ptr to the
> CPUNegativeOffsetState.
> 
> This lets you implement cpu_neg in a target-independent manner.

Plausible.  Thanks for the feedback.


r~



reply via email to

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