summaryrefslogtreecommitdiff
path: root/arch/sparc/isa/formats/branch.isa
diff options
context:
space:
mode:
authorKevin Lim <ktlim@umich.edu>2006-03-07 20:01:34 -0500
committerKevin Lim <ktlim@umich.edu>2006-03-07 20:01:34 -0500
commit97c4a84985b0f9168f60f28d5cc96be448eef4fa (patch)
tree5d385f2410979c4b4b2164686c87b8a083ad108d /arch/sparc/isa/formats/branch.isa
parent11aead894d4186916b587b1449075f276319a235 (diff)
parentab67095b2a43b5f2d44d1e1a517d1079ddf9f104 (diff)
downloadgem5-97c4a84985b0f9168f60f28d5cc96be448eef4fa.tar.xz
Merge ktlim@zizzer:/bk/m5
into zamp.eecs.umich.edu:/z/ktlim2/m5-proxyxc arch/alpha/faults.cc: Hand merge. --HG-- rename : arch/alpha/linux_process.cc => arch/alpha/linux/process.cc rename : arch/alpha/tru64_process.cc => arch/alpha/tru64/process.cc extra : convert_revision : 6ea1fae5be0ebd02eff330423d16da63b790516d
Diffstat (limited to 'arch/sparc/isa/formats/branch.isa')
-rw-r--r--arch/sparc/isa/formats/branch.isa48
1 files changed, 22 insertions, 26 deletions
diff --git a/arch/sparc/isa/formats/branch.isa b/arch/sparc/isa/formats/branch.isa
index c4c0a90af..80101de1b 100644
--- a/arch/sparc/isa/formats/branch.isa
+++ b/arch/sparc/isa/formats/branch.isa
@@ -9,48 +9,44 @@ output header {{
*/
class Branch : public SparcStaticInst
{
- protected:
-
- /// Constructor
- Branch(const char *mnem, MachInst _machInst, OpClass __opClass) : SparcStaticInst(mnem, _machInst, __opClass)
- {
- }
-
- std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
+ protected:
+ // Constructor
+ Branch(const char *mnem, MachInst _machInst, OpClass __opClass) :
+ SparcStaticInst(mnem, _machInst, __opClass)
+ {
+ }
+
+ std::string generateDisassembly(Addr pc,
+ const SymbolTable *symtab) const;
};
}};
output decoder {{
std::string Branch::generateDisassembly(Addr pc, const SymbolTable *symtab) const
{
- return "Disassembly of integer instruction\n";
+ return "Branch instruction\n";
}
}};
def template BranchExecute {{
- Fault %(class_name)s::execute(%(CPU_exec_context)s *xc, Trace::InstRecord *traceData) const
+ Fault %(class_name)s::execute(%(CPU_exec_context)s *xc,
+ Trace::InstRecord *traceData) const
{
- //Attempt to execute the instruction
- try
- {
- checkPriv;
+ //Attempt to execute the instruction
+ Fault fault = NoFault;
+ checkPriv;
- %(op_decl)s;
- %(op_rd)s;
- %(code)s;
- }
- //If we have an exception for some reason,
- //deal with it
- catch(SparcException except)
- {
- //Deal with exception
- return No_Fault;
- }
+ %(op_decl)s;
+ %(op_rd)s;
+ %(code)s;
+ if(fault == NoFault)
+ {
//Write the resulting state to the execution context
%(op_wb)s;
+ }
- return No_Fault;
+ return fault;
}
}};