1*da8c70eaSSong Gao /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*da8c70eaSSong Gao /* 3*da8c70eaSSong Gao * LoongArch specific CPU ABI and functions for linux-user 4*da8c70eaSSong Gao * 5*da8c70eaSSong Gao * Copyright (c) 2021 Loongson Technology Corporation Limited 6*da8c70eaSSong Gao */ 7*da8c70eaSSong Gao 8*da8c70eaSSong Gao #ifndef LOONGARCH_TARGET_CPU_H 9*da8c70eaSSong Gao #define LOONGARCH_TARGET_CPU_H 10*da8c70eaSSong Gao cpu_clone_regs_child(CPULoongArchState * env,target_ulong newsp,unsigned flags)11*da8c70eaSSong Gaostatic inline void cpu_clone_regs_child(CPULoongArchState *env, 12*da8c70eaSSong Gao target_ulong newsp, unsigned flags) 13*da8c70eaSSong Gao { 14*da8c70eaSSong Gao if (newsp) { 15*da8c70eaSSong Gao env->gpr[3] = newsp; 16*da8c70eaSSong Gao } 17*da8c70eaSSong Gao env->gpr[4] = 0; 18*da8c70eaSSong Gao } 19*da8c70eaSSong Gao cpu_clone_regs_parent(CPULoongArchState * env,unsigned flags)20*da8c70eaSSong Gaostatic inline void cpu_clone_regs_parent(CPULoongArchState *env, 21*da8c70eaSSong Gao unsigned flags) 22*da8c70eaSSong Gao { 23*da8c70eaSSong Gao } 24*da8c70eaSSong Gao cpu_set_tls(CPULoongArchState * env,target_ulong newtls)25*da8c70eaSSong Gaostatic inline void cpu_set_tls(CPULoongArchState *env, target_ulong newtls) 26*da8c70eaSSong Gao { 27*da8c70eaSSong Gao env->gpr[2] = newtls; 28*da8c70eaSSong Gao } 29*da8c70eaSSong Gao get_sp_from_cpustate(CPULoongArchState * state)30*da8c70eaSSong Gaostatic inline abi_ulong get_sp_from_cpustate(CPULoongArchState *state) 31*da8c70eaSSong Gao { 32*da8c70eaSSong Gao return state->gpr[3]; 33*da8c70eaSSong Gao } 34*da8c70eaSSong Gao #endif 35