diff options
author | Stafford Horne <shorne@gmail.com> | 2017-12-09 05:57:25 +0900 |
---|---|---|
committer | Stafford Horne <shorne@gmail.com> | 2017-12-12 23:44:14 +0900 |
commit | fa8b7c2128cd03135b7d31ae2ecbc2d3273e990d (patch) | |
tree | a8014af075efa262869a91c4114ab4adb0e20d68 /sim/or1k/sim-main.h | |
parent | 58884b0e451043ed2fb4d2fba18134f0fb451ce5 (diff) | |
download | fsf-binutils-gdb-fa8b7c2128cd03135b7d31ae2ecbc2d3273e990d.zip fsf-binutils-gdb-fa8b7c2128cd03135b7d31ae2ecbc2d3273e990d.tar.gz fsf-binutils-gdb-fa8b7c2128cd03135b7d31ae2ecbc2d3273e990d.tar.bz2 |
sim: or1k: add or1k target to sim
This adds the OpenRISC 32-bit sim target. The OpenRISC sim is a CGEN
based sim so the bulk of the code is generated from the .cpu files by
CGEN. The engine decode and execute logic in mloop uses scache with
pseudo-basic-block extraction and supports both full and fast (switch)
modes.
The sim does not implement an mmu at the moment. The sim does implement
fpu instructions via the common sim-fpu implementation.
sim/ChangeLog:
2017-12-12 Stafford Horne <shorne@gmail.com>
Peter Gavin <pgavin@gmail.com>
* configure.tgt: Add or1k sim.
* or1k/README: New file.
* or1k/Makefile.in: New file.
* or1k/configure.ac: New file.
* or1k/mloop.in: New file.
* or1k/or1k-sim.h: New file.
* or1k/or1k.c: New file.
* or1k/sim-if.c: New file.
* or1k/sim-main.h: New file.
* or1k/traps.c: New file.
Diffstat (limited to 'sim/or1k/sim-main.h')
-rw-r--r-- | sim/or1k/sim-main.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/sim/or1k/sim-main.h b/sim/or1k/sim-main.h new file mode 100644 index 0000000..ea32a4c --- /dev/null +++ b/sim/or1k/sim-main.h @@ -0,0 +1,81 @@ +/* OpenRISC simulator main header + Copyright (C) 2017 Free Software Foundation, Inc. + + This file is part of GDB, the GNU debugger. + + 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 SIM_MAIN_H +#define SIM_MAIN_H + +#define WITH_SCACHE_PBB 1 + +#include "ansidecl.h" +#include "or1k-desc.h" +#include "sim-basics.h" +#include "cgen-types.h" +#include "arch.h" +#include "sim-base.h" +#include "sim-fpu.h" + +#include "or1k-opc.h" +#include "cgen-sim.h" +#include "or1k-sim.h" + +#define OR1K_DEFAULT_MEM_SIZE 0x800000 /* 8M */ + +/* The _sim_cpu struct. */ +struct _sim_cpu +{ + /* sim/common cpu base. */ + sim_cpu_base base; + + /* Static parts of cgen. */ + CGEN_CPU cgen_cpu; + + OR1K_MISC_PROFILE or1k_misc_profile; +#define CPU_OR1K_MISC_PROFILE(cpu) (& (cpu)->or1k_misc_profile) + + /* CPU specific parts go here. + Note that in files that don't need to access these pieces WANT_CPU_FOO + won't be defined and thus these parts won't appear. This is ok in the + sense that things work. It is a source of bugs though. + One has to of course be careful to not take the size of this + struct and no structure members accessed in non-cpu specific files can + go after here. Oh for a better language. */ + UWI spr[NUM_SPR]; + + /* Next instruction will be in delay slot. */ + BI next_delay_slot; + /* Currently in delay slot. */ + BI delay_slot; + +#ifdef WANT_CPU_OR1K32BF + OR1K32BF_CPU_DATA cpu_data; +#endif +}; + + + +/* The sim_state struct. */ +struct sim_state +{ + sim_cpu *cpu[MAX_NR_PROCESSORS]; + + CGEN_STATE cgen_state; + + sim_state_base base; +}; + +#endif /* SIM_MAIN_H */ |