Lines Matching full:env
26 static void xtensa_rfw(CPUXtensaState *env) in xtensa_rfw() argument
28 xtensa_restore_owb(env); in xtensa_rfw()
29 env->pc = env->sregs[EPC1]; in xtensa_rfw()
32 static void xtensa_rfwu(CPUXtensaState *env) in xtensa_rfwu() argument
34 env->sregs[WINDOW_START] |= (1 << env->sregs[WINDOW_BASE]); in xtensa_rfwu()
35 xtensa_rfw(env); in xtensa_rfwu()
38 static void xtensa_rfwo(CPUXtensaState *env) in xtensa_rfwo() argument
40 env->sregs[WINDOW_START] &= ~(1 << env->sregs[WINDOW_BASE]); in xtensa_rfwo()
41 xtensa_rfw(env); in xtensa_rfwo()
44 static void xtensa_overflow4(CPUXtensaState *env) in xtensa_overflow4() argument
46 put_user_ual(env->regs[0], env->regs[5] - 16); in xtensa_overflow4()
47 put_user_ual(env->regs[1], env->regs[5] - 12); in xtensa_overflow4()
48 put_user_ual(env->regs[2], env->regs[5] - 8); in xtensa_overflow4()
49 put_user_ual(env->regs[3], env->regs[5] - 4); in xtensa_overflow4()
50 xtensa_rfwo(env); in xtensa_overflow4()
53 static void xtensa_underflow4(CPUXtensaState *env) in xtensa_underflow4() argument
55 get_user_ual(env->regs[0], env->regs[5] - 16); in xtensa_underflow4()
56 get_user_ual(env->regs[1], env->regs[5] - 12); in xtensa_underflow4()
57 get_user_ual(env->regs[2], env->regs[5] - 8); in xtensa_underflow4()
58 get_user_ual(env->regs[3], env->regs[5] - 4); in xtensa_underflow4()
59 xtensa_rfwu(env); in xtensa_underflow4()
62 static void xtensa_overflow8(CPUXtensaState *env) in xtensa_overflow8() argument
64 put_user_ual(env->regs[0], env->regs[9] - 16); in xtensa_overflow8()
65 get_user_ual(env->regs[0], env->regs[1] - 12); in xtensa_overflow8()
66 put_user_ual(env->regs[1], env->regs[9] - 12); in xtensa_overflow8()
67 put_user_ual(env->regs[2], env->regs[9] - 8); in xtensa_overflow8()
68 put_user_ual(env->regs[3], env->regs[9] - 4); in xtensa_overflow8()
69 put_user_ual(env->regs[4], env->regs[0] - 32); in xtensa_overflow8()
70 put_user_ual(env->regs[5], env->regs[0] - 28); in xtensa_overflow8()
71 put_user_ual(env->regs[6], env->regs[0] - 24); in xtensa_overflow8()
72 put_user_ual(env->regs[7], env->regs[0] - 20); in xtensa_overflow8()
73 xtensa_rfwo(env); in xtensa_overflow8()
76 static void xtensa_underflow8(CPUXtensaState *env) in xtensa_underflow8() argument
78 get_user_ual(env->regs[0], env->regs[9] - 16); in xtensa_underflow8()
79 get_user_ual(env->regs[1], env->regs[9] - 12); in xtensa_underflow8()
80 get_user_ual(env->regs[2], env->regs[9] - 8); in xtensa_underflow8()
81 get_user_ual(env->regs[7], env->regs[1] - 12); in xtensa_underflow8()
82 get_user_ual(env->regs[3], env->regs[9] - 4); in xtensa_underflow8()
83 get_user_ual(env->regs[4], env->regs[7] - 32); in xtensa_underflow8()
84 get_user_ual(env->regs[5], env->regs[7] - 28); in xtensa_underflow8()
85 get_user_ual(env->regs[6], env->regs[7] - 24); in xtensa_underflow8()
86 get_user_ual(env->regs[7], env->regs[7] - 20); in xtensa_underflow8()
87 xtensa_rfwu(env); in xtensa_underflow8()
90 static void xtensa_overflow12(CPUXtensaState *env) in xtensa_overflow12() argument
92 put_user_ual(env->regs[0], env->regs[13] - 16); in xtensa_overflow12()
93 get_user_ual(env->regs[0], env->regs[1] - 12); in xtensa_overflow12()
94 put_user_ual(env->regs[1], env->regs[13] - 12); in xtensa_overflow12()
95 put_user_ual(env->regs[2], env->regs[13] - 8); in xtensa_overflow12()
96 put_user_ual(env->regs[3], env->regs[13] - 4); in xtensa_overflow12()
97 put_user_ual(env->regs[4], env->regs[0] - 48); in xtensa_overflow12()
98 put_user_ual(env->regs[5], env->regs[0] - 44); in xtensa_overflow12()
99 put_user_ual(env->regs[6], env->regs[0] - 40); in xtensa_overflow12()
100 put_user_ual(env->regs[7], env->regs[0] - 36); in xtensa_overflow12()
101 put_user_ual(env->regs[8], env->regs[0] - 32); in xtensa_overflow12()
102 put_user_ual(env->regs[9], env->regs[0] - 28); in xtensa_overflow12()
103 put_user_ual(env->regs[10], env->regs[0] - 24); in xtensa_overflow12()
104 put_user_ual(env->regs[11], env->regs[0] - 20); in xtensa_overflow12()
105 xtensa_rfwo(env); in xtensa_overflow12()
108 static void xtensa_underflow12(CPUXtensaState *env) in xtensa_underflow12() argument
110 get_user_ual(env->regs[0], env->regs[13] - 16); in xtensa_underflow12()
111 get_user_ual(env->regs[1], env->regs[13] - 12); in xtensa_underflow12()
112 get_user_ual(env->regs[2], env->regs[13] - 8); in xtensa_underflow12()
113 get_user_ual(env->regs[11], env->regs[1] - 12); in xtensa_underflow12()
114 get_user_ual(env->regs[3], env->regs[13] - 4); in xtensa_underflow12()
115 get_user_ual(env->regs[4], env->regs[11] - 48); in xtensa_underflow12()
116 get_user_ual(env->regs[5], env->regs[11] - 44); in xtensa_underflow12()
117 get_user_ual(env->regs[6], env->regs[11] - 40); in xtensa_underflow12()
118 get_user_ual(env->regs[7], env->regs[11] - 36); in xtensa_underflow12()
119 get_user_ual(env->regs[8], env->regs[11] - 32); in xtensa_underflow12()
120 get_user_ual(env->regs[9], env->regs[11] - 28); in xtensa_underflow12()
121 get_user_ual(env->regs[10], env->regs[11] - 24); in xtensa_underflow12()
122 get_user_ual(env->regs[11], env->regs[11] - 20); in xtensa_underflow12()
123 xtensa_rfwu(env); in xtensa_underflow12()
126 void cpu_loop(CPUXtensaState *env) in cpu_loop() argument
128 CPUState *cs = env_cpu(env); in cpu_loop()
138 env->sregs[PS] &= ~PS_EXCM; in cpu_loop()
144 xtensa_overflow4(env); in cpu_loop()
147 xtensa_underflow4(env); in cpu_loop()
150 xtensa_overflow8(env); in cpu_loop()
153 xtensa_underflow8(env); in cpu_loop()
156 xtensa_overflow12(env); in cpu_loop()
159 xtensa_underflow12(env); in cpu_loop()
163 switch (env->sregs[EXCCAUSE]) { in cpu_loop()
166 env->sregs[EPC1]); in cpu_loop()
170 env->sregs[EPC1]); in cpu_loop()
174 env->pc += 3; in cpu_loop()
175 ret = do_syscall(env, env->regs[2], in cpu_loop()
176 env->regs[6], env->regs[3], in cpu_loop()
177 env->regs[4], env->regs[5], in cpu_loop()
178 env->regs[8], env->regs[9], 0, 0); in cpu_loop()
181 env->regs[2] = ret; in cpu_loop()
185 env->pc -= 3; in cpu_loop()
194 env->sregs[PS] = deposit32(env->sregs[PS], in cpu_loop()
197 env->sregs[WINDOW_BASE]); in cpu_loop()
199 switch (env->regs[0] & 0xc0000000) { in cpu_loop()
202 xtensa_rotate_window(env, -1); in cpu_loop()
203 xtensa_underflow4(env); in cpu_loop()
207 xtensa_rotate_window(env, -2); in cpu_loop()
208 xtensa_underflow8(env); in cpu_loop()
212 xtensa_rotate_window(env, -3); in cpu_loop()
213 xtensa_underflow12(env); in cpu_loop()
220 env->sregs[EPC1]); in cpu_loop()
224 fprintf(stderr, "exccause = %d\n", env->sregs[EXCCAUSE]); in cpu_loop()
230 env->sregs[EPC1]); in cpu_loop()
237 process_pending_signals(env); in cpu_loop()
241 void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs) in target_cpu_copy_regs() argument
245 env->regs[i] = regs->areg[i]; in target_cpu_copy_regs()
247 env->sregs[WINDOW_START] = regs->windowstart; in target_cpu_copy_regs()
248 env->pc = regs->pc; in target_cpu_copy_regs()