valgrind/VEX-r2904.diff
Dirk Mueller 0ed966f036 - update for ppc64le support (bnc#880334):
- 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
2014-08-17 21:49:48 +00:00

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;