Lines Matching refs:tf

77 static void break_syscall(struct trapframe *tf);
250 printtrap(int vector, struct trapframe *tf, int isfatal, int user)
258 printf(" cr.iip = 0x%lx\n", tf->tf_special.iip);
259 printf(" cr.ipsr = 0x%lx (", tf->tf_special.psr);
260 printpsr(tf->tf_special.psr);
262 printf(" cr.isr = 0x%lx (", tf->tf_special.isr);
263 printisr(tf->tf_special.isr);
265 printf(" cr.ifa = 0x%lx\n", tf->tf_special.ifa);
266 if (tf->tf_special.psr & IA64_PSR_IS) {
287 trap_decode_break(struct trapframe *tf)
293 if (!asm_decode(tf->tf_special.iip, &bundle))
296 slot = ((tf->tf_special.psr & IA64_PSR_RI) == IA64_PSR_RI_0) ? 0 :
297 ((tf->tf_special.psr & IA64_PSR_RI) == IA64_PSR_RI_1) ? 1 : 2;
312 trap_panic(int vector, struct trapframe *tf)
315 printtrap(vector, tf, 1, TRAPF_USERMODE(tf));
317 kdb_trap(vector, 0, tf);
326 do_ast(struct trapframe *tf)
332 ast(tf);
340 return (tf->tf_scratch.gr10);
348 trap(int vector, struct trapframe *tf)
356 user = TRAPF_USERMODE(tf) ? 1 : 0;
367 td->td_frame = tf;
387 trap_panic(vector, tf);
394 trap_panic(vector, tf);
404 trap_panic(vector, tf);
413 trap_panic(vector, tf);
423 trap_panic(vector, tf);
436 trap_panic(vector, tf);
441 ucode = (int)tf->tf_special.ifa & 0x1FFFFF;
455 ucode = trap_decode_break(tf);
494 tf->tf_special.psr &= ~IA64_PSR_SS;
497 break_syscall(tf);
502 error = copyin((void*)tf->tf_scratch.gr8,
509 ucode = tf->tf_scratch.gr8;
514 if (kdb_trap(vector, 0, tf))
518 trap_panic(vector, tf);
533 va = trunc_page(tf->tf_special.ifa);
550 if (tf->tf_special.isr & IA64_ISR_X)
552 else if (tf->tf_special.isr & IA64_ISR_W)
587 tf->tf_special.iip =
589 tf->tf_special.psr &= ~IA64_PSR_RI;
593 trap_panic(vector, tf);
604 trap_panic(vector, tf);
606 code = tf->tf_special.isr & (IA64_ISR_CODE & 0xf0ull);
609 sig = ia64_emulate(tf, td);
630 tf->tf_special.iip += tf->tf_special.ifa << 4;
631 tf->tf_special.psr &= ~IA64_PSR_RI;
640 trap_panic(vector, tf);
645 ia64_highfp_enable(td, tf);
647 trap_panic(vector, tf);
653 tf->tf_special.psr &= ~IA64_PSR_SS;
656 if (kdb_trap(vector, 0, tf))
660 trap_panic(vector, tf);
673 sig = unaligned_fixup(tf, td);
676 ucode = tf->tf_special.ifa; /* VA */
680 tf->tf_special.iip =
682 tf->tf_special.psr &= ~IA64_PSR_RI;
686 trap_panic(vector, tf);
700 trap_panic(vector, tf);
708 ip = (char *)tf->tf_special.iip;
710 (tf->tf_special.psr & IA64_PSR_RI) == 0)
723 fpctx.fp_low_volatile = &tf->tf_scratch_fp.fr6;
737 &tf->tf_special.psr, &tf->tf_special.fpsr,
738 &tf->tf_special.isr, &tf->tf_special.pr,
739 &tf->tf_special.cfm, &fpctx);
750 ei = (tf->tf_special.isr >> 41) & 0x03;
752 tf->tf_special.psr &= ~IA64_ISR_EI;
753 tf->tf_special.psr |= IA64_ISR_EI_1;
755 tf->tf_special.psr &= ~IA64_ISR_EI;
756 tf->tf_special.psr |= IA64_ISR_EI_2;
758 tf->tf_special.psr &= ~IA64_ISR_EI;
759 tf->tf_special.iip += 0x10;
801 tf->tf_special.psr &= ~IA64_PSR_LP;
802 tf->tf_special.psr |= IA64_PSR_TB;
812 if (tf->tf_special.iip >= VM_MAXUSER_ADDRESS)
814 tf->tf_special.psr &= ~IA64_PSR_TB;
815 tf->tf_special.psr |= IA64_PSR_SS;
822 ucode = tf->tf_special.iip;
827 trap_panic(vector, tf);
834 printtrap(vector, tf, 1, user);
843 userret(td, tf);
845 do_ast(tf);
854 break_syscall(struct trapframe *tf)
861 iip = tf->tf_special.iip;
862 psr = tf->tf_special.psr;
865 tf->tf_special.psr += IA64_PSR_RI_1;
866 if ((tf->tf_special.psr & IA64_PSR_RI) > IA64_PSR_RI_2) {
867 tf->tf_special.iip += 16;
868 tf->tf_special.psr &= ~IA64_PSR_RI;
875 tfp = &tf->tf_scratch.gr16;
876 nargs = tf->tf_special.cfm & 0x7f;
877 bsp = (uint64_t*)(curthread->td_kstack + tf->tf_special.ndirty +
878 (tf->tf_special.bspstore & 0x1ffUL));
885 error = syscall(tf);
887 tf->tf_special.iip = iip;
888 tf->tf_special.psr = psr;
891 do_ast(tf);
898 struct trapframe *tf;
901 tf = td->td_frame;
903 sa->code = tf->tf_scratch.gr15;
904 sa->args = &tf->tf_scratch.gr16;
942 syscall(struct trapframe *tf)
949 td->td_frame = tf;
952 tf->tf_scratch.gr10 = EJUSTRETURN;