/* Main header file for Cpu tools GENerated simulators.
   Copyright (C) 1998 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 2, 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, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */

/* This file must be included after sim-base.h.  */

#ifndef CGEN_SIM_H
#define CGEN_SIM_H

#include "cgen-defs.h"
#include "cgen-scache.h"
#include "cgen-fpu.h"
#include "cgen-par.h"
#include "cgen-cpu.h"
#include "cgen-trace.h"

/* This is a machine generated file.  */
#include "cpuall.h"

#endif /* CGEN_SIM_H */
