> >> "The bytes with the register are transmitted in target byte order." > >> > >> /* Aliases for Q regs. */ > >> nregs += 16; > >> if (reg < nregs) { > >> > >> - stfq_le_p(buf, env->vfp.regs[(reg - 32) * 2]); > >> - stfq_le_p(buf + 8, env->vfp.regs[(reg - 32) * 2 + 1]); > >> + stfq_p(buf, env->vfp.regs[(reg - 32) * 2]); > >> + stfq_p(buf + 8, env->vfp.regs[(reg - 32) * 2 + 1]); > > > > This is wrong. You're still using little-endian ordering of words. > > Can you explain a little bit further? If I'm in big-endian mode, stfq_p() > will be stfq_be_p(), right?
Because we're actually storing two halves of a 128-bit value. You still store the least significant half first. Paul