*/
 #define IMM_H(i)               ((uintptr_t)(i)>>16)
 #define IMM_HA(i)              (((uintptr_t)(i)>>16) +                       \
-                                (((uintptr_t)(i) & 0x8000) >> 15))
+                                       (((uintptr_t)(i) & 0x8000) >> 15))
 #define IMM_L(i)               ((uintptr_t)(i) & 0xffff)
 
 #define PLANT_INSTR(d, idx, instr)                                           \
 #define PPC_MR(d, a)           PPC_OR(d, a, a)
 #define PPC_LI(r, i)           PPC_ADDI(r, 0, i)
 #define PPC_ADDIS(d, a, i)     EMIT(PPC_INST_ADDIS |                         \
-                                    ___PPC_RS(d) | ___PPC_RA(a) | IMM_L(i))
+                                    ___PPC_RT(d) | ___PPC_RA(a) | IMM_L(i))
 #define PPC_LIS(r, i)          PPC_ADDIS(r, 0, i)
 #define PPC_STD(r, base, i)    EMIT(PPC_INST_STD | ___PPC_RS(r) |            \
                                     ___PPC_RA(base) | ((i) & 0xfffc))
 #define PPC_STDU(r, base, i)   EMIT(PPC_INST_STDU | ___PPC_RS(r) |           \
                                     ___PPC_RA(base) | ((i) & 0xfffc))
 #define PPC_STW(r, base, i)    EMIT(PPC_INST_STW | ___PPC_RS(r) |            \
-                                    ___PPC_RA(base) | ((i) & 0xfffc))
+                                    ___PPC_RA(base) | IMM_L(i))
 #define PPC_STWU(r, base, i)   EMIT(PPC_INST_STWU | ___PPC_RS(r) |           \
-                                    ___PPC_RA(base) | ((i) & 0xfffc))
+                                    ___PPC_RA(base) | IMM_L(i))
 
 #define PPC_LBZ(r, base, i)    EMIT(PPC_INST_LBZ | ___PPC_RT(r) |            \
                                     ___PPC_RA(base) | IMM_L(i))
 #define PPC_CMPWI(a, i)                EMIT(PPC_INST_CMPWI | ___PPC_RA(a) | IMM_L(i))
 #define PPC_CMPDI(a, i)                EMIT(PPC_INST_CMPDI | ___PPC_RA(a) | IMM_L(i))
 #define PPC_CMPLWI(a, i)       EMIT(PPC_INST_CMPLWI | ___PPC_RA(a) | IMM_L(i))
-#define PPC_CMPLW(a, b)                EMIT(PPC_INST_CMPLW | ___PPC_RA(a) | ___PPC_RB(b))
+#define PPC_CMPLW(a, b)                EMIT(PPC_INST_CMPLW | ___PPC_RA(a) |          \
+                                       ___PPC_RB(b))
 
 #define PPC_SUB(d, a, b)       EMIT(PPC_INST_SUB | ___PPC_RT(d) |            \
                                     ___PPC_RB(a) | ___PPC_RA(b))
 #define PPC_ADD(d, a, b)       EMIT(PPC_INST_ADD | ___PPC_RT(d) |            \
                                     ___PPC_RA(a) | ___PPC_RB(b))
-#define PPC_MUL(d, a, b)       EMIT(PPC_INST_MULLW | ___PPC_RT(d) |          \
+#define PPC_MULW(d, a, b)      EMIT(PPC_INST_MULLW | ___PPC_RT(d) |          \
                                     ___PPC_RA(a) | ___PPC_RB(b))
 #define PPC_MULHWU(d, a, b)    EMIT(PPC_INST_MULHWU | ___PPC_RT(d) |         \
                                     ___PPC_RA(a) | ___PPC_RB(b))
 
                        break;
                case BPF_ALU | BPF_MUL | BPF_X: /* A *= X; */
                        ctx->seen |= SEEN_XREG;
-                       PPC_MUL(r_A, r_A, r_X);
+                       PPC_MULW(r_A, r_A, r_X);
                        break;
                case BPF_ALU | BPF_MUL | BPF_K: /* A *= K */
                        if (K < 32768)
                                PPC_MULI(r_A, r_A, K);
                        else {
                                PPC_LI32(r_scratch1, K);
-                               PPC_MUL(r_A, r_A, r_scratch1);
+                               PPC_MULW(r_A, r_A, r_scratch1);
                        }
                        break;
                case BPF_ALU | BPF_MOD | BPF_X: /* A %= X; */
                        }
                        if (code == (BPF_ALU | BPF_MOD | BPF_X)) {
                                PPC_DIVWU(r_scratch1, r_A, r_X);
-                               PPC_MUL(r_scratch1, r_X, r_scratch1);
+                               PPC_MULW(r_scratch1, r_X, r_scratch1);
                                PPC_SUB(r_A, r_A, r_scratch1);
                        } else {
                                PPC_DIVWU(r_A, r_A, r_X);
                case BPF_ALU | BPF_MOD | BPF_K: /* A %= K; */
                        PPC_LI32(r_scratch2, K);
                        PPC_DIVWU(r_scratch1, r_A, r_scratch2);
-                       PPC_MUL(r_scratch1, r_scratch2, r_scratch1);
+                       PPC_MULW(r_scratch1, r_scratch2, r_scratch1);
                        PPC_SUB(r_A, r_A, r_scratch1);
                        break;
                case BPF_ALU | BPF_DIV | BPF_K: /* A /= K */