summaryrefslogtreecommitdiffstats
path: root/meta-microblaze/recipes-devtools/binutils/binutils/0026-Added-support-to-new-arithmetic-single-register-inst.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-microblaze/recipes-devtools/binutils/binutils/0026-Added-support-to-new-arithmetic-single-register-inst.patch')
-rw-r--r--meta-microblaze/recipes-devtools/binutils/binutils/0026-Added-support-to-new-arithmetic-single-register-inst.patch364
1 files changed, 364 insertions, 0 deletions
diff --git a/meta-microblaze/recipes-devtools/binutils/binutils/0026-Added-support-to-new-arithmetic-single-register-inst.patch b/meta-microblaze/recipes-devtools/binutils/binutils/0026-Added-support-to-new-arithmetic-single-register-inst.patch
new file mode 100644
index 00000000..6379a5c4
--- /dev/null
+++ b/meta-microblaze/recipes-devtools/binutils/binutils/0026-Added-support-to-new-arithmetic-single-register-inst.patch
@@ -0,0 +1,364 @@
1From b29e6a15c9f65837dbb560aa6c41c49e591915e9 Mon Sep 17 00:00:00 2001
2From: Nagaraju <nmekala@xilinx.com>
3Date: Fri, 23 Aug 2019 16:18:43 +0530
4Subject: [PATCH 26/52] Added support to new arithmetic single register
5 instructions
6
7Conflicts:
8 opcodes/microblaze-dis.c
9---
10 gas/config/tc-microblaze.c | 147 ++++++++++++++++++++++++++++++++++++-
11 opcodes/microblaze-dis.c | 13 +++-
12 opcodes/microblaze-opc.h | 43 ++++++++++-
13 opcodes/microblaze-opcm.h | 5 +-
14 4 files changed, 201 insertions(+), 7 deletions(-)
15
16diff --git a/gas/config/tc-microblaze.c b/gas/config/tc-microblaze.c
17index b00b759893..eca060b262 100644
18--- a/gas/config/tc-microblaze.c
19+++ b/gas/config/tc-microblaze.c
20@@ -423,12 +423,33 @@ void
21 md_begin (void)
22 {
23 struct op_code_struct * opcode;
24+ const char *prev_name = "";
25
26 opcode_hash_control = hash_new ();
27
28 /* Insert unique names into hash table. */
29- for (opcode = opcodes; opcode->name; opcode ++)
30- hash_insert (opcode_hash_control, opcode->name, (char *) opcode);
31+ for (opcode = (struct opcodes *)opcodes; opcode->name; opcode ++)
32+ {
33+ if (strcmp (prev_name, opcode->name))
34+ {
35+ prev_name = (char *) opcode->name;
36+ hash_insert (opcode_hash_control, opcode->name, (char *) opcode);
37+ }
38+ }
39+}
40+
41+static int
42+is_reg (char * s)
43+{
44+ int is_reg = 0;
45+ /* Strip leading whitespace. */
46+ while (ISSPACE (* s))
47+ ++ s;
48+ if (TOLOWER (s[0]) == 'r')
49+ {
50+ is_reg =1;
51+ }
52+ return is_reg;
53 }
54
55 /* Try to parse a reg name. */
56@@ -986,6 +1007,7 @@ md_assemble (char * str)
57 {
58 char * op_start;
59 char * op_end;
60+ char * temp_op_end;
61 struct op_code_struct * opcode, *opcode1;
62 char * output = NULL;
63 int nlen = 0;
64@@ -996,9 +1018,10 @@ md_assemble (char * str)
65 unsigned reg3;
66 unsigned isize;
67 unsigned long immed, immed2, temp;
68- expressionS exp;
69+ expressionS exp,exp1;
70 char name[20];
71 long immedl;
72+ int reg=0;
73
74 /* Drop leading whitespace. */
75 while (ISSPACE (* str))
76@@ -1029,7 +1052,78 @@ md_assemble (char * str)
77 as_bad (_("unknown opcode \"%s\""), name);
78 return;
79 }
80-
81+
82+ if ((microblaze_arch_size == 64) && (streq (name, "addli") || streq (name, "addlic") ||
83+ streq (name, "addlik") || streq (name, "addlikc") || streq (name, "rsubli")
84+ || streq (name, "rsublic") || streq (name, "rsublik") || streq (name, "rsublikc")
85+ || streq (name, "andli") || streq (name, "andnli") || streq (name, "orli")
86+ || streq (name, "xorli")))
87+ {
88+ temp_op_end = op_end;
89+ if (strcmp (temp_op_end, ""))
90+ temp_op_end = parse_reg (temp_op_end + 1, &reg1); /* Get rd. */
91+ if (strcmp (temp_op_end, ""))
92+ reg = is_reg (temp_op_end + 1);
93+ if (reg)
94+ {
95+
96+ opcode->inst_type=INST_TYPE_RD_R1_IMML;
97+ opcode->inst_offset_type = OPCODE_MASK_H;
98+ if (streq (name, "addli"))
99+ opcode->bit_sequence = ADDLI_MASK;
100+ else if (streq (name, "addlic"))
101+ opcode->bit_sequence = ADDLIC_MASK;
102+ else if (streq (name, "addlik"))
103+ opcode->bit_sequence = ADDLIK_MASK;
104+ else if (streq (name, "addlikc"))
105+ opcode->bit_sequence = ADDLIKC_MASK;
106+ else if (streq (name, "rsubli"))
107+ opcode->bit_sequence = RSUBLI_MASK;
108+ else if (streq (name, "rsublic"))
109+ opcode->bit_sequence = RSUBLIC_MASK;
110+ else if (streq (name, "rsublik"))
111+ opcode->bit_sequence = RSUBLIK_MASK;
112+ else if (streq (name, "rsublikc"))
113+ opcode->bit_sequence = RSUBLIKC_MASK;
114+ else if (streq (name, "andli"))
115+ opcode->bit_sequence = ANDLI_MASK;
116+ else if (streq (name, "andnli"))
117+ opcode->bit_sequence = ANDLNI_MASK;
118+ else if (streq (name, "orli"))
119+ opcode->bit_sequence = ORLI_MASK;
120+ else if (streq (name, "xorli"))
121+ opcode->bit_sequence = XORLI_MASK;
122+ }
123+ else
124+ {
125+ opcode->inst_type=INST_TYPE_RD_IMML;
126+ opcode->inst_offset_type = OPCODE_MASK_LIMM;
127+ if (streq (name, "addli"))
128+ opcode->bit_sequence = ADDLI_ONE_REG_MASK;
129+ else if (streq (name, "addlic"))
130+ opcode->bit_sequence = ADDLIC_ONE_REG_MASK;
131+ else if (streq (name, "addlik"))
132+ opcode->bit_sequence = ADDLIK_ONE_REG_MASK;
133+ else if (streq (name, "addlikc"))
134+ opcode->bit_sequence = ADDLIKC_ONE_REG_MASK;
135+ else if (streq (name, "rsubli"))
136+ opcode->bit_sequence = RSUBLI_ONE_REG_MASK;
137+ else if (streq (name, "rsublic"))
138+ opcode->bit_sequence = RSUBLIC_ONE_REG_MASK;
139+ else if (streq (name, "rsublik"))
140+ opcode->bit_sequence = RSUBLIK_ONE_REG_MASK;
141+ else if (streq (name, "rsublikc"))
142+ opcode->bit_sequence = RSUBLIKC_ONE_REG_MASK;
143+ else if (streq (name, "andli"))
144+ opcode->bit_sequence = ANDLI_ONE_REG_MASK;
145+ else if (streq (name, "andnli"))
146+ opcode->bit_sequence = ANDLNI_ONE_REG_MASK;
147+ else if (streq (name, "orli"))
148+ opcode->bit_sequence = ORLI_ONE_REG_MASK;
149+ else if (streq (name, "xorli"))
150+ opcode->bit_sequence = XORLI_ONE_REG_MASK;
151+ }
152+ }
153 inst = opcode->bit_sequence;
154 isize = 4;
155
156@@ -1480,6 +1574,51 @@ md_assemble (char * str)
157 inst |= (immed << IMM_LOW) & IMM15_MASK;
158 break;
159
160+ case INST_TYPE_RD_IMML:
161+ if (strcmp (op_end, ""))
162+ op_end = parse_reg (op_end + 1, &reg1); /* Get rd. */
163+ else
164+ {
165+ as_fatal (_("Error in statement syntax"));
166+ reg1 = 0;
167+ }
168+
169+ if (strcmp (op_end, ""))
170+ op_end = parse_imml (op_end + 1, & exp, MIN_IMML, MAX_IMML);
171+ else
172+ as_fatal (_("Error in statement syntax"));
173+
174+ /* Check for spl registers. */
175+ if (check_spl_reg (&reg1))
176+ as_fatal (_("Cannot use special register with this instruction"));
177+ if (exp.X_op != O_constant)
178+ {
179+ char *opc = NULL;
180+ relax_substateT subtype;
181+
182+ if (exp.X_md != 0)
183+ subtype = get_imm_otype(exp.X_md);
184+ else
185+ subtype = opcode->inst_offset_type;
186+
187+ output = frag_var (rs_machine_dependent,
188+ isize * 2,
189+ isize * 2,
190+ subtype,
191+ exp.X_add_symbol,
192+ exp.X_add_number,
193+ (char *) opc);
194+ immedl = 0L;
195+ }
196+ else
197+ {
198+ output = frag_more (isize);
199+ immed = exp.X_add_number;
200+ }
201+ inst |= (reg1 << RD_LOW) & RD_MASK;
202+ inst |= (immed << IMM_LOW) & IMM16_MASK;
203+ break;
204+
205 case INST_TYPE_R1_RFSL:
206 if (strcmp (op_end, ""))
207 op_end = parse_reg (op_end + 1, &reg1); /* Get r1. */
208diff --git a/opcodes/microblaze-dis.c b/opcodes/microblaze-dis.c
209index 1dc11a2653..90d2328659 100644
210--- a/opcodes/microblaze-dis.c
211+++ b/opcodes/microblaze-dis.c
212@@ -130,9 +130,17 @@ get_field_imm15 (struct string_buf *buf, long instr)
213 return p;
214 }
215
216+get_field_imm16 (struct string_buf *buf, long instr)
217+{
218+ char *p = strbuf (buf);
219+
220+ sprintf (p, "%d", (short)((instr & IMM16_MASK) >> IMM_LOW));
221+ return p;
222+}
223+
224 static char *
225 get_field_special (struct string_buf *buf, long instr,
226- struct op_code_struct *op)
227+ struct op_code_struct *op)
228 {
229 char *p = strbuf (buf);
230 char *spr;
231@@ -456,6 +464,9 @@ print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info)
232 /* For mbar 16 or sleep insn. */
233 case INST_TYPE_NONE:
234 break;
235+ case INST_TYPE_RD_IMML:
236+ print_func (stream, "\t%s, %s", get_field_rd (&buf, inst), get_field_imm16 (&buf, inst));
237+ break;
238 /* For bit field insns. */
239 case INST_TYPE_RD_R1_IMMW_IMMS:
240 print_func (stream, "\t%s, %s, %s, %s", get_field_rd (&buf, inst),get_field_r1(&buf, inst),get_field_immw (&buf, inst), get_field_imms (&buf, inst));
241diff --git a/opcodes/microblaze-opc.h b/opcodes/microblaze-opc.h
242index 77d74c17f3..c1b453c95e 100644
243--- a/opcodes/microblaze-opc.h
244+++ b/opcodes/microblaze-opc.h
245@@ -69,6 +69,7 @@
246 #define INST_TYPE_RD_R1_IMMW_IMMS 21
247
248 #define INST_TYPE_NONE 25
249+#define INST_TYPE_RD_IMML 26
250
251
252
253@@ -84,6 +85,7 @@
254 #define IMMVAL_MASK_MFS 0x0000
255
256 #define OPCODE_MASK_H 0xFC000000 /* High 6 bits only. */
257+#define OPCODE_MASK_LIMM 0xFC1F0000 /* High 6 bits and 12-16 bits */
258 #define OPCODE_MASK_H1 0xFFE00000 /* High 11 bits. */
259 #define OPCODE_MASK_H2 0xFC1F0000 /* High 6 and bits 20-16. */
260 #define OPCODE_MASK_H12 0xFFFF0000 /* High 16. */
261@@ -106,6 +108,33 @@
262 #define OPCODE_MASK_H34C 0xFC0007E0 /* High 6 bits and bits 21-26. */
263 #define OPCODE_MASK_H8 0xFF000000 /* High 8 bits only. */
264
265+/*Defines to identify 64-bit single reg instructions */
266+#define ADDLI_ONE_REG_MASK 0x68000000
267+#define ADDLIC_ONE_REG_MASK 0x68020000
268+#define ADDLIK_ONE_REG_MASK 0x68040000
269+#define ADDLIKC_ONE_REG_MASK 0x68060000
270+#define RSUBLI_ONE_REG_MASK 0x68010000
271+#define RSUBLIC_ONE_REG_MASK 0x68030000
272+#define RSUBLIK_ONE_REG_MASK 0x68050000
273+#define RSUBLIKC_ONE_REG_MASK 0x68070000
274+#define ORLI_ONE_REG_MASK 0x68100000
275+#define ANDLI_ONE_REG_MASK 0x68110000
276+#define XORLI_ONE_REG_MASK 0x68120000
277+#define ANDLNI_ONE_REG_MASK 0x68130000
278+#define ADDLI_MASK 0x20000000
279+#define ADDLIC_MASK 0x28000000
280+#define ADDLIK_MASK 0x30000000
281+#define ADDLIKC_MASK 0x38000000
282+#define RSUBLI_MASK 0x24000000
283+#define RSUBLIC_MASK 0x2C000000
284+#define RSUBLIK_MASK 0x34000000
285+#define RSUBLIKC_MASK 0x3C000000
286+#define ANDLI_MASK 0xA4000000
287+#define ANDLNI_MASK 0xAC000000
288+#define ORLI_MASK 0xA0000000
289+#define XORLI_MASK 0xA8000000
290+
291+
292 /* New Mask for msrset, msrclr insns. */
293 #define OPCODE_MASK_H23N 0xFC1F8000 /* High 6 and bits 11 - 16. */
294 /* Mask for mbar insn. */
295@@ -114,7 +143,7 @@
296 #define DELAY_SLOT 1
297 #define NO_DELAY_SLOT 0
298
299-#define MAX_OPCODES 412
300+#define MAX_OPCODES 424
301
302 struct op_code_struct
303 {
304@@ -444,13 +473,21 @@ struct op_code_struct
305 {"cmpl", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x14000101, OPCODE_MASK_H4, cmpl, arithmetic_inst },
306 {"cmplu", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x14000103, OPCODE_MASK_H4, cmplu, arithmetic_inst },
307 {"addli", INST_TYPE_RD_R1_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x20000000, OPCODE_MASK_H, invalid_inst, arithmetic_inst }, /* Identical to 32-bit */
308+ {"addli", INST_TYPE_RD_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL,0x68000000, OPCODE_MASK_LIMM, addli, arithmetic_inst },
309 {"rsubli", INST_TYPE_RD_R1_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x24000000, OPCODE_MASK_H, invalid_inst, arithmetic_inst }, /* Identical to 32-bit */
310+ {"rsubli", INST_TYPE_RD_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL,0x68010000, OPCODE_MASK_LIMM, rsubli, arithmetic_inst },
311 {"addlic", INST_TYPE_RD_R1_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x28000000, OPCODE_MASK_H, invalid_inst, arithmetic_inst }, /* Identical to 32-bit */
312+ {"addlic", INST_TYPE_RD_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL,0x68020000, OPCODE_MASK_LIMM, addlic, arithmetic_inst },
313 {"rsublic", INST_TYPE_RD_R1_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x2C000000, OPCODE_MASK_H, invalid_inst, arithmetic_inst }, /* Identical to 32-bit */
314+ {"rsublic", INST_TYPE_RD_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL,0x68030000, OPCODE_MASK_LIMM, rsublic, arithmetic_inst },
315 {"addlik", INST_TYPE_RD_R1_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x30000000, OPCODE_MASK_H, invalid_inst, arithmetic_inst }, /* Identical to 32-bit */
316+ {"addlik", INST_TYPE_RD_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL,0x68040000, OPCODE_MASK_LIMM, addlik, arithmetic_inst },
317 {"rsublik", INST_TYPE_RD_R1_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x34000000, OPCODE_MASK_H, invalid_inst, arithmetic_inst }, /* Identical to 32-bit */
318+ {"rsublik", INST_TYPE_RD_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL,0x68050000, OPCODE_MASK_LIMM, rsublik, arithmetic_inst },
319 {"addlikc", INST_TYPE_RD_R1_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x38000000, OPCODE_MASK_H, invalid_inst, arithmetic_inst }, /* Identical to 32-bit */
320+ {"addlikc", INST_TYPE_RD_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL,0x68060000, OPCODE_MASK_LIMM, addlikc, arithmetic_inst },
321 {"rsublikc",INST_TYPE_RD_R1_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x3C000000, OPCODE_MASK_H, invalid_inst, arithmetic_inst }, /* Identical to 32-bit */
322+ {"rsublikc", INST_TYPE_RD_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL,0x68070000, OPCODE_MASK_LIMM, rsublikc, arithmetic_inst },
323 {"mull", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x40000100, OPCODE_MASK_H4, mull, mult_inst },
324 {"bslll", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x44000500, OPCODE_MASK_H3, bslll, barrel_shift_inst },
325 {"bslra", INST_TYPE_RD_R1_R2, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x44000300, OPCODE_MASK_H3, bslra, barrel_shift_inst },
326@@ -501,9 +538,13 @@ struct op_code_struct
327 {"beaged", INST_TYPE_R1_R2, INST_PC_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x9FA00000, OPCODE_MASK_H14, beaged, branch_inst },
328 {"bealged", INST_TYPE_R1_R2, INST_PC_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0x9FA00100, OPCODE_MASK_H14, bealged, branch_inst },
329 {"orli", INST_TYPE_RD_R1_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xA0000000, OPCODE_MASK_H, invalid_inst, logical_inst }, /* Identical to 32-bit */
330+ {"orli", INST_TYPE_RD_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL,0x68100000, OPCODE_MASK_LIMM, orli, arithmetic_inst },
331 {"andli", INST_TYPE_RD_R1_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xA4000000, OPCODE_MASK_H, invalid_inst, logical_inst }, /* Identical to 32-bit */
332+ {"andli", INST_TYPE_RD_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL,0x68110000, OPCODE_MASK_LIMM, andli, arithmetic_inst },
333 {"xorli", INST_TYPE_RD_R1_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xA8000000, OPCODE_MASK_H, invalid_inst, logical_inst }, /* Identical to 32-bit */
334+ {"xorli", INST_TYPE_RD_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL,0x68120000, OPCODE_MASK_LIMM, xorli, arithmetic_inst },
335 {"andnli", INST_TYPE_RD_R1_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xAC000000, OPCODE_MASK_H, invalid_inst, logical_inst }, /* Identical to 32-bit */
336+ {"andnli", INST_TYPE_RD_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL,0x68130000, OPCODE_MASK_LIMM, andnli, arithmetic_inst },
337 {"imml", INST_TYPE_IMML, INST_NO_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xB2000000, OPCODE_MASK_H8, imml, immediate_inst },
338 {"breai", INST_TYPE_IMM, INST_PC_OFFSET, NO_DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xB8010000, OPCODE_MASK_H12, breai, branch_inst },
339 {"breaid", INST_TYPE_IMM, INST_PC_OFFSET, DELAY_SLOT, IMMVAL_MASK_NON_SPECIAL, 0xB8110000, OPCODE_MASK_H12, breaid, branch_inst },
340diff --git a/opcodes/microblaze-opcm.h b/opcodes/microblaze-opcm.h
341index fcf259a362..eca247c63b 100644
342--- a/opcodes/microblaze-opcm.h
343+++ b/opcodes/microblaze-opcm.h
344@@ -61,7 +61,9 @@ enum microblaze_instr
345 eaputd, teaputd, ecaputd, tecaputd, neaputd, tneaputd, necaputd, tnecaputd,
346
347 /* 64-bit instructions */
348- addl, rsubl, addlc, rsublc, addlk, rsublk, addlkc, rsublkc, cmpl, cmplu, mull,
349+ addl, addli, addlic, addlik, addlikc, rsubl, rsubli, rsublic, rsublik, rsublikc,
350+ addlc, rsublc, addlk, rsublk, addlkc, rsublkc, cmpl, cmplu, mull,
351+ andli, andnli, orli, xorli,
352 bslll, bslra, bslrl, bsllli, bslrai, bslrli, bslefi, bslifi, orl, andl, xorl,
353 andnl, pcmplbf, pcmpleq, pcmplne, srla, srlc, srll, sextl8, sextl16, sextl32,
354 brea, bread, breald, beaeq, bealeq, beaeqd, bealeqd, beane, bealne, beaned,
355@@ -166,5 +168,6 @@ enum microblaze_instr_type
356
357 /* Imm mask for msrset, msrclr instructions. */
358 #define IMM15_MASK 0x00007FFF
359+#define IMM16_MASK 0x0000FFFF
360
361 #endif /* MICROBLAZE-OPCM */
362--
3632.17.1
364