2002-03-20  Andreas Jaeger  <aj@suse.de>

	* sysdeps/unix/sysv/linux/x86_64/sys/user.h (struct
	user_fpregs_struct): Fix for changed kernel struct.
	(struct user_regs_struct): Likewise.
	(struct user): Likewise.
	Add 32-bit x86 compatibility.

	* sysdeps/unix/sysv/linux/x86_64/sys/reg.h: Add more registers.
This commit is contained in:
Andreas Jaeger 2002-03-20 10:18:29 +00:00
parent 6340375b03
commit cb50c2187f
3 changed files with 102 additions and 8 deletions

View File

@ -1,3 +1,13 @@
2002-03-20 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/x86_64/sys/user.h (struct
user_fpregs_struct): Fix for changed kernel struct.
(struct user_regs_struct): Likewise.
(struct user): Likewise.
Add 32-bit x86 compatibility.
* sysdeps/unix/sysv/linux/x86_64/sys/reg.h: Add more registers.
2002-03-19 Andreas Jaeger <aj@suse.de> 2002-03-19 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/x86_64/bits/types.h: Cleanup x86 types. * sysdeps/unix/sysv/linux/x86_64/bits/types.h: Cleanup x86 types.

View File

@ -46,6 +46,12 @@
# define EFLAGS 18 # define EFLAGS 18
# define RSP 19 # define RSP 19
# define SS 20 # define SS 20
# define FS_BASE 21
# define GS_BASE 22
# define DS 23
# define ES 24
# define FS 25
# define GS 26
#else #else
/* Index into an array of 4 byte integers returned from ptrace for /* Index into an array of 4 byte integers returned from ptrace for

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2001 Free Software Foundation, Inc. /* Copyright (C) 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -23,21 +23,23 @@
too much into it. Don't use it for anything other than GDB unless too much into it. Don't use it for anything other than GDB unless
you know what you are doing. */ you know what you are doing. */
#include <bits/wordsize.h>
#if __WORDSIZE == 64
struct user_fpregs_struct struct user_fpregs_struct
{ {
unsigned short int cwd; unsigned short int cwd;
unsigned short int swd; unsigned short int swd;
unsigned short int twd; unsigned short int twd;
unsigned short int fop; unsigned short int fop;
unsigned int fip; unsigned long int frip;
unsigned int fcs; unsigned long int frdp;
unsigned int foo;
unsigned int fos;
unsigned int mxcsr; unsigned int mxcsr;
unsigned int reserved; unsigned int reserved;
unsigned int st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */ unsigned int st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */
unsigned int xmm_space[32]; /* 8*16 bytes for each XMM-reg = 128 bytes */ unsigned int xmm_space[64]; /* 16*16 bytes for each XMM-reg = 128 bytes */
unsigned int padding[56]; unsigned int padding[24];
}; };
struct user_regs_struct struct user_regs_struct
@ -64,7 +66,82 @@ struct user_regs_struct
unsigned long rsp; unsigned long rsp;
unsigned long ss; unsigned long ss;
unsigned long fs_base; unsigned long fs_base;
unsigned long kernel_gs_base; unsigned long gs_base;
unsigned long ds;
unsigned long es;
unsigned long fs;
unsigned long gs;
};
struct user
{
struct user_regs_struct regs;
int u_fpvalid;
struct user_fpregs_struct i387;
unsigned long int u_tsize;
unsigned long int u_dsize;
unsigned long int u_ssize;
unsigned long start_code;
unsigned long start_stack;
long int signal;
int reserved;
struct user_regs_struct* u_ar0;
struct user_fpregs_struct* u_fpstate;
unsigned long int magic;
char u_comm [32];
unsigned long int u_debugreg [8];
};
#else
/* These are the 32-bit x86 structures. */
struct user_fpregs_struct
{
long int cwd;
long int swd;
long int twd;
long int fip;
long int fcs;
long int foo;
long int fos;
long int st_space [20];
};
struct user_fpxregs_struct
{
unsigned short int cwd;
unsigned short int swd;
unsigned short int twd;
unsigned short int fop;
long int fip;
long int fcs;
long int foo;
long int fos;
long int mxcsr;
long int reserved;
long int st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */
long int xmm_space[32]; /* 8*16 bytes for each XMM-reg = 128 bytes */
long int padding[56];
};
struct user_regs_struct
{
long int ebx;
long int ecx;
long int edx;
long int esi;
long int edi;
long int ebp;
long int eax;
long int xds;
long int xes;
long int xfs;
long int xgs;
long int orig_eax;
long int eip;
long int xcs;
long int eflags;
long int esp;
long int xss;
}; };
struct user struct user
@ -85,6 +162,7 @@ struct user
char u_comm [32]; char u_comm [32];
int u_debugreg [8]; int u_debugreg [8];
}; };
#endif /* __WORDSIZE */
#define PAGE_SHIFT 12 #define PAGE_SHIFT 12
#define PAGE_SIZE (1UL << PAGE_SHIFT) #define PAGE_SIZE (1UL << PAGE_SHIFT)