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 7ba7651fbSMax Filippov static inline void cpu_clone_regs(CPUXtensaState *env, target_ulong newsp) 8ba7651fbSMax Filippov { 9ba7651fbSMax Filippov if (newsp) { 10ba7651fbSMax Filippov env->regs[1] = newsp; 11ba7651fbSMax Filippov env->sregs[WINDOW_BASE] = 0; 12ba7651fbSMax Filippov env->sregs[WINDOW_START] = 0x1; 13ba7651fbSMax Filippov } 14ba7651fbSMax Filippov env->regs[2] = 0; 15ba7651fbSMax Filippov } 16ba7651fbSMax Filippov 17ba7651fbSMax Filippov static inline void cpu_set_tls(CPUXtensaState *env, target_ulong newtls) 18ba7651fbSMax Filippov { 19ba7651fbSMax Filippov env->uregs[THREADPTR] = newtls; 20ba7651fbSMax Filippov } 21ba7651fbSMax Filippov 22*9850f9f6SLaurent Vivier static inline abi_ulong get_sp_from_cpustate(CPUXtensaState *state) 23*9850f9f6SLaurent Vivier { 24*9850f9f6SLaurent Vivier return state->regs[1]; 25*9850f9f6SLaurent Vivier } 26ba7651fbSMax Filippov #endif 27