17087Snate@binkert.org// Copyright (c) 2007-2008 The Hewlett-Packard Development Company
27087Snate@binkert.org// All rights reserved.
37087Snate@binkert.org//
47087Snate@binkert.org// The license below extends only to copyright in the software and shall
57087Snate@binkert.org// not be construed as granting a license to any other intellectual
67087Snate@binkert.org// property including but not limited to intellectual property relating
77087Snate@binkert.org// to a hardware implementation of the functionality of the software
87087Snate@binkert.org// licensed hereunder.  You may use the software subject to the license
97087Snate@binkert.org// terms below provided that you ensure that this notice is replicated
107087Snate@binkert.org// unmodified and in its entirety in all distributions of the software,
117087Snate@binkert.org// modified or unmodified, in source code or in binary form.
127087Snate@binkert.org//
134158Sgblack@eecs.umich.edu// Copyright (c) 2007 The Regents of The University of Michigan
144158Sgblack@eecs.umich.edu// All rights reserved.
154158Sgblack@eecs.umich.edu//
164158Sgblack@eecs.umich.edu// Redistribution and use in source and binary forms, with or without
174158Sgblack@eecs.umich.edu// modification, are permitted provided that the following conditions are
184158Sgblack@eecs.umich.edu// met: redistributions of source code must retain the above copyright
194158Sgblack@eecs.umich.edu// notice, this list of conditions and the following disclaimer;
204158Sgblack@eecs.umich.edu// redistributions in binary form must reproduce the above copyright
214158Sgblack@eecs.umich.edu// notice, this list of conditions and the following disclaimer in the
224158Sgblack@eecs.umich.edu// documentation and/or other materials provided with the distribution;
234158Sgblack@eecs.umich.edu// neither the name of the copyright holders nor the names of its
244158Sgblack@eecs.umich.edu// contributors may be used to endorse or promote products derived from
254158Sgblack@eecs.umich.edu// this software without specific prior written permission.
264158Sgblack@eecs.umich.edu//
274158Sgblack@eecs.umich.edu// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
284158Sgblack@eecs.umich.edu// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
294158Sgblack@eecs.umich.edu// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
304158Sgblack@eecs.umich.edu// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
314158Sgblack@eecs.umich.edu// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
324158Sgblack@eecs.umich.edu// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
334158Sgblack@eecs.umich.edu// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
344158Sgblack@eecs.umich.edu// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
354158Sgblack@eecs.umich.edu// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
364158Sgblack@eecs.umich.edu// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
374158Sgblack@eecs.umich.edu// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
384158Sgblack@eecs.umich.edu//
394158Sgblack@eecs.umich.edu// Authors: Gabe Black
404158Sgblack@eecs.umich.edu
414158Sgblack@eecs.umich.edu////////////////////////////////////////////////////////////////////
424158Sgblack@eecs.umich.edu//
434323Sgblack@eecs.umich.edu// Output include file directives. Also import the python modules we
444323Sgblack@eecs.umich.edu// need for all the x86 custom decoder stuff
454158Sgblack@eecs.umich.edu//
464158Sgblack@eecs.umich.edu
474323Sgblack@eecs.umich.edulet {{
484323Sgblack@eecs.umich.edu    import copy
494323Sgblack@eecs.umich.edu}};
504323Sgblack@eecs.umich.edu
514158Sgblack@eecs.umich.eduoutput header {{
5211328Ssteve.reinhardt@amd.com#include <array>
534158Sgblack@eecs.umich.edu#include <cstring>
548229Snate@binkert.org#include <iostream>
554158Sgblack@eecs.umich.edu#include <sstream>
564158Sgblack@eecs.umich.edu
577965Sgblack@eecs.umich.edu#include "arch/generic/debugfaults.hh"
585786Sgblack@eecs.umich.edu#include "arch/x86/insts/macroop.hh"
595083Sgblack@eecs.umich.edu#include "arch/x86/insts/microfpop.hh"
604679Sgblack@eecs.umich.edu#include "arch/x86/insts/microldstop.hh"
616516Sgblack@eecs.umich.edu#include "arch/x86/insts/micromediaop.hh"
624679Sgblack@eecs.umich.edu#include "arch/x86/insts/microregop.hh"
634679Sgblack@eecs.umich.edu#include "arch/x86/insts/static_inst.hh"
648229Snate@binkert.org#include "arch/x86/emulenv.hh"
654158Sgblack@eecs.umich.edu#include "arch/x86/isa_traits.hh"
666329Sgblack@eecs.umich.edu#include "arch/x86/registers.hh"
674528Sgblack@eecs.umich.edu#include "arch/x86/types.hh"
689764Sandreas@sandberg.pp.se#include "arch/x86/utility.hh"
6912334Sgabeblack@google.com#include "base/logging.hh"
704158Sgblack@eecs.umich.edu#include "cpu/static_inst.hh"
714158Sgblack@eecs.umich.edu#include "mem/packet.hh"
724616Sgblack@eecs.umich.edu#include "sim/faults.hh"
736345Sgblack@eecs.umich.edu
746345Sgblack@eecs.umich.eduusing X86ISA::InstRegIndex;
754158Sgblack@eecs.umich.edu}};
764158Sgblack@eecs.umich.edu
774158Sgblack@eecs.umich.eduoutput decoder {{
789022Sgblack@eecs.umich.edu#include "arch/x86/decoder.hh"
797629Sgblack@eecs.umich.edu#include "arch/x86/regs/float.hh"
807629Sgblack@eecs.umich.edu#include "arch/x86/regs/misc.hh"
817629Sgblack@eecs.umich.edu#include "arch/x86/regs/segment.hh"
828229Snate@binkert.org#include "arch/x86/faults.hh"
838229Snate@binkert.org#include "arch/x86/microcode_rom.hh"
845912Sgblack@eecs.umich.edu#include "arch/x86/tlb.hh"
858229Snate@binkert.org#include "base/loader/symtab.hh"
864158Sgblack@eecs.umich.edu#include "base/cprintf.hh"
8712334Sgabeblack@google.com#include "base/logging.hh"
884158Sgblack@eecs.umich.edu#include "cpu/thread_context.hh"  // for Jump::branchTarget()
894158Sgblack@eecs.umich.edu#include "mem/packet.hh"
908738Sgblack@eecs.umich.edu#include "sim/full_system.hh"
914158Sgblack@eecs.umich.edu
924158Sgblack@eecs.umich.edu#if defined(linux) || defined(__APPLE__)
934158Sgblack@eecs.umich.edu#include <fenv.h>
944158Sgblack@eecs.umich.edu#endif
954158Sgblack@eecs.umich.edu#include <algorithm>
964158Sgblack@eecs.umich.edu
974158Sgblack@eecs.umich.eduusing namespace X86ISA;
984158Sgblack@eecs.umich.edu}};
994158Sgblack@eecs.umich.edu
1004158Sgblack@eecs.umich.eduoutput exec {{
1014158Sgblack@eecs.umich.edu#if defined(linux) || defined(__APPLE__)
1024158Sgblack@eecs.umich.edu#include <fenv.h>
1034158Sgblack@eecs.umich.edu#endif
1044158Sgblack@eecs.umich.edu
1054158Sgblack@eecs.umich.edu#if defined(__sun) || defined (__OpenBSD__)
1064158Sgblack@eecs.umich.edu#include <ieeefp.h>
1074158Sgblack@eecs.umich.edu#endif
1084158Sgblack@eecs.umich.edu
1098229Snate@binkert.org#include <cmath>
1104158Sgblack@eecs.umich.edu#include <limits>
1114158Sgblack@eecs.umich.edu
1128857Sgblack@eecs.umich.edu#include "arch/generic/debugfaults.hh"
1138229Snate@binkert.org#include "arch/x86/regs/misc.hh"
1145659Sgblack@eecs.umich.edu#include "arch/x86/cpuid.hh"
1156336Sgblack@eecs.umich.edu#include "arch/x86/faults.hh"
1168442Sgblack@eecs.umich.edu#include "arch/x86/memhelpers.hh"
1175118Sgblack@eecs.umich.edu#include "arch/x86/tlb.hh"
1187969Sgblack@eecs.umich.edu#include "base/compiler.hh"
1196570Sgblack@eecs.umich.edu#include "base/condcodes.hh"
1204158Sgblack@eecs.umich.edu#include "cpu/base.hh"
1214158Sgblack@eecs.umich.edu#include "cpu/exetrace.hh"
1228232Snate@binkert.org#include "debug/X86.hh"
1234158Sgblack@eecs.umich.edu#include "mem/packet.hh"
1244158Sgblack@eecs.umich.edu#include "mem/packet_access.hh"
1255920Sgblack@eecs.umich.edu#include "mem/request.hh"
1265789Sgblack@eecs.umich.edu#include "sim/pseudo_inst.hh"
1278229Snate@binkert.org#include "sim/sim_exit.hh"
1284158Sgblack@eecs.umich.edu
1294158Sgblack@eecs.umich.eduusing namespace X86ISA;
1304158Sgblack@eecs.umich.eduusing namespace std;
1314158Sgblack@eecs.umich.edu}};
1324158Sgblack@eecs.umich.edu
133