|
@@ -87,6 +87,9 @@ DECLARE_LOAD_FUNC(sk_load_byte_msh);
|
|
|
#define PPC_STD(r, base, i) EMIT(PPC_INST_STD | ___PPC_RS(r) | \
|
|
|
___PPC_RA(base) | ((i) & 0xfffc))
|
|
|
|
|
|
+
|
|
|
+#define PPC_LBZ(r, base, i) EMIT(PPC_INST_LBZ | ___PPC_RT(r) | \
|
|
|
+ ___PPC_RA(base) | IMM_L(i))
|
|
|
#define PPC_LD(r, base, i) EMIT(PPC_INST_LD | ___PPC_RT(r) | \
|
|
|
___PPC_RA(base) | IMM_L(i))
|
|
|
#define PPC_LWZ(r, base, i) EMIT(PPC_INST_LWZ | ___PPC_RT(r) | \
|
|
@@ -96,6 +99,10 @@ DECLARE_LOAD_FUNC(sk_load_byte_msh);
|
|
|
#define PPC_LHBRX(r, base, b) EMIT(PPC_INST_LHBRX | ___PPC_RT(r) | \
|
|
|
___PPC_RA(base) | ___PPC_RB(b))
|
|
|
/* Convenience helpers for the above with 'far' offsets: */
|
|
|
+#define PPC_LBZ_OFFS(r, base, i) do { if ((i) < 32768) PPC_LBZ(r, base, i); \
|
|
|
+ else { PPC_ADDIS(r, base, IMM_HA(i)); \
|
|
|
+ PPC_LBZ(r, r, IMM_L(i)); } } while(0)
|
|
|
+
|
|
|
#define PPC_LD_OFFS(r, base, i) do { if ((i) < 32768) PPC_LD(r, base, i); \
|
|
|
else { PPC_ADDIS(r, base, IMM_HA(i)); \
|
|
|
PPC_LD(r, r, IMM_L(i)); } } while(0)
|