mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 15:27:29 +00:00
Merge branch 'work.regset' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull ptrace regset updates from Al Viro: "Internal regset API changes: - regularize copy_regset_{to,from}_user() callers - switch to saner calling conventions for ->get() - kill user_regset_copyout() The ->put() side of things will have to wait for the next cycle, unfortunately. The balance is about -1KLoC and replacements for ->get() instances are a lot saner" * 'work.regset' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (41 commits) regset: kill user_regset_copyout{,_zero}() regset(): kill ->get_size() regset: kill ->get() csky: switch to ->regset_get() xtensa: switch to ->regset_get() parisc: switch to ->regset_get() nds32: switch to ->regset_get() nios2: switch to ->regset_get() hexagon: switch to ->regset_get() h8300: switch to ->regset_get() openrisc: switch to ->regset_get() riscv: switch to ->regset_get() c6x: switch to ->regset_get() ia64: switch to ->regset_get() arc: switch to ->regset_get() arm: switch to ->regset_get() sh: convert to ->regset_get() arm64: switch to ->regset_get() mips: switch to ->regset_get() sparc: switch to ->regset_get() ...
This commit is contained in:
commit
19b39c38ab
41 changed files with 1369 additions and 2348 deletions
|
@ -30,13 +30,10 @@ enum riscv_regset {
|
|||
|
||||
static int riscv_gpr_get(struct task_struct *target,
|
||||
const struct user_regset *regset,
|
||||
unsigned int pos, unsigned int count,
|
||||
void *kbuf, void __user *ubuf)
|
||||
struct membuf to)
|
||||
{
|
||||
struct pt_regs *regs;
|
||||
|
||||
regs = task_pt_regs(target);
|
||||
return user_regset_copyout(&pos, &count, &kbuf, &ubuf, regs, 0, -1);
|
||||
return membuf_write(&to, task_pt_regs(target),
|
||||
sizeof(struct user_regs_struct));
|
||||
}
|
||||
|
||||
static int riscv_gpr_set(struct task_struct *target,
|
||||
|
@ -55,21 +52,13 @@ static int riscv_gpr_set(struct task_struct *target,
|
|||
#ifdef CONFIG_FPU
|
||||
static int riscv_fpr_get(struct task_struct *target,
|
||||
const struct user_regset *regset,
|
||||
unsigned int pos, unsigned int count,
|
||||
void *kbuf, void __user *ubuf)
|
||||
struct membuf to)
|
||||
{
|
||||
int ret;
|
||||
struct __riscv_d_ext_state *fstate = &target->thread.fstate;
|
||||
|
||||
ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf, fstate, 0,
|
||||
offsetof(struct __riscv_d_ext_state, fcsr));
|
||||
if (!ret) {
|
||||
ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf, fstate, 0,
|
||||
offsetof(struct __riscv_d_ext_state, fcsr) +
|
||||
sizeof(fstate->fcsr));
|
||||
}
|
||||
|
||||
return ret;
|
||||
membuf_write(&to, fstate, offsetof(struct __riscv_d_ext_state, fcsr));
|
||||
membuf_store(&to, fstate->fcsr);
|
||||
return membuf_zero(&to, 4); // explicitly pad
|
||||
}
|
||||
|
||||
static int riscv_fpr_set(struct task_struct *target,
|
||||
|
@ -98,8 +87,8 @@ static const struct user_regset riscv_user_regset[] = {
|
|||
.n = ELF_NGREG,
|
||||
.size = sizeof(elf_greg_t),
|
||||
.align = sizeof(elf_greg_t),
|
||||
.get = &riscv_gpr_get,
|
||||
.set = &riscv_gpr_set,
|
||||
.regset_get = riscv_gpr_get,
|
||||
.set = riscv_gpr_set,
|
||||
},
|
||||
#ifdef CONFIG_FPU
|
||||
[REGSET_F] = {
|
||||
|
@ -107,8 +96,8 @@ static const struct user_regset riscv_user_regset[] = {
|
|||
.n = ELF_NFPREG,
|
||||
.size = sizeof(elf_fpreg_t),
|
||||
.align = sizeof(elf_fpreg_t),
|
||||
.get = &riscv_fpr_get,
|
||||
.set = &riscv_fpr_set,
|
||||
.regset_get = riscv_fpr_get,
|
||||
.set = riscv_fpr_set,
|
||||
},
|
||||
#endif
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue