diff options
author | Mark Kettenis <kettenis@gnu.org> | 2003-05-04 10:27:47 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@gnu.org> | 2003-05-04 10:27:47 +0000 |
commit | c8d544c0b9472d03db4b18791396dae55c399961 (patch) | |
tree | 5019616cb7f92430b64fa31f0bca4abc73c10617 | |
parent | 6669f2b19833ce236ef135445845378753ebdad5 (diff) | |
download | gdb-kettenis_i386newframe-20030504-mergepoint.tar.gz |
* i387-tdep.c (fxsave_offset): Add entries for %xmm8-%xmm15.kettenis_i386newframe-20030504-mergepoint
(FXSAVE_ADDR, i387_supply_fxsave): Add support for %xmm8-%xmm15.
-rw-r--r-- | gdb/ChangeLog | 3 | ||||
-rw-r--r-- | gdb/i387-tdep.c | 35 |
2 files changed, 28 insertions, 10 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 53e9de82665..14dfacc97e5 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,8 @@ 2003-05-04 Mark Kettenis <kettenis@gnu.org> + * i387-tdep.c (fxsave_offset): Add entries for %xmm8-%xmm15. + (FXSAVE_ADDR, i387_supply_fxsave): Add support for %xmm8-%xmm15. + * i386-linux-nat.c (supply_gregset): Remove unnecessary casts. 2003-05-03 J. Brobecker <brobecker@gnat.com> diff --git a/gdb/i387-tdep.c b/gdb/i387-tdep.c index 045357ea3fe..c6a2d5dac84 100644 --- a/gdb/i387-tdep.c +++ b/gdb/i387-tdep.c @@ -522,19 +522,34 @@ static int fxsave_offset[] = 20, /* FOSEG_REGNUM (16 bits). */ 16, /* FOOFF_REGNUM. */ 6, /* FOP_REGNUM (bottom 11 bits). */ - 160, /* XMM0_REGNUM through ... */ - 176, - 192, - 208, - 224, - 240, - 256, - 272, /* ... XMM7_REGNUM (128 bits each). */ - 24, /* MXCSR_REGNUM. */ + 160 + 0 * 16, /* XMM0_REGNUM through ... */ + 160 + 1 * 16, + 160 + 2 * 16, + 160 + 3 * 16, + 160 + 4 * 16, + 160 + 5 * 16, + 160 + 6 * 16, + 160 + 7 * 16, + 160 + 8 * 16, + 160 + 9 * 16, + 160 + 10 * 16, + 160 + 11 * 16, + 160 + 12 * 16, + 160 + 13 * 16, + 160 + 14 * 16, + 160 + 15 * 16, /* ... XMM15_REGNUM (128 bits each). */ + 24 /* MXCSR_REGNUM. */ }; +/* FIXME: kettenis/20030430: We made an unfortunate choice in putting + %mxcsr after the SSE registers %xmm0-%xmm7 instead of before, since + it makes supporting the registers %xmm8-%xmm15 on x86-64 a bit + involved. Hack around it by explicitly overriding the offset for + %mxcsr here. */ + #define FXSAVE_ADDR(fxsave, regnum) \ - (fxsave + fxsave_offset[regnum - FP0_REGNUM]) + ((regnum == MXCSR_REGNUM) ? (fxsave + 24) : \ + (fxsave + fxsave_offset[regnum - FP0_REGNUM])) static int i387_tag (unsigned char *raw); |