On 08/07/2016 11:06 PM, Nikunj A Dadhania wrote:
+#define STXV(name, access, swap, type, elems) \ +void helper_##name(CPUPPCState *env, uint64_t vsr, \ + target_ulong addr) \ +{ \ + type *r; \ + int i, index, bound, step; \ + if (msr_le) { \ + index = elems - 1; \ + bound = -1; \ + step = -1; \ + } else { \ + index = 0; \ + bound = elems; \ + step = 1; \ + } \ + r = (type *) &vsr; \ + for (i = index; i != bound; i += step) { \ + if (needs_byteswap(env)) { \ + access(env, addr, swap(r[i]), GETPC()); \ + } else { \ + access(env, addr, r[i], GETPC()); \ + } \ + addr = addr_add(env, addr, sizeof(type)); \ + } \ +}
Similarly, with the same helpers as for load. r~