Dirk Mueller
0ed966f036
- drop: valgrind-3.9.0-merge.patches.from.Paul.McKenney.patch, valgrind-3.9.0-ppc64le-abiv2.patch - add: VEX-r2803.diff, VEX-r2808.diff, VEX-r2816.diff VEX-r2904.diff, VEX-r2910.diff, VEX-r2914.diff, VEX-r2915.diff, VEX-r2916.diff, r13767.diff, r13770.diff, r14184.diff, r14238.diff, r14239.diff, r14240.diff, r14246.diff OBS-URL: https://build.opensuse.org/package/show/devel:tools/valgrind?expand=0&rev=114
132 lines
5.7 KiB
Diff
132 lines
5.7 KiB
Diff
Index: VEX/priv/host_ppc_isel.c
|
|
===================================================================
|
|
--- VEX/priv/host_ppc_isel.c.orig
|
|
+++ VEX/priv/host_ppc_isel.c
|
|
@@ -704,12 +704,6 @@ void doHelperCall ( /*OUT*/UInt* stack
|
|
UInt nVECRETs = 0;
|
|
UInt nBBPTRs = 0;
|
|
|
|
- /* Do we need to force use of an odd-even reg pair for 64-bit args?
|
|
- JRS 31-07-2013: is this still relevant, now that we are not
|
|
- generating code for 32-bit AIX ? */
|
|
- Bool regalign_int64s
|
|
- = (!mode64) && env->vbi->host_ppc32_regalign_int64_args;
|
|
-
|
|
/* Marshal args for a call and do the call.
|
|
|
|
This function only deals with a tiny set of possibilities, which
|
|
@@ -867,7 +861,7 @@ void doHelperCall ( /*OUT*/UInt* stack
|
|
iselWordExpr_R(env, arg) ));
|
|
} else { // Ity_I64 in 32-bit mode
|
|
HReg rHi, rLo;
|
|
- if (regalign_int64s && (argreg%2) == 1)
|
|
+ if ((argreg%2) == 1)
|
|
// ppc32 ELF abi spec for passing LONG_LONG
|
|
argreg++; // XXX: odd argreg => even rN
|
|
vassert(argreg < PPC_N_REGPARMS-1);
|
|
@@ -943,7 +937,7 @@ void doHelperCall ( /*OUT*/UInt* stack
|
|
tmpregs[argreg] = iselWordExpr_R(env, arg);
|
|
} else { // Ity_I64 in 32-bit mode
|
|
HReg rHi, rLo;
|
|
- if (regalign_int64s && (argreg%2) == 1)
|
|
+ if ((argreg%2) == 1)
|
|
// ppc32 ELF abi spec for passing LONG_LONG
|
|
argreg++; // XXX: odd argreg => even rN
|
|
vassert(argreg < PPC_N_REGPARMS-1);
|
|
Index: VEX/priv/guest_ppc_toIR.c
|
|
===================================================================
|
|
--- VEX/priv/guest_ppc_toIR.c.orig
|
|
+++ VEX/priv/guest_ppc_toIR.c
|
|
@@ -6060,9 +6060,7 @@ static Bool dis_syslink ( UInt theInstr,
|
|
/* It's important that all ArchRegs carry their up-to-date value
|
|
at this point. So we declare an end-of-block here, which
|
|
forces any TempRegs caching ArchRegs to be flushed. */
|
|
- putGST( PPC_GST_CIA, abiinfo->guest_ppc_sc_continues_at_LR
|
|
- ? getGST( PPC_GST_LR )
|
|
- : mkSzImm( ty, nextInsnAddr() ));
|
|
+ putGST( PPC_GST_CIA, mkSzImm( ty, nextInsnAddr() ));
|
|
|
|
dres->whatNext = Dis_StopHere;
|
|
dres->jk_StopHere = Ijk_Sys_syscall;
|
|
Index: VEX/priv/main_main.c
|
|
===================================================================
|
|
--- VEX/priv/main_main.c.orig
|
|
+++ VEX/priv/main_main.c
|
|
@@ -1242,9 +1242,7 @@ void LibVEX_default_VexAbiInfo ( /*OUT*/
|
|
vbi->guest_amd64_assume_gs_is_0x60 = False;
|
|
vbi->guest_ppc_zap_RZ_at_blr = False;
|
|
vbi->guest_ppc_zap_RZ_at_bl = NULL;
|
|
- vbi->guest_ppc_sc_continues_at_LR = False;
|
|
vbi->host_ppc_calls_use_fndescrs = False;
|
|
- vbi->host_ppc32_regalign_int64_args = False;
|
|
}
|
|
|
|
|
|
Index: VEX/pub/libvex.h
|
|
===================================================================
|
|
--- VEX/pub/libvex.h.orig
|
|
+++ VEX/pub/libvex.h
|
|
@@ -291,8 +291,6 @@ void LibVEX_default_VexArchInfo ( /*OUT*
|
|
guest_stack_redzone_size
|
|
guest is ppc32-linux ==> 0
|
|
guest is ppc64-linux ==> 288
|
|
- guest is ppc32-aix5 ==> 220
|
|
- guest is ppc64-aix5 ==> unknown
|
|
guest is amd64-linux ==> 128
|
|
guest is other ==> inapplicable
|
|
|
|
@@ -309,32 +307,16 @@ void LibVEX_default_VexArchInfo ( /*OUT*
|
|
guest_ppc_zap_RZ_at_blr
|
|
guest is ppc64-linux ==> True
|
|
guest is ppc32-linux ==> False
|
|
- guest is ppc64-aix5 ==> unknown
|
|
- guest is ppc32-aix5 ==> False
|
|
guest is other ==> inapplicable
|
|
|
|
guest_ppc_zap_RZ_at_bl
|
|
guest is ppc64-linux ==> const True
|
|
guest is ppc32-linux ==> const False
|
|
- guest is ppc64-aix5 ==> unknown
|
|
- guest is ppc32-aix5 ==> True except for calls to
|
|
- millicode, $SAVEFn, $RESTFn
|
|
- guest is other ==> inapplicable
|
|
-
|
|
- guest_ppc_sc_continues_at_LR:
|
|
- guest is ppc32-aix5 or ppc64-aix5 ==> True
|
|
- guest is ppc32-linux or ppc64-linux ==> False
|
|
guest is other ==> inapplicable
|
|
|
|
host_ppc_calls_use_fndescrs:
|
|
host is ppc32-linux ==> False
|
|
host is ppc64-linux ==> True
|
|
- host is ppc32-aix5 or ppc64-aix5 ==> True
|
|
- host is other ==> inapplicable
|
|
-
|
|
- host_ppc32_regalign_int64_args:
|
|
- host is ppc32-linux ==> True
|
|
- host is ppc32-aix5 ==> False
|
|
host is other ==> inapplicable
|
|
*/
|
|
|
|
@@ -364,20 +346,10 @@ typedef
|
|
is assumed equivalent to a fn which always returns False. */
|
|
Bool (*guest_ppc_zap_RZ_at_bl)(Addr64);
|
|
|
|
- /* PPC32/PPC64 GUESTS only: where does the kernel resume after
|
|
- 'sc'? False => Linux style, at the next insn. True => AIX
|
|
- style, at the address stated in the link register. */
|
|
- Bool guest_ppc_sc_continues_at_LR;
|
|
-
|
|
/* PPC32/PPC64 HOSTS only: does '&f' give us a pointer to a
|
|
function descriptor on the host, or to the function code
|
|
itself? True => descriptor, False => code. */
|
|
Bool host_ppc_calls_use_fndescrs;
|
|
-
|
|
- /* PPC32 HOSTS only: when generating code to pass a 64-bit value
|
|
- (actual parameter) in a pair of regs, should we skip an arg
|
|
- reg if it is even-numbered? True => yes, False => no. */
|
|
- Bool host_ppc32_regalign_int64_args;
|
|
}
|
|
VexAbiInfo;
|
|
|