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)