* arc-dis.c (BITS): Don't use shifts to mask off bits.

(FIELDD): Sign extend with xor,sub.
This commit is contained in:
Alan Modra 2012-02-27 06:31:57 +00:00
parent 0d8abe3096
commit cdb062354e
2 changed files with 10 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2012-02-27 Alan Modra <amodra@gmail.com>
* arc-dis.c (BITS): Don't use shifts to mask off bits.
(FIELDD): Sign extend with xor,sub.
2012-02-25 Walter Lee <walt@tilera.com> 2012-02-25 Walter Lee <walt@tilera.com>
* tilegx-opc.c: Handle TILEGX_OPC_LD4S_TLS and TILEGX_OPC_LD_TLS. * tilegx-opc.c: Handle TILEGX_OPC_LD4S_TLS and TILEGX_OPC_LD_TLS.

View File

@ -1,6 +1,6 @@
/* Instruction printing code for the ARC. /* Instruction printing code for the ARC.
Copyright 1994, 1995, 1997, 1998, 2000, 2001, 2002, 2005, 2007, 2009, 2010 Copyright 1994, 1995, 1997, 1998, 2000, 2001, 2002, 2005, 2007, 2009,
Free Software Foundation, Inc. 2010, 2012 Free Software Foundation, Inc.
Contributed by Doug Evans (dje@cygnus.com). Contributed by Doug Evans (dje@cygnus.com).
This file is part of libopcodes. This file is part of libopcodes.
@ -60,15 +60,14 @@ typedef enum
} a4_decoding_class; } a4_decoding_class;
#define BIT(word,n) ((word) & (1 << n)) #define BIT(word,n) ((word) & (1 << n))
#define BITS(word,s,e) (((word) << (31 - e)) >> (s + (31 - e))) #define BITS(word,s,e) (((word) >> s) & ((1 << (e + 1 - s)) - 1))
#define OPCODE(word) (BITS ((word), 27, 31)) #define OPCODE(word) (BITS ((word), 27, 31))
#define FIELDA(word) (BITS ((word), 21, 26)) #define FIELDA(word) (BITS ((word), 21, 26))
#define FIELDB(word) (BITS ((word), 15, 20)) #define FIELDB(word) (BITS ((word), 15, 20))
#define FIELDC(word) (BITS ((word), 9, 14)) #define FIELDC(word) (BITS ((word), 9, 14))
/* FIELD D is signed in all of its uses, so we make sure argument is /* FIELD D is signed. */
treated as signed for bit shifting purposes: */ #define FIELDD(word) ((BITS ((word), 0, 8) ^ 0x100) - 0x100)
#define FIELDD(word) (BITS (((signed int)word), 0, 8))
#define PUT_NEXT_WORD_IN(a) \ #define PUT_NEXT_WORD_IN(a) \
do \ do \