]> Git Repo - qemu.git/commitdiff
linux-user: Rename cpu_clone_regs to cpu_clone_regs_child
authorRichard Henderson <[email protected]>
Wed, 6 Nov 2019 11:33:15 +0000 (12:33 +0100)
committerLaurent Vivier <[email protected]>
Wed, 6 Nov 2019 12:42:34 +0000 (13:42 +0100)
We will need a target-specific hook for adjusting registers
in the parent during clone.  To avoid confusion, rename the
one we have to make it clear it affects the child.

At the same time, pass in the flags from the clone syscall.
We will need them for correct behaviour for Sparc.

Reviewed-by: Laurent Vivier <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-Id: <20191106113318[email protected]>
Signed-off-by: Laurent Vivier <[email protected]>
19 files changed:
linux-user/aarch64/target_cpu.h
linux-user/alpha/target_cpu.h
linux-user/arm/target_cpu.h
linux-user/cris/target_cpu.h
linux-user/hppa/target_cpu.h
linux-user/i386/target_cpu.h
linux-user/m68k/target_cpu.h
linux-user/microblaze/target_cpu.h
linux-user/mips/target_cpu.h
linux-user/nios2/target_cpu.h
linux-user/openrisc/target_cpu.h
linux-user/ppc/target_cpu.h
linux-user/riscv/target_cpu.h
linux-user/s390x/target_cpu.h
linux-user/sh4/target_cpu.h
linux-user/sparc/target_cpu.h
linux-user/syscall.c
linux-user/tilegx/target_cpu.h
linux-user/xtensa/target_cpu.h

index a021c95fa418ff6bd543417c42b59a7f4324e758..cd012e0dc1c800f5e3ecc7a714e7086a32af0453 100644 (file)
@@ -19,7 +19,8 @@
 #ifndef AARCH64_TARGET_CPU_H
 #define AARCH64_TARGET_CPU_H
 
