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 ---