Lines Matching +full:align +full:- +full:size
1 // SPDX-License-Identifier: GPL-2.0-or-later
8 #include "ptrace-decl.h"
73 * regs_query_register_offset() - query register offset from its name
77 * pt_regs from its name. If the name is invalid, this returns -EINVAL;
82 for (roff = regoffset_table; roff->name != NULL; roff++) in regs_query_register_offset()
83 if (!strcmp(roff->name, name)) in regs_query_register_offset()
84 return roff->offset; in regs_query_register_offset()
85 return -EINVAL; in regs_query_register_offset()
89 * regs_query_register_name() - query register name from its offset
98 for (roff = regoffset_table; roff->name != NULL; roff++) in regs_query_register_name()
99 if (roff->offset == offset) in regs_query_register_name()
100 return roff->name; in regs_query_register_name()
111 return task->thread.regs->msr | task->thread.fpexc_mode; in get_user_msr()
116 unsigned long newmsr = (task->thread.regs->msr & ~MSR_DEBUGCHANGE) | in set_user_msr()
118 regs_set_return_msr(task->thread.regs, newmsr); in set_user_msr()
125 *data = task->thread.dscr; in get_user_dscr()
131 task->thread.dscr = dscr; in set_user_dscr()
132 task->thread.dscr_inherit = 1; in set_user_dscr()
138 return -EIO; in get_user_dscr()
143 return -EIO; in set_user_dscr()
153 set_trap(task->thread.regs, trap); in set_user_trap()
164 if (task->thread.regs == NULL || !data) in ptrace_get_reg()
165 return -EIO; in ptrace_get_reg()
176 * softe copies paca->irq_soft_mask variable state. Since irq_soft_mask is in ptrace_get_reg()
188 *data = ((unsigned long *)task->thread.regs)[regno]; in ptrace_get_reg()
192 return -EIO; in ptrace_get_reg()
200 if (task->thread.regs == NULL) in ptrace_put_reg()
201 return -EIO; in ptrace_put_reg()
212 ((unsigned long *)task->thread.regs)[regno] = data; in ptrace_put_reg()
215 return -EIO; in ptrace_put_reg()
225 if (target->thread.regs == NULL) in gpr_get()
226 return -EIO; in gpr_get()
228 membuf_write(&to, target->thread.regs, sizeof(struct user_pt_regs)); in gpr_get()
234 return membuf_zero(&to, ELF_NGREG * sizeof(unsigned long) - in gpr_get()
245 if (target->thread.regs == NULL) in gpr_set()
246 return -EIO; in gpr_set()
249 target->thread.regs, in gpr_set()
265 &target->thread.regs->orig_gpr3, in gpr_set()
284 (PT_TRAP + 1) * sizeof(reg), -1); in gpr_set()
293 if (!target->thread.regs) in ppr_get()
294 return -EINVAL; in ppr_get()
296 return membuf_write(&to, &target->thread.regs->ppr, sizeof(u64)); in ppr_get()
303 if (!target->thread.regs) in ppr_set()
304 return -EINVAL; in ppr_set()
307 &target->thread.regs->ppr, 0, sizeof(u64)); in ppr_set()
313 return membuf_write(&to, &target->thread.dscr, sizeof(u64)); in dscr_get()
320 &target->thread.dscr, 0, sizeof(u64)); in dscr_set()
327 return membuf_write(&to, &target->thread.tar, sizeof(u64)); in tar_get()
334 &target->thread.tar, 0, sizeof(u64)); in tar_set()
340 return -ENODEV; in ebb_active()
342 if (target->thread.used_ebb) in ebb_active()
343 return regset->n; in ebb_active()
356 return -ENODEV; in ebb_get()
358 if (!target->thread.used_ebb) in ebb_get()
359 return -ENODATA; in ebb_get()
361 return membuf_write(&to, &target->thread.ebbrr, 3 * sizeof(unsigned long)); in ebb_get()
375 return -ENODEV; in ebb_set()
377 if (target->thread.used_ebb) in ebb_set()
378 return -ENODATA; in ebb_set()
380 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &target->thread.ebbrr, in ebb_set()
385 &target->thread.ebbhr, sizeof(unsigned long), in ebb_set()
390 &target->thread.bescr, 2 * sizeof(unsigned long), in ebb_set()
398 return -ENODEV; in pmu_active()
400 return regset->n; in pmu_active()
413 return -ENODEV; in pmu_get()
415 return membuf_write(&to, &target->thread.siar, 5 * sizeof(unsigned long)); in pmu_get()
431 return -ENODEV; in pmu_set()
433 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &target->thread.siar, in pmu_set()
438 &target->thread.sdar, sizeof(unsigned long), in pmu_set()
443 &target->thread.sier, 2 * sizeof(unsigned long), in pmu_set()
448 &target->thread.mmcr2, 3 * sizeof(unsigned long), in pmu_set()
453 &target->thread.mmcr0, 4 * sizeof(unsigned long), in pmu_set()
461 return -ENODEV; in dexcr_active()
463 return regset->n; in dexcr_active()
470 return -ENODEV; in dexcr_get()
472 membuf_store(&to, (u64)lower_32_bits(target->thread.dexcr)); in dexcr_get()
475 * Technically the HDEXCR is per-cpu, but a hypervisor can't reasonably in dexcr_get()
485 return -ENODEV; in hashkeyr_active()
487 return regset->n; in hashkeyr_active()
494 return -ENODEV; in hashkeyr_get()
496 return membuf_store(&to, target->thread.hashkeyr); in hashkeyr_get()
504 return -ENODEV; in hashkeyr_set()
506 return user_regset_copyin(&pos, &count, &kbuf, &ubuf, &target->thread.hashkeyr, in hashkeyr_set()
516 return -ENODEV; in pkey_active()
518 return regset->n; in pkey_active()
526 return -ENODEV; in pkey_get()
528 membuf_store(&to, target->thread.regs->amr); in pkey_get()
529 membuf_store(&to, target->thread.regs->iamr); in pkey_get()
541 return -ENODEV; in pkey_set()
545 return -EINVAL; in pkey_set()
562 target->thread.regs->amr = (new_amr & default_uamor) | in pkey_set()
563 (target->thread.regs->amr & ~default_uamor); in pkey_set()
572 .size = sizeof(long), .align = sizeof(long),
577 .size = sizeof(double), .align = sizeof(double),
583 .size = sizeof(vector128), .align = sizeof(vector128),
590 .size = sizeof(double), .align = sizeof(double),
597 .size = sizeof(u32), .align = sizeof(u32),
604 .size = sizeof(long), .align = sizeof(long),
609 .size = sizeof(double), .align = sizeof(double),
614 .size = sizeof(vector128), .align = sizeof(vector128),
619 .size = sizeof(double), .align = sizeof(double),
624 .size = sizeof(u64), .align = sizeof(u64),
629 .size = sizeof(u64), .align = sizeof(u64),
634 .size = sizeof(u64), .align = sizeof(u64),
639 .size = sizeof(u64), .align = sizeof(u64),
646 .size = sizeof(u64), .align = sizeof(u64),
651 .size = sizeof(u64), .align = sizeof(u64),
658 .size = sizeof(u64), .align = sizeof(u64),
663 .size = sizeof(u64), .align = sizeof(u64),
668 .size = sizeof(u64), .align = sizeof(u64),
673 .size = sizeof(u64), .align = sizeof(u64),
679 .size = sizeof(u64), .align = sizeof(u64),
687 .size = sizeof(u64), .align = sizeof(u64),
711 return membuf_zero(&to, (ELF_NGREG - PT_REGS_COUNT) * sizeof(u32)); in gpr32_get_common()
724 for (; count > 0 && pos < PT_MSR; --count) in gpr32_set_common_kernel()
730 --count; in gpr32_set_common_kernel()
733 for (; count > 0 && pos <= PT_MAX_PUT_REG; --count) in gpr32_set_common_kernel()
735 for (; count > 0 && pos < PT_TRAP; --count, ++pos) in gpr32_set_common_kernel()
741 --count; in gpr32_set_common_kernel()
748 (PT_TRAP + 1) * sizeof(compat_ulong_t), -1); in gpr32_set_common_kernel()
762 return -EFAULT; in gpr32_set_common_user()
767 for (; count > 0 && pos < PT_MSR; --count) { in gpr32_set_common_user()
776 --count; in gpr32_set_common_user()
779 for (; count > 0 && pos <= PT_MAX_PUT_REG; --count) { in gpr32_set_common_user()
783 for (; count > 0 && pos < PT_TRAP; --count, ++pos) in gpr32_set_common_user()
790 --count; in gpr32_set_common_user()
798 (PT_TRAP + 1) * sizeof(reg), -1); in gpr32_set_common_user()
803 return -EFAULT; in gpr32_set_common_user()
822 if (target->thread.regs == NULL) in gpr32_get()
823 return -EIO; in gpr32_get()
826 &target->thread.regs->gpr[0]); in gpr32_get()
834 if (target->thread.regs == NULL) in gpr32_set()
835 return -EIO; in gpr32_set()
838 &target->thread.regs->gpr[0]); in gpr32_set()
847 .size = sizeof(compat_long_t), .align = sizeof(compat_long_t),
852 .size = sizeof(double), .align = sizeof(double),
858 .size = sizeof(vector128), .align = sizeof(vector128),
865 .size = sizeof(u32), .align = sizeof(u32),
872 .size = sizeof(long), .align = sizeof(long),
878 .size = sizeof(double), .align = sizeof(double),
883 .size = sizeof(vector128), .align = sizeof(vector128),
888 .size = sizeof(double), .align = sizeof(double),
893 .size = sizeof(u64), .align = sizeof(u64),
898 .size = sizeof(u64), .align = sizeof(u64),
903 .size = sizeof(u64), .align = sizeof(u64),
908 .size = sizeof(u64), .align = sizeof(u64),
915 .size = sizeof(u64), .align = sizeof(u64),
920 .size = sizeof(u64), .align = sizeof(u64),
927 .size = sizeof(u64), .align = sizeof(u64),
932 .size = sizeof(u64), .align = sizeof(u64),