mem.isa (12328:95ba4611788a) | mem.isa (12385:288c62455dde) |
---|---|
1// -*- mode:c++ -*- 2 3// Copyright (c) 2015 RISC-V Foundation 4// Copyright (c) 2016 The University of Virginia 5// All rights reserved. 6// 7// Redistribution and use in source and binary forms, with or without 8// modification, are permitted provided that the following conditions are --- 30 unchanged lines hidden (view full) --- 39 */ 40 class %(class_name)s : public %(base_class)s 41 { 42 public: 43 /// Constructor. 44 %(class_name)s(ExtMachInst machInst); 45 46 Fault execute(ExecContext *, Trace::InstRecord *) const; | 1// -*- mode:c++ -*- 2 3// Copyright (c) 2015 RISC-V Foundation 4// Copyright (c) 2016 The University of Virginia 5// All rights reserved. 6// 7// Redistribution and use in source and binary forms, with or without 8// modification, are permitted provided that the following conditions are --- 30 unchanged lines hidden (view full) --- 39 */ 40 class %(class_name)s : public %(base_class)s 41 { 42 public: 43 /// Constructor. 44 %(class_name)s(ExtMachInst machInst); 45 46 Fault execute(ExecContext *, Trace::InstRecord *) const; |
47 Fault eaComp(ExecContext *, Trace::InstRecord *) const; | |
48 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const; 49 Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const; 50 }; 51}}; 52 53 54def template LoadStoreConstructor {{ 55 %(class_name)s::%(class_name)s(ExtMachInst machInst): 56 %(base_class)s("%(mnemonic)s", machInst, %(op_class)s) 57 { 58 %(constructor)s; 59 %(offset_code)s; 60 } 61}}; 62 | 47 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const; 48 Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const; 49 }; 50}}; 51 52 53def template LoadStoreConstructor {{ 54 %(class_name)s::%(class_name)s(ExtMachInst machInst): 55 %(base_class)s("%(mnemonic)s", machInst, %(op_class)s) 56 { 57 %(constructor)s; 58 %(offset_code)s; 59 } 60}}; 61 |
63def template EACompExecute {{ 64 Fault 65 %(class_name)s::eaComp(ExecContext *xc, Trace::InstRecord *traceData) const 66 { 67 Addr EA; 68 Fault fault = NoFault; 69 70 %(op_decl)s; 71 %(op_rd)s; 72 %(ea_code)s; 73 74 if (fault == NoFault) { 75 %(op_wb)s; 76 xc->setEA(EA); 77 } 78 79 return fault; 80 } 81}}; 82 | |
83let {{ 84def LoadStoreBase(name, Name, offset_code, ea_code, memacc_code, mem_flags, 85 inst_flags, base_class, postacc_code='', decode_template=BasicDecode, 86 exec_template_base=''): 87 # Make sure flags are in lists (convert to lists if not). 88 mem_flags = makeList(mem_flags) 89 inst_flags = makeList(inst_flags) 90 --- 13 unchanged lines hidden (view full) --- 104 initiateAccTemplate = eval(exec_template_base + 'InitiateAcc') 105 completeAccTemplate = eval(exec_template_base + 'CompleteAcc') 106 107 # (header_output, decoder_output, decode_block, exec_output) 108 return (LoadStoreDeclare.subst(iop), 109 LoadStoreConstructor.subst(iop), 110 decode_template.subst(iop), 111 fullExecTemplate.subst(iop) + | 62let {{ 63def LoadStoreBase(name, Name, offset_code, ea_code, memacc_code, mem_flags, 64 inst_flags, base_class, postacc_code='', decode_template=BasicDecode, 65 exec_template_base=''): 66 # Make sure flags are in lists (convert to lists if not). 67 mem_flags = makeList(mem_flags) 68 inst_flags = makeList(inst_flags) 69 --- 13 unchanged lines hidden (view full) --- 83 initiateAccTemplate = eval(exec_template_base + 'InitiateAcc') 84 completeAccTemplate = eval(exec_template_base + 'CompleteAcc') 85 86 # (header_output, decoder_output, decode_block, exec_output) 87 return (LoadStoreDeclare.subst(iop), 88 LoadStoreConstructor.subst(iop), 89 decode_template.subst(iop), 90 fullExecTemplate.subst(iop) + |
112 EACompExecute.subst(iop) + | |
113 initiateAccTemplate.subst(iop) + 114 completeAccTemplate.subst(iop)) 115}}; 116 117def template LoadExecute {{ 118 Fault 119 %(class_name)s::execute( 120 ExecContext *xc, Trace::InstRecord *traceData) const --- 151 unchanged lines hidden --- | 91 initiateAccTemplate.subst(iop) + 92 completeAccTemplate.subst(iop)) 93}}; 94 95def template LoadExecute {{ 96 Fault 97 %(class_name)s::execute( 98 ExecContext *xc, Trace::InstRecord *traceData) const --- 151 unchanged lines hidden --- |