mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-24 12:35:55 +08:00
1d506c26d9
This commit is the result of the following actions: - Running gdb/copyright.py to update all of the copyright headers to include 2024, - Manually updating a few files the copyright.py script told me to update, these files had copyright headers embedded within the file, - Regenerating gdbsupport/Makefile.in to refresh it's copyright date, - Using grep to find other files that still mentioned 2023. If these files were updated last year from 2022 to 2023 then I've updated them this year to 2024. I'm sure I've probably missed some dates. Feel free to fix them up as you spot them.
111 lines
3.9 KiB
C
111 lines
3.9 KiB
C
/* Simulator header for cgen cpus.
|
|
Copyright (C) 1998-2024 Free Software Foundation, Inc.
|
|
Contributed by Cygnus Support.
|
|
|
|
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 CGEN_CPU_H
|
|
#define CGEN_CPU_H
|
|
|
|
#include "cgen-defs.h"
|
|
#include "cgen-fpu.h"
|
|
#include "cgen-par.h"
|
|
#include "cgen-scache.h"
|
|
|
|
/* Type of function that is ultimately called by sim_resume. */
|
|
typedef void (ENGINE_FN) (SIM_CPU *);
|
|
|
|
/* Type of function to do disassembly. */
|
|
typedef void (CGEN_DISASSEMBLER) (SIM_CPU *, const CGEN_INSN *,
|
|
const ARGBUF *, IADDR pc_, char *buf_);
|
|
|
|
/* Additional non-machine generated per-cpu data to go in SIM_CPU.
|
|
The member's name must be `cgen_cpu'. */
|
|
|
|
typedef struct {
|
|
/* Non-zero while cpu simulation is running. */
|
|
int running_p;
|
|
#define CPU_RUNNING_P(cpu) ((cpu)->cgen_cpu.running_p)
|
|
|
|
/* Instruction count. This is maintained even in fast mode to keep track
|
|
of simulator speed. */
|
|
unsigned long insn_count;
|
|
#define CPU_INSN_COUNT(cpu) ((cpu)->cgen_cpu.insn_count)
|
|
|
|
/* sim_resume handlers */
|
|
ENGINE_FN *fast_engine_fn;
|
|
#define CPU_FAST_ENGINE_FN(cpu) ((cpu)->cgen_cpu.fast_engine_fn)
|
|
ENGINE_FN *full_engine_fn;
|
|
#define CPU_FULL_ENGINE_FN(cpu) ((cpu)->cgen_cpu.full_engine_fn)
|
|
|
|
/* Maximum number of instructions per time slice.
|
|
When single stepping this is 1. If using the pbb model, this can be
|
|
more than 1. 0 means "as long as you want". */
|
|
unsigned int max_slice_insns;
|
|
#define CPU_MAX_SLICE_INSNS(cpu) ((cpu)->cgen_cpu.max_slice_insns)
|
|
|
|
/* Simulator's execution cache.
|
|
Allocate space for this even if not used as some simulators may have
|
|
one machine variant that uses the scache and another that doesn't and
|
|
we don't want members in this struct to move about. */
|
|
CPU_SCACHE scache;
|
|
|
|
/* Instruction descriptor table. */
|
|
IDESC *idesc;
|
|
#define CPU_IDESC(cpu) ((cpu)->cgen_cpu.idesc)
|
|
|
|
/* Whether the read,write,semantic entries (function pointers or computed
|
|
goto labels) have been initialized or not. */
|
|
int idesc_read_init_p;
|
|
#define CPU_IDESC_READ_INIT_P(cpu) ((cpu)->cgen_cpu.idesc_read_init_p)
|
|
int idesc_write_init_p;
|
|
#define CPU_IDESC_WRITE_INIT_P(cpu) ((cpu)->cgen_cpu.idesc_write_init_p)
|
|
int idesc_sem_init_p;
|
|
#define CPU_IDESC_SEM_INIT_P(cpu) ((cpu)->cgen_cpu.idesc_sem_init_p)
|
|
|
|
/* Cpu descriptor table.
|
|
This is a CGEN created entity that contains the description file
|
|
turned into C code and tables for our use. */
|
|
CGEN_CPU_DESC cpu_desc;
|
|
#define CPU_CPU_DESC(cpu) ((cpu)->cgen_cpu.cpu_desc)
|
|
|
|
/* Function to fetch the insn data entry in the IDESC. */
|
|
const CGEN_INSN * (*get_idata) (SIM_CPU *, int);
|
|
#define CPU_GET_IDATA(cpu) ((cpu)->cgen_cpu.get_idata)
|
|
|
|
/* Floating point support. */
|
|
CGEN_FPU fpu;
|
|
#define CGEN_CPU_FPU(cpu) (& (cpu)->cgen_cpu.fpu)
|
|
|
|
/* Disassembler. */
|
|
CGEN_DISASSEMBLER *disassembler;
|
|
#define CPU_DISASSEMBLER(cpu) ((cpu)->cgen_cpu.disassembler)
|
|
|
|
/* Queued writes for parallel write-after support. */
|
|
CGEN_WRITE_QUEUE write_queue;
|
|
#define CPU_WRITE_QUEUE(cpu) (& (cpu)->cgen_cpu.write_queue)
|
|
|
|
/* Allow slop in size calcs for case where multiple cpu types are supported
|
|
and space for the specified cpu is malloc'd at run time. */
|
|
double slop;
|
|
} CGEN_CPU;
|
|
|
|
/* Shorthand macro for fetching registers.
|
|
CPU_CGEN_HW is defined in cpu.h. */
|
|
#define CPU(x) (CPU_CGEN_HW (current_cpu)->x)
|
|
|
|
#endif /* CGEN_CPU_H */
|