From d82ed12595b82b7b99b31853f49f874387d02611 Mon Sep 17 00:00:00 2001 From: palves Date: Fri, 28 Jan 2011 12:58:00 +0000 Subject: [PATCH] 2011-01-28 Pedro Alves * i387-fp.c (i387_xsave_to_cache): Make passing NULL as register buffer explicit. --- gdb/gdbserver/ChangeLog | 5 +++++ gdb/gdbserver/i387-fp.c | 54 ++++++++++++++++++++++++------------------------- 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index 9ebf150687..39eb4e76af 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,8 @@ +2011-01-28 Pedro Alves + + * i387-fp.c (i387_xsave_to_cache): Make passing NULL as register + buffer explicit. + 2011-01-25 Pedro Alves * server.h (decode_xfer_write): Change prototype. diff --git a/gdb/gdbserver/i387-fp.c b/gdb/gdbserver/i387-fp.c index 75531d0742..3dfe06be3b 100644 --- a/gdb/gdbserver/i387-fp.c +++ b/gdb/gdbserver/i387-fp.c @@ -468,61 +468,61 @@ i387_xsave_to_cache (struct regcache *regcache, const void *buf) int i, top; unsigned long val; unsigned int clear_bv; - char *p; + gdb_byte *p; /* The supported bits in `xstat_bv' are 1 byte. Clear part in vector registers if its bit in xstat_bv is zero. */ clear_bv = (~fp->xstate_bv) & x86_xcr0; /* Check if any x87 registers are changed. */ - if ((x86_xcr0 & I386_XSTATE_X87)) + if ((x86_xcr0 & I386_XSTATE_X87) != 0) { int st0_regnum = find_regno ("st0"); - if ((clear_bv & I386_XSTATE_X87)) - p = NULL; + if ((clear_bv & I386_XSTATE_X87) != 0) + { + for (i = 0; i < 8; i++) + supply_register (regcache, i + st0_regnum, NULL); + } else - p = (char *) buf; - - for (i = 0; i < 8; i++) { - if (p) - p = ((char *) &fp->st_space[0]) + i * 16; - supply_register (regcache, i + st0_regnum, p); + p = (gdb_byte *) &fp->st_space[0]; + for (i = 0; i < 8; i++) + supply_register (regcache, i + st0_regnum, p + i * 16); } } - if ((x86_xcr0 & I386_XSTATE_SSE)) + if ((x86_xcr0 & I386_XSTATE_SSE) != 0) { int xmm0_regnum = find_regno ("xmm0"); if ((clear_bv & I386_XSTATE_SSE)) - p = NULL; + { + for (i = 0; i < num_xmm_registers; i++) + supply_register (regcache, i + xmm0_regnum, NULL); + } else - p = (char *) buf; - - for (i = 0; i < num_xmm_registers; i++) { - if (p) - p = ((char *) &fp->xmm_space[0]) + i * 16; - supply_register (regcache, i + xmm0_regnum, p); + p = (gdb_byte *) &fp->xmm_space[0]; + for (i = 0; i < num_xmm_registers; i++) + supply_register (regcache, i + xmm0_regnum, p + i * 16); } } - if ((x86_xcr0 & I386_XSTATE_AVX)) + if ((x86_xcr0 & I386_XSTATE_AVX) != 0) { int ymm0h_regnum = find_regno ("ymm0h"); - if ((clear_bv & I386_XSTATE_AVX)) - p = NULL; + if ((clear_bv & I386_XSTATE_AVX) != 0) + { + for (i = 0; i < num_xmm_registers; i++) + supply_register (regcache, i + ymm0h_regnum, NULL); + } else - p = (char *) buf; - - for (i = 0; i < num_xmm_registers; i++) { - if (p) - p = ((char *) &fp->ymmh_space[0]) + i * 16; - supply_register (regcache, i + ymm0h_regnum, p); + p = (gdb_byte *) &fp->ymmh_space[0]; + for (i = 0; i < num_xmm_registers; i++) + supply_register (regcache, i + ymm0h_regnum, p + i * 16); } } -- 2.11.0