Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(264)

Side by Side Diff: opcodes/s390-mkopc.c

Issue 124383005: GDB 7.6.50 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@upstream
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « opcodes/s390-dis.c ('k') | opcodes/s390-opc.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* s390-mkopc.c -- Generates opcode table out of s390-opc.txt 1 /* s390-mkopc.c -- Generates opcode table out of s390-opc.txt
2 Copyright 2000, 2001, 2003, 2005, 2007, 2008 Free Software Foundation, Inc. 2 Copyright 2000-2013 Free Software Foundation, Inc.
3 Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). 3 Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
4 4
5 This file is part of the GNU opcodes library. 5 This file is part of the GNU opcodes library.
6 6
7 This library is free software; you can redistribute it and/or modify 7 This library is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3, or (at your option) 9 the Free Software Foundation; either version 3, or (at your option)
10 any later version. 10 any later version.
11 11
12 It is distributed in the hope that it will be useful, but WITHOUT 12 It is distributed in the hope that it will be useful, but WITHOUT
(...skipping 19 matching lines...) Expand all
32 32
33 enum s390_opcode_cpu_val 33 enum s390_opcode_cpu_val
34 { 34 {
35 S390_OPCODE_G5 = 0, 35 S390_OPCODE_G5 = 0,
36 S390_OPCODE_G6, 36 S390_OPCODE_G6,
37 S390_OPCODE_Z900, 37 S390_OPCODE_Z900,
38 S390_OPCODE_Z990, 38 S390_OPCODE_Z990,
39 S390_OPCODE_Z9_109, 39 S390_OPCODE_Z9_109,
40 S390_OPCODE_Z9_EC, 40 S390_OPCODE_Z9_EC,
41 S390_OPCODE_Z10, 41 S390_OPCODE_Z10,
42 S390_OPCODE_Z196 42 S390_OPCODE_Z196,
43 S390_OPCODE_ZEC12
43 }; 44 };
44 45
45 struct op_struct 46 struct op_struct
46 { 47 {
47 char opcode[16]; 48 char opcode[16];
48 char mnemonic[16]; 49 char mnemonic[16];
49 char format[16]; 50 char format[16];
50 int mode_bits; 51 int mode_bits;
51 int min_cpu; 52 int min_cpu;
52 53
53 unsigned long long sort_value; 54 unsigned long long sort_value;
54 int no_nibbles; 55 int no_nibbles;
55 }; 56 };
56 57
57 struct op_struct *op_array; 58 struct op_struct *op_array;
58 int max_ops; 59 int max_ops;
59 int no_ops; 60 int no_ops;
60 61
61 static void 62 static void
62 createTable (void) 63 createTable (void)
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 strcat (new_mnemonic, ext_table[i].extension); 269 strcat (new_mnemonic, ext_table[i].extension);
269 strcat (new_mnemonic, suffix); 270 strcat (new_mnemonic, suffix);
270 insertOpcode (opcode, new_mnemonic, format, min_cpu, mode_bits); 271 insertOpcode (opcode, new_mnemonic, format, min_cpu, mode_bits);
271 } 272 }
272 return; 273 return;
273 274
274 malformed_mnemonic: 275 malformed_mnemonic:
275 fprintf (stderr, "Malformed mnemonic: %s\n", mnemonic); 276 fprintf (stderr, "Malformed mnemonic: %s\n", mnemonic);
276 } 277 }
277 278
278 static char file_header[] = 279 static const char file_header[] =
279 "/* The opcode table. This file was generated by s390-mkopc.\n\n" 280 "/* The opcode table. This file was generated by s390-mkopc.\n\n"
280 " The format of the opcode table is:\n\n" 281 " The format of the opcode table is:\n\n"
281 " NAME OPCODE MASK OPERANDS\n\n" 282 " NAME OPCODE MASK OPERANDS\n\n"
282 " Name is the name of the instruction.\n" 283 " Name is the name of the instruction.\n"
283 " OPCODE is the instruction opcode.\n" 284 " OPCODE is the instruction opcode.\n"
284 " MASK is the opcode mask; this is used to tell the disassembler\n" 285 " MASK is the opcode mask; this is used to tell the disassembler\n"
285 " which bits in the actual opcode must match OPCODE.\n" 286 " which bits in the actual opcode must match OPCODE.\n"
286 " OPERANDS is the list of operands.\n\n" 287 " OPERANDS is the list of operands.\n\n"
287 " The disassembler reads the table in order and prints the first\n" 288 " The disassembler reads the table in order and prints the first\n"
288 " instruction which matches. */\n\n" 289 " instruction which matches. */\n\n"
289 "const struct s390_opcode s390_opcodes[] =\n {\n"; 290 "const struct s390_opcode s390_opcodes[] =\n {\n";
290 291
291 /* `dumpTable': write opcode table. */ 292 /* `dumpTable': write opcode table. */
292 293
293 static void 294 static void
294 dumpTable (void) 295 dumpTable (void)
295 { 296 {
296 char *str; 297 char *str;
297 int ix; 298 int ix;
298 299
299 /* Write hash table entries (slots). */ 300 /* Write hash table entries (slots). */
300 printf (file_header); 301 printf ("%s", file_header);
301 302
302 for (ix = 0; ix < no_ops; ix++) 303 for (ix = 0; ix < no_ops; ix++)
303 { 304 {
304 printf (" { \"%s\", ", op_array[ix].mnemonic); 305 printf (" { \"%s\", ", op_array[ix].mnemonic);
305 for (str = op_array[ix].opcode; *str != 0; str++) 306 for (str = op_array[ix].opcode; *str != 0; str++)
306 if (*str == '?') 307 if (*str == '?')
307 *str = '0'; 308 *str = '0';
308 printf ("OP%i(0x%sLL), ", 309 printf ("OP%i(0x%sLL), ",
309 op_array[ix].no_nibbles*4, op_array[ix].opcode); 310 op_array[ix].no_nibbles*4, op_array[ix].opcode);
310 printf ("MASK_%s, INSTR_%s, ", 311 printf ("MASK_%s, INSTR_%s, ",
311 op_array[ix].format, op_array[ix].format); 312 op_array[ix].format, op_array[ix].format);
312 printf ("%i, ", op_array[ix].mode_bits); 313 printf ("%i, ", op_array[ix].mode_bits);
313 printf ("%i}", op_array[ix].min_cpu); 314 printf ("%i}", op_array[ix].min_cpu);
314 if (ix < no_ops-1) 315 if (ix < no_ops-1)
315 printf (",\n"); 316 printf (",\n");
316 else 317 else
317 printf ("\n"); 318 printf ("\n");
318 } 319 }
319 printf ("};\n\n"); 320 printf ("};\n\n");
320 printf ("const int s390_num_opcodes =\n"); 321 printf ("const int s390_num_opcodes =\n");
321 printf (" sizeof (s390_opcodes) / sizeof (s390_opcodes[0]);\n\n"); 322 printf (" sizeof (s390_opcodes) / sizeof (s390_opcodes[0]);\n\n");
322 } 323 }
323 324
324 int 325 int
325 main (void) 326 main (void)
326 { 327 {
327 char currentLine[256]; 328 char currentLine[256];
328 329
329 createTable (); 330 createTable ();
330 331
331 /* Read opcode descriptions from `stdin'. For each mnemonic, 332 /* Read opcode descriptions from `stdin'. For each mnemonic,
332 make an entry into the opcode table. */ 333 make an entry into the opcode table. */
333 while (fgets (currentLine, sizeof (currentLine), stdin) != NULL) 334 while (fgets (currentLine, sizeof (currentLine), stdin) != NULL)
334 { 335 {
335 char opcode[16]; 336 char opcode[16];
336 char mnemonic[16]; 337 char mnemonic[16];
337 char format[16]; 338 char format[16];
338 char description[80]; 339 char description[80];
339 char cpu_string[16]; 340 char cpu_string[16];
340 char modes_string[16]; 341 char modes_string[16];
341 int min_cpu; 342 int min_cpu;
342 int mode_bits; 343 int mode_bits;
343 char *str; 344 char *str;
344 345
345 if (currentLine[0] == '#') 346 if (currentLine[0] == '#' || currentLine[0] == '\n')
346 continue; 347 continue;
347 memset (opcode, 0, 8); 348 memset (opcode, 0, 8);
348 if (sscanf (currentLine, "%15s %15s %15s \"%79[^\"]\" %15s %15s", 349 if (sscanf (currentLine, "%15s %15s %15s \"%79[^\"]\" %15s %15s",
349 opcode, mnemonic, format, description, 350 opcode, mnemonic, format, description,
350 cpu_string, modes_string) == 6) 351 cpu_string, modes_string) == 6)
351 { 352 {
352 if (strcmp (cpu_string, "g5") == 0) 353 if (strcmp (cpu_string, "g5") == 0)
353 min_cpu = S390_OPCODE_G5; 354 min_cpu = S390_OPCODE_G5;
354 else if (strcmp (cpu_string, "g6") == 0) 355 else if (strcmp (cpu_string, "g6") == 0)
355 min_cpu = S390_OPCODE_G6; 356 min_cpu = S390_OPCODE_G6;
356 else if (strcmp (cpu_string, "z900") == 0) 357 else if (strcmp (cpu_string, "z900") == 0)
357 min_cpu = S390_OPCODE_Z900; 358 min_cpu = S390_OPCODE_Z900;
358 else if (strcmp (cpu_string, "z990") == 0) 359 else if (strcmp (cpu_string, "z990") == 0)
359 min_cpu = S390_OPCODE_Z990; 360 min_cpu = S390_OPCODE_Z990;
360 else if (strcmp (cpu_string, "z9-109") == 0) 361 else if (strcmp (cpu_string, "z9-109") == 0)
361 min_cpu = S390_OPCODE_Z9_109; 362 min_cpu = S390_OPCODE_Z9_109;
362 else if (strcmp (cpu_string, "z9-ec") == 0) 363 else if (strcmp (cpu_string, "z9-ec") == 0)
363 min_cpu = S390_OPCODE_Z9_EC; 364 min_cpu = S390_OPCODE_Z9_EC;
364 else if (strcmp (cpu_string, "z10") == 0) 365 else if (strcmp (cpu_string, "z10") == 0)
365 min_cpu = S390_OPCODE_Z10; 366 min_cpu = S390_OPCODE_Z10;
366 else if (strcmp (cpu_string, "z196") == 0) 367 else if (strcmp (cpu_string, "z196") == 0)
367 min_cpu = S390_OPCODE_Z196; 368 min_cpu = S390_OPCODE_Z196;
369 else if (strcmp (cpu_string, "zEC12") == 0)
370 min_cpu = S390_OPCODE_ZEC12;
368 else { 371 else {
369 fprintf (stderr, "Couldn't parse cpu string %s\n", cpu_string); 372 fprintf (stderr, "Couldn't parse cpu string %s\n", cpu_string);
370 exit (1); 373 exit (1);
371 } 374 }
372 375
373 str = modes_string; 376 str = modes_string;
374 mode_bits = 0; 377 mode_bits = 0;
375 do { 378 do {
376 if (strncmp (str, "esa", 3) == 0 379 if (strncmp (str, "esa", 3) == 0
377 && (str[3] == 0 || str[3] == ',')) { 380 && (str[3] == 0 || str[3] == ',')) {
(...skipping 17 matching lines...) Expand all
395 else 398 else
396 { 399 {
397 fprintf (stderr, "Couldn't scan line %s\n", currentLine); 400 fprintf (stderr, "Couldn't scan line %s\n", currentLine);
398 exit (1); 401 exit (1);
399 } 402 }
400 } 403 }
401 404
402 dumpTable (); 405 dumpTable ();
403 return 0; 406 return 0;
404 } 407 }
OLDNEW
« no previous file with comments | « opcodes/s390-dis.c ('k') | opcodes/s390-opc.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698