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 9925ccf32SRichard Henderson * version 2 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 22*608999d1SRichard Henderson static inline void cpu_clone_regs_child(CPUHPPAState *env, target_ulong newsp, 23*608999d1SRichard 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. */ 31fc37dcfeSRichard Henderson env->iaoq_f = env->gr[31]; 32fc37dcfeSRichard Henderson env->iaoq_b = env->gr[31] + 4; 33925ccf32SRichard Henderson } 34925ccf32SRichard Henderson 35925ccf32SRichard Henderson static inline void cpu_set_tls(CPUHPPAState *env, target_ulong newtls) 36925ccf32SRichard Henderson { 3735136a77SRichard Henderson env->cr[27] = newtls; 38925ccf32SRichard Henderson } 39925ccf32SRichard Henderson 409850f9f6SLaurent Vivier static inline abi_ulong get_sp_from_cpustate(CPUHPPAState *state) 419850f9f6SLaurent Vivier { 429850f9f6SLaurent Vivier return state->gr[30]; 439850f9f6SLaurent Vivier } 44925ccf32SRichard Henderson #endif 45