aboutsummaryrefslogtreecommitdiff
path: root/sim/aarch64/memory.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/memory.h
parent351e610191016136a49ee2a0889f1c4929169fc6 (diff)
downloadfsf-binutils-gdb-2e8cf49e1387eba9c4ce062885b99a6eb76c01f8.zip
fsf-binutils-gdb-2e8cf49e1387eba9c4ce062885b99a6eb76c01f8.tar.gz
fsf-binutils-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/memory.h')
-rw-r--r--sim/aarch64/memory.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/sim/aarch64/memory.h b/sim/aarch64/memory.h
new file mode 100644
index 0000000..bbd3c6f
--- /dev/null
+++ b/sim/aarch64/memory.h
@@ -0,0 +1,64 @@
+/* memory.h -- Prototypes for AArch64 memory accessor 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 _MEMORY_H
+#define _MEMORY_H
+
+#include <sys/types.h>
+#include "bfd.h"
+#include "simulator.h"
+
+extern float aarch64_get_mem_float (sim_cpu *, uint64_t);
+extern double aarch64_get_mem_double (sim_cpu *, uint64_t);
+extern void aarch64_get_mem_long_double (sim_cpu *, uint64_t, FRegister *);
+
+extern uint64_t aarch64_get_mem_u64 (sim_cpu *, uint64_t);
+extern int64_t aarch64_get_mem_s64 (sim_cpu *, uint64_t);
+extern uint32_t aarch64_get_mem_u32 (sim_cpu *, uint64_t);
+extern int32_t aarch64_get_mem_s32 (sim_cpu *, uint64_t);
+extern uint32_t aarch64_get_mem_u16 (sim_cpu *, uint64_t);
+extern int32_t aarch64_get_mem_s16 (sim_cpu *, uint64_t);
+extern uint32_t aarch64_get_mem_u8 (sim_cpu *, uint64_t);
+extern int32_t aarch64_get_mem_s8 (sim_cpu *, uint64_t);
+extern void aarch64_get_mem_blk (sim_cpu *, uint64_t, char *, unsigned);
+extern const char * aarch64_get_mem_ptr (sim_cpu *, uint64_t);
+
+extern void aarch64_set_mem_float (sim_cpu *, uint64_t, float);
+extern void aarch64_set_mem_double (sim_cpu *, uint64_t, double);
+extern void aarch64_set_mem_long_double (sim_cpu *, uint64_t, FRegister);
+
+extern void aarch64_set_mem_u64 (sim_cpu *, uint64_t, uint64_t);
+extern void aarch64_set_mem_s64 (sim_cpu *, uint64_t, int64_t);
+extern void aarch64_set_mem_u32 (sim_cpu *, uint64_t, uint32_t);
+extern void aarch64_set_mem_s32 (sim_cpu *, uint64_t, int32_t);
+extern void aarch64_set_mem_u16 (sim_cpu *, uint64_t, uint16_t);
+extern void aarch64_set_mem_s16 (sim_cpu *, uint64_t, int16_t);
+extern void aarch64_set_mem_u8 (sim_cpu *, uint64_t, uint8_t);
+extern void aarch64_set_mem_s8 (sim_cpu *, uint64_t, int8_t);
+
+#define STACK_TOP 0x07FFFF00
+
+extern uint64_t aarch64_get_heap_start (sim_cpu *);
+extern uint64_t aarch64_get_stack_start (sim_cpu *);
+
+extern void mem_add_blk (sim_cpu *, uint64_t, char *, uint64_t, bfd_boolean);
+
+#endif /* _MEMORY_H */