- added debug_dump() (prints the same as 'info ne2k' without arguments)

- removed FILE parameter from print_info() (unused - since dbg_printf() doesn't
  need it)
- converted tabs to spaces
- TODO: implement 'info device' with optional arguments to get rid of the
  print_info() method
This commit is contained in:
Volker Ruppert 2012-04-18 17:03:00 +00:00
parent 07a50eac31
commit bdfe4ae1bb
5 changed files with 37 additions and 23 deletions

View File

@ -3343,7 +3343,7 @@ void bx_dbg_info_tss_command(void)
void bx_dbg_info_ne2k(int page, int reg)
{
#if BX_SUPPORT_NE2K
DEV_ne2k_print_info(stderr, page, reg, 0);
DEV_ne2k_print_info(page, reg, 0);
#else
dbg_printf("NE2000 support is not compiled in\n");
#endif

View File

@ -311,7 +311,7 @@ public:
class BOCHSAPI bx_ne2k_stub_c : public bx_devmodel_c {
public:
virtual void print_info(FILE *file, int page, int reg, int nodups) {}
virtual void print_info(int page, int reg, int nodups) {}
};
class BOCHSAPI bx_speaker_stub_c : public bx_devmodel_c {

View File

@ -324,6 +324,11 @@ void bx_ne2k_c::init(void)
// Attach to the selected ethernet module
BX_NE2K_THIS ethdev = DEV_net_init_module(base, rx_handler, rx_status_handler, this);
#if BX_DEBUGGER
// register device for the 'info device' command (calls debug_dump())
bx_dbg_register_debug_info("ne2k", this);
#endif
}
//
@ -1827,6 +1832,12 @@ void bx_ne2k_c::pci_write_handler(Bit8u address, Bit32u value, unsigned io_len)
#if BX_DEBUGGER
void bx_ne2k_c::debug_dump()
{
for (int page=0; page<=2; page++)
BX_NE2K_THIS print_info(page, -1, 1);
}
/*
* this implements the info ne2k commands in the debugger.
* info ne2k - shows all registers
@ -1843,13 +1854,13 @@ void bx_ne2k_c::pci_write_handler(Bit8u address, Bit32u value, unsigned io_len)
#define BX_LOW_BYTE(x) (0x00ff & (x))
#define BX_DUPLICATE(n) if (brief && num!=n) break;
void bx_ne2k_c::print_info(FILE *fp, int page, int reg, int brief)
void bx_ne2k_c::print_info(int page, int reg, int brief)
{
int i;
int n = 0;
if (page < 0) {
for (page=0; page<=2; page++)
theNE2kDevice->print_info(fp, page, reg, 1);
theNE2kDevice->print_info(page, reg, 1);
// tell them how to use this command
dbg_printf("\nHow to use the info ne2k command:\n");
dbg_printf("info ne2k - show all registers\n");
@ -1865,7 +1876,7 @@ void bx_ne2k_c::print_info(FILE *fp, int page, int reg, int brief)
dbg_printf("NE2K registers, page %d\n", page);
dbg_printf("----------------------\n");
for (reg=0; reg<=15; reg++)
theNE2kDevice->print_info (fp, page, reg, 1);
theNE2kDevice->print_info(page, reg, 1);
dbg_printf("----------------------\n");
return;
}
@ -1912,8 +1923,8 @@ void bx_ne2k_c::print_info(FILE *fp, int page, int reg, int brief)
case 0x0006: BX_DUPLICATE(0x0005);
dbg_printf("NCR = Number of Collisions Register (read-only) = 0x%02x\n", BX_NE2K_THIS s.num_coll);
dbg_printf("TBCR1,TBCR0 = Transmit Byte Count = %02x %02x\n",
BX_HIGH_BYTE(BX_NE2K_THIS s.tx_bytes),
BX_LOW_BYTE(BX_NE2K_THIS s.tx_bytes));
BX_HIGH_BYTE(BX_NE2K_THIS s.tx_bytes),
BX_LOW_BYTE(BX_NE2K_THIS s.tx_bytes));
dbg_printf("FIFO = %02x\n", BX_NE2K_THIS s.fifo);
break;
case 0x0007:
@ -1931,11 +1942,11 @@ void bx_ne2k_c::print_info(FILE *fp, int page, int reg, int brief)
case 0x0008:
case 0x0009: BX_DUPLICATE(0x0008);
dbg_printf("CRDA1,0 = Current remote DMA address = %02x %02x\n",
BX_HIGH_BYTE(BX_NE2K_THIS s.remote_dma),
BX_LOW_BYTE(BX_NE2K_THIS s.remote_dma));
BX_HIGH_BYTE(BX_NE2K_THIS s.remote_dma),
BX_LOW_BYTE(BX_NE2K_THIS s.remote_dma));
dbg_printf("RSAR1,0 = Remote start address = %02x %02x\n",
BX_HIGH_BYTE(s.remote_start),
BX_LOW_BYTE(s.remote_start));
BX_HIGH_BYTE(s.remote_start),
BX_LOW_BYTE(s.remote_start));
break;
case 0x000a:
case 0x000b: BX_DUPLICATE(0x000a);
@ -1966,7 +1977,7 @@ void bx_ne2k_c::print_info(FILE *fp, int page, int reg, int brief)
break;
case 0x000d:
dbg_printf("CNTR0 = Tally Counter 0 (Frame alignment errors) = %02x\n",
BX_NE2K_THIS s.tallycnt_0);
BX_NE2K_THIS s.tallycnt_0);
// fall through into TCR
case 0x020d:
dbg_printf("TCR (Transmit Configuration Register):\n ");
@ -1979,7 +1990,7 @@ void bx_ne2k_c::print_info(FILE *fp, int page, int reg, int brief)
break;
case 0x000e:
dbg_printf("CNTR1 = Tally Counter 1 (CRC Errors) = %02x\n",
BX_NE2K_THIS s.tallycnt_1);
BX_NE2K_THIS s.tallycnt_1);
// fall through into DCR
case 0x020e:
dbg_printf("DCR (Data Configuration Register):\n ");
@ -1993,7 +2004,7 @@ void bx_ne2k_c::print_info(FILE *fp, int page, int reg, int brief)
break;
case 0x000f:
dbg_printf("CNTR2 = Tally Counter 2 (Missed Packet Errors) = %02x\n",
BX_NE2K_THIS s.tallycnt_2);
BX_NE2K_THIS s.tallycnt_2);
// fall through into IMR
case 0x020f:
dbg_printf("IMR (Interrupt Mask Register)\n ");
@ -2016,7 +2027,7 @@ void bx_ne2k_c::print_info(FILE *fp, int page, int reg, int brief)
dbg_printf("MAC address registers are located at page 1, registers 1-6.\n");
dbg_printf("The MAC address is ");
for (i=0; i<=5; i++)
dbg_printf("%02x%c", BX_NE2K_THIS s.physaddr[i], i<5?':' : '\n');
dbg_printf("%02x%c", BX_NE2K_THIS s.physaddr[i], i<5?':' : '\n');
break;
case 0x0107:
dbg_printf("Current page is 0x%02x\n", BX_NE2K_THIS s.curr_page);
@ -2040,8 +2051,8 @@ void bx_ne2k_c::print_info(FILE *fp, int page, int reg, int brief)
dbg_printf("PSTART = Page start register = %02x\n", BX_NE2K_THIS s.page_start);
dbg_printf("PSTOP = Page stop register = %02x\n", BX_NE2K_THIS s.page_stop);
dbg_printf("Local DMA address = %02x %02x\n",
BX_HIGH_BYTE(BX_NE2K_THIS s.local_dma),
BX_LOW_BYTE(BX_NE2K_THIS s.local_dma));
BX_HIGH_BYTE(BX_NE2K_THIS s.local_dma),
BX_LOW_BYTE(BX_NE2K_THIS s.local_dma));
break;
case 0x0203:
dbg_printf("Remote Next Packet Pointer = %02x\n", BX_NE2K_THIS s.rempkt_ptr);
@ -2052,8 +2063,8 @@ void bx_ne2k_c::print_info(FILE *fp, int page, int reg, int brief)
case 0x0206:
case 0x0207: BX_DUPLICATE(0x0206);
dbg_printf("Address Counter= %02x %02x\n",
BX_HIGH_BYTE(BX_NE2K_THIS s.address_cnt),
BX_LOW_BYTE(BX_NE2K_THIS s.address_cnt));
BX_HIGH_BYTE(BX_NE2K_THIS s.address_cnt),
BX_LOW_BYTE(BX_NE2K_THIS s.address_cnt));
break;
case 0x0208:
case 0x0209: BX_DUPLICATE(0x0208);
@ -2073,7 +2084,7 @@ void bx_ne2k_c::print_info(FILE *fp, int page, int reg, int brief)
#else
void bx_ne2k_c::print_info (FILE *fp, int page, int reg, int brief)
void bx_ne2k_c::print_info(int page, int reg, int brief)
{
}

View File

@ -207,11 +207,14 @@ public:
virtual ~bx_ne2k_c();
virtual void init(void);
virtual void reset(unsigned type);
virtual void print_info (FILE *file, int page, int reg, int nodups);
virtual void print_info(int page, int reg, int nodups);
virtual void register_state(void);
#if BX_SUPPORT_PCI
virtual void after_restore_state(void);
#endif
#if BX_DEBUGGER
virtual void debug_dump(void);
#endif
#if BX_SUPPORT_PCI
virtual Bit32u pci_read_handler(Bit8u address, unsigned io_len);

View File

@ -237,8 +237,8 @@ extern "C" {
#define DEV_acpi_generate_smi(a) bx_devices.pluginACPIController->generate_smi(a)
///////// NE2000 macro
#define DEV_ne2k_print_info(file,page,reg,brief) \
bx_devices.pluginNE2kDevice->print_info(file,page,reg,brief)
#define DEV_ne2k_print_info(page,reg,brief) \
bx_devices.pluginNE2kDevice->print_info(page,reg,brief)
///////// Speaker macros
#define DEV_speaker_beep_on(frequency) bx_devices.pluginSpeaker->beep_on(frequency)