Lines Matching refs:frame

47 arm_push_iframe(struct iframe_stack *stack, struct iframe *frame)
50 stack->frames[stack->index++] = frame;
199 iframe frame = {};
200 frame.r0 = (uint32)args1;
201 frame.r1 = (uint32)args2;
202 frame.usr_sp = stackTop;
203 frame.usr_lr = ((addr_t*)commPageAddress)[COMMPAGE_ENTRY_ARM_THREAD_EXIT]
205 frame.pc = entry;
208 arch_return_to_userland(&frame);
218 struct iframe* frame = thread->arch_info.userFrame;
219 if (frame == NULL) {
224 return frame->usr_sp >= thread->signal_stack_base
225 && frame->usr_sp < thread->signal_stack_base
231 get_signal_stack(Thread* thread, struct iframe* frame,
236 && (frame->usr_sp < thread->signal_stack_base
237 || frame->usr_sp >= thread->signal_stack_base + thread->signal_stack_size)) {
242 return (uint8*)ROUNDDOWN(frame->usr_sp - spaceNeeded, 16);
250 iframe* frame = thread->arch_info.userFrame;
251 if (frame == NULL) {
257 signalFrameData->context.uc_mcontext.r0 = frame->r0;
258 signalFrameData->context.uc_mcontext.r1 = frame->r1;
259 signalFrameData->context.uc_mcontext.r2 = frame->r2;
260 signalFrameData->context.uc_mcontext.r3 = frame->r3;
261 signalFrameData->context.uc_mcontext.r4 = frame->r4;
262 signalFrameData->context.uc_mcontext.r5 = frame->r5;
263 signalFrameData->context.uc_mcontext.r6 = frame->r6;
264 signalFrameData->context.uc_mcontext.r7 = frame->r7;
265 signalFrameData->context.uc_mcontext.r8 = frame->r8;
266 signalFrameData->context.uc_mcontext.r9 = frame->r9;
267 signalFrameData->context.uc_mcontext.r10 = frame->r10;
268 signalFrameData->context.uc_mcontext.r11 = frame->r11;
269 signalFrameData->context.uc_mcontext.r12 = frame->r12;
270 signalFrameData->context.uc_mcontext.r13 = frame->usr_sp;
271 signalFrameData->context.uc_mcontext.r14 = frame->usr_lr;
272 signalFrameData->context.uc_mcontext.r15 = frame->pc;
273 signalFrameData->context.uc_mcontext.cpsr = frame->spsr;
278 signal_get_user_stack(frame->usr_sp, &signalFrameData->context.uc_stack);
284 uint8* userStack = get_signal_stack(thread, frame, sa,
287 // copy the signal frame data onto the stack
293 // prepare the user stack frame for a function call to the signal handler wrapper function
301 frame->usr_lr = frame->pc;
302 frame->usr_sp = (addr_t)userStack;
303 frame->pc = signalHandlerAddr;
304 frame->r0 = frame->usr_sp;
313 iframe* frame = thread_get_current_thread()->arch_info.userFrame;
314 if (frame == NULL) {
322 frame->r0 = signalFrameData->context.uc_mcontext.r0;
323 frame->r1 = signalFrameData->context.uc_mcontext.r1;
324 frame->r2 = signalFrameData->context.uc_mcontext.r2;
325 frame->r3 = signalFrameData->context.uc_mcontext.r3;
326 frame->r4 = signalFrameData->context.uc_mcontext.r4;
327 frame->r5 = signalFrameData->context.uc_mcontext.r5;
328 frame->r6 = signalFrameData->context.uc_mcontext.r6;
329 frame->r7 = signalFrameData->context.uc_mcontext.r7;
330 frame->r8 = signalFrameData->context.uc_mcontext.r8;
331 frame->r9 = signalFrameData->context.uc_mcontext.r9;
332 frame->r10 = signalFrameData->context.uc_mcontext.r10;
333 frame->r11 = signalFrameData->context.uc_mcontext.r11;
334 frame->r12 = signalFrameData->context.uc_mcontext.r12;
335 frame->usr_sp = signalFrameData->context.uc_mcontext.r13;
336 frame->usr_lr = signalFrameData->context.uc_mcontext.r14;
337 frame->pc = signalFrameData->context.uc_mcontext.r15;
338 frame->spsr = signalFrameData->context.uc_mcontext.cpsr;
342 return frame->r0;
346 /** Saves everything needed to restore the frame in the child fork in the
353 struct iframe* frame = thread_get_current_thread()->arch_info.userFrame;
354 if (frame == NULL) {
358 arg->frame = *frame;
359 arg->frame.r0 = 0; // fork return value
363 /** Restores the frame from a forked team as specified by the provided
374 arch_return_to_userland(&arg->frame);