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 --- 454 unchanged lines hidden (view full) --- 463 exec_output += BasicExecute.subst(bkptIop) 464 465 nopIop = InstObjParams("nop", "NopInst", "PredOp", \ 466 { "code" : "", "predicate_test" : predicateTest }) 467 header_output += BasicDeclare.subst(nopIop) 468 decoder_output += BasicConstructor.subst(nopIop) 469 exec_output += PredOpExecute.subst(nopIop) 470 |
471 yieldIop = InstObjParams("yield", "YieldInst", "PredOp", \ 472 { "code" : "", "predicate_test" : predicateTest }) 473 header_output += BasicDeclare.subst(yieldIop) 474 decoder_output += BasicConstructor.subst(yieldIop) 475 exec_output += PredOpExecute.subst(yieldIop) 476 477 wfeCode = ''' 478#if FULL_SYSTEM 479 if (SevMailbox) 480 SevMailbox = 0; 481 else 482 PseudoInst::quiesce(xc->tcBase()); 483#endif 484 ''' 485 wfeIop = InstObjParams("wfe", "WfeInst", "PredOp", \ 486 { "code" : wfeCode, "predicate_test" : predicateTest }, 487 ["IsNonSpeculative", "IsQuiesce"]) 488 header_output += BasicDeclare.subst(wfeIop) 489 decoder_output += BasicConstructor.subst(wfeIop) 490 exec_output += PredOpExecute.subst(wfeIop) 491 492 wfiCode = ''' 493#if FULL_SYSTEM 494 PseudoInst::quiesce(xc->tcBase()); 495#endif 496 ''' 497 wfiIop = InstObjParams("wfi", "WfiInst", "PredOp", \ 498 { "code" : wfiCode, "predicate_test" : predicateTest }, 499 ["IsNonSpeculative", "IsQuiesce"]) 500 header_output += BasicDeclare.subst(wfiIop) 501 decoder_output += BasicConstructor.subst(wfiIop) 502 exec_output += PredOpExecute.subst(wfiIop) 503 504 sevCode = ''' 505 // Need a way for O3 to not scoreboard these accesses as pipe flushes. 506 System *sys = xc->tcBase()->getSystemPtr(); 507 for (int x = 0; x < sys->numContexts(); x++) { 508 ThreadContext *oc = sys->getThreadContext(x); 509 oc->setMiscReg(MISCREG_SEV_MAILBOX, 1); 510 } 511 ''' 512 sevIop = InstObjParams("sev", "SevInst", "PredOp", \ 513 { "code" : sevCode, "predicate_test" : predicateTest }, 514 ["IsNonSpeculative", "IsQuiesce"]) 515 header_output += BasicDeclare.subst(sevIop) 516 decoder_output += BasicConstructor.subst(sevIop) 517 exec_output += PredOpExecute.subst(sevIop) 518 |
519 itIop = InstObjParams("it", "ItInst", "PredOp", \ 520 { "code" : "Itstate = machInst.newItstate;", 521 "predicate_test" : predicateTest }) 522 header_output += BasicDeclare.subst(itIop) 523 decoder_output += BasicConstructor.subst(itIop) 524 exec_output += PredOpExecute.subst(itIop) 525 unknownCode = ''' 526#if FULL_SYSTEM --- 154 unchanged lines hidden --- |