1ba7651fbSMax Filippov /* 2ba7651fbSMax Filippov * Xtensa-specific CPU ABI and functions for linux-user 3ba7651fbSMax Filippov */ 4ba7651fbSMax Filippov #ifndef XTENSA_TARGET_CPU_H 5ba7651fbSMax Filippov #define XTENSA_TARGET_CPU_H 6ba7651fbSMax Filippov 7608999d1SRichard Henderson static inline void cpu_clone_regs_child(CPUXtensaState *env, 8608999d1SRichard Henderson target_ulong newsp, 9608999d1SRichard Henderson unsigned flags) 10ba7651fbSMax Filippov { 11ba7651fbSMax Filippov if (newsp) { 12ba7651fbSMax Filippov env->regs[1] = newsp; 13ba7651fbSMax Filippov env->sregs[WINDOW_BASE] = 0; 14ba7651fbSMax Filippov env->sregs[WINDOW_START] = 0x1; 15ba7651fbSMax Filippov } 16ba7651fbSMax Filippov env->regs[2] = 0; 17ba7651fbSMax Filippov } 18ba7651fbSMax Filippov 19*07a6ecf4SRichard Henderson static inline void cpu_clone_regs_parent(CPUXtensaState *env, unsigned flags) 20*07a6ecf4SRichard Henderson { 21*07a6ecf4SRichard Henderson } 22*07a6ecf4SRichard Henderson 23ba7651fbSMax Filippov static inline void cpu_set_tls(CPUXtensaState *env, target_ulong newtls) 24ba7651fbSMax Filippov { 25ba7651fbSMax Filippov env->uregs[THREADPTR] = newtls; 26ba7651fbSMax Filippov } 27ba7651fbSMax Filippov 289850f9f6SLaurent Vivier static inline abi_ulong get_sp_from_cpustate(CPUXtensaState *state) 299850f9f6SLaurent Vivier { 309850f9f6SLaurent Vivier return state->regs[1]; 319850f9f6SLaurent Vivier } 32ba7651fbSMax Filippov #endif 33