misc.isa (7613:62159049ca81) | misc.isa (7648:3e561a5c0456) |
---|---|
1// -*- mode:c++ -*- 2 3// Copyright (c) 2010 ARM Limited 4// All rights reserved 5// 6// The license below extends only to copyright in the software and shall 7// not be construed as granting a license to any other intellectual 8// property including but not limited to intellectual property relating --- 476 unchanged lines hidden (view full) --- 485 if (SevMailbox) 486 SevMailbox = 0; 487 else 488 PseudoInst::quiesce(xc->tcBase()); 489#endif 490 ''' 491 wfeIop = InstObjParams("wfe", "WfeInst", "PredOp", \ 492 { "code" : wfeCode, "predicate_test" : predicateTest }, | 1// -*- mode:c++ -*- 2 3// Copyright (c) 2010 ARM Limited 4// All rights reserved 5// 6// The license below extends only to copyright in the software and shall 7// not be construed as granting a license to any other intellectual 8// property including but not limited to intellectual property relating --- 476 unchanged lines hidden (view full) --- 485 if (SevMailbox) 486 SevMailbox = 0; 487 else 488 PseudoInst::quiesce(xc->tcBase()); 489#endif 490 ''' 491 wfeIop = InstObjParams("wfe", "WfeInst", "PredOp", \ 492 { "code" : wfeCode, "predicate_test" : predicateTest }, |
493 ["IsNonSpeculative", "IsQuiesce"]) | 493 ["IsNonSpeculative", "IsQuiesce", "IsSerializeAfter"]) |
494 header_output += BasicDeclare.subst(wfeIop) 495 decoder_output += BasicConstructor.subst(wfeIop) 496 exec_output += PredOpExecute.subst(wfeIop) 497 498 wfiCode = ''' 499#if FULL_SYSTEM 500 PseudoInst::quiesce(xc->tcBase()); 501#endif --- 10 unchanged lines hidden (view full) --- 512 System *sys = xc->tcBase()->getSystemPtr(); 513 for (int x = 0; x < sys->numContexts(); x++) { 514 ThreadContext *oc = sys->getThreadContext(x); 515 oc->setMiscReg(MISCREG_SEV_MAILBOX, 1); 516 } 517 ''' 518 sevIop = InstObjParams("sev", "SevInst", "PredOp", \ 519 { "code" : sevCode, "predicate_test" : predicateTest }, | 494 header_output += BasicDeclare.subst(wfeIop) 495 decoder_output += BasicConstructor.subst(wfeIop) 496 exec_output += PredOpExecute.subst(wfeIop) 497 498 wfiCode = ''' 499#if FULL_SYSTEM 500 PseudoInst::quiesce(xc->tcBase()); 501#endif --- 10 unchanged lines hidden (view full) --- 512 System *sys = xc->tcBase()->getSystemPtr(); 513 for (int x = 0; x < sys->numContexts(); x++) { 514 ThreadContext *oc = sys->getThreadContext(x); 515 oc->setMiscReg(MISCREG_SEV_MAILBOX, 1); 516 } 517 ''' 518 sevIop = InstObjParams("sev", "SevInst", "PredOp", \ 519 { "code" : sevCode, "predicate_test" : predicateTest }, |
520 ["IsNonSpeculative", "IsQuiesce"]) | 520 ["IsNonSpeculative", "IsQuiesce", "IsSerializeAfter"]) |
521 header_output += BasicDeclare.subst(sevIop) 522 decoder_output += BasicConstructor.subst(sevIop) 523 exec_output += PredOpExecute.subst(sevIop) 524 525 itIop = InstObjParams("it", "ItInst", "PredOp", \ 526 { "code" : "Itstate = machInst.newItstate;", | 521 header_output += BasicDeclare.subst(sevIop) 522 decoder_output += BasicConstructor.subst(sevIop) 523 exec_output += PredOpExecute.subst(sevIop) 524 525 itIop = InstObjParams("it", "ItInst", "PredOp", \ 526 { "code" : "Itstate = machInst.newItstate;", |
527 "predicate_test" : predicateTest }) | 527 "predicate_test" : predicateTest }, 528 ["IsNonSpeculative", "IsSerializeAfter"]) |
528 header_output += BasicDeclare.subst(itIop) 529 decoder_output += BasicConstructor.subst(itIop) 530 exec_output += PredOpExecute.subst(itIop) 531 unknownCode = ''' 532#if FULL_SYSTEM 533 return new UndefinedInstruction; 534#else 535 return new UndefinedInstruction(machInst, true); --- 122 unchanged lines hidden (view full) --- 658 659 setendCode = ''' 660 CPSR cpsr = Cpsr; 661 cpsr.e = imm; 662 Cpsr = cpsr; 663 ''' 664 setendIop = InstObjParams("setend", "Setend", "ImmOp", 665 { "code": setendCode, | 529 header_output += BasicDeclare.subst(itIop) 530 decoder_output += BasicConstructor.subst(itIop) 531 exec_output += PredOpExecute.subst(itIop) 532 unknownCode = ''' 533#if FULL_SYSTEM 534 return new UndefinedInstruction; 535#else 536 return new UndefinedInstruction(machInst, true); --- 122 unchanged lines hidden (view full) --- 659 660 setendCode = ''' 661 CPSR cpsr = Cpsr; 662 cpsr.e = imm; 663 Cpsr = cpsr; 664 ''' 665 setendIop = InstObjParams("setend", "Setend", "ImmOp", 666 { "code": setendCode, |
666 "predicate_test": predicateTest }, []) | 667 "predicate_test": predicateTest }, 668 ["IsSerializeAfter","IsNonSpeculative"]) |
667 header_output += ImmOpDeclare.subst(setendIop) 668 decoder_output += ImmOpConstructor.subst(setendIop) 669 exec_output += PredOpExecute.subst(setendIop) 670 671 clrexCode = ''' 672 unsigned memAccessFlags = Request::CLREX|3|Request::LLSC; 673 fault = xc->read(0, (uint32_t&)Mem, memAccessFlags); 674 ''' --- 78 unchanged lines hidden --- | 669 header_output += ImmOpDeclare.subst(setendIop) 670 decoder_output += ImmOpConstructor.subst(setendIop) 671 exec_output += PredOpExecute.subst(setendIop) 672 673 clrexCode = ''' 674 unsigned memAccessFlags = Request::CLREX|3|Request::LLSC; 675 fault = xc->read(0, (uint32_t&)Mem, memAccessFlags); 676 ''' --- 78 unchanged lines hidden --- |