mirror of
git://sourceware.org/git/glibc.git
synced 2025-03-07 13:28:05 +08:00
hurd: Drop REG_GSFS and REG_ESDS from x86_64's ucontext
These are useless on x86_64, and __NGREG was actually wrong with them.
This commit is contained in:
parent
964d15a007
commit
29d4591b07
@ -79,8 +79,8 @@ static void fill_ucontext (ucontext_t *uc, const struct sigcontext *sc)
|
|||||||
|
|
||||||
/* Registers. */
|
/* Registers. */
|
||||||
#ifdef __x86_64__
|
#ifdef __x86_64__
|
||||||
memcpy (&uc->uc_mcontext.gregs[REG_GSFS], &sc->sc_gs,
|
memcpy (&uc->uc_mcontext.gregs[REG_R8], &sc->sc_r8,
|
||||||
(REG_ERR - REG_GSFS) * sizeof (long));
|
(REG_ERR - REG_R8) * sizeof (long));
|
||||||
#else
|
#else
|
||||||
memcpy (&uc->uc_mcontext.gregs[REG_GS], &sc->sc_gs,
|
memcpy (&uc->uc_mcontext.gregs[REG_GS], &sc->sc_gs,
|
||||||
(REG_TRAPNO - REG_GS) * sizeof (int));
|
(REG_TRAPNO - REG_GS) * sizeof (int));
|
||||||
|
@ -59,13 +59,7 @@ struct sigcontext
|
|||||||
}
|
}
|
||||||
trampoline.c knows this, so it must be changed if this changes. */
|
trampoline.c knows this, so it must be changed if this changes. */
|
||||||
|
|
||||||
#define sc_i386_thread_state sc_gs /* Beginning of correspondence. */
|
#define sc_i386_thread_state sc_r8 /* Beginning of correspondence. */
|
||||||
/* Segment registers. */
|
|
||||||
int sc_gs;
|
|
||||||
int sc_fs;
|
|
||||||
int sc_es;
|
|
||||||
int sc_ds;
|
|
||||||
|
|
||||||
long sc_r8;
|
long sc_r8;
|
||||||
long sc_r9;
|
long sc_r9;
|
||||||
long sc_r10;
|
long sc_r10;
|
||||||
|
@ -34,12 +34,13 @@
|
|||||||
#define PC rip
|
#define PC rip
|
||||||
#define SP ursp
|
#define SP ursp
|
||||||
#define SYSRETURN rax
|
#define SYSRETURN rax
|
||||||
|
#define MACHINE_THREAD_STATE_FIX_NEW(ts) do { \
|
||||||
|
asm ("mov %%cs, %w0" : "=q" ((ts)->cs)); \
|
||||||
|
} while(0)
|
||||||
#else
|
#else
|
||||||
#define PC eip
|
#define PC eip
|
||||||
#define SP uesp
|
#define SP uesp
|
||||||
#define SYSRETURN eax
|
#define SYSRETURN eax
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MACHINE_THREAD_STATE_FIX_NEW(ts) do { \
|
#define MACHINE_THREAD_STATE_FIX_NEW(ts) do { \
|
||||||
asm ("mov %%cs, %w0" : "=q" ((ts)->cs)); \
|
asm ("mov %%cs, %w0" : "=q" ((ts)->cs)); \
|
||||||
asm ("mov %%ds, %w0" : "=q" ((ts)->ds)); \
|
asm ("mov %%ds, %w0" : "=q" ((ts)->ds)); \
|
||||||
@ -47,6 +48,7 @@
|
|||||||
asm ("mov %%fs, %w0" : "=q" ((ts)->fs)); \
|
asm ("mov %%fs, %w0" : "=q" ((ts)->fs)); \
|
||||||
asm ("mov %%gs, %w0" : "=q" ((ts)->gs)); \
|
asm ("mov %%gs, %w0" : "=q" ((ts)->gs)); \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
#endif
|
||||||
|
|
||||||
struct machine_thread_all_state
|
struct machine_thread_all_state
|
||||||
{
|
{
|
||||||
|
@ -47,11 +47,7 @@ typedef greg_t gregset_t[__NGREG];
|
|||||||
/* Number of each register in the `gregset_t' array. */
|
/* Number of each register in the `gregset_t' array. */
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
REG_GSFS = 0, /* Actually int gs, fs. */
|
REG_R8 = 0,
|
||||||
# define REG_GSFS REG_GSFS
|
|
||||||
REG_ESDS, /* Actually int es, ds. */
|
|
||||||
# define REG_ESDS REG_ESDS
|
|
||||||
REG_R8,
|
|
||||||
# define REG_R8 REG_R8
|
# define REG_R8 REG_R8
|
||||||
REG_R9,
|
REG_R9,
|
||||||
# define REG_R9 REG_R9
|
# define REG_R9 REG_R9
|
||||||
|
Loading…
Reference in New Issue
Block a user