Deleted Added
sdiff udiff text old ( 4539:6eeeea62b7c4 ) new ( 4590:5c3813b700a3 )
full compact
1// Copyright (c) 2007 The Hewlett-Packard Development Company
2// All rights reserved.
3//
4// Redistribution and use of this software in source and binary forms,
5// with or without modification, are permitted provided that the
6// following conditions are met:
7//
8// The software must be used only for Non-Commercial Use which means any

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

54// Authors: Gabe Black
55
56//////////////////////////////////////////////////////////////////////////
57//
58// Fault Microop
59//
60//////////////////////////////////////////////////////////////////////////
61
62def template MicroFaultExecute {{
63 Fault %(class_name)s ::execute(%(CPU_exec_context)s *xc,
64 Trace::InstRecord *traceData) const
65 {
66 //Return the fault we were constructed with
67 return fault;
68 }
69}};
70
71def template MicroFaultDeclare {{
72 class %(class_name)s : public X86MicroopBase
73 {
74 protected:
75 Fault fault;
76 void buildMe();
77
78 public:
79 %(class_name)s(ExtMachInst _machInst,
80 const char * instMnem,
81 bool isMicro, bool isDelayed, bool isFirst, bool isLast,
82 Fault _fault);
83
84 %(class_name)s(ExtMachInst _machInst,
85 const char * instMnem,
86 Fault _fault);
87
88 %(BasicExecDeclare)s
89 };
90}};
91
92def template MicroFaultConstructor {{
93
94 inline void %(class_name)s::buildMe()
95 {
96 %(constructor)s;
97 }
98
99 inline %(class_name)s::%(class_name)s(
100 ExtMachInst machInst, const char * instMnem, Fault _fault) :
101 %(base_class)s(machInst, "%(mnemonic)s", instMnem,
102 false, false, false, false, %(op_class)s), fault(_fault)
103 {
104 buildMe();
105 }
106
107 inline %(class_name)s::%(class_name)s(
108 ExtMachInst machInst, const char * instMnem,
109 bool isMicro, bool isDelayed, bool isFirst, bool isLast,
110 Fault _fault) :
111 %(base_class)s(machInst, "%(mnemonic)s", instMnem,
112 isMicro, isDelayed, isFirst, isLast, %(op_class)s),
113 fault(_fault)
114 {
115 buildMe();
116 }
117}};
118
119let {{
120 # This microop takes in a single parameter, a fault to return.
121 iop = InstObjParams("fault", "GenFault", 'X86MicroopBase', {"code" : ""})
122 header_output += MicroFaultDeclare.subst(iop)
123 decoder_output += MicroFaultConstructor.subst(iop)
124 exec_output += MicroFaultExecute.subst(iop)
125}};