registers.c (77bf4400319db9d2a8af6b00c2be6faa0f3d07cb) | registers.c (ba180fd437156f7fd8cfb2fdd021d949eeef08d6) |
---|---|
1/* 2 * Copyright (C) 2004 PathScale, Inc | 1/* 2 * Copyright (C) 2004 PathScale, Inc |
3 * Copyright (C) 2004 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) |
|
3 * Licensed under the GPL 4 */ 5 6#include <errno.h> 7#include <string.h> 8#include <sys/ptrace.h> | 4 * Licensed under the GPL 5 */ 6 7#include <errno.h> 8#include <string.h> 9#include <sys/ptrace.h> |
9#include "user.h" | |
10#include "sysdep/ptrace.h" | 10#include "sysdep/ptrace.h" |
11#include "user.h" |
|
11 12/* This is set once at boot time and not changed thereafter */ 13 14static unsigned long exec_regs[MAX_REG_NR]; 15 16void init_thread_registers(struct uml_pt_regs *to) 17{ 18 memcpy(to->regs, exec_regs, sizeof(to->regs)); 19} 20 21void save_registers(int pid, struct uml_pt_regs *regs) 22{ 23 int err; 24 25 err = ptrace(PTRACE_GETREGS, pid, 0, regs->regs); | 12 13/* This is set once at boot time and not changed thereafter */ 14 15static unsigned long exec_regs[MAX_REG_NR]; 16 17void init_thread_registers(struct uml_pt_regs *to) 18{ 19 memcpy(to->regs, exec_regs, sizeof(to->regs)); 20} 21 22void save_registers(int pid, struct uml_pt_regs *regs) 23{ 24 int err; 25 26 err = ptrace(PTRACE_GETREGS, pid, 0, regs->regs); |
26 if(err < 0) | 27 if (err < 0) |
27 panic("save_registers - saving registers failed, errno = %d\n", 28 errno); 29} 30 31void restore_registers(int pid, struct uml_pt_regs *regs) 32{ 33 int err; 34 35 err = ptrace(PTRACE_SETREGS, pid, 0, regs->regs); | 28 panic("save_registers - saving registers failed, errno = %d\n", 29 errno); 30} 31 32void restore_registers(int pid, struct uml_pt_regs *regs) 33{ 34 int err; 35 36 err = ptrace(PTRACE_SETREGS, pid, 0, regs->regs); |
36 if(err < 0) | 37 if (err < 0) |
37 panic("restore_registers - saving registers failed, " 38 "errno = %d\n", errno); 39} 40 41void init_registers(int pid) 42{ 43 int err; 44 45 err = ptrace(PTRACE_GETREGS, pid, 0, exec_regs); | 38 panic("restore_registers - saving registers failed, " 39 "errno = %d\n", errno); 40} 41 42void init_registers(int pid) 43{ 44 int err; 45 46 err = ptrace(PTRACE_GETREGS, pid, 0, exec_regs); |
46 if(err) | 47 if (err) |
47 panic("check_ptrace : PTRACE_GETREGS failed, errno = %d", 48 errno); 49} 50 51void get_safe_registers(unsigned long *regs) 52{ 53 memcpy(regs, exec_regs, sizeof(exec_regs)); 54} | 48 panic("check_ptrace : PTRACE_GETREGS failed, errno = %d", 49 errno); 50} 51 52void get_safe_registers(unsigned long *regs) 53{ 54 memcpy(regs, exec_regs, sizeof(exec_regs)); 55} |