unimp.isa (12236:126ac9da6050) unimp.isa (12616:4b463b4dc098)
1// -*- mode:c++ -*-
2
3// Copyright (c) 2007 MIPS Technologies, Inc.
4// All rights reserved.
5//
6// Redistribution and use in source and binary forms, with or without
7// modification, are permitted provided that the following conditions are
8// met: redistributions of source code must retain the above copyright

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

48 FailUnimplemented(const char *_mnemonic, MachInst _machInst)
49 : MipsStaticInst(_mnemonic, _machInst, No_OpClass)
50 {
51 // don't call execute() (which panics) if we're on a
52 // speculative path
53 flags[IsNonSpeculative] = true;
54 }
55
1// -*- mode:c++ -*-
2
3// Copyright (c) 2007 MIPS Technologies, Inc.
4// All rights reserved.
5//
6// Redistribution and use in source and binary forms, with or without
7// modification, are permitted provided that the following conditions are
8// met: redistributions of source code must retain the above copyright

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

48 FailUnimplemented(const char *_mnemonic, MachInst _machInst)
49 : MipsStaticInst(_mnemonic, _machInst, No_OpClass)
50 {
51 // don't call execute() (which panics) if we're on a
52 // speculative path
53 flags[IsNonSpeculative] = true;
54 }
55
56 Fault execute(ExecContext *, Trace::InstRecord *) const;
56 Fault execute(ExecContext *, Trace::InstRecord *) const override;
57
57
58 std::string
59 generateDisassembly(Addr pc, const SymbolTable *symtab) const;
58 std::string generateDisassembly(
59 Addr pc, const SymbolTable *symtab) const override;
60 };
61 class CP0Unimplemented : public MipsStaticInst
62 {
63 public:
64 /// Constructor
65 CP0Unimplemented(const char *_mnemonic, MachInst _machInst)
66 : MipsStaticInst(_mnemonic, _machInst, No_OpClass)
67 {
68 // don't call execute() (which panics) if we're on a
69 // speculative path
70 flags[IsNonSpeculative] = true;
71 }
72
60 };
61 class CP0Unimplemented : public MipsStaticInst
62 {
63 public:
64 /// Constructor
65 CP0Unimplemented(const char *_mnemonic, MachInst _machInst)
66 : MipsStaticInst(_mnemonic, _machInst, No_OpClass)
67 {
68 // don't call execute() (which panics) if we're on a
69 // speculative path
70 flags[IsNonSpeculative] = true;
71 }
72
73 Fault execute(ExecContext *, Trace::InstRecord *) const;
73 Fault execute(ExecContext *, Trace::InstRecord *) const override;
74
74
75 std::string
76 generateDisassembly(Addr pc, const SymbolTable *symtab) const;
75 std::string generateDisassembly(
76 Addr pc, const SymbolTable *symtab) const override;
77 };
78 class CP1Unimplemented : public MipsStaticInst
79 {
80 public:
81 /// Constructor
82 CP1Unimplemented(const char *_mnemonic, MachInst _machInst)
83 : MipsStaticInst(_mnemonic, _machInst, No_OpClass)
84 {
85 // don't call execute() (which panics) if we're on a
86 // speculative path
87 flags[IsNonSpeculative] = true;
88 }
89
77 };
78 class CP1Unimplemented : public MipsStaticInst
79 {
80 public:
81 /// Constructor
82 CP1Unimplemented(const char *_mnemonic, MachInst _machInst)
83 : MipsStaticInst(_mnemonic, _machInst, No_OpClass)
84 {
85 // don't call execute() (which panics) if we're on a
86 // speculative path
87 flags[IsNonSpeculative] = true;
88 }
89
90 Fault execute(ExecContext *, Trace::InstRecord *) const;
90 Fault execute(ExecContext *, Trace::InstRecord *) const override;
91
91
92 std::string
93 generateDisassembly(Addr pc, const SymbolTable *symtab) const;
92 std::string generateDisassembly(
93 Addr pc, const SymbolTable *symtab) const override;
94 };
95 class CP2Unimplemented : public MipsStaticInst
96 {
97 public:
98 /// Constructor
99 CP2Unimplemented(const char *_mnemonic, MachInst _machInst)
100 : MipsStaticInst(_mnemonic, _machInst, No_OpClass)
101 {
102 // don't call execute() (which panics) if we're on a
103 // speculative path
104 flags[IsNonSpeculative] = true;
105 }
106
94 };
95 class CP2Unimplemented : public MipsStaticInst
96 {
97 public:
98 /// Constructor
99 CP2Unimplemented(const char *_mnemonic, MachInst _machInst)
100 : MipsStaticInst(_mnemonic, _machInst, No_OpClass)
101 {
102 // don't call execute() (which panics) if we're on a
103 // speculative path
104 flags[IsNonSpeculative] = true;
105 }
106
107 Fault execute(ExecContext *, Trace::InstRecord *) const;
107 Fault execute(ExecContext *, Trace::InstRecord *) const override;
108
108
109 std::string
110 generateDisassembly(Addr pc, const SymbolTable *symtab) const;
109 std::string generateDisassembly(
110 Addr pc, const SymbolTable *symtab) const override;
111 };
112
113 /**
114 * Base class for unimplemented instructions that cause a warning
115 * to be printed (but do not terminate simulation). This
116 * implementation is a little screwy in that it will print a
117 * warning for each instance of a particular unimplemented machine
118 * instruction, not just for each unimplemented opcode. Should

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

130 WarnUnimplemented(const char *_mnemonic, MachInst _machInst)
131 : MipsStaticInst(_mnemonic, _machInst, No_OpClass), warned(false)
132 {
133 // don't call execute() (which panics) if we're on a
134 // speculative path
135 flags[IsNonSpeculative] = true;
136 }
137
111 };
112
113 /**
114 * Base class for unimplemented instructions that cause a warning
115 * to be printed (but do not terminate simulation). This
116 * implementation is a little screwy in that it will print a
117 * warning for each instance of a particular unimplemented machine
118 * instruction, not just for each unimplemented opcode. Should

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

130 WarnUnimplemented(const char *_mnemonic, MachInst _machInst)
131 : MipsStaticInst(_mnemonic, _machInst, No_OpClass), warned(false)
132 {
133 // don't call execute() (which panics) if we're on a
134 // speculative path
135 flags[IsNonSpeculative] = true;
136 }
137
138 Fault execute(ExecContext *, Trace::InstRecord *) const;
138 Fault execute(ExecContext *, Trace::InstRecord *) const override;
139
139
140 std::string
141 generateDisassembly(Addr pc, const SymbolTable *symtab) const;
140 std::string generateDisassembly(
141 Addr pc, const SymbolTable *symtab) const override;
142 };
143}};
144
145output decoder {{
146 std::string
147 FailUnimplemented::generateDisassembly(Addr pc,
148 const SymbolTable *symtab) const
149 {

--- 129 unchanged lines hidden ---
142 };
143}};
144
145output decoder {{
146 std::string
147 FailUnimplemented::generateDisassembly(Addr pc,
148 const SymbolTable *symtab) const
149 {

--- 129 unchanged lines hidden ---