diff --git a/src/code/ppc64.c b/src/code/ppc64.c
index 972749417cb703e51f1299d48eeb1ac001ac9b33..030d989451b1f63b6045a615334f936a3cc72eb7 100644
--- a/src/code/ppc64.c
+++ b/src/code/ppc64.c
@@ -34,10 +34,10 @@
     SET_REG64(11, (func_+32768)&~0xffff);	\
     if ((func_ &= 0xffff) > 32767)		\
       func_ -= 65536;				\
-    /* ld r0,%lo(func)(r11) */			\
-    LD(0, 11, func_);				\
-    /* ld r2,%lo(func+8)(r11) */		\
-    LD(2, 11, func_+8);				\
+    /* ldu r0,%lo(func)(r11) */			\
+    LDU(0, 11, func_);				\
+    /* ld r2,%8(r11) */				\
+    LD(2, 11, 8);				\
     /* mtlr r0 */				\
     MTSPR(0, PPC_SPREG_LR);			\
     /* blrl */					\
diff --git a/src/code/ppc64.h b/src/code/ppc64.h
index 902dbfa7c85f8d8fae16790aab33596cedbad4f9..67e8f60f498865c4a9d6d3d28d061aa0c5229e51 100644
--- a/src/code/ppc64.h
+++ b/src/code/ppc64.h
@@ -37,6 +37,7 @@
 #define STW(S,A,d) PPC_INSTR_D_FORM(36,S,A,d)
 #define LHA(D,A,d) PPC_INSTR_D_FORM(42,D,A,d)
 #define LD(D,A,ds) PPC_INSTR_DS_FORM(58,D,A,ds,0)
+#define LDU(D,A,ds) PPC_INSTR_DS_FORM(58,D,A,ds,1)
 #define STD(S,A,ds) PPC_INSTR_DS_FORM(62,S,A,ds,0)
 
 #define RLWINM(S,A,SH,MB,ME) PPC_INSTR_M_FORM(21,S,A,SH,MB,ME,0)