]> git.proxmox.com Git - mirror_ubuntu-kernels.git/blame - arch/um/os-Linux/sys-x86_64/registers.c
Merge branches 'release', 'ejd', 'sony' and 'wmi' into release
[mirror_ubuntu-kernels.git] / arch / um / os-Linux / sys-x86_64 / registers.c
CommitLineData
1da177e4 1/*
5134d8fe 2 * Copyright (C) 2006 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
1da177e4
LT
3 * Licensed under the GPL
4 */
5
6#include <errno.h>
d1254b12 7#include <sys/ptrace.h>
42daba31
JD
8#define __FRAME_OFFSETS
9#include <asm/ptrace.h>
5134d8fe 10#include "kern_constants.h"
13c06be3 11#include "longjmp.h"
1da177e4
LT
12#include "user.h"
13
d1254b12
JD
14int save_fp_registers(int pid, unsigned long *fp_regs)
15{
5134d8fe 16 if (ptrace(PTRACE_GETFPREGS, pid, 0, fp_regs) < 0)
d1254b12
JD
17 return -errno;
18 return 0;
19}
20
21int restore_fp_registers(int pid, unsigned long *fp_regs)
22{
5134d8fe 23 if (ptrace(PTRACE_SETFPREGS, pid, 0, fp_regs) < 0)
d1254b12
JD
24 return -errno;
25 return 0;
26}
27
75e29b18 28unsigned long get_thread_reg(int reg, jmp_buf *buf)
fad1c45c 29{
5134d8fe
JD
30 switch (reg) {
31 case RIP:
32 return buf[0]->__rip;
33 case RSP:
34 return buf[0]->__rsp;
35 case RBP:
36 return buf[0]->__rbp;
75e29b18 37 default:
5134d8fe
JD
38 printk(UM_KERN_ERR "get_thread_regs - unknown register %d\n",
39 reg);
75e29b18
JD
40 return 0;
41 }
fad1c45c 42}
2f56debd
JD
43
44int get_fp_registers(int pid, unsigned long *regs)
45{
46 return save_fp_registers(pid, regs);
47}
48
49int put_fp_registers(int pid, unsigned long *regs)
50{
51 return restore_fp_registers(pid, regs);
52}