On 11 May 2015 at 09:21, Peter Crosthwaite <peter.crosthwa...@xilinx.com> wrote:
> On Mon, May 11, 2015 at 12:13 AM, Peter Maydell
> <peter.mayd...@linaro.org> wrote:
>> Do you give each CPU its own codegen buffer? (I'm thinking that some
>> of this might also be more easily done once multithreadded-TCG is
>> complete, since that will properly split the datastructures.)
>>
>
> No, the approach taken here is everything is exactly the same as
> existing SMP. My logic is we already have the core support in that
> AArch64 SMP lets us runtime mix-and-match arches. E.g. there's nothing
> stopping the bootloader putting one core in AA32 and the other in 64
> leading to basically multi-arch. I just extend that to cross
> target-foo boundaries with some code re-arrangement.

This works for AArch32+AArch64 because the target-arm frontend
puts "is this CPU in AArch64?" in the TB flags, so the hash
lookup can never return an AArch64 translated TB for a CPU
that's in AArch32 state. For two separate front-ends there's
no guarantee that the (physaddr+vaddr+TB flags) lookup won't
produce false matches between the two CPUs.

For this to work with multiple different frontends you'd either
need to add the CPU architecture to the set of checks made in
TB lookup, or just provide separate codegen buffers. Waiting
for multithreaded-TCG to provide the latter may be the simplest
approach.

-- PMM

Reply via email to