Lines Matching +full:asi +full:- +full:format
1 // SPDX-License-Identifier: GPL-2.0-only
10 * Added Linux support -miguel (weird, eh?, the original code was meant
34 #include <asm/asi.h>
103 * 1) flush the D-cache if it's possible than an illegal alias
105 * 2) flush the I-cache if this is pre-cheetah and we did a write
122 * D-cache flush. in flush_ptrace_access()
135 start &= ~(dcache_line_size - 1); in flush_ptrace_access()
166 return -EFAULT; in get_from_target()
171 return -EFAULT; in get_from_target()
181 return -EFAULT; in set_to_target()
186 return -EFAULT; in set_to_target()
195 unsigned long rw_addr = regs->u_regs[UREG_I6]; in regwindow64_get()
202 return -EFAULT; in regwindow64_get()
204 wbuf->locals[i] = win32.locals[i]; in regwindow64_get()
206 wbuf->ins[i] = win32.ins[i]; in regwindow64_get()
210 return -EFAULT; in regwindow64_get()
220 unsigned long rw_addr = regs->u_regs[UREG_I6]; in regwindow64_set()
227 win32.locals[i] = wbuf->locals[i]; in regwindow64_set()
229 win32.ins[i] = wbuf->ins[i]; in regwindow64_set()
232 return -EFAULT; in regwindow64_set()
236 return -EFAULT; in regwindow64_set()
257 membuf_write(&to, regs->u_regs, 16 * sizeof(u64)); in genregs64_get()
261 return -EFAULT; in genregs64_get()
264 membuf_write(&to, ®s->tstate, 3 * sizeof(u64)); in genregs64_get()
265 return membuf_store(&to, (u64)regs->y); in genregs64_get()
280 regs->u_regs, in genregs64_set()
286 return -EFAULT; in genregs64_set()
295 return -EFAULT; in genregs64_set()
311 regs->tstate &= ~(TSTATE_ICC | TSTATE_XCC | TSTATE_SYSCALL); in genregs64_set()
312 regs->tstate |= tstate; in genregs64_set()
319 ®s->tpc, in genregs64_set()
325 unsigned long y = regs->y; in genregs64_set()
332 regs->y = y; in genregs64_set()
337 36 * sizeof(u64), -1); in genregs64_set()
352 fprs = t->fpsaved[0]; in fpregs64_get()
355 membuf_write(&to, t->fpregs, 16 * sizeof(u64)); in fpregs64_get()
360 membuf_write(&to, t->fpregs + 16, 16 * sizeof(u64)); in fpregs64_get()
364 membuf_store(&to, t->xfsr[0]); in fpregs64_get()
365 membuf_store(&to, t->gsr[0]); in fpregs64_get()
377 unsigned long *fpregs = task_thread_info(target)->fpregs; in fpregs64_set()
389 task_thread_info(target)->xfsr, in fpregs64_set()
394 task_thread_info(target)->gsr, in fpregs64_set()
398 fprs = task_thread_info(target)->fpsaved[0]; in fpregs64_set()
407 task_thread_info(target)->fpsaved[0] = fprs; in fpregs64_set()
411 35 * sizeof(u64), -1); in fpregs64_set()
416 /* Format is:
417 * G0 --> G7
418 * O0 --> O7
419 * L0 --> L7
420 * I0 --> I7
429 /* Format is:
430 * F0 --> F63
452 membuf_write(&to, regs->u_regs + 1, 15 * sizeof(u64)); in getregs64_get()
454 membuf_write(&to, ®s->tstate, 3 * sizeof(u64)); in getregs64_get()
455 return membuf_store(&to, (u64)regs->y); in getregs64_get()
464 unsigned long y = regs->y; in setregs64_set()
472 regs->u_regs + 1, in setregs64_set()
492 regs->tstate &= ~(TSTATE_ICC | TSTATE_XCC | TSTATE_SYSCALL); in setregs64_set()
493 regs->tstate |= tstate; in setregs64_set()
497 ®s->tpc, in setregs64_set()
508 regs->y = y; in setregs64_set()
513 /* Format is:
514 * G1 --> G7
515 * O0 --> O7
547 membuf_store(&to, (u32)regs->u_regs[i]); in genregs32_get()
550 if (get_from_target(target, regs->u_regs[UREG_I6], in genregs32_get()
552 return -EFAULT; in genregs32_get()
554 membuf_store(&to, (u32)tstate_to_psr(regs->tstate)); in genregs32_get()
555 membuf_store(&to, (u32)(regs->tpc)); in genregs32_get()
556 membuf_store(&to, (u32)(regs->tnpc)); in genregs32_get()
557 membuf_store(&to, (u32)(regs->y)); in genregs32_get()
579 for (; count > 0 && pos < 16; count--) in genregs32_set()
580 regs->u_regs[pos++] = *k++; in genregs32_set()
582 reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6]; in genregs32_set()
583 reg_window -= 16; in genregs32_set()
585 for (; count > 0 && pos < 32; count--) { in genregs32_set()
587 return -EFAULT; in genregs32_set()
590 for (; count > 0 && pos < 32; count--) { in genregs32_set()
598 return -EFAULT; in genregs32_set()
604 for (; count > 0 && pos < 16; count--) { in genregs32_set()
606 return -EFAULT; in genregs32_set()
607 regs->u_regs[pos++] = reg; in genregs32_set()
610 reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6]; in genregs32_set()
611 reg_window -= 16; in genregs32_set()
613 for (; count > 0 && pos < 32; count--) { in genregs32_set()
616 return -EFAULT; in genregs32_set()
619 for (; count > 0 && pos < 32; count--) { in genregs32_set()
621 return -EFAULT; in genregs32_set()
628 return -EFAULT; in genregs32_set()
640 return -EFAULT; in genregs32_set()
644 tstate = regs->tstate; in genregs32_set()
649 regs->tstate = tstate; in genregs32_set()
652 regs->tpc = reg; in genregs32_set()
655 regs->tnpc = reg; in genregs32_set()
658 regs->y = reg; in genregs32_set()
668 count--; in genregs32_set()
675 38 * sizeof(reg), -1); in genregs32_set()
688 enabled = t->fpsaved[0] & FPRS_FEF; in fpregs32_get()
690 membuf_write(&to, t->fpregs, 32 * sizeof(u32)); in fpregs32_get()
693 membuf_store(&to, (u32)t->xfsr[0]); in fpregs32_get()
705 unsigned long *fpregs = task_thread_info(target)->fpregs; in fpregs32_set()
712 fprs = task_thread_info(target)->fpsaved[0]; in fpregs32_set()
730 val = task_thread_info(target)->xfsr[0]; in fpregs32_set()
733 task_thread_info(target)->xfsr[0] = val; in fpregs32_set()
738 task_thread_info(target)->fpsaved[0] = fprs; in fpregs32_set()
742 34 * sizeof(u32), -1); in fpregs32_set()
747 /* Format is:
748 * G0 --> G7
749 * O0 --> O7
750 * L0 --> L7
751 * I0 --> I7
760 /* Format is:
761 * F0 --> F31
762 * empty 32-bit word
763 * FSR (32--bit word)
764 * FPU QUEUE COUNT (8-bit char)
765 * FPU QUEUE ENTRYSIZE (8-bit char)
766 * FPU ENABLED (8-bit char)
767 * empty 8-bit char
768 * FPU QUEUE (64 32-bit ints)
788 membuf_store(&to, (u32)tstate_to_psr(regs->tstate)); in getregs_get()
789 membuf_store(&to, (u32)(regs->tpc)); in getregs_get()
790 membuf_store(&to, (u32)(regs->tnpc)); in getregs_get()
791 membuf_store(&to, (u32)(regs->y)); in getregs_get()
793 membuf_store(&to, (u32)regs->u_regs[i]); in getregs_get()
816 tstate = regs->tstate; in setregs_set()
821 regs->tstate = tstate; in setregs_set()
822 regs->tpc = uregs[1]; in setregs_set()
823 regs->tnpc = uregs[2]; in setregs_set()
824 regs->y = uregs[3]; in setregs_set()
827 regs->u_regs[i] = uregs[3 + i]; in setregs_set()
840 membuf_write(&to, t->fpregs, 32 * sizeof(u32)); in getfpregs_get()
841 if (t->fpsaved[0] & FPRS_FEF) in getfpregs_get()
842 membuf_store(&to, (u32)t->xfsr[0]); in getfpregs_get()
853 unsigned long *fpregs = task_thread_info(target)->fpregs; in setfpregs_set()
860 fprs = task_thread_info(target)->fpsaved[0]; in setfpregs_set()
874 val = task_thread_info(target)->xfsr[0]; in setfpregs_set()
877 task_thread_info(target)->xfsr[0] = val; in setfpregs_set()
882 task_thread_info(target)->fpsaved[0] = fprs; in setfpregs_set()
932 compat_ulong_t caddr2 = task_pt_regs(current)->u_regs[UREG_I4]; in compat_arch_ptrace()
945 ret = (addr != 0) ? -EIO : 0; in compat_arch_ptrace()
983 ret = -EIO; in compat_arch_ptrace()
993 ret = -EIO; in compat_arch_ptrace()
1016 unsigned long addr2 = task_pt_regs(current)->u_regs[UREG_I4]; in arch_ptrace()
1028 ret = (addr != 0) ? -EIO : 0; in arch_ptrace()
1065 ret = -EIO; in arch_ptrace()
1074 ret = -EIO; in arch_ptrace()
1092 secure_computing_strict(regs->u_regs[UREG_G1]); in syscall_trace_enter()
1101 trace_sys_enter(regs, regs->u_regs[UREG_G1]); in syscall_trace_enter()
1103 audit_syscall_entry(regs->u_regs[UREG_G1], regs->u_regs[UREG_I0], in syscall_trace_enter()
1104 regs->u_regs[UREG_I1], regs->u_regs[UREG_I2], in syscall_trace_enter()
1105 regs->u_regs[UREG_I3]); in syscall_trace_enter()
1118 trace_sys_exit(regs, regs->u_regs[UREG_I0]); in syscall_trace_leave()
1128 * regs_query_register_offset() - query register offset from its name
1132 * pt_regs from its name. If the name is invalid, this returns -EINVAL;
1138 for (roff = regoffset_table; roff->name != NULL; roff++) in regs_query_register_offset()
1139 if (!strcmp(roff->name, name)) in regs_query_register_offset()
1140 return roff->offset; in regs_query_register_offset()
1141 return -EINVAL; in regs_query_register_offset()
1145 * regs_within_kernel_stack() - check the address in the stack
1156 return ((addr & ~(THREAD_SIZE - 1)) == in regs_within_kernel_stack()
1157 (ksp & ~(THREAD_SIZE - 1))); in regs_within_kernel_stack()
1161 * regs_get_kernel_stack_nth() - get Nth entry of the stack