misc.isa (7410:1589cdca3c6e) misc.isa (7418:e81194228b6e)
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
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
471 itIop = InstObjParams("it", "ItInst", "PredOp", \
472 { "code" : "Itstate = machInst.newItstate;",
473 "predicate_test" : predicateTest })
474 header_output += BasicDeclare.subst(itIop)
475 decoder_output += BasicConstructor.subst(itIop)
476 exec_output += PredOpExecute.subst(itIop)
477 unknownCode = '''
478#if FULL_SYSTEM

--- 154 unchanged lines hidden ---
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 ---