aboutsummaryrefslogtreecommitdiff
path: root/sim/aarch64/simulator.h
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2015-11-24 08:47:59 +0000
committerNick Clifton <nickc@redhat.com>2015-11-24 08:47:59 +0000
commit2e8cf49e1387eba9c4ce062885b99a6eb76c01f8 (patch)
tree363800e2edad589cb37f72e10fc842097a8ec9c4 /sim/aarch64/simulator.h
parent351e610191016136a49ee2a0889f1c4929169fc6 (diff)
downloadgdb-2e8cf49e1387eba9c4ce062885b99a6eb76c01f8.zip
gdb-2e8cf49e1387eba9c4ce062885b99a6eb76c01f8.tar.gz
gdb-2e8cf49e1387eba9c4ce062885b99a6eb76c01f8.tar.bz2
Add an AArch64 simulator to GDB.
sim * configure.tgt: Add aarch64 entry. * configure: Regenerate. * sim/aarch64/configure.ac: New configure template. * sim/aarch64/aclocal.m4: Generate. * sim/aarch64/config.in: Generate. * sim/aarch64/configure: Generate. * sim/aarch64/cpustate.c: New file - functions for accessing AArch64 registers. * sim/aarch64/cpustate.h: New header. * sim/aarch64/decode.h: New header. * sim/aarch64/interp.c: New file - interface between GDB and simulator. * sim/aarch64/Makefile.in: New makefile template. * sim/aarch64/memory.c: New file - functions for simulating aarch64 memory accesses. * sim/aarch64/memory.h: New header. * sim/aarch64/sim-main.h: New header. * sim/aarch64/simulator.c: New file - aarch64 simulator functions. * sim/aarch64/simulator.h: New header. include/gdb * sim-aarch64.h: New file. sim/test * configure: Regenerate. * sim/aarch64: New directory.
Diffstat (limited to 'sim/aarch64/simulator.h')
-rw-r--r--sim/aarch64/simulator.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/sim/aarch64/simulator.h b/sim/aarch64/simulator.h
new file mode 100644
index 0000000..1f22448
--- /dev/null
+++ b/sim/aarch64/simulator.h
@@ -0,0 +1,57 @@
+/* simulator.h -- Prototypes for AArch64 simulator functions.
+
+ Copyright (C) 2015 Free Software Foundation, Inc.
+
+ Contributed by Red Hat.
+
+ 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/>. */
+
+#ifndef _SIMULATOR_H
+#define _SIMULATOR_H
+
+#include "config.h"
+#include <sys/types.h>
+#include <setjmp.h>
+
+#include "sim-main.h"
+#include "decode.h"
+
+extern bfd_boolean disas;
+
+#define TOP_LEVEL_RETURN_PC 0xffffffffffffffecULL
+
+/* Call this to set the start stack pointer, frame pointer and pc
+ before calling run or step. Also sets link register to a special
+ value (-20) so we can detect a top level return. This function
+ should be called from the sim setup routine running on the alt
+ stack, and should pass in the current top of C stack for SP and
+ the FP of the caller for fp. PC should be sthe start of the
+ AARCH64 code segment to be executed. */
+
+extern void aarch64_init (sim_cpu *, uint64_t);
+
+/* Call this to run from the current PC without stopping until we
+ either return from the top frame, execute a halt or break or we
+ hit an error. */
+
+extern void aarch64_run (SIM_DESC);
+
+extern const char * aarch64_get_func (uint64_t);
+extern void aarch64_print_insn (SIM_DESC, uint64_t);
+extern uint64_t aarch64_get_sym_value (const char *);
+extern void aarch64_init_LIT_table (void);
+
+#endif /* _SIMULATOR_H */