qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] linux-user: Move cpu_clone_regs() and cpu_set_t


From: Edgar E. Iglesias
Subject: Re: [Qemu-devel] [PATCH] linux-user: Move cpu_clone_regs() and cpu_set_tls() into linux-user
Date: Tue, 25 Jun 2013 13:55:57 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

On Tue, Jun 25, 2013 at 11:35:44AM +0100, Peter Maydell wrote:
> The functions cpu_clone_regs() and cpu_set_tls() are not purely CPU
> related -- they are specific to the TLS ABI for a a particular OS.
> Move them into the linux-user/ tree where they belong.

Hi Peter,

Makes sense to me. Maybe there could be a better name than target_cpu.h
but I don't have a better suggestion..

Reviewed-by: Edgar E. Iglesias <address@hidden>

Cheers,
Edgar

> 
> Signed-off-by: Peter Maydell <address@hidden>
> ---
> The recent bsd-user patch series reminded me what a mess the
> current NPTL/threading status of linux-user is. I have some things
> in mind to clean it up (and maybe even actually get all targets
> up to having NPTL enabled, since it's mostly just implementing
> the two functions being moved here for x86, sparc, openrisc.
> 
> Andreas, I hope this doesn't cut across anything you were
> planning for your QOM tree.
> 
> NB: copyright/license headers for the new header files are
> taken from the cpu.h that the functions came from. In a couple
> of cases where cpu.h had no license header I used the one from
> the corresponding translate.c.
> 
>  linux-user/alpha/target_cpu.h      |   36 +++++++++++++++++++++++++++++++
>  linux-user/arm/target_cpu.h        |   35 ++++++++++++++++++++++++++++++
>  linux-user/cris/target_cpu.h       |   36 +++++++++++++++++++++++++++++++
>  linux-user/i386/target_cpu.h       |   10 +++++++++
>  linux-user/m68k/target_cpu.h       |   34 ++++++++++++++++++++++++++++++
>  linux-user/microblaze/target_cpu.h |   35 ++++++++++++++++++++++++++++++
>  linux-user/mips/target_cpu.h       |   36 +++++++++++++++++++++++++++++++
>  linux-user/mips64/target_cpu.h     |    1 +
>  linux-user/openrisc/target_cpu.h   |   10 +++++++++
>  linux-user/ppc/target_cpu.h        |   41 
> ++++++++++++++++++++++++++++++++++++
>  linux-user/qemu.h                  |    1 +
>  linux-user/s390x/target_cpu.h      |   39 ++++++++++++++++++++++++++++++++++
>  linux-user/sh4/target_cpu.h        |   35 ++++++++++++++++++++++++++++++
>  linux-user/sparc/target_cpu.h      |   36 +++++++++++++++++++++++++++++++
>  linux-user/sparc64/target_cpu.h    |    1 +
>  linux-user/unicore32/target_cpu.h  |   27 ++++++++++++++++++++++++
>  linux-user/x86_64/target_cpu.h     |    1 +
>  target-alpha/cpu.h                 |   16 --------------
>  target-arm/cpu.h                   |   14 ------------
>  target-cris/cpu.h                  |   14 ------------
>  target-m68k/cpu.h                  |    9 --------
>  target-microblaze/cpu.h            |   14 ------------
>  target-mips/cpu.h                  |   13 ------------
>  target-ppc/cpu.h                   |   20 ------------------
>  target-s390x/cpu.h                 |   16 --------------
>  target-sh4/cpu.h                   |   14 ------------
>  target-sparc/cpu.h                 |   12 -----------
>  target-unicore32/cpu.h             |   13 ------------
>  28 files changed, 414 insertions(+), 155 deletions(-)
>  create mode 100644 linux-user/alpha/target_cpu.h
>  create mode 100644 linux-user/arm/target_cpu.h
>  create mode 100644 linux-user/cris/target_cpu.h
>  create mode 100644 linux-user/i386/target_cpu.h
>  create mode 100644 linux-user/m68k/target_cpu.h
>  create mode 100644 linux-user/microblaze/target_cpu.h
>  create mode 100644 linux-user/mips/target_cpu.h
>  create mode 100644 linux-user/mips64/target_cpu.h
>  create mode 100644 linux-user/openrisc/target_cpu.h
>  create mode 100644 linux-user/ppc/target_cpu.h
>  create mode 100644 linux-user/s390x/target_cpu.h
>  create mode 100644 linux-user/sh4/target_cpu.h
>  create mode 100644 linux-user/sparc/target_cpu.h
>  create mode 100644 linux-user/sparc64/target_cpu.h
>  create mode 100644 linux-user/unicore32/target_cpu.h
>  create mode 100644 linux-user/x86_64/target_cpu.h
> 
> diff --git a/linux-user/alpha/target_cpu.h b/linux-user/alpha/target_cpu.h
> new file mode 100644
> index 0000000..4256245
> --- /dev/null
> +++ b/linux-user/alpha/target_cpu.h
> @@ -0,0 +1,36 @@
> +/*
> + * Alpha specific CPU ABI and functions for linux-user
> + *
> + *  Copyright (c) 2007 Jocelyn Mayer
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, see 
> <http://www.gnu.org/licenses/>.
> + */
> +#ifndef TARGET_CPU_H
> +#define TARGET_CPU_H
> +
> +static inline void cpu_clone_regs(CPUAlphaState *env, target_ulong newsp)
> +{
> +    if (newsp) {
> +        env->ir[IR_SP] = newsp;
> +    }
> +    env->ir[IR_V0] = 0;
> +    env->ir[IR_A3] = 0;
> +}
> +
> +static inline void cpu_set_tls(CPUAlphaState *env, target_ulong newtls)
> +{
> +    env->unique = newtls;
> +}
> +
> +#endif
> diff --git a/linux-user/arm/target_cpu.h b/linux-user/arm/target_cpu.h
> new file mode 100644
> index 0000000..ed323c0
> --- /dev/null
> +++ b/linux-user/arm/target_cpu.h
> @@ -0,0 +1,35 @@
> +/*
> + * ARM specific CPU ABI and functions for linux-user
> + *
> + * Copyright (c) 2003 Fabrice Bellard
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, see 
> <http://www.gnu.org/licenses/>.
> + */
> +#ifndef TARGET_CPU_H
> +#define TARGET_CPU_H
> +
> +static inline void cpu_clone_regs(CPUARMState *env, target_ulong newsp)
> +{
> +    if (newsp) {
> +        env->regs[13] = newsp;
> +    }
> +    env->regs[0] = 0;
> +}
> +
> +static inline void cpu_set_tls(CPUARMState *env, target_ulong newtls)
> +{
> +    env->cp15.c13_tls2 = newtls;
> +}
> +
> +#endif
> diff --git a/linux-user/cris/target_cpu.h b/linux-user/cris/target_cpu.h
> new file mode 100644
> index 0000000..4d787e5
> --- /dev/null
> +++ b/linux-user/cris/target_cpu.h
> @@ -0,0 +1,36 @@
> +/*
> + * CRIS specific CPU ABI and functions for linux-user
> + *
> + * Copyright (c) 2007 AXIS Communications AB
> + * Written by Edgar E. Iglesias
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, see 
> <http://www.gnu.org/licenses/>.
> + */
> +#ifndef TARGET_CPU_H
> +#define TARGET_CPU_H
> +
> +static inline void cpu_clone_regs(CPUCRISState *env, target_ulong newsp)
> +{
> +    if (newsp) {
> +        env->regs[14] = newsp;
> +    }
> +    env->regs[10] = 0;
> +}
> +
> +static inline void cpu_set_tls(CPUCRISState *env, target_ulong newtls)
> +{
> +    env->pregs[PR_PID] = (env->pregs[PR_PID] & 0xff) | newtls;
> +}
> +
> +#endif
> diff --git a/linux-user/i386/target_cpu.h b/linux-user/i386/target_cpu.h
> new file mode 100644
> index 0000000..633e9ef
> --- /dev/null
> +++ b/linux-user/i386/target_cpu.h
> @@ -0,0 +1,10 @@
> +/*
> + * i386 specific CPU ABI and functions for linux-user
> + */
> +
> +#ifndef TARGET_CPU_H
> +#define TARGET_CPU_H
> +
> +/* TODO: need to implement cpu_clone_regs() and cpu_set_tls() */
> +
> +#endif
> diff --git a/linux-user/m68k/target_cpu.h b/linux-user/m68k/target_cpu.h
> new file mode 100644
> index 0000000..6d728d4
> --- /dev/null
> +++ b/linux-user/m68k/target_cpu.h
> @@ -0,0 +1,34 @@
> +/*
> + * m68k specific CPU ABI and functions for linux-user
> + *
> + * Copyright (c) 2005-2007 CodeSourcery
> + * Written by Paul Brook
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, see 
> <http://www.gnu.org/licenses/>.
> + */
> +
> +#ifndef TARGET_CPU_H
> +#define TARGET_CPU_H
> +
> +/* TODO: need to implement cpu_set_tls() */
> +
> +static inline void cpu_clone_regs(CPUM68KState *env, target_ulong newsp)
> +{
> +    if (newsp) {
> +        env->aregs[7] = newsp;
> +    }
> +    env->dregs[0] = 0;
> +}
> +
> +#endif
> diff --git a/linux-user/microblaze/target_cpu.h 
> b/linux-user/microblaze/target_cpu.h
> new file mode 100644
> index 0000000..c6386ea
> --- /dev/null
> +++ b/linux-user/microblaze/target_cpu.h
> @@ -0,0 +1,35 @@
> +/*
> + * MicroBlaze specific CPU ABI and functions for linux-user
> + *
> + * Copyright (c) 2009 Edgar E. Iglesias
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, see 
> <http://www.gnu.org/licenses/>.
> + */
> +#ifndef TARGET_CPU_H
> +#define TARGET_CPU_H
> +
> +static inline void cpu_clone_regs(CPUMBState *env, target_ulong newsp)
> +{
> +    if (newsp) {
> +        env->regs[R_SP] = newsp;
> +    }
> +    env->regs[3] = 0;
> +}
> +
> +static inline void cpu_set_tls(CPUMBState *env, target_ulong newtls)
> +{
> +    env->regs[21] = newtls;
> +}
> +
> +#endif
> diff --git a/linux-user/mips/target_cpu.h b/linux-user/mips/target_cpu.h
> new file mode 100644
> index 0000000..ba8e9eb
> --- /dev/null
> +++ b/linux-user/mips/target_cpu.h
> @@ -0,0 +1,36 @@
> +/*
> + * MIPS specific CPU ABI and functions for linux-user
> + *
> + * Copyright (c) 2004-2005 Jocelyn Mayer
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, see 
> <http://www.gnu.org/licenses/>.
> + */
> +#ifndef TARGET_CPU_H
> +#define TARGET_CPU_H
> +
> +static inline void cpu_clone_regs(CPUMIPSState *env, target_ulong newsp)
> +{
> +    if (newsp) {
> +        env->active_tc.gpr[29] = newsp;
> +    }
> +    env->active_tc.gpr[7] = 0;
> +    env->active_tc.gpr[2] = 0;
> +}
> +
> +static inline void cpu_set_tls(CPUMIPSState *env, target_ulong newtls)
> +{
> +    env->tls_value = newtls;
> +}
> +
> +#endif
> diff --git a/linux-user/mips64/target_cpu.h b/linux-user/mips64/target_cpu.h
> new file mode 100644
> index 0000000..fa36407
> --- /dev/null
> +++ b/linux-user/mips64/target_cpu.h
> @@ -0,0 +1 @@
> +#include "../mips/target_cpu.h"
> diff --git a/linux-user/openrisc/target_cpu.h 
> b/linux-user/openrisc/target_cpu.h
> new file mode 100644
> index 0000000..9140fbb
> --- /dev/null
> +++ b/linux-user/openrisc/target_cpu.h
> @@ -0,0 +1,10 @@
> +/*
> + * OpenRISC specific CPU ABI and functions for linux-user
> + */
> +
> +#ifndef TARGET_CPU_H
> +#define TARGET_CPU_H
> +
> +/* TODO: need to implement cpu_clone_regs() and cpu_set_tls() */
> +
> +#endif
> diff --git a/linux-user/ppc/target_cpu.h b/linux-user/ppc/target_cpu.h
> new file mode 100644
> index 0000000..9cc0c3b
> --- /dev/null
> +++ b/linux-user/ppc/target_cpu.h
> @@ -0,0 +1,41 @@
> +/*
> + * PowerPC specific CPU ABI and functions for linux-user
> + *
> + * Copyright (c) 2003-2007 Jocelyn Mayer
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, see 
> <http://www.gnu.org/licenses/>.
> + */
> +#ifndef TARGET_CPU_H
> +#define TARGET_CPU_H
> +
> +static inline void cpu_clone_regs(CPUPPCState *env, target_ulong newsp)
> +{
> +    if (newsp) {
> +        env->gpr[1] = newsp;
> +    }
> +    env->gpr[3] = 0;
> +}
> +
> +static inline void cpu_set_tls(CPUPPCState *env, target_ulong newtls)
> +{
> +#if defined(TARGET_PPC64)
> +    /* The kernel checks TIF_32BIT here; we don't support loading 32-bit
> +       binaries on PPC64 yet. */
> +    env->gpr[13] = newtls;
> +#else
> +    env->gpr[2] = newtls;
> +#endif
> +}
> +
> +#endif
> diff --git a/linux-user/qemu.h b/linux-user/qemu.h
> index b10e957..20d171c 100644
> --- a/linux-user/qemu.h
> +++ b/linux-user/qemu.h
> @@ -16,6 +16,7 @@
>  #include "exec/user/thunk.h"
>  #include "syscall_defs.h"
>  #include "syscall.h"
> +#include "target_cpu.h"
>  #include "target_signal.h"
>  #include "exec/gdbstub.h"
>  #include "qemu/queue.h"
> diff --git a/linux-user/s390x/target_cpu.h b/linux-user/s390x/target_cpu.h
> new file mode 100644
> index 0000000..f10abe8
> --- /dev/null
> +++ b/linux-user/s390x/target_cpu.h
> @@ -0,0 +1,39 @@
> +/*
> + * S/390 specific CPU ABI and functions for linux-user
> + *
> + * Copyright (c) 2009 Ulrich Hecht
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * Contributions after 2012-10-29 are licensed under the terms of the
> + * GNU GPL, version 2 or (at your option) any later version.
> + *
> + * You should have received a copy of the GNU (Lesser) General Public
> + * License along with this library; if not, see 
> <http://www.gnu.org/licenses/>.
> + */
> +#ifndef TARGET_CPU_H
> +#define TARGET_CPU_H
> +
> +static inline void cpu_clone_regs(CPUS390XState *env, target_ulong newsp)
> +{
> +    if (newsp) {
> +        env->regs[15] = newsp;
> +    }
> +    env->regs[2] = 0;
> +}
> +
> +static inline void cpu_set_tls(CPUS390XState *env, target_ulong newtls)
> +{
> +    env->aregs[0] = newtls >> 32;
> +    env->aregs[1] = newtls & 0xffffffffULL;
> +}
> +
> +#endif
> diff --git a/linux-user/sh4/target_cpu.h b/linux-user/sh4/target_cpu.h
> new file mode 100644
> index 0000000..141856f
> --- /dev/null
> +++ b/linux-user/sh4/target_cpu.h
> @@ -0,0 +1,35 @@
> +/*
> + * SH4 specific CPU ABI and functions for linux-user
> + *
> + * Copyright (c) 2005 Samuel Tardieu
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, see 
> <http://www.gnu.org/licenses/>.
> + */
> +#ifndef TARGET_CPU_H
> +#define TARGET_CPU_H
> +
> +static inline void cpu_clone_regs(CPUSH4State *env, target_ulong newsp)
> +{
> +    if (newsp) {
> +        env->gregs[15] = newsp;
> +    }
> +    env->gregs[0] = 0;
> +}
> +
> +static inline void cpu_set_tls(CPUSH4State *env, target_ulong newtls)
> +{
> +  env->gbr = newtls;
> +}
> +
> +#endif
> diff --git a/linux-user/sparc/target_cpu.h b/linux-user/sparc/target_cpu.h
> new file mode 100644
> index 0000000..4030bac
> --- /dev/null
> +++ b/linux-user/sparc/target_cpu.h
> @@ -0,0 +1,36 @@
> +/*
> + * SPARC specific CPU ABI and functions for linux-user
> + *
> + * Copyright (C) 2003 Thomas M. Ogrisegg <address@hidden>
> + * Copyright (C) 2003-2005 Fabrice Bellard
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, see 
> <http://www.gnu.org/licenses/>.
> + */
> +#ifndef TARGET_CPU_H
> +#define TARGET_CPU_H
> +
> +/* TODO: implement cpu_set_tls, check cpu_clone_regs */
> +
> +static inline void cpu_clone_regs(CPUSPARCState *env, target_ulong newsp)
> +{
> +    if (newsp) {
> +        env->regwptr[22] = newsp;
> +    }
> +    env->regwptr[0] = 0;
> +    /* FIXME: Do we also need to clear CF?  */
> +    /* XXXXX */
> +    printf("HELPME: %s:%d\n", __FILE__, __LINE__);
> +}
> +
> +#endif
> diff --git a/linux-user/sparc64/target_cpu.h b/linux-user/sparc64/target_cpu.h
> new file mode 100644
> index 0000000..b22263d
> --- /dev/null
> +++ b/linux-user/sparc64/target_cpu.h
> @@ -0,0 +1 @@
> +#include "../sparc/target_cpu.h"
> diff --git a/linux-user/unicore32/target_cpu.h 
> b/linux-user/unicore32/target_cpu.h
> new file mode 100644
> index 0000000..fb79087
> --- /dev/null
> +++ b/linux-user/unicore32/target_cpu.h
> @@ -0,0 +1,27 @@
> +/*
> + * UniCore32 specific CPU ABI and functions for linux-user
> + *
> + * Copyright (C) 2010-2012 Guan Xuetao
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +#ifndef TARGET_CPU_H
> +#define TARGET_CPU_H
> +
> +static inline void cpu_clone_regs(CPUUniCore32State *env, target_ulong newsp)
> +{
> +    if (newsp) {
> +        env->regs[29] = newsp;
> +    }
> +    env->regs[0] = 0;
> +}
> +
> +static inline void cpu_set_tls(CPUUniCore32State *env, target_ulong newtls)
> +{
> +    env->regs[16] = newtls;
> +}
> +
> +#endif
> diff --git a/linux-user/x86_64/target_cpu.h b/linux-user/x86_64/target_cpu.h
> new file mode 100644
> index 0000000..9ec7cbb
> --- /dev/null
> +++ b/linux-user/x86_64/target_cpu.h
> @@ -0,0 +1 @@
> +#include "../i386/target_cpu.h"
> diff --git a/target-alpha/cpu.h b/target-alpha/cpu.h
> index 2156a1e..b4fb6ce 100644
> --- a/target-alpha/cpu.h
> +++ b/target-alpha/cpu.h
> @@ -498,22 +498,6 @@ static inline void cpu_get_tb_cpu_state(CPUAlphaState 
> *env, target_ulong *pc,
>      *pflags = flags;
>  }
>  
> -#if defined(CONFIG_USER_ONLY)
> -static inline void cpu_clone_regs(CPUAlphaState *env, target_ulong newsp)
> -{
> -    if (newsp) {
> -        env->ir[IR_SP] = newsp;
> -    }
> -    env->ir[IR_V0] = 0;
> -    env->ir[IR_A3] = 0;
> -}
> -
> -static inline void cpu_set_tls(CPUAlphaState *env, target_ulong newtls)
> -{
> -    env->unique = newtls;
> -}
> -#endif
> -
>  static inline bool cpu_has_work(CPUState *cpu)
>  {
>      /* Here we are checking to see if the CPU should wake up from HALT.
> diff --git a/target-arm/cpu.h b/target-arm/cpu.h
> index 5438444..d168c2e 100644
> --- a/target-arm/cpu.h
> +++ b/target-arm/cpu.h
> @@ -249,11 +249,6 @@ int cpu_arm_handle_mmu_fault (CPUARMState *env, 
> target_ulong address, int rw,
>                                int mmu_idx);
>  #define cpu_handle_mmu_fault cpu_arm_handle_mmu_fault
>  
> -static inline void cpu_set_tls(CPUARMState *env, target_ulong newtls)
> -{
> -  env->cp15.c13_tls2 = newtls;
> -}
> -
>  #define CPSR_M (0x1f)
>  #define CPSR_T (1 << 5)
>  #define CPSR_F (1 << 6)
> @@ -649,15 +644,6 @@ static inline int cpu_mmu_index (CPUARMState *env)
>      return (env->uncached_cpsr & CPSR_M) == ARM_CPU_MODE_USR ? 1 : 0;
>  }
>  
> -#if defined(CONFIG_USER_ONLY)
> -static inline void cpu_clone_regs(CPUARMState *env, target_ulong newsp)
> -{
> -    if (newsp)
> -        env->regs[13] = newsp;
> -    env->regs[0] = 0;
> -}
> -#endif
> -
>  #include "exec/cpu-all.h"
>  
>  /* Bit usage in the TB flags field: */
> diff --git a/target-cris/cpu.h b/target-cris/cpu.h
> index dbd7d36..c12a8ca 100644
> --- a/target-cris/cpu.h
> +++ b/target-cris/cpu.h
> @@ -247,20 +247,6 @@ int cpu_cris_handle_mmu_fault(CPUCRISState *env, 
> target_ulong address, int rw,
>                                int mmu_idx);
>  #define cpu_handle_mmu_fault cpu_cris_handle_mmu_fault
>  
> -#if defined(CONFIG_USER_ONLY)
> -static inline void cpu_clone_regs(CPUCRISState *env, target_ulong newsp)
> -{
> -    if (newsp)
> -        env->regs[14] = newsp;
> -    env->regs[10] = 0;
> -}
> -#endif
> -
> -static inline void cpu_set_tls(CPUCRISState *env, target_ulong newtls)
> -{
> -     env->pregs[PR_PID] = (env->pregs[PR_PID] & 0xff) | newtls;
> -}
> -
>  /* Support function regs.  */
>  #define SFR_RW_GC_CFG      0][0
>  #define SFR_RW_MM_CFG      env->pregs[PR_SRS]][0
> diff --git a/target-m68k/cpu.h b/target-m68k/cpu.h
> index c90c40c..9fdf89e 100644
> --- a/target-m68k/cpu.h
> +++ b/target-m68k/cpu.h
> @@ -241,15 +241,6 @@ int cpu_m68k_handle_mmu_fault(CPUM68KState *env, 
> target_ulong address, int rw,
>                                int mmu_idx);
>  #define cpu_handle_mmu_fault cpu_m68k_handle_mmu_fault
>  
> -#if defined(CONFIG_USER_ONLY)
> -static inline void cpu_clone_regs(CPUM68KState *env, target_ulong newsp)
> -{
> -    if (newsp)
> -        env->aregs[7] = newsp;
> -    env->dregs[0] = 0;
> -}
> -#endif
> -
>  #include "exec/cpu-all.h"
>  
>  static inline void cpu_get_tb_cpu_state(CPUM68KState *env, target_ulong *pc,
> diff --git a/target-microblaze/cpu.h b/target-microblaze/cpu.h
> index 1813939..4f7ce9d 100644
> --- a/target-microblaze/cpu.h
> +++ b/target-microblaze/cpu.h
> @@ -331,20 +331,6 @@ int cpu_mb_handle_mmu_fault(CPUMBState *env, 
> target_ulong address, int rw,
>                              int mmu_idx);
>  #define cpu_handle_mmu_fault cpu_mb_handle_mmu_fault
>  
> -#if defined(CONFIG_USER_ONLY)
> -static inline void cpu_clone_regs(CPUMBState *env, target_ulong newsp)
> -{
> -    if (newsp)
> -        env->regs[R_SP] = newsp;
> -    env->regs[3] = 0;
> -}
> -#endif
> -
> -static inline void cpu_set_tls(CPUMBState *env, target_ulong newtls)
> -{
> -    env->regs[21] = newtls;
> -}
> -
>  static inline int cpu_interrupts_enabled(CPUMBState *env)
>  {
>      return env->sregs[SR_MSR] & MSR_IE;
> diff --git a/target-mips/cpu.h b/target-mips/cpu.h
> index 6e761e0..181d1e1 100644
> --- a/target-mips/cpu.h
> +++ b/target-mips/cpu.h
> @@ -520,14 +520,6 @@ static inline int cpu_mmu_index (CPUMIPSState *env)
>      return env->hflags & MIPS_HFLAG_KSU;
>  }
>  
> -static inline void cpu_clone_regs(CPUMIPSState *env, target_ulong newsp)
> -{
> -    if (newsp)
> -        env->active_tc.gpr[29] = newsp;
> -    env->active_tc.gpr[7] = 0;
> -    env->active_tc.gpr[2] = 0;
> -}
> -
>  static inline int cpu_mips_hw_interrupts_pending(CPUMIPSState *env)
>  {
>      int32_t pending;
> @@ -678,11 +670,6 @@ static inline void cpu_get_tb_cpu_state(CPUMIPSState 
> *env, target_ulong *pc,
>      *flags = env->hflags & (MIPS_HFLAG_TMASK | MIPS_HFLAG_BMASK);
>  }
>  
> -static inline void cpu_set_tls(CPUMIPSState *env, target_ulong newtls)
> -{
> -    env->tls_value = newtls;
> -}
> -
>  static inline int mips_vpe_active(CPUMIPSState *env)
>  {
>      int active = 1;
> diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h
> index aa1d013..13137ce 100644
> --- a/target-ppc/cpu.h
> +++ b/target-ppc/cpu.h
> @@ -1186,15 +1186,6 @@ static inline int cpu_mmu_index (CPUPPCState *env)
>      return env->mmu_idx;
>  }
>  
> -#if defined(CONFIG_USER_ONLY)
> -static inline void cpu_clone_regs(CPUPPCState *env, target_ulong newsp)
> -{
> -    if (newsp)
> -        env->gpr[1] = newsp;
> -    env->gpr[3] = 0;
> -}
> -#endif
> -
>  #include "exec/cpu-all.h"
>  
>  
> /*****************************************************************************/
> @@ -2034,17 +2025,6 @@ static inline void cpu_get_tb_cpu_state(CPUPPCState 
> *env, target_ulong *pc,
>      *flags = env->hflags;
>  }
>  
> -static inline void cpu_set_tls(CPUPPCState *env, target_ulong newtls)
> -{
> -#if defined(TARGET_PPC64)
> -    /* The kernel checks TIF_32BIT here; we don't support loading 32-bit
> -       binaries on PPC64 yet. */
> -    env->gpr[13] = newtls;
> -#else
> -    env->gpr[2] = newtls;
> -#endif
> -}
> -
>  #if !defined(CONFIG_USER_ONLY)
>  static inline int booke206_tlbm_id(CPUPPCState *env, ppcmas_tlb_t *tlbm)
>  {
> diff --git a/target-s390x/cpu.h b/target-s390x/cpu.h
> index 0ce82cf..be1a0c2 100644
> --- a/target-s390x/cpu.h
> +++ b/target-s390x/cpu.h
> @@ -149,16 +149,6 @@ typedef struct CPUS390XState {
>  
>  #include "cpu-qom.h"
>  
> -#if defined(CONFIG_USER_ONLY)
> -static inline void cpu_clone_regs(CPUS390XState *env, target_ulong newsp)
> -{
> -    if (newsp) {
> -        env->regs[15] = newsp;
> -    }
> -    env->regs[2] = 0;
> -}
> -#endif
> -
>  /* distinguish between 24 bit and 31 bit addressing */
>  #define HIGH_ORDER_BIT 0x80000000
>  
> @@ -515,12 +505,6 @@ static inline bool css_present(uint8_t cssid)
>  }
>  #endif
>  
> -static inline void cpu_set_tls(CPUS390XState *env, target_ulong newtls)
> -{
> -    env->aregs[0] = newtls >> 32;
> -    env->aregs[1] = newtls & 0xffffffffULL;
> -}
> -
>  #define cpu_init(model) (&cpu_s390x_init(model)->env)
>  #define cpu_exec cpu_s390x_exec
>  #define cpu_gen_code cpu_s390x_gen_code
> diff --git a/target-sh4/cpu.h b/target-sh4/cpu.h
> index fd7da92..c8df18b 100644
> --- a/target-sh4/cpu.h
> +++ b/target-sh4/cpu.h
> @@ -220,11 +220,6 @@ void cpu_sh4_write_mmaped_utlb_data(CPUSH4State *s, 
> hwaddr addr,
>  
>  int cpu_sh4_is_cached(CPUSH4State * env, target_ulong addr);
>  
> -static inline void cpu_set_tls(CPUSH4State *env, target_ulong newtls)
> -{
> -  env->gbr = newtls;
> -}
> -
>  void cpu_load_tlb(CPUSH4State * env);
>  
>  static inline CPUSH4State *cpu_init(const char *cpu_model)
> @@ -250,15 +245,6 @@ static inline int cpu_mmu_index (CPUSH4State *env)
>      return (env->sr & SR_MD) == 0 ? 1 : 0;
>  }
>  
> -#if defined(CONFIG_USER_ONLY)
> -static inline void cpu_clone_regs(CPUSH4State *env, target_ulong newsp)
> -{
> -    if (newsp)
> -        env->gregs[15] = newsp;
> -    env->gregs[0] = 0;
> -}
> -#endif
> -
>  #include "exec/cpu-all.h"
>  
>  /* Memory access type */
> diff --git a/target-sparc/cpu.h b/target-sparc/cpu.h
> index 6fa7778..ae1066b 100644
> --- a/target-sparc/cpu.h
> +++ b/target-sparc/cpu.h
> @@ -689,18 +689,6 @@ static inline int cpu_pil_allowed(CPUSPARCState *env1, 
> int pil)
>  #endif
>  }
>  
> -#if defined(CONFIG_USER_ONLY)
> -static inline void cpu_clone_regs(CPUSPARCState *env, target_ulong newsp)
> -{
> -    if (newsp)
> -        env->regwptr[22] = newsp;
> -    env->regwptr[0] = 0;
> -    /* FIXME: Do we also need to clear CF?  */
> -    /* XXXXX */
> -    printf ("HELPME: %s:%d\n", __FILE__, __LINE__);
> -}
> -#endif
> -
>  #include "exec/cpu-all.h"
>  
>  #ifdef TARGET_SPARC64
> diff --git a/target-unicore32/cpu.h b/target-unicore32/cpu.h
> index 5b2b9d1..d4be525 100644
> --- a/target-unicore32/cpu.h
> +++ b/target-unicore32/cpu.h
> @@ -142,19 +142,6 @@ static inline int cpu_mmu_index(CPUUniCore32State *env)
>      return (env->uncached_asr & ASR_M) == ASR_MODE_USER ? 1 : 0;
>  }
>  
> -static inline void cpu_clone_regs(CPUUniCore32State *env, target_ulong newsp)
> -{
> -    if (newsp) {
> -        env->regs[29] = newsp;
> -    }
> -    env->regs[0] = 0;
> -}
> -
> -static inline void cpu_set_tls(CPUUniCore32State *env, target_ulong newtls)
> -{
> -    env->regs[16] = newtls;
> -}
> -
>  #include "exec/cpu-all.h"
>  #include "cpu-qom.h"
>  #include "exec/exec-all.h"
> -- 
> 1.7.9.5
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]