cosmetic fixes.
This commit is contained in:
parent
a132b86864
commit
ff4eeac9d3
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: linux_errno.h,v 1.1 2001/01/19 12:27:13 manu Exp $ */
|
||||
/* $NetBSD: linux_errno.h,v 1.2 2001/02/04 22:59:26 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2001 The NetBSD Foundation, Inc.
|
||||
|
@ -46,57 +46,57 @@
|
|||
* From Linux's include/asm-ppc/errno.h
|
||||
*/
|
||||
#define LINUX_ENAMETOOLONG 36
|
||||
#define LINUX_ENOLCK 37
|
||||
#define LINUX_ENOSYS 38
|
||||
#define LINUX_ENOLCK 37
|
||||
#define LINUX_ENOSYS 38
|
||||
#define LINUX_ENOTEMPTY 39
|
||||
#define LINUX_ELOOP 40
|
||||
#define LINUX_ELOOP 40
|
||||
#define LINUX_EWOULDBLOCK LINUX_EAGAIN
|
||||
#define LINUX_ENOMSG 42
|
||||
#define LINUX_EIDRM 43
|
||||
#define LINUX_ECHRNG 44
|
||||
#define LINUX_ENOMSG 42
|
||||
#define LINUX_EIDRM 43
|
||||
#define LINUX_ECHRNG 44
|
||||
#define LINUX_EL2NSYNC 45
|
||||
#define LINUX_EL3HLT 46
|
||||
#define LINUX_EL3RST 47
|
||||
#define LINUX_ELNRNG 48
|
||||
#define LINUX_EL3HLT 46
|
||||
#define LINUX_EL3RST 47
|
||||
#define LINUX_ELNRNG 48
|
||||
#define LINUX_EUNATCH 49
|
||||
#define LINUX_ENOCSI 50
|
||||
#define LINUX_EL2HLT 51
|
||||
#define LINUX_EBADE 52
|
||||
#define LINUX_EBADR 53
|
||||
#define LINUX_EXFULL 54
|
||||
#define LINUX_ENOANO 55
|
||||
#define LINUX_ENOCSI 50
|
||||
#define LINUX_EL2HLT 51
|
||||
#define LINUX_EBADE 52
|
||||
#define LINUX_EBADR 53
|
||||
#define LINUX_EXFULL 54
|
||||
#define LINUX_ENOANO 55
|
||||
#define LINUX_EBADRQC 56
|
||||
#define LINUX_EBADSLT 57
|
||||
#define LINUX_EDEADLOCK 58
|
||||
#define LINUX_EBFONT 59
|
||||
#define LINUX_ENOSTR 60
|
||||
#define LINUX_EBFONT 59
|
||||
#define LINUX_ENOSTR 60
|
||||
#define LINUX_ENODATA 61
|
||||
#define LINUX_ETIME 62
|
||||
#define LINUX_ENOSR 63
|
||||
#define LINUX_ENONET 64
|
||||
#define LINUX_ENOPKG 65
|
||||
#define LINUX_ETIME 62
|
||||
#define LINUX_ENOSR 63
|
||||
#define LINUX_ENONET 64
|
||||
#define LINUX_ENOPKG 65
|
||||
#define LINUX_EREMOTE 66
|
||||
#define LINUX_ENOLINK 67
|
||||
#define LINUX_EADV 68
|
||||
#define LINUX_ESRMNT 69
|
||||
#define LINUX_ECOMM 70
|
||||
#define LINUX_EPROTO 71
|
||||
#define LINUX_EADV 68
|
||||
#define LINUX_ESRMNT 69
|
||||
#define LINUX_ECOMM 70
|
||||
#define LINUX_EPROTO 71
|
||||
#define LINUX_EMULTIHOP 72
|
||||
#define LINUX_EDOTDOT 73
|
||||
#define LINUX_EBADMSG 74
|
||||
#define LINUX_EOVERFLOW 75
|
||||
#define LINUX_ENOTUNIQ 76
|
||||
#define LINUX_EBADFD 77
|
||||
#define LINUX_EBADFD 77
|
||||
#define LINUX_EREMCHG 78
|
||||
#define LINUX_ELIBACC 79
|
||||
#define LINUX_ELIBBAD 80
|
||||
#define LINUX_ELIBSCN 81
|
||||
#define LINUX_ELIBMAX 82
|
||||
#define LINUX_ELIBEXEC 83
|
||||
#define LINUX_EILSEQ 84
|
||||
#define LINUX_EILSEQ 84
|
||||
#define LINUX_ERESTART 85
|
||||
#define LINUX_ESTRPIPE 86
|
||||
#define LINUX_EUSERS 87
|
||||
#define LINUX_EUSERS 87
|
||||
#define LINUX_ENOTSOCK 88
|
||||
#define LINUX_EDESTADDRREQ 89
|
||||
#define LINUX_EMSGSIZE 90
|
||||
|
@ -104,10 +104,10 @@
|
|||
#define LINUX_ENOPROTOOPT 92
|
||||
#define LINUX_EPROTONOSUPPORT 93
|
||||
#define LINUX_ESOCKTNOSUPPORT 94
|
||||
#define LINUX_EOPNOTSUPP 95
|
||||
#define LINUX_EPFNOSUPPORT 96
|
||||
#define LINUX_EAFNOSUPPORT 97
|
||||
#define LINUX_EADDRINUSE 98
|
||||
#define LINUX_EOPNOTSUPP 95
|
||||
#define LINUX_EPFNOSUPPORT 96
|
||||
#define LINUX_EAFNOSUPPORT 97
|
||||
#define LINUX_EADDRINUSE 98
|
||||
#define LINUX_EADDRNOTAVAIL 99
|
||||
#define LINUX_ENETDOWN 100
|
||||
#define LINUX_ENETUNREACH 101
|
||||
|
@ -125,13 +125,13 @@
|
|||
#define LINUX_EHOSTUNREACH 113
|
||||
#define LINUX_EALREADY 114
|
||||
#define LINUX_EINPROGRESS 115
|
||||
#define LINUX_ESTALE 116
|
||||
#define LINUX_ESTALE 116
|
||||
#define LINUX_EUCLEAN 117
|
||||
#define LINUX_ENOTNAM 118
|
||||
#define LINUX_ENAVAIL 119
|
||||
#define LINUX_EISNAM 120
|
||||
#define LINUX_EISNAM 120
|
||||
#define LINUX_EREMOTEIO 121
|
||||
#define LINUX_EDQUOT 122
|
||||
#define LINUX_EDQUOT 122
|
||||
#define LINUX_ENOMEDIUM 123
|
||||
#define LINUX_EMEDIUMTYPE 124
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: linux_exec.h,v 1.1 2001/01/19 01:31:23 manu Exp $ */
|
||||
/* $NetBSD: linux_exec.h,v 1.2 2001/02/04 22:59:26 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
|
||||
|
@ -98,11 +98,11 @@
|
|||
*/
|
||||
#ifdef LINUX_SP_WRAP
|
||||
#define LINUX_ELF_AUX_ARGSIZ \
|
||||
((howmany(ELF_AUX_ENTRIES * sizeof(LinuxAuxInfo), sizeof(Elf32_Addr))) + 16 \
|
||||
+ LINUX_SP_WRAP)
|
||||
((howmany(ELF_AUX_ENTRIES * sizeof(LinuxAuxInfo), sizeof(Elf32_Addr))) \
|
||||
+ 16 + LINUX_SP_WRAP)
|
||||
#else
|
||||
#define LINUX_ELF_AUX_ARGSIZ \
|
||||
((howmany(ELF_AUX_ENTRIES * sizeof(LinuxAuxInfo), sizeof(Elf32_Addr))) + 16)
|
||||
((howmany(ELF_AUX_ENTRIES * sizeof(LinuxAuxInfo), sizeof(Elf32_Addr))) + 16)
|
||||
#endif
|
||||
|
||||
/* XXX should use ELFNAME2 */
|
||||
|
@ -116,7 +116,8 @@ typedef struct {
|
|||
|
||||
#ifdef _KERNEL
|
||||
__BEGIN_DECLS
|
||||
void * linux_elf32_copyargs __P((struct exec_package *, struct ps_strings *, void *, void *));
|
||||
void * linux_elf32_copyargs __P((struct exec_package *,
|
||||
struct ps_strings *, void *, void *));
|
||||
__END_DECLS
|
||||
#endif /* _KERNEL */
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: linux_exec_powerpc.c,v 1.1 2001/01/19 01:36:51 manu Exp $ */
|
||||
/* $NetBSD: linux_exec_powerpc.c,v 1.2 2001/02/04 22:59:26 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2001 The NetBSD Foundation, Inc.
|
||||
|
@ -105,10 +105,10 @@ ELFNAME2(linux,copyargs)(pack, arginfo, stack, argp)
|
|||
#ifdef LINUX_SHIFT
|
||||
/*
|
||||
* From Linux's arch/ppc/kernel/process.c:shove_aux_table(). GNU ld.so
|
||||
* expects the ELF auxiliary table to start on a 16 bytes boundary on the
|
||||
* PowerPC.
|
||||
* expects the ELF auxiliary table to start on a 16 bytes boundary on
|
||||
* the PowerPC.
|
||||
*/
|
||||
(unsigned long) stack = ((unsigned long) stack + LINUX_SHIFT) & ~LINUX_SHIFT;
|
||||
stack = (void *)(((unsigned long) stack + LINUX_SHIFT) & ~LINUX_SHIFT);
|
||||
#endif
|
||||
|
||||
memset(ai, 0, sizeof(LinuxAuxInfo) * LINUX_ELF_AUX_ENTRIES);
|
||||
|
@ -133,9 +133,9 @@ ELFNAME2(linux,copyargs)(pack, arginfo, stack, argp)
|
|||
#if 1
|
||||
/*
|
||||
* The exec_package doesn't have a proc pointer and it's not
|
||||
* exactly trivial to add one since the credentials are changing.
|
||||
*
|
||||
* XXX Linux uses curproc's credentials. Why can't we use them too?
|
||||
* exactly trivial to add one since the credentials are
|
||||
* changing. XXX Linux uses curproc's credentials.
|
||||
* Why can't we use them too?
|
||||
*/
|
||||
a->a_type = LINUX_AT_EGID;
|
||||
a->a_v = p->p_ucred->cr_gid;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: linux_fcntl.h,v 1.2 2001/01/21 22:19:26 manu Exp $ */
|
||||
/* $NetBSD: linux_fcntl.h,v 1.3 2001/02/04 22:59:26 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1995, 1998, 2001 The NetBSD Foundation, Inc.
|
||||
|
@ -53,15 +53,15 @@
|
|||
* Theses are octal values (remember 0100 != 100 in C)
|
||||
*/
|
||||
#define LINUX_O_CREAT 0100
|
||||
#define LINUX_O_EXCL 0200
|
||||
#define LINUX_O_EXCL 0200
|
||||
#define LINUX_O_NOCTTY 0400
|
||||
#define LINUX_O_TRUNC 01000
|
||||
#define LINUX_O_APPEND 02000
|
||||
#define LINUX_O_NONBLOCK 04000
|
||||
#define LINUX_O_NDELAY LINUX_O_NONBLOCK
|
||||
#define LINUX_O_SYNC 010000
|
||||
#define LINUX_O_SYNC 010000
|
||||
|
||||
#define LINUX_FASYNC 020000
|
||||
#define LINUX_FASYNC 020000
|
||||
|
||||
/*
|
||||
* fcntl(2) operations
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: linux_machdep.c,v 1.3 2001/01/26 19:46:16 manu Exp $ */
|
||||
/* $NetBSD: linux_machdep.c,v 1.4 2001/02/04 22:59:26 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1995, 2000, 2001 The NetBSD Foundation, Inc.
|
||||
|
@ -124,7 +124,7 @@ linux_sendsig(catcher, sig, mask, code) /* XXX Check me */
|
|||
struct proc *p = curproc;
|
||||
struct trapframe *tf;
|
||||
struct linux_sigregs *fp, frame;
|
||||
struct linux_pt_regs linux_regs;
|
||||
struct linux_pt_regs linux_regs;
|
||||
struct linux_sigcontext sc;
|
||||
int onstack;
|
||||
int i;
|
||||
|
@ -147,11 +147,13 @@ linux_sendsig(catcher, sig, mask, code) /* XXX Check me */
|
|||
/*
|
||||
* Allocate space for the signal handler context.
|
||||
*/
|
||||
if (onstack)
|
||||
fp = (struct linux_sigregs *)((caddr_t)p->p_sigctx.ps_sigstk.ss_sp +
|
||||
if (onstack) {
|
||||
fp = (struct linux_sigregs *)
|
||||
((caddr_t)p->p_sigctx.ps_sigstk.ss_sp +
|
||||
p->p_sigctx.ps_sigstk.ss_size);
|
||||
else
|
||||
} else {
|
||||
fp = (struct linux_sigregs *)tf->fixreg[1];
|
||||
}
|
||||
fp = (struct linux_sigregs *)((int)(fp - 1) & ~0xf);
|
||||
|
||||
/*
|
||||
|
@ -168,7 +170,7 @@ linux_sendsig(catcher, sig, mask, code) /* XXX Check me */
|
|||
*
|
||||
* Save register context.
|
||||
*/
|
||||
for (i=0; i<=31; i++)
|
||||
for (i = 0; i < 32; i++)
|
||||
linux_regs.lgpr[i] = tf->fixreg[i];
|
||||
linux_regs.lnip = tf->srr0;
|
||||
linux_regs.lmsr = tf->srr1;
|
||||
|
@ -178,11 +180,11 @@ linux_sendsig(catcher, sig, mask, code) /* XXX Check me */
|
|||
linux_regs.lxer = tf->xer;
|
||||
linux_regs.lccr = tf->cr;
|
||||
linux_regs.lmq = 0; /* Unused, 601 only */
|
||||
linux_regs.ltrap = 0; /* XXX What is ltrap counterpart in NetBSD ? */
|
||||
linux_regs.ltrap = 0; /* XXX What is ltrap counterpart in NetBSD ? */
|
||||
linux_regs.ldar = tf->dar;
|
||||
linux_regs.ldsisr = tf->dsisr;
|
||||
linux_regs.lresult = tf->exc;
|
||||
bcopy (&linux_regs, &frame.lgp_regs, sizeof (frame.lgp_regs));
|
||||
memcpy(&frame.lgp_regs, &linux_regs, sizeof(frame.lgp_regs));
|
||||
|
||||
/*
|
||||
* NetBSD does not uses the FPU in the kernel, so there is no
|
||||
|
@ -190,14 +192,14 @@ linux_sendsig(catcher, sig, mask, code) /* XXX Check me */
|
|||
* them to be saved on the stack. Therefore we just keep a
|
||||
* gap of zero'ed data where the FP registers should be stored
|
||||
*/
|
||||
memset (&frame.lfp_regs, 0, sizeof (frame.lfp_regs));
|
||||
memset(&frame.lfp_regs, 0, sizeof (frame.lfp_regs));
|
||||
|
||||
/*
|
||||
* Copy Linux's signal trampoline on the user stack It should not be used,
|
||||
* but Linux binaries might expect him to be there.
|
||||
* Copy Linux's signal trampoline on the user stack It should not
|
||||
* be used, but Linux binaries might expect him to be there.
|
||||
*/
|
||||
frame.ltramp[0]=0x38997777; /* li r0, 0x7777 */
|
||||
frame.ltramp[1]=0x44000002; /* sc */
|
||||
frame.ltramp[0] = 0x38997777; /* li r0, 0x7777 */
|
||||
frame.ltramp[1] = 0x44000002; /* sc */
|
||||
|
||||
/*
|
||||
* Move it to the user stack
|
||||
|
@ -206,7 +208,7 @@ linux_sendsig(catcher, sig, mask, code) /* XXX Check me */
|
|||
* binaries. But the Linux kernel seems to do without it, and it
|
||||
* just skip it when building the stack frame. Hence the LINUX_ABIGAP.
|
||||
*/
|
||||
if (copyout(&frame, fp, sizeof (frame) - LINUX_ABIGAP)) {
|
||||
if (copyout(&frame, fp, sizeof (frame) - LINUX_ABIGAP) != 0) {
|
||||
/*
|
||||
* Process has trashed its stack; give it an illegal
|
||||
* instructoin to halt it in its tracks.
|
||||
|
@ -218,17 +220,19 @@ linux_sendsig(catcher, sig, mask, code) /* XXX Check me */
|
|||
/*
|
||||
* adjust stack pointer after the previous data copy
|
||||
*/
|
||||
(unsigned long)fp -= (sizeof (frame) - LINUX_ABIGAP);
|
||||
fp = (struct linux_sigregs *)
|
||||
((unsigned long)fp - (sizeof (frame) - LINUX_ABIGAP));
|
||||
|
||||
/*
|
||||
* "Mind the gap" Linux expects a gap here.
|
||||
*/
|
||||
(unsigned long)fp -= LINUX__SIGNAL_FRAMESIZE;
|
||||
fp = (struct linux_sigregs *)
|
||||
((unsigned long)fp - LINUX__SIGNAL_FRAMESIZE);
|
||||
|
||||
/*
|
||||
* Add a sigcontext on the stack
|
||||
*/
|
||||
if (copyout(&sc, fp, sizeof (struct linux_sigcontext))) {
|
||||
if (copyout(&sc, fp, sizeof (struct linux_sigcontext)) != 0) {
|
||||
/*
|
||||
* Process has trashed its stack; give it an illegal
|
||||
* instructoin to halt it in its tracks.
|
||||
|
@ -297,15 +301,15 @@ linux_sys_rt_sigreturn(p, v, retval)
|
|||
scp = SCARG(uap, sfp);
|
||||
|
||||
/*
|
||||
* It seems we need a 16 bytes alignement here (it just works with it, don't
|
||||
* ask me why
|
||||
* It seems we need a 16 bytes alignement here (it just works with it,
|
||||
* don't ask me why
|
||||
*/
|
||||
(unsigned long)scp = (unsigned long) scp & ~0xfUL;
|
||||
scp = (linux_rt_sigframe *)((unsigned long)scp & ~0xfUL);
|
||||
|
||||
/*
|
||||
* Get the context from user stack
|
||||
*/
|
||||
if (copyin((caddr_t)scp, &sigframe, sizeof(struct linux_rt_sigframe)) != 0)
|
||||
if (copyin((caddr_t)scp, &sigframe, sizeof(*scp)) != 0)
|
||||
return (EFAULT);
|
||||
|
||||
/*
|
||||
|
@ -326,7 +330,7 @@ linux_sys_rt_sigreturn(p, v, retval)
|
|||
(tf->srr1 & PSL_USERSTATIC))
|
||||
return (EINVAL);
|
||||
|
||||
for (i=0; i<=31; i++)
|
||||
for (i = 0; i < 32; i++)
|
||||
tf->fixreg[i] = sigframe.luc.luc_context.lregs->lgpr[i];
|
||||
tf->lr = sigframe.luc.luc_context.lregs->llink;
|
||||
tf->cr = sigframe.luc.luc_context.lregs->lccr;
|
||||
|
@ -380,15 +384,15 @@ linux_sys_sigreturn(p, v, retval)
|
|||
scp = SCARG(uap, scp);
|
||||
|
||||
/*
|
||||
* It seems we need a 16 bytes alignement here (it just works with it, don't
|
||||
* ask me why
|
||||
* It seems we need a 16 bytes alignement here (it just works with it,
|
||||
* don't ask me why
|
||||
*/
|
||||
(unsigned long)scp = (unsigned long) scp & ~0xfUL;
|
||||
|
||||
/*
|
||||
* Get the context from user stack
|
||||
*/
|
||||
if (copyin((caddr_t)scp, &context, sizeof(struct linux_sigcontext)) != 0)
|
||||
if (copyin(scp, &context, sizeof(struct linux_sigcontext)) != 0)
|
||||
return (EFAULT);
|
||||
|
||||
/*
|
||||
|
@ -400,10 +404,11 @@ linux_sys_sigreturn(p, v, retval)
|
|||
(unsigned long)tf, (unsigned long)scp);
|
||||
#endif
|
||||
|
||||
if ((context.lregs->lmsr & PSL_USERSTATIC) != (tf->srr1 & PSL_USERSTATIC))
|
||||
if ((context.lregs->lmsr & PSL_USERSTATIC) !=
|
||||
(tf->srr1 & PSL_USERSTATIC))
|
||||
return (EINVAL);
|
||||
|
||||
for (i=0; i<=31; i++)
|
||||
for (i = 0; i < 32; i++)
|
||||
tf->fixreg[i] = context.lregs->lgpr[i];
|
||||
tf->lr = context.lregs->llink;
|
||||
tf->cr = context.lregs->lccr;
|
||||
|
@ -421,9 +426,11 @@ linux_sys_sigreturn(p, v, retval)
|
|||
* XXX cannot find the onstack information in Linux sig context.
|
||||
* Is signal stack really supported on Linux?
|
||||
*/
|
||||
/* if (sc.sc_onstack & SS_ONSTACK)
|
||||
#if 0
|
||||
if (sc.sc_onstack & SS_ONSTACK)
|
||||
p->p_sigctx.ps_sigstk.ss_flags |= SS_ONSTACK;
|
||||
else */
|
||||
else
|
||||
#endif
|
||||
p->p_sigctx.ps_sigstk.ss_flags &= ~SS_ONSTACK;
|
||||
|
||||
/* Restore signal mask. */
|
||||
|
@ -441,7 +448,8 @@ linux_sys_modify_ldt(p, v, retval)
|
|||
register_t *retval;
|
||||
{
|
||||
/*
|
||||
* This syscall is not implemented in Linux/PowerPC: we should not be here
|
||||
* This syscall is not implemented in Linux/PowerPC: we should not
|
||||
* be here
|
||||
*/
|
||||
#ifdef DEBUG_LINUX
|
||||
printf("linux_sys_modify_ldt: should not be here.\n");
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: linux_ptrace.c,v 1.2 2001/02/04 14:24:38 manu Exp $ */
|
||||
/* $NetBSD: linux_ptrace.c,v 1.3 2001/02/04 22:59:26 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1999, 2001 The NetBSD Foundation, Inc.
|
||||
|
@ -94,7 +94,7 @@ struct linux_user {
|
|||
unsigned long start_data;
|
||||
unsigned long start_stack;
|
||||
long int signal;
|
||||
struct linux_pt_regs *u_ar0; /* help gdb find registers */
|
||||
struct linux_pt_regs *u_ar0; /* help gdb find registers */
|
||||
unsigned long magic;
|
||||
char u_comm[32];
|
||||
};
|
||||
|
@ -120,19 +120,22 @@ linux_sys_ptrace_arch(p, v, retval) /* XXX Check me! (From NetBSD/i386) */
|
|||
struct reg *regs = NULL;
|
||||
struct fpreg *fpregs = NULL;
|
||||
struct linux_pt_regs *linux_regs = NULL;
|
||||
double *linux_fpreg=NULL; /* it's an array, not a struct */
|
||||
double *linux_fpreg = NULL; /* it's an array, not a struct */
|
||||
int addr;
|
||||
int i;
|
||||
|
||||
request = SCARG(uap, request);
|
||||
|
||||
if ((request != LINUX_PTRACE_PEEKUSR) &&
|
||||
(request != LINUX_PTRACE_POKEUSR) &&
|
||||
(request != LINUX_PTRACE_GETREGS) &&
|
||||
(request != LINUX_PTRACE_SETREGS) &&
|
||||
(request != LINUX_PTRACE_GETFPREGS) &&
|
||||
(request != LINUX_PTRACE_SETFPREGS))
|
||||
switch (request = SCARG(uap, request)) {
|
||||
case LINUX_PTRACE_PEEKUSR:
|
||||
case LINUX_PTRACE_POKEUSR:
|
||||
case LINUX_PTRACE_GETREGS:
|
||||
case LINUX_PTRACE_SETREGS:
|
||||
case LINUX_PTRACE_GETFPREGS:
|
||||
case LINUX_PTRACE_SETFPREGS:
|
||||
break;
|
||||
default:
|
||||
return EIO;
|
||||
}
|
||||
|
||||
/* Find the process we're supposed to be operating on. */
|
||||
if ((t = pfind(SCARG(uap, pid))) == NULL)
|
||||
|
@ -169,7 +172,7 @@ linux_sys_ptrace_arch(p, v, retval) /* XXX Check me! (From NetBSD/i386) */
|
|||
switch (request) {
|
||||
case LINUX_PTRACE_GETREGS:
|
||||
MALLOC(regs, struct reg*, sizeof(struct reg), M_TEMP, M_WAITOK);
|
||||
MALLOC(linux_regs, struct linux_pt_regs*, sizeof(struct linux_pt_regs),
|
||||
MALLOC(linux_regs, struct linux_pt_regs*, sizeof(*linux_regs),
|
||||
M_TEMP, M_WAITOK);
|
||||
|
||||
error = process_read_regs(t, regs);
|
||||
|
@ -180,7 +183,8 @@ linux_sys_ptrace_arch(p, v, retval) /* XXX Check me! (From NetBSD/i386) */
|
|||
linux_regs->lgpr[i] = regs->fixreg[i];
|
||||
linux_regs->lnip = regs->pc;
|
||||
linux_regs->lmsr = 0;
|
||||
linux_regs->lorig_gpr3 = regs->fixreg[3]; /* XXX Is that right? */
|
||||
/* XXX Is that right? */
|
||||
linux_regs->lorig_gpr3 = regs->fixreg[3];
|
||||
linux_regs->lctr = regs->ctr;
|
||||
linux_regs->llink = regs->lr;
|
||||
linux_regs->lxer = regs->xer;
|
||||
|
@ -197,7 +201,7 @@ linux_sys_ptrace_arch(p, v, retval) /* XXX Check me! (From NetBSD/i386) */
|
|||
|
||||
case LINUX_PTRACE_SETREGS:
|
||||
MALLOC(regs, struct reg*, sizeof(struct reg), M_TEMP, M_WAITOK);
|
||||
MALLOC(linux_regs, struct linux_pt_regs*, sizeof(struct linux_pt_regs),
|
||||
MALLOC(linux_regs, struct linux_pt_regs*, sizeof(*linux_regs),
|
||||
M_TEMP, M_WAITOK);
|
||||
|
||||
error = copyin((caddr_t)SCARG(uap, data), linux_regs,
|
||||
|
|
Loading…
Reference in New Issue