trap.isa revision 2224
1////////////////////////////////////////////////////////////////////
2//
3// Trap instructions
4//
5
6output header {{
7        /**
8         * Base class for integer operations.
9         */
10        class Trap : public SparcStaticInst
11        {
12          protected:
13
14            // Constructor
15            Trap(const char *mnem, MachInst _machInst, OpClass __opClass) :
16                SparcStaticInst(mnem, _machInst, __opClass)
17            {
18            }
19
20            std::string generateDisassembly(Addr pc,
21                    const SymbolTable *symtab) const;
22        };
23}};
24
25output decoder {{
26        std::string Trap::generateDisassembly(Addr pc,
27                const SymbolTable *symtab) const
28        {
29            return "Trap instruction\n";
30        }
31}};
32
33def template TrapExecute {{
34        Fault %(class_name)s::execute(%(CPU_exec_context)s *xc,
35                Trace::InstRecord *traceData) const
36        {
37            //TODO: set up a software fault and return it.
38            return NoFault;
39        }
40}};
41
42// Primary format for integer operate instructions:
43def format Trap(code, *opt_flags) {{
44        orig_code = code
45        cblk = CodeBlock(code)
46        iop = InstObjParams(name, Name, 'SparcStaticInst', cblk, opt_flags)
47        header_output = BasicDeclare.subst(iop)
48        decoder_output = BasicConstructor.subst(iop)
49        decode_block = BasicDecodeWithMnemonic.subst(iop)
50        exec_output = TrapExecute.subst(iop)
51}};
52