xref: /qemu/linux-user/loongarch64/target_cpu.h (revision da8c70ea)
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 Gao static 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 Gao static 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 Gao static 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 Gao static 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