From: Øyvind Harboe Date: Thu, 12 Nov 2009 09:10:11 +0000 (+0100) Subject: zy1000: fix bug when running on non-arm CPU X-Git-Tag: v0.4.0-rc1~536 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=83104648e6a1834244eb1b1bb6324f729532906c;p=openocd zy1000: fix bug when running on non-arm CPU Shifting by more than 32 is undefined for 32 bit integers according to the C standard. Robust solution is conditional code. Signed-off-by: Øyvind Harboe --- diff --git a/src/jtag/zy1000/zy1000.c b/src/jtag/zy1000/zy1000.c index 9a5d2e78..f2a5aa94 100644 --- a/src/jtag/zy1000/zy1000.c +++ b/src/jtag/zy1000/zy1000.c @@ -509,7 +509,14 @@ static __inline void scanFields(int num_fields, const struct scan_field *fields, } } /* mask away unused bits for easier debugging */ - value&=~(((uint32_t)0xffffffff) << k); + if (k < 32) + { + value&=~(((uint32_t)0xffffffff) << k); + } else + { + /* Shifting by >= 32 is not defined by the C standard + * and will in fact shift by &0x1f bits on nios */ + } shiftValueInner(shiftState, pause_state, k, value);