1925ccf32SRichard Henderson /* 2925ccf32SRichard Henderson * HPPA specific CPU ABI and functions for linux-user 3925ccf32SRichard Henderson * 4925ccf32SRichard Henderson * Copyright (c) 2016 Richard Henderson 5925ccf32SRichard Henderson * 6925ccf32SRichard Henderson * This library is free software; you can redistribute it and/or 7925ccf32SRichard Henderson * modify it under the terms of the GNU Lesser General Public 8925ccf32SRichard Henderson * License as published by the Free Software Foundation; either 91c79145fSChetan Pant * version 2.1 of the License, or (at your option) any later version. 10925ccf32SRichard Henderson * 11925ccf32SRichard Henderson * This library is distributed in the hope that it will be useful, 12925ccf32SRichard Henderson * but WITHOUT ANY WARRANTY; without even the implied warranty of 13925ccf32SRichard Henderson * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14925ccf32SRichard Henderson * Lesser General Public License for more details. 15925ccf32SRichard Henderson * 16925ccf32SRichard Henderson * You should have received a copy of the GNU Lesser General Public 17925ccf32SRichard Henderson * License along with this library; if not, see <http://www.gnu.org/licenses/>. 18925ccf32SRichard Henderson */ 199850f9f6SLaurent Vivier #ifndef HPPA_TARGET_CPU_H 209850f9f6SLaurent Vivier #define HPPA_TARGET_CPU_H 21925ccf32SRichard Henderson 22608999d1SRichard Henderson static inline void cpu_clone_regs_child(CPUHPPAState *env, target_ulong newsp, 23608999d1SRichard Henderson unsigned flags) 24925ccf32SRichard Henderson { 25925ccf32SRichard Henderson if (newsp) { 26925ccf32SRichard Henderson env->gr[30] = newsp; 27925ccf32SRichard Henderson } 28fc37dcfeSRichard Henderson /* Indicate child in return value. */ 29925ccf32SRichard Henderson env->gr[28] = 0; 30fc37dcfeSRichard Henderson /* Return from the syscall. */ 31*3c13b0ffSRichard Henderson env->iaoq_f = env->gr[31] | PRIV_USER; 32*3c13b0ffSRichard Henderson env->iaoq_b = env->iaoq_f + 4; 33925ccf32SRichard Henderson } 34925ccf32SRichard Henderson 3507a6ecf4SRichard Henderson static inline void cpu_clone_regs_parent(CPUHPPAState *env, unsigned flags) 3607a6ecf4SRichard Henderson { 3707a6ecf4SRichard Henderson } 3807a6ecf4SRichard Henderson 39925ccf32SRichard Henderson static inline void cpu_set_tls(CPUHPPAState *env, target_ulong newtls) 40925ccf32SRichard Henderson { 4135136a77SRichard Henderson env->cr[27] = newtls; 42925ccf32SRichard Henderson } 43925ccf32SRichard Henderson 449850f9f6SLaurent Vivier static inline abi_ulong get_sp_from_cpustate(CPUHPPAState *state) 459850f9f6SLaurent Vivier { 469850f9f6SLaurent Vivier return state->gr[30]; 479850f9f6SLaurent Vivier } 48925ccf32SRichard Henderson #endif 49