mirror of
https://github.com/qemu/qemu.git
synced 2024-11-27 05:43:47 +08:00
linux-user: Move cpu_clone_regs() and cpu_set_tls() into linux-user
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. target-lm32 had entirely unused implementations, since it has no linux-user target; just drop them. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Acked-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
aa48dd9319
commit
6291ad77d7
36
linux-user/alpha/target_cpu.h
Normal file
36
linux-user/alpha/target_cpu.h
Normal file
@ -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
|
35
linux-user/arm/target_cpu.h
Normal file
35
linux-user/arm/target_cpu.h
Normal file
@ -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
|
36
linux-user/cris/target_cpu.h
Normal file
36
linux-user/cris/target_cpu.h
Normal file
@ -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
|
33
linux-user/i386/target_cpu.h
Normal file
33
linux-user/i386/target_cpu.h
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* i386 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(CPUX86State *env, target_ulong newsp)
|
||||
{
|
||||
if (newsp) {
|
||||
env->regs[R_ESP] = newsp;
|
||||
}
|
||||
env->regs[R_EAX] = 0;
|
||||
}
|
||||
|
||||
/* TODO: need to implement cpu_set_tls() */
|
||||
|
||||
#endif
|
34
linux-user/m68k/target_cpu.h
Normal file
34
linux-user/m68k/target_cpu.h
Normal file
@ -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
|
||||
|
||||
static inline void cpu_clone_regs(CPUM68KState *env, target_ulong newsp)
|
||||
{
|
||||
if (newsp) {
|
||||
env->aregs[7] = newsp;
|
||||
}
|
||||
env->dregs[0] = 0;
|
||||
}
|
||||
|
||||
/* TODO: need to implement cpu_set_tls() */
|
||||
|
||||
#endif
|
35
linux-user/microblaze/target_cpu.h
Normal file
35
linux-user/microblaze/target_cpu.h
Normal file
@ -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
|
36
linux-user/mips/target_cpu.h
Normal file
36
linux-user/mips/target_cpu.h
Normal file
@ -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
|
1
linux-user/mips64/target_cpu.h
Normal file
1
linux-user/mips64/target_cpu.h
Normal file
@ -0,0 +1 @@
|
||||
#include "../mips/target_cpu.h"
|
33
linux-user/openrisc/target_cpu.h
Normal file
33
linux-user/openrisc/target_cpu.h
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* OpenRISC specific CPU ABI and functions for linux-user
|
||||
*
|
||||
* Copyright (c) 2011-2012 Jia Liu <proljc@gmail.com>
|
||||
*
|
||||
* 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(CPUOpenRISCState *env, target_ulong newsp)
|
||||
{
|
||||
if (newsp) {
|
||||
env->gpr[1] = newsp;
|
||||
}
|
||||
env->gpr[2] = 0;
|
||||
}
|
||||
|
||||
/* TODO: need to implement cpu_set_tls() */
|
||||
|
||||
#endif
|
41
linux-user/ppc/target_cpu.h
Normal file
41
linux-user/ppc/target_cpu.h
Normal file
@ -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
|
@ -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"
|
||||
|
39
linux-user/s390x/target_cpu.h
Normal file
39
linux-user/s390x/target_cpu.h
Normal file
@ -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
|
35
linux-user/sh4/target_cpu.h
Normal file
35
linux-user/sh4/target_cpu.h
Normal file
@ -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
|
36
linux-user/sparc/target_cpu.h
Normal file
36
linux-user/sparc/target_cpu.h
Normal file
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* SPARC specific CPU ABI and functions for linux-user
|
||||
*
|
||||
* Copyright (C) 2003 Thomas M. Ogrisegg <tom@fnord.at>
|
||||
* 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
|
||||
|
||||
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__);
|
||||
}
|
||||
|
||||
/* TODO: need to implement cpu_set_tls() */
|
||||
|
||||
#endif
|
1
linux-user/sparc64/target_cpu.h
Normal file
1
linux-user/sparc64/target_cpu.h
Normal file
@ -0,0 +1 @@
|
||||
#include "../sparc/target_cpu.h"
|
27
linux-user/unicore32/target_cpu.h
Normal file
27
linux-user/unicore32/target_cpu.h
Normal file
@ -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
|
1
linux-user/x86_64/target_cpu.h
Normal file
1
linux-user/x86_64/target_cpu.h
Normal file
@ -0,0 +1 @@
|
||||
#include "../i386/target_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.
|
||||
|
@ -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)
|
||||
@ -734,15 +729,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: */
|
||||
|
@ -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
|
||||
|
@ -1125,15 +1125,6 @@ static inline target_long lshift(target_long x, int n)
|
||||
/* translate.c */
|
||||
void optimize_flags_init(void);
|
||||
|
||||
#if defined(CONFIG_USER_ONLY)
|
||||
static inline void cpu_clone_regs(CPUX86State *env, target_ulong newsp)
|
||||
{
|
||||
if (newsp)
|
||||
env->regs[R_ESP] = newsp;
|
||||
env->regs[R_EAX] = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#include "exec/cpu-all.h"
|
||||
#include "svm.h"
|
||||
|
||||
|
@ -215,20 +215,6 @@ int cpu_lm32_handle_mmu_fault(CPULM32State *env, target_ulong address, int rw,
|
||||
int mmu_idx);
|
||||
#define cpu_handle_mmu_fault cpu_lm32_handle_mmu_fault
|
||||
|
||||
#if defined(CONFIG_USER_ONLY)
|
||||
static inline void cpu_clone_regs(CPULM32State *env, target_ulong newsp)
|
||||
{
|
||||
if (newsp) {
|
||||
env->regs[R_SP] = newsp;
|
||||
}
|
||||
env->regs[R_R1] = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline void cpu_set_tls(CPULM32State *env, target_ulong newtls)
|
||||
{
|
||||
}
|
||||
|
||||
#include "exec/cpu-all.h"
|
||||
|
||||
static inline void cpu_get_tb_cpu_state(CPULM32State *env, target_ulong *pc,
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -521,14 +521,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;
|
||||
@ -679,11 +671,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;
|
||||
|
@ -394,16 +394,6 @@ static inline CPUOpenRISCState *cpu_init(const char *cpu_model)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_USER_ONLY)
|
||||
static inline void cpu_clone_regs(CPUOpenRISCState *env, target_ulong newsp)
|
||||
{
|
||||
if (newsp) {
|
||||
env->gpr[1] = newsp;
|
||||
}
|
||||
env->gpr[2] = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#include "exec/cpu-all.h"
|
||||
|
||||
static inline void cpu_get_tb_cpu_state(CPUOpenRISCState *env,
|
||||
|
@ -1188,15 +1188,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"
|
||||
|
||||
/*****************************************************************************/
|
||||
@ -2036,17 +2027,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)
|
||||
{
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -690,18 +690,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
|
||||
|
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user