microcode_rom.hh (5664:3b3756efad89) microcode_rom.hh (5666:e7925fa8f0d6)
1/*
2 * Copyright (c) 2008 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 17 unchanged lines hidden (view full) ---

26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 * Authors: Gabe Black
29 */
30
31#ifndef __ARCH_X86_MICROCODE_ROM_HH__
32#define __ARCH_X86_MICROCODE_ROM_HH__
33
1/*
2 * Copyright (c) 2008 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 17 unchanged lines hidden (view full) ---

26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 * Authors: Gabe Black
29 */
30
31#ifndef __ARCH_X86_MICROCODE_ROM_HH__
32#define __ARCH_X86_MICROCODE_ROM_HH__
33
34#include "sim/microcode_rom.hh"
34#include "arch/x86/emulenv.hh"
35#include "cpu/static_inst.hh"
35
36
37namespace X86ISAInst
38{
39 class MicrocodeRom
40 {
41 protected:
42
43 typedef StaticInstPtr (*GenFunc)(StaticInstPtr);
44
45 static const MicroPC numMicroops;
46
47 GenFunc * genFuncs;
48
49 public:
50 //Constructor.
51 MicrocodeRom();
52
53 //Destructor.
54 ~MicrocodeRom()
55 {
56 delete [] genFuncs;
57 }
58
59 StaticInstPtr
60 fetchMicroop(MicroPC microPC, StaticInstPtr curMacroop)
61 {
62 microPC = normalMicroPC(microPC);
63 assert(microPC < numMicroops);
64 return genFuncs[microPC](curMacroop);
65 }
66 };
67}
68
36namespace X86ISA
37{
69namespace X86ISA
70{
38 using ::MicrocodeRom;
71 using X86ISAInst::MicrocodeRom;
39}
40
41#endif // __ARCH_X86_MICROCODE_ROM_HH__
72}
73
74#endif // __ARCH_X86_MICROCODE_ROM_HH__