1// Copyright (c) 2008 The Hewlett-Packard Development Company 2// All rights reserved. 3// 4// The license below extends only to copyright in the software and shall 5// not be construed as granting a license to any other intellectual 6// property including but not limited to intellectual property relating 7// to a hardware implementation of the functionality of the software 8// licensed hereunder. You may use the software subject to the license --- 36 unchanged lines hidden (view full) --- 45 class MicroDebugBase : public X86ISA::X86MicroopBase 46 { 47 protected: 48 std::string message; 49 uint8_t cc; 50 51 public: 52 MicroDebugBase(ExtMachInst _machInst, const char * mnem, |
53 const char * instMnem, uint64_t setFlags, |
54 std::string _message, uint8_t _cc); 55 56 MicroDebugBase(ExtMachInst _machInst, const char * mnem, 57 const char * instMnem, std::string _message, uint8_t _cc); 58 59 std::string generateDisassembly(Addr pc, 60 const SymbolTable *symtab) const; 61 }; 62}}; 63 64def template MicroDebugDeclare {{ 65 class %(class_name)s : public %(base_class)s 66 { 67 private: 68 void buildMe(); 69 public: 70 %(class_name)s(ExtMachInst _machInst, const char * instMnem, |
71 uint64_t setFlags, std::string _message, uint8_t _cc); |
72 73 %(class_name)s(ExtMachInst _machInst, const char * instMnem, 74 std::string _message, uint8_t _cc); 75 76 %(BasicExecDeclare)s 77 }; 78}}; 79 --- 9 unchanged lines hidden (view full) --- 89 return NoFault; 90 } 91}}; 92 93output decoder {{ 94 inline MicroDebugBase::MicroDebugBase( 95 ExtMachInst machInst, const char * mnem, const char * instMnem, 96 std::string _message, uint8_t _cc) : |
97 X86MicroopBase(machInst, mnem, instMnem, 0, No_OpClass), |
98 message(_message), cc(_cc) 99 { 100 } 101 102 inline MicroDebugBase::MicroDebugBase( 103 ExtMachInst machInst, const char * mnem, const char * instMnem, |
104 uint64_t setFlags, std::string _message, uint8_t _cc) : |
105 X86MicroopBase(machInst, mnem, instMnem, |
106 setFlags, No_OpClass), |
107 message(_message), cc(_cc) 108 { 109 } 110}}; 111 112def template MicroDebugConstructor {{ 113 114 inline void %(class_name)s::buildMe() --- 5 unchanged lines hidden (view full) --- 120 ExtMachInst machInst, const char * instMnem, 121 std::string _message, uint8_t _cc) : 122 %(base_class)s(machInst, "%(func)s", instMnem, _message, _cc) 123 { 124 buildMe(); 125 } 126 127 inline %(class_name)s::%(class_name)s( |
128 ExtMachInst machInst, const char * instMnem, uint64_t setFlags, |
129 std::string _message, uint8_t _cc) : 130 %(base_class)s(machInst, "%(func)s", instMnem, |
131 setFlags, _message, _cc) |
132 { 133 buildMe(); 134 } 135}}; 136 137output decoder {{ 138 std::string MicroDebugBase::generateDisassembly(Addr pc, 139 const SymbolTable *symtab) const --- 14 unchanged lines hidden (view full) --- 154 if flags: 155 if not isinstance(flags, (list, tuple)): 156 raise Exception, "flags must be a list or tuple of flags" 157 self.cond = " | ".join(flags) 158 self.className += "Flags" 159 else: 160 self.cond = "0" 161 |
162 def getAllocator(self, microFlags): 163 allocator = '''new %(class_name)s(machInst, macrocodeBlock, |
164 %(flags)s, "%(message)s", %(cc)s)''' % { 165 "class_name" : self.className, 166 "flags" : self.microFlagsText(microFlags), 167 "message" : self.message, 168 "cc" : self.cond} 169 return allocator 170 171 exec_output = "" --- 35 unchanged lines hidden --- |