misc.isa (7199:3e96b80d1b55) misc.isa (7202:b99579129992)
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

--- 41 unchanged lines hidden (view full) ---

50 svcIop = InstObjParams("svc", "Svc", "PredOp",
51 { "code": svcCode,
52 "predicate_test": predicateTest }, ["IsSyscall"])
53 header_output = BasicDeclare.subst(svcIop)
54 decoder_output = BasicConstructor.subst(svcIop)
55 exec_output = PredOpExecute.subst(svcIop)
56
57}};
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

--- 41 unchanged lines hidden (view full) ---

50 svcIop = InstObjParams("svc", "Svc", "PredOp",
51 { "code": svcCode,
52 "predicate_test": predicateTest }, ["IsSyscall"])
53 header_output = BasicDeclare.subst(svcIop)
54 decoder_output = BasicConstructor.subst(svcIop)
55 exec_output = PredOpExecute.subst(svcIop)
56
57}};
58
59let {{
60
61 header_output = decoder_output = exec_output = ""
62
63 mrsCpsrCode = "Dest = (Cpsr | CondCodes) & 0xF8FF03DF"
64 mrsCpsrIop = InstObjParams("mrs", "MrsCpsr", "MrsOp",
65 { "code": mrsCpsrCode,
66 "predicate_test": predicateTest }, [])
67 header_output += MrsDeclare.subst(mrsCpsrIop)
68 decoder_output += MrsConstructor.subst(mrsCpsrIop)
69 exec_output += PredOpExecute.subst(mrsCpsrIop)
70
71 mrsSpsrCode = "Dest = Spsr"
72 mrsSpsrIop = InstObjParams("mrs", "MrsSpsr", "MrsOp",
73 { "code": mrsSpsrCode,
74 "predicate_test": predicateTest }, [])
75 header_output += MrsDeclare.subst(mrsSpsrIop)
76 decoder_output += MrsConstructor.subst(mrsSpsrIop)
77 exec_output += PredOpExecute.subst(mrsSpsrIop)
78
79 msrCpsrRegCode = '''
80 uint32_t newCpsr =
81 cpsrWriteByInstr(Cpsr | CondCodes, Op1, byteMask, false);
82 Cpsr = ~CondCodesMask & newCpsr;
83 CondCodes = CondCodesMask & newCpsr;
84 '''
85 msrCpsrRegIop = InstObjParams("msr", "MsrCpsrReg", "MsrRegOp",
86 { "code": msrCpsrRegCode,
87 "predicate_test": predicateTest }, [])
88 header_output += MsrRegDeclare.subst(msrCpsrRegIop)
89 decoder_output += MsrRegConstructor.subst(msrCpsrRegIop)
90 exec_output += PredOpExecute.subst(msrCpsrRegIop)
91
92 msrSpsrRegCode = "Spsr = spsrWriteByInstr(Spsr, Op1, byteMask, false);"
93 msrSpsrRegIop = InstObjParams("msr", "MsrSpsrReg", "MsrRegOp",
94 { "code": msrSpsrRegCode,
95 "predicate_test": predicateTest }, [])
96 header_output += MsrRegDeclare.subst(msrSpsrRegIop)
97 decoder_output += MsrRegConstructor.subst(msrSpsrRegIop)
98 exec_output += PredOpExecute.subst(msrSpsrRegIop)
99
100 msrCpsrImmCode = '''
101 uint32_t newCpsr =
102 cpsrWriteByInstr(Cpsr | CondCodes, imm, byteMask, false);
103 Cpsr = ~CondCodesMask & newCpsr;
104 CondCodes = CondCodesMask & newCpsr;
105 '''
106 msrCpsrImmIop = InstObjParams("msr", "MsrCpsrImm", "MsrImmOp",
107 { "code": msrCpsrImmCode,
108 "predicate_test": predicateTest }, [])
109 header_output += MsrImmDeclare.subst(msrCpsrImmIop)
110 decoder_output += MsrImmConstructor.subst(msrCpsrImmIop)
111 exec_output += PredOpExecute.subst(msrCpsrImmIop)
112
113 msrSpsrImmCode = "Spsr = spsrWriteByInstr(Spsr, imm, byteMask, false);"
114 msrSpsrImmIop = InstObjParams("msr", "MsrSpsrImm", "MsrImmOp",
115 { "code": msrSpsrImmCode,
116 "predicate_test": predicateTest }, [])
117 header_output += MsrImmDeclare.subst(msrSpsrImmIop)
118 decoder_output += MsrImmConstructor.subst(msrSpsrImmIop)
119 exec_output += PredOpExecute.subst(msrSpsrImmIop)
120}};