• Home
  • Raw
  • Download

Lines Matching refs:regs

53 	struct pt_regs *regs);
79 static void print_gr(char *level, struct pt_regs *regs) in print_gr() argument
86 printbinary(buf, regs->gr[0], 32); in print_gr()
90 PRINTREGS(level, regs->gr, "r", RFMT, i); in print_gr()
93 static void print_fr(char *level, struct pt_regs *regs) in print_fr() argument
117 PRINTREGS(level, regs->fr, "fr", FFMT, i); in print_fr()
120 void show_regs(struct pt_regs *regs) in show_regs() argument
126 user = user_mode(regs); in show_regs()
129 print_gr(level, regs); in show_regs()
132 PRINTREGS(level, regs->sr, "sr", RFMT, i); in show_regs()
135 print_fr(level, regs); in show_regs()
141 level, regs->iasq[0], regs->iasq[1], regs->iaoq[0], regs->iaoq[1]); in show_regs()
143 level, regs->iir, regs->isr, regs->ior); in show_regs()
146 printk("%s ORIG_R28: " RFMT "\n", level, regs->orig_r28); in show_regs()
149 printk("%s IAOQ[0]: " RFMT "\n", level, regs->iaoq[0]); in show_regs()
150 printk("%s IAOQ[1]: " RFMT "\n", level, regs->iaoq[1]); in show_regs()
151 printk("%s RP(r2): " RFMT "\n", level, regs->gr[2]); in show_regs()
153 printk("%s IAOQ[0]: %pS\n", level, (void *) regs->iaoq[0]); in show_regs()
154 printk("%s IAOQ[1]: %pS\n", level, (void *) regs->iaoq[1]); in show_regs()
155 printk("%s RP(r2): %pS\n", level, (void *) regs->gr[2]); in show_regs()
157 parisc_show_stack(current, NULL, regs); in show_regs()
188 struct pt_regs *regs) in parisc_show_stack() argument
194 if (regs) { in parisc_show_stack()
195 unwind_frame_init(&info, t, regs); in parisc_show_stack()
232 void die_if_kernel(char *str, struct pt_regs *regs, long err) in die_if_kernel() argument
234 if (user_mode(regs)) { in die_if_kernel()
239 current->comm, task_pid_nr(current), str, err, regs->iaoq[0]); in die_if_kernel()
242 show_regs(regs); in die_if_kernel()
283 show_regs(regs); in die_if_kernel()
300 int syscall_ipi(int (*syscall) (struct pt_regs *), struct pt_regs *regs) in syscall_ipi() argument
302 return syscall(regs); in syscall_ipi()
307 static void handle_gdb_break(struct pt_regs *regs, int wot) in handle_gdb_break() argument
314 si.si_addr = (void __user *) (regs->iaoq[0] & ~3); in handle_gdb_break()
318 static void handle_break(struct pt_regs *regs) in handle_break() argument
320 unsigned iir = regs->iir; in handle_break()
322 if (unlikely(iir == PARISC_BUG_BREAK_INSN && !user_mode(regs))) { in handle_break()
325 tt = report_bug(regs->iaoq[0] & ~3, regs); in handle_break()
327 regs->iaoq[0] += 4; in handle_break()
328 regs->iaoq[1] += 4; in handle_break()
331 die_if_kernel("Unknown kernel breakpoint", regs, in handle_break()
340 show_regs(regs); in handle_break()
345 handle_gdb_break(regs, TRAP_BRKPT); in handle_break()
348 static void default_trap(int code, struct pt_regs *regs) in default_trap() argument
351 show_regs(regs); in default_trap()
354 void (*cpu_lpmc) (int code, struct pt_regs *regs) __read_mostly = default_trap;
357 void transfer_pim_to_trap_frame(struct pt_regs *regs) in transfer_pim_to_trap_frame() argument
375 regs->gr[0] = pim_wide->cr[22]; in transfer_pim_to_trap_frame()
378 regs->gr[i] = pim_wide->gr[i]; in transfer_pim_to_trap_frame()
381 regs->fr[i] = pim_wide->fr[i]; in transfer_pim_to_trap_frame()
384 regs->sr[i] = pim_wide->sr[i]; in transfer_pim_to_trap_frame()
386 regs->iasq[0] = pim_wide->cr[17]; in transfer_pim_to_trap_frame()
387 regs->iasq[1] = pim_wide->iasq_back; in transfer_pim_to_trap_frame()
388 regs->iaoq[0] = pim_wide->cr[18]; in transfer_pim_to_trap_frame()
389 regs->iaoq[1] = pim_wide->iaoq_back; in transfer_pim_to_trap_frame()
391 regs->sar = pim_wide->cr[11]; in transfer_pim_to_trap_frame()
392 regs->iir = pim_wide->cr[19]; in transfer_pim_to_trap_frame()
393 regs->isr = pim_wide->cr[20]; in transfer_pim_to_trap_frame()
394 regs->ior = pim_wide->cr[21]; in transfer_pim_to_trap_frame()
399 regs->gr[0] = pim_narrow->cr[22]; in transfer_pim_to_trap_frame()
402 regs->gr[i] = pim_narrow->gr[i]; in transfer_pim_to_trap_frame()
405 regs->fr[i] = pim_narrow->fr[i]; in transfer_pim_to_trap_frame()
408 regs->sr[i] = pim_narrow->sr[i]; in transfer_pim_to_trap_frame()
410 regs->iasq[0] = pim_narrow->cr[17]; in transfer_pim_to_trap_frame()
411 regs->iasq[1] = pim_narrow->iasq_back; in transfer_pim_to_trap_frame()
412 regs->iaoq[0] = pim_narrow->cr[18]; in transfer_pim_to_trap_frame()
413 regs->iaoq[1] = pim_narrow->iaoq_back; in transfer_pim_to_trap_frame()
415 regs->sar = pim_narrow->cr[11]; in transfer_pim_to_trap_frame()
416 regs->iir = pim_narrow->cr[19]; in transfer_pim_to_trap_frame()
417 regs->isr = pim_narrow->cr[20]; in transfer_pim_to_trap_frame()
418 regs->ior = pim_narrow->cr[21]; in transfer_pim_to_trap_frame()
426 regs->ksp = 0; in transfer_pim_to_trap_frame()
427 regs->kpc = 0; in transfer_pim_to_trap_frame()
428 regs->orig_r28 = 0; in transfer_pim_to_trap_frame()
437 void parisc_terminate(char *msg, struct pt_regs *regs, int code, unsigned long offset) in parisc_terminate() argument
458 transfer_pim_to_trap_frame(regs); in parisc_terminate()
470 unwind_frame_init(&info, current, regs); in parisc_terminate()
476 msg, code, regs, offset); in parisc_terminate()
477 show_regs(regs); in parisc_terminate()
498 void notrace handle_interruption(int code, struct pt_regs *regs) in handle_interruption() argument
529 if (((unsigned long)regs->iaoq[0] & 3) && in handle_interruption()
530 ((unsigned long)regs->iasq[0] != (unsigned long)regs->sr[7])) { in handle_interruption()
532 regs->iaoq[0] = 0 | 3; in handle_interruption()
533 regs->iaoq[1] = regs->iaoq[0] + 4; in handle_interruption()
534 regs->iasq[0] = regs->iasq[1] = regs->sr[7]; in handle_interruption()
535 regs->gr[0] &= ~PSW_B; in handle_interruption()
552 regs, code, 0); in handle_interruption()
562 regs->gr[0] &= ~PSW_R; in handle_interruption()
563 if (user_space(regs)) in handle_interruption()
564 handle_gdb_break(regs, TRAP_TRACE); in handle_interruption()
574 cpu_lpmc(5, regs); in handle_interruption()
579 fault_address = regs->iaoq[0]; in handle_interruption()
580 fault_space = regs->iasq[0]; in handle_interruption()
585 die_if_kernel("Illegal instruction", regs, code); in handle_interruption()
591 handle_break(regs); in handle_interruption()
596 die_if_kernel("Privileged operation", regs, code); in handle_interruption()
602 if ((regs->iir & 0xffdfffe0) == 0x034008a0) { in handle_interruption()
608 if (regs->iir & 0x00200000) in handle_interruption()
609 regs->gr[regs->iir & 0x1f] = mfctl(27); in handle_interruption()
611 regs->gr[regs->iir & 0x1f] = mfctl(26); in handle_interruption()
613 regs->iaoq[0] = regs->iaoq[1]; in handle_interruption()
614 regs->iaoq[1] += 4; in handle_interruption()
615 regs->iasq[0] = regs->iasq[1]; in handle_interruption()
619 die_if_kernel("Privileged register usage", regs, code); in handle_interruption()
624 si.si_addr = (void __user *) regs->iaoq[0]; in handle_interruption()
632 si.si_addr = (void __user *) regs->iaoq[0]; in handle_interruption()
640 if(user_mode(regs)){ in handle_interruption()
645 si.si_addr = (void __user *) regs->iaoq[0]; in handle_interruption()
654 die_if_kernel("Floating point exception", regs, 0); /* quiet */ in handle_interruption()
655 handle_fpe(regs); in handle_interruption()
678 fault_address = regs->ior; in handle_interruption()
679 fault_space = regs->isr; in handle_interruption()
685 if (check_unaligned(regs)) { in handle_interruption()
686 handle_unaligned(regs); in handle_interruption()
692 fault_address = regs->ior; in handle_interruption()
693 fault_space = regs->isr; in handle_interruption()
698 regs->gr[0] |= PSW_X; /* So we can single-step over the trap */ in handle_interruption()
702 handle_gdb_break(regs, TRAP_HWBKPT); in handle_interruption()
707 regs->gr[0] &= ~PSW_T; in handle_interruption()
708 if (user_space(regs)) in handle_interruption()
709 handle_gdb_break(regs, TRAP_BRANCH); in handle_interruption()
730 if (user_mode(regs)) { in handle_interruption()
734 vma = find_vma(current->mm,regs->iaoq[0]); in handle_interruption()
735 if (vma && (regs->iaoq[0] >= vma->vm_start) in handle_interruption()
738 fault_address = regs->iaoq[0]; in handle_interruption()
739 fault_space = regs->iasq[0]; in handle_interruption()
749 if (code == 27 && !user_mode(regs) && in handle_interruption()
750 fixup_exception(regs)) in handle_interruption()
753 die_if_kernel("Protection id trap", regs, code); in handle_interruption()
758 si.si_addr = (void __user *) regs->iaoq[0]; in handle_interruption()
760 si.si_addr = (void __user *) regs->ior; in handle_interruption()
766 handle_unaligned(regs); in handle_interruption()
770 if (user_mode(regs)) { in handle_interruption()
774 show_regs(regs); in handle_interruption()
780 si.si_addr = (void __user *) regs->ior; in handle_interruption()
786 parisc_terminate("Unexpected interruption", regs, code, 0); in handle_interruption()
790 if (user_mode(regs)) { in handle_interruption()
791 if ((fault_space >> SPACEID_SHIFT) != (regs->sr[7] >> SPACEID_SHIFT)) { in handle_interruption()
800 show_regs(regs); in handle_interruption()
805 si.si_addr = (void __user *) regs->ior; in handle_interruption()
820 parisc_terminate("Kernel Fault", regs, code, fault_address); in handle_interruption()
824 do_page_fault(regs, code, fault_address); in handle_interruption()