macromem.isa (8302:9f23d01421de) | macromem.isa (8303:5a95f1d2494e) |
---|---|
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 --- 73 unchanged lines hidden (view full) --- 82 'ea_code': vfpEnabledCheckCode + ''' 83 EA = URb + (up ? imm : -imm) - 84 (((CPSR)Cpsr).e ? 4 : 0); 85 ''', 86 'predicate_test': predicateTest}, 87 ['IsMicroop']) 88 89 microRetUopCode = ''' | 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 --- 73 unchanged lines hidden (view full) --- 82 'ea_code': vfpEnabledCheckCode + ''' 83 EA = URb + (up ? imm : -imm) - 84 (((CPSR)Cpsr).e ? 4 : 0); 85 ''', 86 'predicate_test': predicateTest}, 87 ['IsMicroop']) 88 89 microRetUopCode = ''' |
90 CPSR cpsr = Cpsr; | 90 CPSR old_cpsr = Cpsr; |
91 SCTLR sctlr = Sctlr; | 91 SCTLR sctlr = Sctlr; |
92 uint32_t newCpsr = 93 cpsrWriteByInstr(cpsr | CondCodesF | CondCodesGE, 94 Spsr, 0xF, true, sctlr.nmfi); 95 Cpsr = ~CondCodesMask & newCpsr; 96 CondCodesF = CondCodesMaskF & newCpsr; 97 CondCodesGE = CondCodesMaskGE & newCpsr; 98 IWNPC = cSwap(%s, cpsr.e) | ((Spsr & 0x20) ? 1 : 0); | 92 old_cpsr.nz = CondCodesNZ; 93 old_cpsr.c = CondCodesC; 94 old_cpsr.v = CondCodesV; 95 old_cpsr.ge = CondCodesGE; 96 97 CPSR new_cpsr = 98 cpsrWriteByInstr(old_cpsr, Spsr, 0xF, true, sctlr.nmfi); 99 Cpsr = ~CondCodesMask & new_cpsr; 100 CondCodesNZ = new_cpsr.nz; 101 CondCodesC = new_cpsr.c; 102 CondCodesV = new_cpsr.v; 103 CondCodesGE = new_cpsr.ge; 104 IWNPC = cSwap(%s, old_cpsr.e) | ((Spsr & 0x20) ? 1 : 0); |
99 NextItState = ((((CPSR)Spsr).it2 << 2) & 0xFC) 100 | (((CPSR)Spsr).it1 & 0x3); 101 SevMailbox = 1; 102 ''' 103 104 microLdrRetUopIop = InstObjParams('ldr_ret_uop', 'MicroLdrRetUop', 105 'MicroMemOp', 106 {'memacc_code': --- 475 unchanged lines hidden (view full) --- 582 'predicate_test': predicateTest}, 583 ['IsMicroop']) 584 585 microAddUopIop = InstObjParams('add_uop', 'MicroAddUop', 586 'MicroIntRegOp', 587 {'code': 588 '''URa = URb + shift_rm_imm(URc, shiftAmt, 589 shiftType, | 105 NextItState = ((((CPSR)Spsr).it2 << 2) & 0xFC) 106 | (((CPSR)Spsr).it1 & 0x3); 107 SevMailbox = 1; 108 ''' 109 110 microLdrRetUopIop = InstObjParams('ldr_ret_uop', 'MicroLdrRetUop', 111 'MicroMemOp', 112 {'memacc_code': --- 475 unchanged lines hidden (view full) --- 588 'predicate_test': predicateTest}, 589 ['IsMicroop']) 590 591 microAddUopIop = InstObjParams('add_uop', 'MicroAddUop', 592 'MicroIntRegOp', 593 {'code': 594 '''URa = URb + shift_rm_imm(URc, shiftAmt, 595 shiftType, |
590 CondCodesF<29:>); | 596 CondCodesC); |
591 ''', 592 'predicate_test': predicateTest}, 593 ['IsMicroop']) 594 595 microSubiUopIop = InstObjParams('subi_uop', 'MicroSubiUop', 596 'MicroIntImmOp', 597 {'code': 'URa = URb - imm;', 598 'predicate_test': predicateTest}, 599 ['IsMicroop']) 600 601 microSubUopIop = InstObjParams('sub_uop', 'MicroSubUop', 602 'MicroIntRegOp', 603 {'code': 604 '''URa = URb - shift_rm_imm(URc, shiftAmt, 605 shiftType, | 597 ''', 598 'predicate_test': predicateTest}, 599 ['IsMicroop']) 600 601 microSubiUopIop = InstObjParams('subi_uop', 'MicroSubiUop', 602 'MicroIntImmOp', 603 {'code': 'URa = URb - imm;', 604 'predicate_test': predicateTest}, 605 ['IsMicroop']) 606 607 microSubUopIop = InstObjParams('sub_uop', 'MicroSubUop', 608 'MicroIntRegOp', 609 {'code': 610 '''URa = URb - shift_rm_imm(URc, shiftAmt, 611 shiftType, |
606 CondCodesF<29:>); | 612 CondCodesC); |
607 ''', 608 'predicate_test': predicateTest}, 609 ['IsMicroop']) 610 611 microUopRegMovIop = InstObjParams('uopReg_uop', 'MicroUopRegMov', 612 'MicroIntMov', 613 {'code': 'IWRa = URb;', 614 'predicate_test': predicateTest}, --- 5 unchanged lines hidden (view full) --- 620 'predicate_test': predicateTest}, 621 ['IsMicroop', 'IsNonSpeculative', 622 'IsSerializeAfter']) 623 624 setPCCPSRDecl = ''' 625 CPSR cpsrOrCondCodes = URc; 626 SCTLR sctlr = Sctlr; 627 pNPC = URa; | 613 ''', 614 'predicate_test': predicateTest}, 615 ['IsMicroop']) 616 617 microUopRegMovIop = InstObjParams('uopReg_uop', 'MicroUopRegMov', 618 'MicroIntMov', 619 {'code': 'IWRa = URb;', 620 'predicate_test': predicateTest}, --- 5 unchanged lines hidden (view full) --- 626 'predicate_test': predicateTest}, 627 ['IsMicroop', 'IsNonSpeculative', 628 'IsSerializeAfter']) 629 630 setPCCPSRDecl = ''' 631 CPSR cpsrOrCondCodes = URc; 632 SCTLR sctlr = Sctlr; 633 pNPC = URa; |
628 uint32_t newCpsr = | 634 CPSR new_cpsr = |
629 cpsrWriteByInstr(cpsrOrCondCodes, URb, 630 0xF, true, sctlr.nmfi); | 635 cpsrWriteByInstr(cpsrOrCondCodes, URb, 636 0xF, true, sctlr.nmfi); |
631 Cpsr = ~CondCodesMask & newCpsr; 632 NextThumb = ((CPSR)newCpsr).t; 633 NextJazelle = ((CPSR)newCpsr).j; | 637 Cpsr = ~CondCodesMask & new_cpsr; 638 NextThumb = new_cpsr.t; 639 NextJazelle = new_cpsr.j; |
634 NextItState = ((((CPSR)URb).it2 << 2) & 0xFC) 635 | (((CPSR)URb).it1 & 0x3); | 640 NextItState = ((((CPSR)URb).it2 << 2) & 0xFC) 641 | (((CPSR)URb).it1 & 0x3); |
636 CondCodesF = CondCodesMaskF & newCpsr; 637 CondCodesGE = CondCodesMaskGE & newCpsr; | 642 CondCodesNZ = new_cpsr.nz; 643 CondCodesC = new_cpsr.c; 644 CondCodesV = new_cpsr.v; 645 CondCodesGE = new_cpsr.ge; |
638 ''' 639 640 microUopSetPCCPSRIop = InstObjParams('uopSet_uop', 'MicroUopSetPCCPSR', 641 'MicroSetPCCPSR', 642 {'code': setPCCPSRDecl, 643 'predicate_test': predicateTest}, 644 ['IsMicroop']) 645 --- 51 unchanged lines hidden --- | 646 ''' 647 648 microUopSetPCCPSRIop = InstObjParams('uopSet_uop', 'MicroUopSetPCCPSR', 649 'MicroSetPCCPSR', 650 {'code': setPCCPSRDecl, 651 'predicate_test': predicateTest}, 652 ['IsMicroop']) 653 --- 51 unchanged lines hidden --- |