diff options
Diffstat (limited to 'sim/m32c/misc.c')
-rw-r--r-- | sim/m32c/misc.c | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/sim/m32c/misc.c b/sim/m32c/misc.c new file mode 100644 index 0000000..4a0d5e7 --- /dev/null +++ b/sim/m32c/misc.c @@ -0,0 +1,79 @@ +/* misc.c --- miscellaneous utility functions for M32C simulator. + +Copyright (C) 2005 Free Software Foundation, Inc. +Contributed by Red Hat, Inc. + +This file is part of the GNU simulators. + +The GNU simulators are free software; you can redistribute them and/or +modify them under the terms of the GNU General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU simulators are distributed in the hope that they will be +useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with the GNU simulators; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301, USA */ + + +#include <stdio.h> + +#include "cpu.h" +#include "misc.h" + +int +bcd2int (int bcd, int w) +{ + int v = 0, m = 1, i; + for (i = 0; i < (w ? 4 : 2); i++) + { + v += (bcd % 16) * m; + m *= 10; + bcd /= 16; + } + return v; +} + +int +int2bcd (int v, int w) +{ + int bcd = 0, m = 1, i; + for (i = 0; i < (w ? 4 : 2); i++) + { + bcd += (v % 10) * m; + m *= 16; + v /= 10; + } + return bcd; +} + +char * +comma (unsigned int u) +{ + static char buf[5][20]; + static int bi = 0; + int comma = 0; + char *bp; + + bi = (bi + 1) % 5; + bp = buf[bi] + 19; + *--bp = 0; + do + { + if (comma == 3) + { + *--bp = ','; + comma = 0; + } + comma++; + *--bp = '0' + (u % 10); + u /= 10; + } + while (u); + return bp; +} |