diff options
author | Ali Saidi <saidi@eecs.umich.edu> | 2006-11-10 20:17:42 -0500 |
---|---|---|
committer | Ali Saidi <saidi@eecs.umich.edu> | 2006-11-10 20:17:42 -0500 |
commit | aa19b2e7bca481b5f8fd2c54f2396b53259cf742 (patch) | |
tree | 8d628768cc46bbc6e1830e79949768eff06ee22b /src/dev | |
parent | 6d54a77518664bc9064211fcf85958b7e2caa9cc (diff) | |
download | gem5-aa19b2e7bca481b5f8fd2c54f2396b53259cf742.tar.xz |
fix endian issues with condition codes
use memcpy instead of bcopy
s/u_int32_t/uint32_t/g
fixup endian code to work with solaris
hack to make sure htole() works... Nate, have a good idea to fix this?
src/arch/sparc/faults.cc:
set the reset address to be 40 bits. Makes PC printing easier at least for now.
src/arch/sparc/isa/base.isa:
fix endian issues with condition codes
src/arch/sparc/tlb.hh:
add implemented physical addres constants
src/arch/sparc/utility.hh:
add tlb.hh to utilities
src/base/loader/raw_object.cc:
add a symbol <filename>_start to the symbol table for binaries files
src/base/remote_gdb.cc:
use memcpy instead of bcopy
src/cpu/exetrace.cc:
clean up printing a bit more
src/cpu/m5legion_interface.h:
add tons to the shared interface
src/dev/ethertap.cc:
s/u_int32_t/uint32_t/g
src/dev/ide_atareg.h:
fixup endian code to work with solaris
src/dev/pcidev.cc:
src/sim/param.hh:
hack to make sure htole() works...
--HG--
extra : convert_revision : 4579392184b40bcc1062671a953c6595c685e9b2
Diffstat (limited to 'src/dev')
-rw-r--r-- | src/dev/ethertap.cc | 14 | ||||
-rw-r--r-- | src/dev/ide_atareg.h | 14 | ||||
-rw-r--r-- | src/dev/pcidev.cc | 54 |
3 files changed, 48 insertions, 34 deletions
diff --git a/src/dev/ethertap.cc b/src/dev/ethertap.cc index 2d72383c5..65089a8b2 100644 --- a/src/dev/ethertap.cc +++ b/src/dev/ethertap.cc @@ -178,7 +178,7 @@ EtherTap::recvPacket(EthPacketPtr packet) DPRINTF(Ethernet, "EtherTap output len=%d\n", packet->length); DDUMP(EthernetData, packet->data, packet->length); - u_int32_t len = htonl(packet->length); + uint32_t len = htonl(packet->length); write(socket, &len, sizeof(len)); write(socket, packet->data, packet->length); @@ -199,11 +199,11 @@ EtherTap::process(int revent) return; } - char *data = buffer + sizeof(u_int32_t); + char *data = buffer + sizeof(uint32_t); if (!(revent & POLLIN)) return; - if (buffer_offset < data_len + sizeof(u_int32_t)) { + if (buffer_offset < data_len + sizeof(uint32_t)) { int len = read(socket, buffer + buffer_offset, buflen - buffer_offset); if (len == 0) { detach(); @@ -213,23 +213,23 @@ EtherTap::process(int revent) buffer_offset += len; if (data_len == 0) - data_len = ntohl(*(u_int32_t *)buffer); + data_len = ntohl(*(uint32_t *)buffer); DPRINTF(Ethernet, "Received data from peer: len=%d buffer_offset=%d " "data_len=%d\n", len, buffer_offset, data_len); } - while (data_len != 0 && buffer_offset >= data_len + sizeof(u_int32_t)) { + while (data_len != 0 && buffer_offset >= data_len + sizeof(uint32_t)) { EthPacketPtr packet; packet = new EthPacketData(data_len); packet->length = data_len; memcpy(packet->data, data, data_len); - buffer_offset -= data_len + sizeof(u_int32_t); + buffer_offset -= data_len + sizeof(uint32_t); assert(buffer_offset >= 0); if (buffer_offset > 0) { memmove(buffer, data + data_len, buffer_offset); - data_len = ntohl(*(u_int32_t *)buffer); + data_len = ntohl(*(uint32_t *)buffer); } else data_len = 0; diff --git a/src/dev/ide_atareg.h b/src/dev/ide_atareg.h index 5320529c8..df16d09d5 100644 --- a/src/dev/ide_atareg.h +++ b/src/dev/ide_atareg.h @@ -35,11 +35,25 @@ #if defined(linux) #include <endian.h> +#elif defined(__sun__) +#include <sys/isa_defs.h> #else #include <machine/endian.h> #endif +#ifdef LITTLE_ENDIAN #define ATA_BYTE_ORDER LITTLE_ENDIAN +#elif defined(BIG_ENDIAN) +#define ATA_BYTE_ORDER BIG_ENDIAN +#elif defined(_LITTLE_ENDIAN) +#define ATA_BYTE_ORDER 1 +#define LITTLE_ENDIAN 1 +#elif defined(_BIG_ENDIAN) +#define ATA_BYTE_ORDER 0 +#define LITTLE_ENDIAN 1 +#else +#error "No endianess defined" +#endif /* * Drive parameter structure for ATA/ATAPI. diff --git a/src/dev/pcidev.cc b/src/dev/pcidev.cc index 383fc494f..1c2465dd1 100644 --- a/src/dev/pcidev.cc +++ b/src/dev/pcidev.cc @@ -387,33 +387,33 @@ CREATE_SIM_OBJECT(PciConfigData) { PciConfigData *data = new PciConfigData(getInstanceName()); - data->config.vendor = htole(VendorID); - data->config.device = htole(DeviceID); - data->config.command = htole(Command); - data->config.status = htole(Status); - data->config.revision = htole(Revision); - data->config.progIF = htole(ProgIF); - data->config.subClassCode = htole(SubClassCode); - data->config.classCode = htole(ClassCode); - data->config.cacheLineSize = htole(CacheLineSize); - data->config.latencyTimer = htole(LatencyTimer); - data->config.headerType = htole(HeaderType); - data->config.bist = htole(BIST); - - data->config.baseAddr[0] = htole(BAR0); - data->config.baseAddr[1] = htole(BAR1); - data->config.baseAddr[2] = htole(BAR2); - data->config.baseAddr[3] = htole(BAR3); - data->config.baseAddr[4] = htole(BAR4); - data->config.baseAddr[5] = htole(BAR5); - data->config.cardbusCIS = htole(CardbusCIS); - data->config.subsystemVendorID = htole(SubsystemVendorID); - data->config.subsystemID = htole(SubsystemID); - data->config.expansionROM = htole(ExpansionROM); - data->config.interruptLine = htole(InterruptLine); - data->config.interruptPin = htole(InterruptPin); - data->config.minimumGrant = htole(MinimumGrant); - data->config.maximumLatency = htole(MaximumLatency); + data->config.vendor = htole(VendorID.returnValue()); + data->config.device = htole(DeviceID.returnValue()); + data->config.command = htole(Command.returnValue()); + data->config.status = htole(Status.returnValue()); + data->config.revision = htole(Revision.returnValue()); + data->config.progIF = htole(ProgIF.returnValue()); + data->config.subClassCode = htole(SubClassCode.returnValue()); + data->config.classCode = htole(ClassCode.returnValue()); + data->config.cacheLineSize = htole(CacheLineSize.returnValue()); + data->config.latencyTimer = htole(LatencyTimer.returnValue()); + data->config.headerType = htole(HeaderType.returnValue()); + data->config.bist = htole(BIST.returnValue()); + + data->config.baseAddr[0] = htole(BAR0.returnValue()); + data->config.baseAddr[1] = htole(BAR1.returnValue()); + data->config.baseAddr[2] = htole(BAR2.returnValue()); + data->config.baseAddr[3] = htole(BAR3.returnValue()); + data->config.baseAddr[4] = htole(BAR4.returnValue()); + data->config.baseAddr[5] = htole(BAR5.returnValue()); + data->config.cardbusCIS = htole(CardbusCIS.returnValue()); + data->config.subsystemVendorID = htole(SubsystemVendorID.returnValue()); + data->config.subsystemID = htole(SubsystemID.returnValue()); + data->config.expansionROM = htole(ExpansionROM.returnValue()); + data->config.interruptLine = htole(InterruptLine.returnValue()); + data->config.interruptPin = htole(InterruptPin.returnValue()); + data->config.minimumGrant = htole(MinimumGrant.returnValue()); + data->config.maximumLatency = htole(MaximumLatency.returnValue()); data->BARSize[0] = BAR0Size; data->BARSize[1] = BAR1Size; |