xref: /openbmc/qemu/linux-user/xtensa/target_cpu.h (revision 9850f9f6)
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