Lines Matching refs:frame

67 #include <machine/frame.h>
86 static void trap_fatal(struct trapframe *frame);
87 static void printtrap(u_int vector, struct trapframe *frame, int isfatal,
89 static int trap_pfault(struct trapframe *frame, int user);
90 static int fix_unaligned(struct thread *td, struct trapframe *frame);
91 static int handle_onfault(struct trapframe *frame);
92 static void syscall(struct trapframe *frame);
139 trap(struct trapframe *frame)
151 type = frame->exc;
153 user = (frame->srr1 & PSL_PR) ? 1 : 0;
159 td->td_frame = frame;
167 sig = trap_pfault(frame, 1);
171 syscall(frame);
175 if (fix_unaligned(td, frame) != 0)
178 frame->srr0 += 4;
183 frame->srr1 &= ~PSL_DE;
184 frame->cpu.booke.dbcr0 &= ~(DBCR0_IDM || DBCR0_IC);
190 sig = fpu_emulate(frame,
199 trap_fatal(frame);
209 kdb_trap(frame->exc, 0, frame);
213 if (trap_pfault(frame, 0) == 0)
218 if (handle_onfault(frame))
223 if (frame->cpu.booke.esr & ESR_PTR)
224 kdb_trap(EXC_PGM, 0, frame);
230 trap_fatal(frame);
244 userret(td, frame);
249 trap_fatal(struct trapframe *frame)
252 printtrap(frame->exc, frame, 1, (frame->srr1 & PSL_PR));
255 kdb_trap(frame->exc, 0, frame))
258 panic("%s trap", trapname(frame->exc));
262 printtrap(u_int vector, struct trapframe *frame, int isfatal, int user)
275 va = frame->cpu.booke.dear;
280 va = frame->srr0;
285 printf(" srr0 = 0x%08x\n", frame->srr0);
286 printf(" srr1 = 0x%08x\n", frame->srr1);
299 handle_onfault(struct trapframe *frame)
307 frame->srr0 = (*fb)[FAULTBUF_LR];
308 frame->fixreg[1] = (*fb)[FAULTBUF_R1];
309 frame->fixreg[2] = (*fb)[FAULTBUF_R2];
310 frame->fixreg[3] = 1;
311 frame->cr = (*fb)[FAULTBUF_CR];
312 frame->ctr = (*fb)[FAULTBUF_CTR];
313 frame->xer = (*fb)[FAULTBUF_XER];
314 bcopy(&(*fb)[FAULTBUF_R13], &frame->fixreg[13],
325 struct trapframe *frame;
330 frame = td->td_frame;
332 sa->code = frame->fixreg[0];
333 params = (caddr_t)(frame->fixreg + FIRSTARG);
366 error = copyin(MOREARGS(frame->fixreg[1]), sa->args + n,
373 td->td_retval[1] = frame->fixreg[FIRSTARG + 1];
381 syscall(struct trapframe *frame)
388 td->td_frame = frame;
395 trap_pfault(struct trapframe *frame, int user)
407 if (frame->exc == EXC_ISI) {
408 eva = frame->srr0;
412 eva = frame->cpu.booke.dear;
413 if (frame->cpu.booke.esr & ESR_ST)
462 if (!user && handle_onfault(frame))
529 fix_unaligned(struct thread *td, struct trapframe *frame)
536 indicator = EXC_ALI_OPCODE_INDICATOR(frame->dsisr);
541 reg = EXC_ALI_RST(frame->dsisr);
556 if (copyin((void *)frame->dar, fpr,
561 if (copyout(fpr, (void *)frame->dar,