Lines Matching refs:frame

124 	iframe frame;
125 memset(&frame, 0, sizeof(frame));
131 frame.status = status.val;
132 frame.epc = entry;
133 frame.a0 = (addr_t)arg1;
134 frame.a1 = (addr_t)arg2;
135 frame.ra = threadExitAddr;
136 frame.sp = thread->user_stack_base + thread->user_stack_size;
137 frame.tp = thread->user_local_storage;
139 arch_load_user_iframe(stackHeader, &frame);
149 struct iframe* frame = thread->arch_info.userFrame;
150 if (frame == NULL) {
155 return frame->sp >= thread->signal_stack_base
156 && frame->sp < thread->signal_stack_base
162 get_signal_stack(Thread* thread, struct iframe* frame,
169 frame->sp < thread->signal_stack_base ||
170 frame->sp >= thread->signal_stack_base + thread->signal_stack_size
177 return (uint8*)ROUNDDOWN(frame->sp - spaceNeeded, 16);
186 iframe* frame = thread->arch_info.userFrame;
189 signalFrameData->context.uc_mcontext.x[ 0] = frame->ra;
190 signalFrameData->context.uc_mcontext.x[ 1] = frame->sp;
191 signalFrameData->context.uc_mcontext.x[ 2] = frame->gp;
192 signalFrameData->context.uc_mcontext.x[ 3] = frame->tp;
193 signalFrameData->context.uc_mcontext.x[ 4] = frame->t0;
194 signalFrameData->context.uc_mcontext.x[ 5] = frame->t1;
195 signalFrameData->context.uc_mcontext.x[ 6] = frame->t2;
196 signalFrameData->context.uc_mcontext.x[ 7] = frame->fp;
197 signalFrameData->context.uc_mcontext.x[ 8] = frame->s1;
198 signalFrameData->context.uc_mcontext.x[ 9] = frame->a0;
199 signalFrameData->context.uc_mcontext.x[10] = frame->a1;
200 signalFrameData->context.uc_mcontext.x[11] = frame->a2;
201 signalFrameData->context.uc_mcontext.x[12] = frame->a3;
202 signalFrameData->context.uc_mcontext.x[13] = frame->a4;
203 signalFrameData->context.uc_mcontext.x[14] = frame->a5;
204 signalFrameData->context.uc_mcontext.x[15] = frame->a6;
205 signalFrameData->context.uc_mcontext.x[16] = frame->a7;
206 signalFrameData->context.uc_mcontext.x[17] = frame->s2;
207 signalFrameData->context.uc_mcontext.x[18] = frame->s3;
208 signalFrameData->context.uc_mcontext.x[19] = frame->s4;
209 signalFrameData->context.uc_mcontext.x[20] = frame->s5;
210 signalFrameData->context.uc_mcontext.x[21] = frame->s6;
211 signalFrameData->context.uc_mcontext.x[22] = frame->s7;
212 signalFrameData->context.uc_mcontext.x[23] = frame->s8;
213 signalFrameData->context.uc_mcontext.x[24] = frame->s9;
214 signalFrameData->context.uc_mcontext.x[25] = frame->s10;
215 signalFrameData->context.uc_mcontext.x[26] = frame->s11;
216 signalFrameData->context.uc_mcontext.x[27] = frame->t3;
217 signalFrameData->context.uc_mcontext.x[28] = frame->t4;
218 signalFrameData->context.uc_mcontext.x[29] = frame->t5;
219 signalFrameData->context.uc_mcontext.x[30] = frame->t6;
220 signalFrameData->context.uc_mcontext.pc = frame->epc;
225 signal_get_user_stack(frame->sp, &signalFrameData->context.uc_stack);
238 uint8* userStack = get_signal_stack(thread, frame, sa,
254 frame->ra = frame->epc;
255 frame->sp = (addr_t)userStack;
256 frame->epc = signalHandlerAddr;
257 frame->a0 = frame->sp;
269 iframe* frame = thread_get_current_thread()->arch_info.userFrame;
274 frame->ra = signalFrameData->context.uc_mcontext.x[ 0];
275 frame->sp = signalFrameData->context.uc_mcontext.x[ 1];
276 frame->gp = signalFrameData->context.uc_mcontext.x[ 2];
277 frame->tp = signalFrameData->context.uc_mcontext.x[ 3];
278 frame->t0 = signalFrameData->context.uc_mcontext.x[ 4];
279 frame->t1 = signalFrameData->context.uc_mcontext.x[ 5];
280 frame->t2 = signalFrameData->context.uc_mcontext.x[ 6];
281 frame->fp = signalFrameData->context.uc_mcontext.x[ 7];
282 frame->s1 = signalFrameData->context.uc_mcontext.x[ 8];
283 frame->a0 = signalFrameData->context.uc_mcontext.x[ 9];
284 frame->a1 = signalFrameData->context.uc_mcontext.x[10];
285 frame->a2 = signalFrameData->context.uc_mcontext.x[11];
286 frame->a3 = signalFrameData->context.uc_mcontext.x[12];
287 frame->a4 = signalFrameData->context.uc_mcontext.x[13];
288 frame->a5 = signalFrameData->context.uc_mcontext.x[14];
289 frame->a6 = signalFrameData->context.uc_mcontext.x[15];
290 frame->a7 = signalFrameData->context.uc_mcontext.x[16];
291 frame->s2 = signalFrameData->context.uc_mcontext.x[17];
292 frame->s3 = signalFrameData->context.uc_mcontext.x[18];
293 frame->s4 = signalFrameData->context.uc_mcontext.x[19];
294 frame->s5 = signalFrameData->context.uc_mcontext.x[20];
295 frame->s6 = signalFrameData->context.uc_mcontext.x[21];
296 frame->s7 = signalFrameData->context.uc_mcontext.x[22];
297 frame->s8 = signalFrameData->context.uc_mcontext.x[23];
298 frame->s9 = signalFrameData->context.uc_mcontext.x[24];
299 frame->s10 = signalFrameData->context.uc_mcontext.x[25];
300 frame->s11 = signalFrameData->context.uc_mcontext.x[26];
301 frame->t3 = signalFrameData->context.uc_mcontext.x[27];
302 frame->t4 = signalFrameData->context.uc_mcontext.x[28];
303 frame->t5 = signalFrameData->context.uc_mcontext.x[29];
304 frame->t6 = signalFrameData->context.uc_mcontext.x[30];
305 frame->epc = signalFrameData->context.uc_mcontext.pc;
308 return frame->a0;
312 /** Saves everything needed to restore the frame in the child fork in the
326 memcpy(&arg->frame, thread_get_current_thread()->arch_info.userFrame,
328 arg->frame.a0 = 0; // fork return value
332 /** Restores the frame from a forked team as specified by the provided
347 //dprintf(" user PC: "); WritePC(arg->frame.epc); dprintf("\n");
356 arg->frame.status = status.val;
357 arch_load_user_iframe(stackHeader, &arg->frame);