X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Faarch64-tdep.h;h=a95b61337a6b1c0f4a50c20838c2f7b420f1fcc3;hb=b8162e5ac9e052b2a88912b729081600972e854c;hp=30a5ee360fe161536c27d984a76f64586b6074f6;hpb=ecd75fc8eed3bde86036141228074a20e55dcfc9;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/aarch64-tdep.h b/gdb/aarch64-tdep.h index 30a5ee360f..a95b61337a 100644 --- a/gdb/aarch64-tdep.h +++ b/gdb/aarch64-tdep.h @@ -1,6 +1,6 @@ /* Common target dependent code for GDB on AArch64 systems. - Copyright (C) 2009-2014 Free Software Foundation, Inc. + Copyright (C) 2009-2016 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GDB. @@ -69,6 +69,10 @@ enum aarch64_regnum /* Total number of general (X) registers. */ #define AARCH64_X_REGISTER_COUNT 32 +/* The maximum number of modified instructions generated for one + single-stepped instruction. */ +#define DISPLACED_MODIFIED_INSNS 1 + /* Target-dependent structure in gdbarch. */ struct gdbarch_tdep { @@ -82,16 +86,33 @@ struct gdbarch_tdep /* And the size of each entry in the buf. */ size_t jb_elt_size; - /* Cached core file helpers. */ - struct regset *gregset; - struct regset *fpregset; - /* Types for AdvSISD registers. */ struct type *vnq_type; struct type *vnd_type; struct type *vns_type; struct type *vnh_type; struct type *vnb_type; + + /* syscall record. */ + int (*aarch64_syscall_record) (struct regcache *regcache, unsigned long svc_number); }; +extern struct target_desc *tdesc_aarch64; + +extern int aarch64_process_record (struct gdbarch *gdbarch, + struct regcache *regcache, CORE_ADDR addr); + +struct displaced_step_closure * + aarch64_displaced_step_copy_insn (struct gdbarch *gdbarch, + CORE_ADDR from, CORE_ADDR to, + struct regcache *regs); + +void aarch64_displaced_step_fixup (struct gdbarch *gdbarch, + struct displaced_step_closure *dsc, + CORE_ADDR from, CORE_ADDR to, + struct regcache *regs); + +int aarch64_displaced_step_hw_singlestep (struct gdbarch *gdbarch, + struct displaced_step_closure *closure); + #endif /* aarch64-tdep.h */