X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gdb%2Farm-tdep.h;h=f8ba122b35a34796b07ef1ff5438f5cfc57cfcd2;hb=97dfe206170141e809e8ebef68a6a371861fd7f9;hp=b3a3850987eaca542c95e2c0056e671794ef5645;hpb=35f73cfc810658302b9e320cc7294a1598fc0317;p=binutils-gdb.git diff --git a/gdb/arm-tdep.h b/gdb/arm-tdep.h index b3a3850987e..f8ba122b35a 100644 --- a/gdb/arm-tdep.h +++ b/gdb/arm-tdep.h @@ -1,6 +1,5 @@ /* Common target dependent code for GDB on ARM systems. - Copyright (C) 2002, 2003, 2007, 2008, 2009, 2010, 2011 - Free Software Foundation, Inc. + Copyright (C) 2002-2014 Free Software Foundation, Inc. This file is part of GDB. @@ -72,6 +71,10 @@ enum gdb_regnum { bits. DWORD aligned they use 96 bits. */ #define FP_REGISTER_SIZE 12 +/* Say how long VFP double precision registers are. Used for documentation + purposes and code readability. These are fixed at 64 bits. */ +#define VFP_REGISTER_SIZE 8 + /* Number of machine registers. The only define actually required is gdbarch_num_regs. The other definitions are used for documentation purposes and code readability. */ @@ -170,16 +173,16 @@ struct gdbarch_tdep CORE_ADDR lowest_pc; /* Lowest address at which instructions will appear. */ - const char *arm_breakpoint; /* Breakpoint pattern for an ARM insn. */ + const gdb_byte *arm_breakpoint; /* Breakpoint pattern for an ARM insn. */ int arm_breakpoint_size; /* And its size. */ - const char *thumb_breakpoint; /* Breakpoint pattern for a Thumb insn. */ + const gdb_byte *thumb_breakpoint; /* Breakpoint pattern for a Thumb insn. */ int thumb_breakpoint_size; /* And its size. */ /* If the Thumb breakpoint is an undefined instruction (which is affected by IT blocks) rather than a BKPT instruction (which is not), then we need a 32-bit Thumb breakpoint to preserve the instruction count in IT blocks. */ - const char *thumb2_breakpoint; + const gdb_byte *thumb2_breakpoint; int thumb2_breakpoint_size; int jb_pc; /* Offset to PC value in jump buffer. @@ -201,6 +204,9 @@ struct gdbarch_tdep /* Return the expected next PC if FRAME is stopped at a syscall instruction. */ CORE_ADDR (*syscall_next_pc) (struct frame_info *frame); + + /* syscall record. */ + int (*arm_syscall_record) (struct regcache *regcache, unsigned long svc_number); }; /* Structures used for displaced stepping. */ @@ -331,6 +337,8 @@ extern int arm_psr_thumb_bit (struct gdbarch *); instruction? */ extern int arm_pc_is_thumb (struct gdbarch *, CORE_ADDR); +extern int arm_process_record (struct gdbarch *gdbarch, + struct regcache *regcache, CORE_ADDR addr); /* Functions exported from armbsd-tdep.h. */ /* Return the appropriate register set for the core section identified