remove very ugly and unsafe code (string functions are evil!) - new code is also 10 times faster.

This commit is contained in:
Stanislav Shwartsman 2009-04-22 19:11:01 +00:00
parent 6a78f0d769
commit e52cff7da3
5 changed files with 55 additions and 59 deletions

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: acpi.cc,v 1.23 2009-04-22 18:37:06 vruppert Exp $
// $Id: acpi.cc,v 1.24 2009-04-22 19:11:00 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2006 Volker Ruppert
@ -497,20 +497,19 @@ Bit32u bx_acpi_ctrl_c::pci_read_handler(Bit8u address, unsigned io_len)
{
Bit32u value = 0;
// This odd code is to display only what bytes actually were read.
char szTmp[9];
char szTmp2[3];
szTmp[0] = '\0';
szTmp2[0] = '\0';
for (unsigned i=0; i<io_len; i++) {
value |= (BX_ACPI_THIS s.pci_conf[address+i] << (i*8));
sprintf(szTmp2, "%02x", (BX_ACPI_THIS s.pci_conf[address+i]));
strrev(szTmp2);
strcat(szTmp, szTmp2);
}
strrev(szTmp);
BX_DEBUG(("ACPI controller read register 0x%02x value 0x%s", address, szTmp));
if (io_len == 1)
BX_DEBUG(("ACPI controller read register 0x%02x value 0x%02x", address, value));
else if (io_len == 2)
BX_DEBUG(("ACPI controller read register 0x%02x value 0x%04x", address, value));
else if (io_len == 4)
BX_DEBUG(("ACPI controller read register 0x%02x value 0x%08x", address, value));
else
BX_PANIC(("ACPI controller read register 0x%02x unexpected io_len %d", address, io_len));
return value;
}

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: pcipnic.cc,v 1.35 2009-04-22 18:37:06 vruppert Exp $
// $Id: pcipnic.cc,v 1.36 2009-04-22 19:11:00 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2003 Fen Systems Ltd.
@ -305,20 +305,19 @@ Bit32u bx_pcipnic_c::pci_read_handler(Bit8u address, unsigned io_len)
{
Bit32u value = 0;
// This odd code is to display only what bytes actually were read.
char szTmp[9];
char szTmp2[3];
szTmp[0] = '\0';
szTmp2[0] = '\0';
for (unsigned i=0; i<io_len; i++) {
value |= (BX_PNIC_THIS s.pci_conf[address+i] << (i*8));
sprintf(szTmp2, "%02x", (BX_PNIC_THIS s.pci_conf[address+i]));
strrev(szTmp2);
strcat(szTmp, szTmp2);
}
strrev(szTmp);
BX_DEBUG(("Experimental PNIC PCI read register 0x%02x value 0x%s",
address, szTmp));
if (io_len == 1)
BX_DEBUG(("Experimental PNIC PCI read register 0x%02x value 0x%02x", address, value));
else if (io_len == 2)
BX_DEBUG(("Experimental PNIC PCI read register 0x%02x value 0x%04x", address, value));
else if (io_len == 4)
BX_DEBUG(("Experimental PNIC PCI read register 0x%02x value 0x%08x", address, value));
else
BX_PANIC(("Experimental PNIC PCI read register 0x%02x unexpected io_len %d", address, io_len));
return value;
}

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: pcivga.cc,v 1.28 2009-04-22 18:37:06 vruppert Exp $
// $Id: pcivga.cc,v 1.29 2009-04-22 19:11:00 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2002,2003 Mike Nordell
@ -134,21 +134,19 @@ Bit32u bx_pcivga_c::pci_read_handler(Bit8u address, unsigned io_len)
{
Bit32u value = 0;
// This odd code is to display only what bytes actually were read.
char szTmp[9];
char szTmp2[3];
szTmp[0] = '\0';
szTmp2[0] = '\0';
for (unsigned i=0; i<io_len; i++) {
value |= (BX_PCIVGA_THIS s.pci_conf[address+i] << (i*8));
sprintf(szTmp2, "%02x", (BX_PCIVGA_THIS s.pci_conf[address+i]));
strrev(szTmp2);
strcat(szTmp, szTmp2);
}
strrev(szTmp);
BX_DEBUG(("Experimental PCIVGA read register 0x%02x value 0x%s",
address, szTmp));
if (io_len == 1)
BX_DEBUG(("Experimental PCIVGA read register 0x%02x value 0x%02x", address, value));
else if (io_len == 2)
BX_DEBUG(("Experimental PCIVGA read register 0x%02x value 0x%04x", address, value));
else if (io_len == 4)
BX_DEBUG(("Experimental PCIVGA read register 0x%02x value 0x%08x", address, value));
else
BX_PANIC(("Experimental PCIVGA read register 0x%02x vunexpected io_len %d", address, io_len));
return value;
}

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: usb_ohci.cc,v 1.31 2009-04-22 18:37:06 vruppert Exp $
// $Id: usb_ohci.cc,v 1.32 2009-04-22 19:11:00 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2009 Benjamin D Lunt (fys at frontiernet net)
@ -1338,19 +1338,19 @@ Bit32u bx_usb_ohci_c::pci_read_handler(Bit8u address, unsigned io_len)
{
Bit32u value = 0;
// This odd code is to display only what bytes actually were read.
char szTmp[9];
char szTmp2[3];
szTmp[0] = '\0';
szTmp2[0] = '\0';
for (unsigned i=0; i<io_len; i++) {
value |= (BX_OHCI_THIS hub.pci_conf[address+i] << (i*8));
sprintf(szTmp2, "%02x", (BX_OHCI_THIS hub.pci_conf[address+i]));
strrev(szTmp2);
strcat(szTmp, szTmp2);
}
strrev(szTmp);
BX_DEBUG(("USB OHCI read register 0x%02x value 0x%s", address, szTmp));
if (io_len == 1)
BX_DEBUG(("USB OHCI read register 0x%02x value 0x%02x", address, value));
else if (io_len == 2)
BX_DEBUG(("USB OHCI read register 0x%02x value 0x%04x", address, value));
else if (io_len == 4)
BX_DEBUG(("USB OHCI read register 0x%02x value 0x%04x", address, value));
else
BX_PANIC(("USB OHCI read register 0x%02x unexpected io_len %d", address, io_len));
return value;
}

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: usb_uhci.cc,v 1.25 2009-04-22 18:37:06 vruppert Exp $
// $Id: usb_uhci.cc,v 1.26 2009-04-22 19:11:01 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2009 Benjamin D Lunt (fys at frontiernet net)
@ -943,19 +943,19 @@ Bit32u bx_usb_uhci_c::pci_read_handler(Bit8u address, unsigned io_len)
{
Bit32u value = 0;
// This odd code is to display only what bytes actually were read.
char szTmp[9];
char szTmp2[3];
szTmp[0] = '\0';
szTmp2[0] = '\0';
for (unsigned i=0; i<io_len; i++) {
value |= (BX_UHCI_THIS hub.pci_conf[address+i] << (i*8));
sprintf(szTmp2, "%02x", (BX_UHCI_THIS hub.pci_conf[address+i]));
strrev(szTmp2);
strcat(szTmp, szTmp2);
}
strrev(szTmp);
BX_DEBUG(("USB UHCI read register 0x%02x value 0x%s", address, szTmp));
if (io_len == 1)
BX_DEBUG(("USB UHCI read register 0x%02x value 0x%02x", address, value));
else if (io_len == 2)
BX_DEBUG(("USB UHCI read register 0x%02x value 0x%04x", address, value));
else if (io_len == 4)
BX_DEBUG(("USB UHCI read register 0x%02x value 0x%04x", address, value));
else
BX_PANIC(("USB UHCI read register 0x%02x unexpected io_len %d", address, io_len));
return value;
}