Lines Matching +full:3 +full:- +full:n

1 // SPDX-License-Identifier: GPL-2.0
32 /* Work-around for some SRMs which mishandle opDEC faults. */
41 " br $16, 1f\n" in opDEC_check()
44 " ldq $16, 8($sp)\n" in opDEC_check()
45 " addq $16, 4, $16\n" in opDEC_check()
46 " stq $16, 8($sp)\n" in opDEC_check()
47 " call_pal %[rti]\n" in opDEC_check()
49 "1: lda $17, 3\n" in opDEC_check()
50 " call_pal %[wrent]\n" in opDEC_check()
51 /* With that in place, the fault from the round-to-minf fp in opDEC_check()
54 " lda %[fix], 0\n" in opDEC_check()
55 " cvttq/svm $f31,$f31\n" in opDEC_check()
58 : [rti] "n" (PAL_rti), [wrent] "n" (PAL_wrent) in opDEC_check()
62 printk("opDEC fixup enabled.\n"); in opDEC_check()
68 printk("pc = [<%016lx>] ra = [<%016lx>] ps = %04lx %s\n", in dik_show_regs()
69 regs->pc, regs->r26, regs->ps, print_tainted()); in dik_show_regs()
70 printk("pc is at %pSR\n", (void *)regs->pc); in dik_show_regs()
71 printk("ra is at %pSR\n", (void *)regs->r26); in dik_show_regs()
72 printk("v0 = %016lx t0 = %016lx t1 = %016lx\n", in dik_show_regs()
73 regs->r0, regs->r1, regs->r2); in dik_show_regs()
74 printk("t2 = %016lx t3 = %016lx t4 = %016lx\n", in dik_show_regs()
75 regs->r3, regs->r4, regs->r5); in dik_show_regs()
76 printk("t5 = %016lx t6 = %016lx t7 = %016lx\n", in dik_show_regs()
77 regs->r6, regs->r7, regs->r8); in dik_show_regs()
80 printk("s0 = %016lx s1 = %016lx s2 = %016lx\n", in dik_show_regs()
82 printk("s3 = %016lx s4 = %016lx s5 = %016lx\n", in dik_show_regs()
84 printk("s6 = %016lx\n", r9_15[15]); in dik_show_regs()
87 printk("a0 = %016lx a1 = %016lx a2 = %016lx\n", in dik_show_regs()
88 regs->r16, regs->r17, regs->r18); in dik_show_regs()
89 printk("a3 = %016lx a4 = %016lx a5 = %016lx\n", in dik_show_regs()
90 regs->r19, regs->r20, regs->r21); in dik_show_regs()
91 printk("t8 = %016lx t9 = %016lx t10= %016lx\n", in dik_show_regs()
92 regs->r22, regs->r23, regs->r24); in dik_show_regs()
93 printk("t11= %016lx pv = %016lx at = %016lx\n", in dik_show_regs()
94 regs->r25, regs->r27, regs->r28); in dik_show_regs()
95 printk("gp = %016lx sp = %p\n", regs->gp, regs+1); in dik_show_regs()
114 for (i = -6; i < 2; i++) { in dik_show_code()
120 printk("\n"); in dik_show_code()
127 printk("%sTrace:\n", loglvl); in dik_show_trace()
136 printk("%s[<%lx>] %pSR\n", loglvl, tmp, (void *)tmp); in dik_show_trace()
142 printk("%s\n", loglvl); in dik_show_trace()
161 if (((long) stack & (THREAD_SIZE-1)) == 0) in show_stack()
165 pr_cont("\n"); in show_stack()
172 pr_cont("\n"); in show_stack()
179 if (regs->ps & 8) in die_if_kernel()
184 printk("%s(%d): %s %ld\n", current->comm, task_pid_nr(current), str, err); in die_if_kernel()
188 dik_show_code((unsigned int *)regs->pc); in die_if_kernel()
191 printk("die_if_kernel recursion detected.\n"); in die_if_kernel()
218 /* Software-completion summary bit is set, so try to in do_entArith()
222 si_code = alpha_fp_emul(regs->pc - 4); in do_entArith()
230 send_sig_fault(SIGFPE, si_code, (void __user *) regs->pc, 0, current); in do_entArith()
238 if ((regs->ps & ~IPL_MAX) == 0) { in do_entIF()
241 = (const unsigned int *) regs->pc; in do_entIF()
242 printk("Kernel bug at %s:%d\n", in do_entIF()
252 = (unsigned int *) regs->pc - 1; in do_entIF()
256 regs->r0 = 0; in do_entIF()
268 regs->pc -= 4; /* make pc point to former bpt */ in do_entIF()
271 send_sig_fault(SIGTRAP, TRAP_BRKPT, (void __user *)regs->pc, 0, in do_entIF()
276 send_sig_fault(SIGTRAP, TRAP_UNK, (void __user *) regs->pc, 0, in do_entIF()
281 switch ((long) regs->r16) { in do_entIF()
338 send_sig_fault(signo, code, (void __user *) regs->pc, regs->r16, in do_entIF()
347 the opDEC properly - they return the PC of the in do_entIF()
354 regs->pc += opDEC_fix; in do_entIF()
359 si_code = alpha_fp_emul(regs->pc - 4); in do_entIF()
364 (void __user *) regs->pc, 0, in do_entIF()
371 case 3: /* FEN fault */ in do_entIF()
381 current_thread_info()->pcb.flags |= 1; in do_entIF()
382 __reload_thread(&current_thread_info()->pcb); in do_entIF()
386 default: /* unexpected instruction-fault type */ in do_entIF()
390 send_sig_fault(SIGILL, ILL_ILLOPC, (void __user *)regs->pc, 0, current); in do_entIF()
405 force_sig_fault(SIGILL, ILL_ILLOPC, (void __user *)regs->pc, 0); in do_entDbg()
412 * fp-regs), and it needs to have them in order for simpler access.
414 * Due to the non-standard register layout (and because we don't want
415 * to handle floating-point regs), user-mode unaligned accesses are
419 * on a gp-register unaligned load/store, something is _very_ wrong
441 unsigned long pc = regs->pc - 4; in do_entUna()
442 unsigned long *_regs = regs->regs; in do_entUna()
456 "1: ldq_u %1,0(%3)\n" in do_entUna()
457 "2: ldq_u %2,1(%3)\n" in do_entUna()
458 " extwl %1,%3,%1\n" in do_entUna()
459 " extwh %2,%3,%2\n" in do_entUna()
460 "3:\n" in do_entUna()
461 EXC(1b,3b,%1,%0) in do_entUna()
462 EXC(2b,3b,%2,%0) in do_entUna()
472 "1: ldq_u %1,0(%3)\n" in do_entUna()
473 "2: ldq_u %2,3(%3)\n" in do_entUna()
474 " extll %1,%3,%1\n" in do_entUna()
475 " extlh %2,%3,%2\n" in do_entUna()
476 "3:\n" in do_entUna()
477 EXC(1b,3b,%1,%0) in do_entUna()
478 EXC(2b,3b,%2,%0) in do_entUna()
488 "1: ldq_u %1,0(%3)\n" in do_entUna()
489 "2: ldq_u %2,7(%3)\n" in do_entUna()
490 " extql %1,%3,%1\n" in do_entUna()
491 " extqh %2,%3,%2\n" in do_entUna()
492 "3:\n" in do_entUna()
493 EXC(1b,3b,%1,%0) in do_entUna()
494 EXC(2b,3b,%2,%0) in do_entUna()
507 "1: ldq_u %2,1(%5)\n" in do_entUna()
508 "2: ldq_u %1,0(%5)\n" in do_entUna()
509 " inswh %6,%5,%4\n" in do_entUna()
510 " inswl %6,%5,%3\n" in do_entUna()
511 " mskwh %2,%5,%2\n" in do_entUna()
512 " mskwl %1,%5,%1\n" in do_entUna()
513 " or %2,%4,%2\n" in do_entUna()
514 " or %1,%3,%1\n" in do_entUna()
515 "3: stq_u %2,1(%5)\n" in do_entUna()
516 "4: stq_u %1,0(%5)\n" in do_entUna()
517 "5:\n" in do_entUna()
520 EXC(3b,5b,$31,%0) in do_entUna()
531 "1: ldq_u %2,3(%5)\n" in do_entUna()
532 "2: ldq_u %1,0(%5)\n" in do_entUna()
533 " inslh %6,%5,%4\n" in do_entUna()
534 " insll %6,%5,%3\n" in do_entUna()
535 " msklh %2,%5,%2\n" in do_entUna()
536 " mskll %1,%5,%1\n" in do_entUna()
537 " or %2,%4,%2\n" in do_entUna()
538 " or %1,%3,%1\n" in do_entUna()
539 "3: stq_u %2,3(%5)\n" in do_entUna()
540 "4: stq_u %1,0(%5)\n" in do_entUna()
541 "5:\n" in do_entUna()
544 EXC(3b,5b,$31,%0) in do_entUna()
555 "1: ldq_u %2,7(%5)\n" in do_entUna()
556 "2: ldq_u %1,0(%5)\n" in do_entUna()
557 " insqh %6,%5,%4\n" in do_entUna()
558 " insql %6,%5,%3\n" in do_entUna()
559 " mskqh %2,%5,%2\n" in do_entUna()
560 " mskql %1,%5,%1\n" in do_entUna()
561 " or %2,%4,%2\n" in do_entUna()
562 " or %1,%3,%1\n" in do_entUna()
563 "3: stq_u %2,7(%5)\n" in do_entUna()
564 "4: stq_u %1,0(%5)\n" in do_entUna()
565 "5:\n" in do_entUna()
568 EXC(3b,5b,$31,%0) in do_entUna()
578 printk("Bad unaligned kernel access at %016lx: %p %lx %lu\n", in do_entUna()
589 printk("Forwarding unaligned exception at %lx (%lx)\n", in do_entUna()
592 regs->pc = newpc; in do_entUna()
601 printk("%s(%d): unhandled unaligned exception\n", in do_entUna()
602 current->comm, task_pid_nr(current)); in do_entUna()
604 printk("pc = [<%016lx>] ra = [<%016lx>] ps = %04lx\n", in do_entUna()
605 pc, una_reg(26), regs->ps); in do_entUna()
606 printk("r0 = %016lx r1 = %016lx r2 = %016lx\n", in do_entUna()
608 printk("r3 = %016lx r4 = %016lx r5 = %016lx\n", in do_entUna()
609 una_reg(3), una_reg(4), una_reg(5)); in do_entUna()
610 printk("r6 = %016lx r7 = %016lx r8 = %016lx\n", in do_entUna()
612 printk("r9 = %016lx r10= %016lx r11= %016lx\n", in do_entUna()
614 printk("r12= %016lx r13= %016lx r14= %016lx\n", in do_entUna()
616 printk("r15= %016lx\n", una_reg(15)); in do_entUna()
617 printk("r16= %016lx r17= %016lx r18= %016lx\n", in do_entUna()
619 printk("r19= %016lx r20= %016lx r21= %016lx\n", in do_entUna()
621 printk("r22= %016lx r23= %016lx r24= %016lx\n", in do_entUna()
623 printk("r25= %016lx r27= %016lx r28= %016lx\n", in do_entUna()
625 printk("gp = %016lx sp = %p\n", regs->gp, regs+1); in do_entUna()
631 printk("die_if_kernel recursion detected.\n"); in do_entUna()
639 * Convert an s-floating point value in memory format to the
641 * needs to be remapped to preserve non-finite values
642 * (infinities, not-a-numbers, denormals).
669 * Convert an s-floating point value in register format to the
679 * Handle user-level unaligned fault. Handling user-level unaligned
688 * particular, load-linked/store-conditionally and floating point
707 #define R(x) ((size_t) &((struct pt_regs *)0)->x)
712 -56, -48, -40, -32, -24, -16, -8,
735 if (!(current_thread_info()->status & TS_UAC_NOPRINT)) { in do_entUnaUser()
737 printk("%s(%d): unaligned trap at %016lx: %p %lx %ld\n", in do_entUnaUser()
738 current->comm, task_pid_nr(current), in do_entUnaUser()
739 regs->pc - 4, va, opcode, reg); in do_entUnaUser()
742 if ((current_thread_info()->status & TS_UAC_SIGBUS)) in do_entUnaUser()
745 if ((current_thread_info()->status & TS_UAC_NOFIX)) in do_entUnaUser()
756 unaligned[1].pc = regs->pc - 4; in do_entUnaUser()
779 "1: ldq_u %1,0(%3)\n" in do_entUnaUser()
780 "2: ldq_u %2,1(%3)\n" in do_entUnaUser()
781 " extwl %1,%3,%1\n" in do_entUnaUser()
782 " extwh %2,%3,%2\n" in do_entUnaUser()
783 "3:\n" in do_entUnaUser()
784 EXC(1b,3b,%1,%0) in do_entUnaUser()
785 EXC(2b,3b,%2,%0) in do_entUnaUser()
795 "1: ldq_u %1,0(%3)\n" in do_entUnaUser()
796 "2: ldq_u %2,3(%3)\n" in do_entUnaUser()
797 " extll %1,%3,%1\n" in do_entUnaUser()
798 " extlh %2,%3,%2\n" in do_entUnaUser()
799 "3:\n" in do_entUnaUser()
800 EXC(1b,3b,%1,%0) in do_entUnaUser()
801 EXC(2b,3b,%2,%0) in do_entUnaUser()
811 "1: ldq_u %1,0(%3)\n" in do_entUnaUser()
812 "2: ldq_u %2,7(%3)\n" in do_entUnaUser()
813 " extql %1,%3,%1\n" in do_entUnaUser()
814 " extqh %2,%3,%2\n" in do_entUnaUser()
815 "3:\n" in do_entUnaUser()
816 EXC(1b,3b,%1,%0) in do_entUnaUser()
817 EXC(2b,3b,%2,%0) in do_entUnaUser()
827 "1: ldq_u %1,0(%3)\n" in do_entUnaUser()
828 "2: ldq_u %2,3(%3)\n" in do_entUnaUser()
829 " extll %1,%3,%1\n" in do_entUnaUser()
830 " extlh %2,%3,%2\n" in do_entUnaUser()
831 "3:\n" in do_entUnaUser()
832 EXC(1b,3b,%1,%0) in do_entUnaUser()
833 EXC(2b,3b,%2,%0) in do_entUnaUser()
843 "1: ldq_u %1,0(%3)\n" in do_entUnaUser()
844 "2: ldq_u %2,7(%3)\n" in do_entUnaUser()
845 " extql %1,%3,%1\n" in do_entUnaUser()
846 " extqh %2,%3,%2\n" in do_entUnaUser()
847 "3:\n" in do_entUnaUser()
848 EXC(1b,3b,%1,%0) in do_entUnaUser()
849 EXC(2b,3b,%2,%0) in do_entUnaUser()
862 "1: ldq_u %2,1(%5)\n" in do_entUnaUser()
863 "2: ldq_u %1,0(%5)\n" in do_entUnaUser()
864 " inswh %6,%5,%4\n" in do_entUnaUser()
865 " inswl %6,%5,%3\n" in do_entUnaUser()
866 " mskwh %2,%5,%2\n" in do_entUnaUser()
867 " mskwl %1,%5,%1\n" in do_entUnaUser()
868 " or %2,%4,%2\n" in do_entUnaUser()
869 " or %1,%3,%1\n" in do_entUnaUser()
870 "3: stq_u %2,1(%5)\n" in do_entUnaUser()
871 "4: stq_u %1,0(%5)\n" in do_entUnaUser()
872 "5:\n" in do_entUnaUser()
875 EXC(3b,5b,$31,%0) in do_entUnaUser()
890 "1: ldq_u %2,3(%5)\n" in do_entUnaUser()
891 "2: ldq_u %1,0(%5)\n" in do_entUnaUser()
892 " inslh %6,%5,%4\n" in do_entUnaUser()
893 " insll %6,%5,%3\n" in do_entUnaUser()
894 " msklh %2,%5,%2\n" in do_entUnaUser()
895 " mskll %1,%5,%1\n" in do_entUnaUser()
896 " or %2,%4,%2\n" in do_entUnaUser()
897 " or %1,%3,%1\n" in do_entUnaUser()
898 "3: stq_u %2,3(%5)\n" in do_entUnaUser()
899 "4: stq_u %1,0(%5)\n" in do_entUnaUser()
900 "5:\n" in do_entUnaUser()
903 EXC(3b,5b,$31,%0) in do_entUnaUser()
918 "1: ldq_u %2,7(%5)\n" in do_entUnaUser()
919 "2: ldq_u %1,0(%5)\n" in do_entUnaUser()
920 " insqh %6,%5,%4\n" in do_entUnaUser()
921 " insql %6,%5,%3\n" in do_entUnaUser()
922 " mskqh %2,%5,%2\n" in do_entUnaUser()
923 " mskql %1,%5,%1\n" in do_entUnaUser()
924 " or %2,%4,%2\n" in do_entUnaUser()
925 " or %1,%3,%1\n" in do_entUnaUser()
926 "3: stq_u %2,7(%5)\n" in do_entUnaUser()
927 "4: stq_u %1,0(%5)\n" in do_entUnaUser()
928 "5:\n" in do_entUnaUser()
931 EXC(3b,5b,$31,%0) in do_entUnaUser()
951 regs->pc -= 4; /* make pc point to faulting insn */ in do_entUnaUser()
959 struct mm_struct *mm = current->mm; in do_entUnaUser()
971 regs->pc -= 4; in do_entUnaUser()
979 /* Tell PAL-code what global pointer we want in the kernel. */ in trap_init()
990 wrent(entIF, 3); in trap_init()