On Wed, 12 Mar 2025 12:04:49 -0500 <[email protected]> wrote:
>
> > -----Original Message-----
> > From: Brian Cain <[email protected]>
> >
> > +void hex_mmu_realize(CPUHexagonState *env) {
> > + CPUState *cs = env_cpu(env);
> > + if (cs->cpu_index == 0) {
> > + env->hex_tlb = g_malloc0(sizeof(CPUHexagonTLBContext));
> > + } else {
> > + CPUState *cpu0_s = NULL;
> > + CPUHexagonState *env0 = NULL;
> > + CPU_FOREACH(cpu0_s) {
> > + assert(cpu0_s->cpu_index == 0);
> > + env0 = &(HEXAGON_CPU(cpu0_s)->env);
> > + break;
> > + }
>
> Seems fragile to assume cpu_index == 0 will be first in CPU_FOREACH. This
> would be better
> CPU_FOREACH(cpu0_s) {
> if (cpu0_s->cpu_index == 0) {
> env0 = &(HEXAGON_CPU(cpu0_s)->env);
> break;
> }
> }
> g_assert(env0); /* Make sure we found it */
Or even:
cpu0_s = qemu_get_cpu(0);
g_assert(cpu0_s);
env0 = &(HEXAGON_CPU(cpu0_s)->env);