diff options
Diffstat (limited to 'gdb/arch')
-rw-r--r-- | gdb/arch/arm.c | 33 | ||||
-rw-r--r-- | gdb/arch/arm.h | 12 |
2 files changed, 44 insertions, 1 deletions
diff --git a/gdb/arch/arm.c b/gdb/arch/arm.c new file mode 100644 index 0000000..b11c684 --- /dev/null +++ b/gdb/arch/arm.c @@ -0,0 +1,33 @@ +/* Common target dependent code for GDB on ARM systems. + + Copyright (C) 1988-2015 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include "common-defs.h" +#include "arm.h" + +/* Return the size in bytes of the complete Thumb instruction whose + first halfword is INST1. */ + +int +thumb_insn_size (unsigned short inst1) +{ + if ((inst1 & 0xe000) == 0xe000 && (inst1 & 0x1800) != 0) + return 4; + else + return 2; +} diff --git a/gdb/arch/arm.h b/gdb/arch/arm.h index e0eed60..a054776 100644 --- a/gdb/arch/arm.h +++ b/gdb/arch/arm.h @@ -1,5 +1,5 @@ /* Common target dependent code for GDB on ARM systems. - Copyright (C) 2002-2015 Free Software Foundation, Inc. + Copyright (C) 1988-2015 Free Software Foundation, Inc. This file is part of GDB. @@ -58,4 +58,14 @@ enum gdb_regnum { ARM_LAST_FP_ARG_REGNUM = ARM_F3_REGNUM }; +/* Addresses for calling Thumb functions have the bit 0 set. + Here are some macros to test, set, or clear bit 0 of addresses. */ +#define IS_THUMB_ADDR(addr) ((addr) & 1) +#define MAKE_THUMB_ADDR(addr) ((addr) | 1) +#define UNMAKE_THUMB_ADDR(addr) ((addr) & ~1) + +/* Return the size in bytes of the complete Thumb instruction whose + first halfword is INST1. */ +int thumb_insn_size (unsigned short inst1); + #endif |