-static inline void cpu_clone_regs(CPUARMState *env, target_ulong newsp)
+static inline void cpu_clone_regs_child(CPUARMState *env, target_ulong newsp,
+                                        unsigned flags)
 {
     if (newsp) {
         env->xregs[31] = newsp;
index ac4d255ae752ab8ebf42f6abe268ab6385b7169c..37ba00cf41d1d0118a07ed11dbaf32f9120e88ab 100644 (file)
@@ -19,7 +19,8 @@
 #ifndef ALPHA_TARGET_CPU_H
 #define ALPHA_TARGET_CPU_H
 
-static inline void cpu_clone_regs(CPUAlphaState *env, target_ulong newsp)
+static inline void cpu_clone_regs_child(CPUAlphaState *env, target_ulong newsp,
+                                        unsigned flags)
 {
     if (newsp) {
         env->ir[IR_SP] = newsp;
index 3f79356a07fcb225938f9314582323e2f98017fa..6e2ba8ad4b8e393149b614db97ee00330dc55de6 100644 (file)
@@ -41,7 +41,8 @@ static inline unsigned long arm_max_reserved_va(CPUState *cs)
 }
 #define MAX_RESERVED_VA  arm_max_reserved_va
 
-static inline void cpu_clone_regs(CPUARMState *env, target_ulong newsp)
+static inline void cpu_clone_regs_child(CPUARMState *env, target_ulong newsp,
+                                        unsigned flags)
 {
     if (newsp) {
         env->regs[13] = newsp;
index 23093439790c0e798b25a7fdf943b17f3996b419..eacc4d8d13e9e5096305bc532ad81a941bafe89f 100644 (file)
@@ -20,7 +20,8 @@
 #ifndef CRIS_TARGET_CPU_H
 #define CRIS_TARGET_CPU_H
 
-static inline void cpu_clone_regs(CPUCRISState *env, target_ulong newsp)
+static inline void cpu_clone_regs_child(CPUCRISState *env, target_ulong newsp,
+                                        unsigned flags)
 {
     if (newsp) {
         env->regs[14] = newsp;
index 1c539bdbd6e9c3794caf6c0e6da9bc363a08f40a..f25077079088de9e47fc67ef670aec3045c0898b 100644 (file)
@@ -19,7 +19,8 @@
 #ifndef HPPA_TARGET_CPU_H
 #define HPPA_TARGET_CPU_H
 
-static inline void cpu_clone_regs(CPUHPPAState *env, target_ulong newsp)
+static inline void cpu_clone_regs_child(CPUHPPAState *env, target_ulong newsp,
+                                        unsigned flags)
 {
     if (newsp) {
         env->gr[30] = newsp;
index ece04d096675679a98f3aab1839bfeef0f1912f3..1fadbf57c367916a41a8d8011eb572b1b929c786 100644 (file)
@@ -20,7 +20,8 @@
 #ifndef I386_TARGET_CPU_H
 #define I386_TARGET_CPU_H
 
-static inline void cpu_clone_regs(CPUX86State *env, target_ulong newsp)
+static inline void cpu_clone_regs_child(CPUX86State *env, target_ulong newsp,
+                                        unsigned flags)
 {
     if (newsp) {
         env->regs[R_ESP] = newsp;
index bc7446fbafdd267f34d87993cab674180c508899..57b647bc0753c062e948bf8f9f908406ea579a10 100644 (file)
@@ -21,7 +21,8 @@
 #ifndef M68K_TARGET_CPU_H
 #define M68K_TARGET_CPU_H
 
-static inline void cpu_clone_regs(CPUM68KState *env, target_ulong newsp)
+static inline void cpu_clone_regs_child(CPUM68KState *env, target_ulong newsp,
+                                        unsigned flags)
 {
     if (newsp) {
         env->aregs[7] = newsp;
index 73e139938cc64fd1998d6fb12627bf3ace58323b..e9bc0fce6547107e363ae626b359538b96121387 100644 (file)
@@ -19,7 +19,8 @@
 #ifndef MICROBLAZE_TARGET_CPU_H
 #define MICROBLAZE_TARGET_CPU_H
 
-static inline void cpu_clone_regs(CPUMBState *env, target_ulong newsp)
+static inline void cpu_clone_regs_child(CPUMBState *env, target_ulong newsp,
+                                        unsigned flags)
 {
     if (newsp) {
         env->regs[R_SP] = newsp;
index 02cf5eeff7c2015476879ff291f9c61be2dc24ba..8601f712e08650dbf2019965306983959326cc91 100644 (file)
@@ -19,7 +19,8 @@
 #ifndef MIPS_TARGET_CPU_H
 #define MIPS_TARGET_CPU_H
 
-static inline void cpu_clone_regs(CPUMIPSState *env, target_ulong newsp)
+static inline void cpu_clone_regs_child(CPUMIPSState *env, target_ulong newsp,
+                                        unsigned flags)
 {
     if (newsp) {
         env->active_tc.gpr[29] = newsp;
index 5596c05c9c0f8d4167e2a9d3982a3969c684a5e8..fe5de7a9e3c71a1cf34c2b1401af09a5716a51b7 100644 (file)
@@ -20,7 +20,8 @@
 #ifndef NIOS2_TARGET_CPU_H
 #define NIOS2_TARGET_CPU_H
 
-static inline void cpu_clone_regs(CPUNios2State *env, target_ulong newsp)
+static inline void cpu_clone_regs_child(CPUNios2State *env, target_ulong newsp,
+                                        unsigned flags)
 {
     if (newsp) {
         env->regs[R_SP] = newsp;
index 32ff135089e034bffa85a9e7ef052a75d58080e1..309cf3eeb73e316367fa6c92c1fd3286e50562ec 100644 (file)
@@ -20,7 +20,9 @@
 #ifndef OPENRISC_TARGET_CPU_H
 #define OPENRISC_TARGET_CPU_H
 
-static inline void cpu_clone_regs(CPUOpenRISCState *env, target_ulong newsp)
+static inline void cpu_clone_regs_child(CPUOpenRISCState *env,
+                                        target_ulong newsp,
+                                        unsigned flags)
 {
     if (newsp) {
         cpu_set_gpr(env, 1, newsp);
index c4641834e79489051c851bd6a4279fab95ec0863..028b28312c515e7e71dae12fe50639963e4d6d1c 100644 (file)
@@ -19,7 +19,8 @@
 #ifndef PPC_TARGET_CPU_H
 #define PPC_TARGET_CPU_H
 
-static inline void cpu_clone_regs(CPUPPCState *env, target_ulong newsp)
+static inline void cpu_clone_regs_child(CPUPPCState *env, target_ulong newsp,
+                                        unsigned flags)
 {
     if (newsp) {
         env->gpr[1] = newsp;
index 90f9a4171ee755ae59db64154ebab36d718594e1..26dcafab1c774af6b7145aec81abbbaaa8a19501 100644 (file)
@@ -1,7 +1,8 @@
 #ifndef RISCV_TARGET_CPU_H
 #define RISCV_TARGET_CPU_H
 
-static inline void cpu_clone_regs(CPURISCVState *env, target_ulong newsp)
+static inline void cpu_clone_regs_child(CPURISCVState *env, target_ulong newsp,
+                                        unsigned flags)
 {
     if (newsp) {
         env->gpr[xSP] = newsp;
index aa181ceaee8387898f757ccdc397a325f75d963e..0b19e42f758b81af844d9177555ac9b2737cf1a9 100644 (file)
@@ -19,7 +19,8 @@
 #ifndef S390X_TARGET_CPU_H
 #define S390X_TARGET_CPU_H
 
-static inline void cpu_clone_regs(CPUS390XState *env, target_ulong newsp)
+static inline void cpu_clone_regs_child(CPUS390XState *env, target_ulong newsp,
+                                        unsigned flags)
 {
     if (newsp) {
         env->regs[15] = newsp;
index b0be9a2c1bb0cf6f3546b98dcbf70104f4c18c40..857af43ee3aaa7d6b67e61ae87ddee9b206170ec 100644 (file)
@@ -19,7 +19,8 @@
 #ifndef SH4_TARGET_CPU_H
 #define SH4_TARGET_CPU_H
 
-static inline void cpu_clone_regs(CPUSH4State *env, target_ulong newsp)
+static inline void cpu_clone_regs_child(CPUSH4State *env, target_ulong newsp,
+                                        unsigned flags)
 {
     if (newsp) {
         env->gregs[15] = newsp;
index b30fbc72c43b922ade2a72eead3834a637114c9d..029b0fc5475a06be134899ca185761b97f5c3a99 100644 (file)
@@ -20,7 +20,8 @@
 #ifndef SPARC_TARGET_CPU_H
 #define SPARC_TARGET_CPU_H
 
-static inline void cpu_clone_regs(CPUSPARCState *env, target_ulong newsp)
+static inline void cpu_clone_regs_child(CPUSPARCState *env, target_ulong newsp,
+                                        unsigned flags)
 {
     if (newsp) {
         env->regwptr[22] = newsp;
index 247883292ce5b4d9f87b79f3db058e8841b41e12..245ed315c834a67b5e27a141b17f3146597ca425 100644 (file)
@@ -5820,7 +5820,7 @@ static int do_fork(CPUArchState *env, unsigned int flags, abi_ulong newsp,
         /* we create a new CPU instance. */
         new_env = cpu_copy(env);
         /* Init regs that differ from the parent.  */
-        cpu_clone_regs(new_env, newsp);
+        cpu_clone_regs_child(new_env, newsp, flags);
         new_cpu = env_cpu(new_env);
         new_cpu->opaque = ts;
         ts->bprm = parent_ts->bprm;
@@ -5899,7 +5899,7 @@ static int do_fork(CPUArchState *env, unsigned int flags, abi_ulong newsp,
         ret = fork();
         if (ret == 0) {
             /* Child Process.  */
-            cpu_clone_regs(env, newsp);
+            cpu_clone_regs_child(env, newsp, flags);
             fork_end(1);
             /* There is a race condition here.  The parent process could
                theoretically read the TID in the child process before the child
index d1aa5824f2922e5198f35e2acc77c5de9eb4eae9..0523dc414cc59909db0088c1a30c99d822ae7d85 100644 (file)
@@ -19,7 +19,8 @@
 #ifndef TILEGX_TARGET_CPU_H
 #define TILEGX_TARGET_CPU_H
 
-static inline void cpu_clone_regs(CPUTLGState *env, target_ulong newsp)
+static inline void cpu_clone_regs_child(CPUTLGState *env, target_ulong newsp,
+                                        unsigned flags)
 {
     if (newsp) {
         env->regs[TILEGX_R_SP] = newsp;
index e31efe3ea090dcb9baee7c1147d9271794d4033a..84f67d469ec072ea30761e8795fa254c8c8311b7 100644 (file)
@@ -4,7 +4,9 @@
 #ifndef XTENSA_TARGET_CPU_H
 #define XTENSA_TARGET_CPU_H
 
-static inline void cpu_clone_regs(CPUXtensaState *env, target_ulong newsp)
+static inline void cpu_clone_regs_child(CPUXtensaState *env,
+                                        target_ulong newsp,
+                                        unsigned flags)
 {
     if (newsp) {
         env->regs[1] = newsp;
This page took 0.066878 seconds and 4 git commands to generate.