xref: /openbmc/qemu/linux-user/xtensa/target_cpu.h (revision bbe16574)
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 
cpu_clone_regs_child(CPUXtensaState * env,target_ulong newsp,unsigned flags)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 
cpu_clone_regs_parent(CPUXtensaState * env,unsigned flags)19*07a6ecf4SRichard Henderson static inline void cpu_clone_regs_parent(CPUXtensaState *env, unsigned flags)
20*07a6ecf4SRichard Henderson {
21*07a6ecf4SRichard Henderson }
22*07a6ecf4SRichard Henderson 
cpu_set_tls(CPUXtensaState * env,target_ulong newtls)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 
get_sp_from_cpustate(CPUXtensaState * state)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