e17666ba48
The powerpc ptrace interface is dodgy at best. We have defined our "own" versions of GETREGS/SETREGS/GETFPREGS/SETFPREGS that strangely take arguments in reverse order from other archs (in addition to having different request numbers) and have subtle issue, like not accessing all of the registers in their respective categories. This patch moves the implementation of those to a separate function in order to facilitate their deprecation in the future, and provides new ptrace requests that mirror the x86 and sparc ones and use the same numbers: PTRACE_GETREGS : returns an entire pt_regs (the whole thing, not only the 32 GPRs, though that doesn't include the FPRs etc... There's a compat version for 32 bits that returns a 32 bits compatible pt_regs (44 uints) PTRACE_SETREGS : sets an entire pt_regs (the whole thing, not only the 32 GPRs, though that doesn't include the FPRs etc... Some registers cannot be written to and will just be dropped, this is the same as with POKEUSR, that is anything above MQ on 32 bits and CCR on 64 bits. There is a compat version as well. PTRACE_GETFPREGS : returns all the FP registers -including- the FPSCR that is 33 doubles (regardless of 32/64 bits) PTRACE_SETFPREGS : sets all the FP registers -including- the FPSCR that is 33 doubles (regardless of 32/64 bits) And two that only exist on 64 bits kernels: PTRACE_GETREGS64 : Same as PTRACE_GETREGS, except there is no compat function, a 32 bits process will obtain the full 64 bits registers PTRACE_SETREGS64 : Same as PTRACE_SETREGS, except there is no compat function, a 32 bits process will set the full 64 bits registers The two later ones makes things easier to have a 32 bits debugger on a 64 bits program (or on a 32 bits program that uses the full 64 bits of the GPRs, which is possible though has issues that will be fixed in a later patch). Finally, while at it, the patch removes a whole bunch of code duplication between ptrace32.c and ptrace.c, in large part by having the former call into the later for all requests that don't need any special "compat" treatment. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org> |
||
---|---|---|
.. | ||
vdso32 | ||
vdso64 | ||
align.c | ||
asm-offsets.c | ||
audit.c | ||
binfmt_elf32.c | ||
btext.c | ||
compat_audit.c | ||
cpu_setup_6xx.S | ||
cpu_setup_pa6t.S | ||
cpu_setup_ppc970.S | ||
cputable.c | ||
crash_dump.c | ||
crash.c | ||
dma_64.c | ||
entry_32.S | ||
entry_64.S | ||
firmware.c | ||
fpu.S | ||
head_4xx.S | ||
head_8xx.S | ||
head_32.S | ||
head_44x.S | ||
head_64.S | ||
head_booke.h | ||
head_fsl_booke.S | ||
ibmebus.c | ||
idle_6xx.S | ||
idle_power4.S | ||
idle.c | ||
init_task.c | ||
io.c | ||
iomap.c | ||
iommu.c | ||
irq.c | ||
isa-bridge.c | ||
kprobes.c | ||
l2cr_6xx.S | ||
legacy_serial.c | ||
lparcfg.c | ||
lparmap.c | ||
machine_kexec_32.c | ||
machine_kexec_64.c | ||
machine_kexec.c | ||
Makefile | ||
misc_32.S | ||
misc_64.S | ||
misc.S | ||
module_32.c | ||
module_64.c | ||
msi.c | ||
nvram_64.c | ||
of_device.c | ||
of_platform.c | ||
paca.c | ||
pci_32.c | ||
pci_64.c | ||
pci_dn.c | ||
pmc.c | ||
ppc32.h | ||
ppc_ksyms.c | ||
proc_ppc64.c | ||
process.c | ||
prom_init.c | ||
prom_parse.c | ||
prom.c | ||
ptrace32.c | ||
ptrace-common.h | ||
ptrace-ppc32.h | ||
ptrace-ppc64.h | ||
ptrace.c | ||
rtas_flash.c | ||
rtas_pci.c | ||
rtas-proc.c | ||
rtas-rtc.c | ||
rtas.c | ||
semaphore.c | ||
setup_32.c | ||
setup_64.c | ||
setup-common.c | ||
setup.h | ||
signal_32.c | ||
signal_64.c | ||
smp-tbsync.c | ||
smp.c | ||
suspend.c | ||
swsusp_32.S | ||
swsusp_64.c | ||
swsusp_asm64.S | ||
swsusp.c | ||
sys_ppc32.c | ||
syscalls.c | ||
sysfs.c | ||
systbl.S | ||
tau_6xx.c | ||
time.c | ||
traps.c | ||
udbg_16550.c | ||
udbg.c | ||
vdso.c | ||
vecemu.c | ||
vector.S | ||
vio.c | ||
vmlinux.lds.S |