-static const struct ptrace_layout_segment ia32_uarea[] = {
- {0, sizeof(struct user_regs_struct32), 0, 0},
- {offsetof(struct user32, u_debugreg[0]),
- offsetof(struct user32, u_debugreg[8]), 4, 0},
- {0, 0, -1, 0}
-};
-
-fastcall int arch_compat_ptrace(compat_long_t *req, struct task_struct *child,
- struct utrace_attached_engine *engine,
- compat_ulong_t addr, compat_ulong_t data,
- compat_long_t *val)
-{
- switch (*req) {
- case PTRACE_PEEKUSR:
- return ptrace_compat_peekusr(child, engine, ia32_uarea,
- addr, data);
- case PTRACE_POKEUSR:
- return ptrace_compat_pokeusr(child, engine, ia32_uarea,
- addr, data);
- case PTRACE_GETREGS:
- return ptrace_whole_regset(child, engine, data, 0, 0);
- case PTRACE_SETREGS:
- return ptrace_whole_regset(child, engine, data, 0, 1);
- case PTRACE_GETFPREGS:
- return ptrace_whole_regset(child, engine, data, 1, 0);
- case PTRACE_SETFPREGS:
- return ptrace_whole_regset(child, engine, data, 1, 1);
- case PTRACE_GETFPXREGS:
- return ptrace_whole_regset(child, engine, data, 2, 0);
- case PTRACE_SETFPXREGS:
- return ptrace_whole_regset(child, engine, data, 2, 1);
- case PTRACE_GET_THREAD_AREA:
- case PTRACE_SET_THREAD_AREA:
- return ptrace_onereg_access(child, engine,
- &utrace_ia32_view, 3,
- addr,
- (void __user *)(unsigned long)data,
- *req == PTRACE_SET_THREAD_AREA);