nkeynes@1091: /** nkeynes@1091: * $Id$ nkeynes@1091: * nkeynes@1091: * Generic CPU utility functions nkeynes@1091: * nkeynes@1091: * Copyright (c) 2009 Nathan Keynes. nkeynes@1091: * nkeynes@1091: * This program is free software; you can redistribute it and/or modify nkeynes@1091: * it under the terms of the GNU General Public License as published by nkeynes@1091: * the Free Software Foundation; either version 2 of the License, or nkeynes@1091: * (at your option) any later version. nkeynes@1091: * nkeynes@1091: * This program is distributed in the hope that it will be useful, nkeynes@1091: * but WITHOUT ANY WARRANTY; without even the implied warranty of nkeynes@1091: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the nkeynes@1091: * GNU General Public License for more details. nkeynes@1091: */ nkeynes@1091: nkeynes@1091: #include "cpu.h" nkeynes@1091: nkeynes@1091: void cpu_print_registers( FILE *f, cpu_desc_t cpu ) nkeynes@1091: { nkeynes@1091: int i; nkeynes@1091: int column = 0; nkeynes@1091: nkeynes@1091: fprintf( f, "%s registers:\n", cpu->name ); nkeynes@1091: for( i=0; cpu->regs_info[i].name != NULL; i++ ) { nkeynes@1091: void *value = cpu->get_register(i); nkeynes@1091: if( value != NULL ) { nkeynes@1091: column++; nkeynes@1091: switch( cpu->regs_info[i].type ) { nkeynes@1091: case REG_TYPE_INT: nkeynes@1091: fprintf( f, "%5s: %08x ", cpu->regs_info[i].name, *(uint32_t *)value ); nkeynes@1091: break; nkeynes@1091: case REG_TYPE_FLOAT: nkeynes@1091: fprintf( f, "%5s: %.8f ", cpu->regs_info[i].name, (double)*(float *)value ); nkeynes@1091: break; nkeynes@1091: case REG_TYPE_DOUBLE: nkeynes@1091: fprintf( f, "%5s: %.8f ", cpu->regs_info[i].name, *(double *)value ); nkeynes@1091: break; nkeynes@1091: case REG_TYPE_NONE: nkeynes@1091: column = 4; nkeynes@1091: } nkeynes@1091: } nkeynes@1091: if( column == 4 ) { nkeynes@1091: fprintf( f, "\n" ); nkeynes@1091: column = 0; nkeynes@1091: } nkeynes@1091: } nkeynes@1093: if( column != 0 ) { nkeynes@1093: fprintf( f, "\n" ); nkeynes@1093: } nkeynes@1091: }