X-Git-Url: https://oss.titaniummirror.com/gitweb?p=msp430-binutils.git;a=blobdiff_plain;f=opcodes%2Fz8kgen.c;fp=opcodes%2Fz8kgen.c;h=8d418f7be3f76183c75c9aba70475f8a65477f9a;hp=bb513ba430097f79eadd5da7911bb122e0d41572;hb=88750007d7869f178f0ba528f41efd3b74c424cf;hpb=6df9443a374e2b81278c61b8afc0a1eef7db280b diff --git a/opcodes/z8kgen.c b/opcodes/z8kgen.c index bb513ba..8d418f7 100644 --- a/opcodes/z8kgen.c +++ b/opcodes/z8kgen.c @@ -1,4 +1,4 @@ -/* Copyright 2001, 2002, 2003, 2005, 2007 Free Software Foundation, Inc. +/* Copyright 2001, 2002, 2003, 2005, 2007, 2009 Free Software Foundation, Inc. This file is part of the GNU opcodes library. @@ -567,9 +567,14 @@ count (void) } static int -func (struct op *a, struct op *b) +func (const void *p1, const void *p2) { - return strcmp ((a)->name, (b)->name); + const struct op *a = p1; + const struct op *b = p2; + int ret = strcmp (a->name, b->name); + if (ret != 0) + return ret; + return p1 > p2 ? 1 : -1; } @@ -904,14 +909,14 @@ static void internal (void) { int c = count (); - struct op *new = xmalloc (sizeof (struct op) * c); + struct op *new_op = xmalloc (sizeof (struct op) * c); struct op *p = opt; - memcpy (new, p, c * sizeof (struct op)); + memcpy (new_op, p, c * sizeof (struct op)); /* Sort all names in table alphabetically. */ - qsort (new, c, sizeof (struct op), (int (*)(const void *, const void *))func); + qsort (new_op, c, sizeof (struct op), func); - p = new; + p = new_op; while (p->flags && p->flags[0] != '*') { /* If there are any @rs, sub the ssss into a ssn0, (rs), (ssn0). */ @@ -960,18 +965,18 @@ gas (void) struct op *p = opt; int idx = -1; char *oldname = ""; - struct op *new = xmalloc (sizeof (struct op) * c); + struct op *new_op = xmalloc (sizeof (struct op) * c); - memcpy (new, p, c * sizeof (struct op)); + memcpy (new_op, p, c * sizeof (struct op)); /* Sort all names in table alphabetically. */ - qsort (new, c, sizeof (struct op), (int (*)(const void *, const void *)) func); + qsort (new_op, c, sizeof (struct op), func); printf ("/* DO NOT EDIT! -*- buffer-read-only: t -*-\n"); printf (" This file is automatically generated by z8kgen. */\n\n"); - printf ("/* Copyright 2007 Free Software Foundation, Inc.\n\ + printf ("/* Copyright 2007, 2009 Free Software Foundation, Inc.\n\ \n\ -/* This file is part of the GNU opcodes library.\n\ + This file is part of the GNU opcodes library.\n\ \n\ This library is free software; you can redistribute it and/or modify\n\ it under the terms of the GNU General Public License as published by\n\ @@ -1279,19 +1284,19 @@ gas (void) printf ("#ifdef DEFINE_TABLE\n"); printf ("const opcode_entry_type z8k_table[] = {\n"); - while (new->flags && new->flags[0]) + while (new_op->flags && new_op->flags[0]) { int nargs; int length; - printf ("\n/* %s *** %s */\n", new->bits, new->name); + printf ("\n/* %s *** %s */\n", new_op->bits, new_op->name); printf ("{\n"); printf ("#ifdef NICENAMES\n"); - printf ("\"%s\",%d,%d,", new->name, new->type, new->cycles); + printf ("\"%s\",%d,%d,", new_op->name, new_op->type, new_op->cycles); { int answer = 0; - char *p = new->flags; + char *p = new_op->flags; while (*p) { @@ -1306,20 +1311,20 @@ gas (void) printf ("#endif\n"); - nargs = chewname (&new->name); + nargs = chewname (&new_op->name); printf ("\n\t"); - chewbits (new->bits, &length); + chewbits (new_op->bits, &length); length /= 2; if (length & 1) abort(); - if (strcmp (oldname, new->name) != 0) + if (strcmp (oldname, new_op->name) != 0) idx++; printf (",%d,%d,%d", nargs, length, idx); - oldname = new->name; + oldname = new_op->name; printf ("},\n"); - new++; + new_op++; } printf ("\n/* end marker */\n"); printf ("{\n#ifdef NICENAMES\nNULL,0,0,\n0,\n#endif\n");