192a193,263
> def template StoreExExecute {{
> Fault %(class_name)s::execute(%(CPU_exec_context)s *xc,
> Trace::InstRecord *traceData) const
> {
> Addr EA;
> Fault fault = NoFault;
>
> %(op_decl)s;
> %(op_rd)s;
> %(ea_code)s;
>
> if (%(predicate_test)s)
> {
> if (fault == NoFault) {
> %(memacc_code)s;
> }
>
> uint64_t writeResult;
>
> if (fault == NoFault) {
> fault = xc->write((uint%(mem_acc_size)d_t&)Mem, EA,
> memAccessFlags, &writeResult);
> if (traceData) { traceData->setData(Mem); }
> }
>
> if (fault == NoFault) {
> %(postacc_code)s;
> }
>
> if (fault == NoFault) {
> %(op_wb)s;
> }
> }
>
> return fault;
> }
> }};
>
> def template StoreExInitiateAcc {{
> Fault %(class_name)s::initiateAcc(%(CPU_exec_context)s *xc,
> Trace::InstRecord *traceData) const
> {
> Addr EA;
> Fault fault = NoFault;
>
> %(op_decl)s;
> %(op_rd)s;
> %(ea_code)s;
>
> if (%(predicate_test)s)
> {
> if (fault == NoFault) {
> %(memacc_code)s;
> }
>
> if (fault == NoFault) {
> fault = xc->write((uint%(mem_acc_size)d_t&)Mem, EA,
> memAccessFlags, NULL);
> if (traceData) { traceData->setData(Mem); }
> }
>
> // Need to write back any potential address register update
> if (fault == NoFault) {
> %(op_wb)s;
> }
> }
>
> return fault;
> }
> }};
>
296a368,391
> def template StoreExCompleteAcc {{
> Fault %(class_name)s::completeAcc(PacketPtr pkt,
> %(CPU_exec_context)s *xc,
> Trace::InstRecord *traceData) const
> {
> Fault fault = NoFault;
>
> %(op_decl)s;
> %(op_rd)s;
>
> if (%(predicate_test)s)
> {
> uint64_t writeResult = pkt->req->getExtraData();
> %(postacc_code)s;
>
> if (fault == NoFault) {
> %(op_wb)s;
> }
> }
>
> return fault;
> }
> }};
>
357a453,473
> def template StoreExDImmDeclare {{
> /**
> * Static instruction class for "%(mnemonic)s".
> */
> class %(class_name)s : public %(base_class)s
> {
> public:
>
> /// Constructor.
> %(class_name)s(ExtMachInst machInst,
> uint32_t _result, uint32_t _dest, uint32_t _dest2,
> uint32_t _base, bool _add, int32_t _imm);
>
> %(BasicExecDeclare)s
>
> %(InitiateAccDeclare)s
>
> %(CompleteAccDeclare)s
> };
> }};
>
377a494,514
> def template StoreExImmDeclare {{
> /**
> * Static instruction class for "%(mnemonic)s".
> */
> class %(class_name)s : public %(base_class)s
> {
> public:
>
> /// Constructor.
> %(class_name)s(ExtMachInst machInst,
> uint32_t _result, uint32_t _dest, uint32_t _base,
> bool _add, int32_t _imm);
>
> %(BasicExecDeclare)s
>
> %(InitiateAccDeclare)s
>
> %(CompleteAccDeclare)s
> };
> }};
>
462a600,612
> def template StoreExDImmConstructor {{
> inline %(class_name)s::%(class_name)s(ExtMachInst machInst,
> uint32_t _result, uint32_t _dest, uint32_t _dest2,
> uint32_t _base, bool _add, int32_t _imm)
> : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s,
> (IntRegIndex)_result,
> (IntRegIndex)_dest, (IntRegIndex)_dest2,
> (IntRegIndex)_base, _add, _imm)
> {
> %(constructor)s;
> }
> }};
>
472a623,634
> def template StoreExImmConstructor {{
> inline %(class_name)s::%(class_name)s(ExtMachInst machInst,
> uint32_t _result, uint32_t _dest, uint32_t _base,
> bool _add, int32_t _imm)
> : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s,
> (IntRegIndex)_result, (IntRegIndex)_dest,
> (IntRegIndex)_base, _add, _imm)
> {
> %(constructor)s;
> }
> }};
>