Not as far as I know. For SPARC at least you always know based on the instruction what the memory size is (load word, load byte, etc).
Gabe Korey Sewell wrote: > Is that code not in all of the other completeAcc ISA functions? > > On Sat, Nov 8, 2008 at 10:20 PM, Gabe Black <[EMAIL PROTECTED]> wrote: > >> I'm sure we could. This is useful anywhere you need to get an endian >> converted value out of a packet without knowing the size ahead of time. >> Does that happen often? I think this was the first time I'd run into it, >> but I haven't messed with a lot of the device stuff. >> >> Gabe >> >> Steve Reinhardt wrote: >> >>> Just looking at this code, can we put a more generic version of this >>> somewhere, like as a Packet method? I don't know how many other >>> places already do this, but other than the dataSize value none of that >>> code looks x86-specific, and I'm guessing there are other places that >>> do this kind of thing. It might be usable to clean up some of the >>> device code. >>> >>> Steve >>> >>> On Sat, Nov 8, 2008 at 12:08 AM, <[EMAIL PROTECTED]> wrote: >>> >>> >>>> # HG changeset patch >>>> # User Gabe Black <[EMAIL PROTECTED]> >>>> # Date 1226042030 28800 >>>> # Node ID 2e61b60e6614e026ba055946a45c5f577d8d8ff8 >>>> # Parent 94ef4905a939b782105ce0ebb3c063451744fb3d >>>> X86: Fix completeAcc get call. >>>> >>>> diff --git a/src/arch/x86/insts/microldstop.hh >>>> b/src/arch/x86/insts/microldstop.hh >>>> --- a/src/arch/x86/insts/microldstop.hh >>>> +++ b/src/arch/x86/insts/microldstop.hh >>>> @@ -59,6 +59,7 @@ >>>> #define __ARCH_X86_INSTS_MICROLDSTOP_HH__ >>>> >>>> #include "arch/x86/insts/microop.hh" >>>> +#include "mem/packet.hh" >>>> >>>> namespace X86ISA >>>> { >>>> @@ -149,6 +150,25 @@ >>>> } >>>> return fault; >>>> } >>>> + >>>> + uint64_t >>>> + get(PacketPtr pkt) const >>>> + { >>>> + switch(dataSize) >>>> + { >>>> + case 1: >>>> + return pkt->get<uint8_t>(); >>>> + case 2: >>>> + return pkt->get<uint16_t>(); >>>> + case 4: >>>> + return pkt->get<uint32_t>(); >>>> + case 8: >>>> + return pkt->get<uint64_t>(); >>>> + default: >>>> + panic("Bad operand size %d for read at %#x.\n", >>>> + dataSize, pkt->getAddr()); >>>> + } >>>> + } >>>> }; >>>> } >>>> >>>> diff --git a/src/arch/x86/isa/microops/ldstop.isa >>>> b/src/arch/x86/isa/microops/ldstop.isa >>>> --- a/src/arch/x86/isa/microops/ldstop.isa >>>> +++ b/src/arch/x86/isa/microops/ldstop.isa >>>> @@ -194,7 +194,7 @@ >>>> %(op_decl)s; >>>> %(op_rd)s; >>>> >>>> - Mem = pkt->get<typeof(Mem)>(); >>>> + Mem = get(pkt); >>>> >>>> %(code)s; >>>> >>>> _______________________________________________ >>>> m5-dev mailing list >>>> m5-dev@m5sim.org >>>> http://m5sim.org/mailman/listinfo/m5-dev >>>> >>>> >>>> >>> _______________________________________________ >>> m5-dev mailing list >>> m5-dev@m5sim.org >>> http://m5sim.org/mailman/listinfo/m5-dev >>> >>> >> _______________________________________________ >> m5-dev mailing list >> m5-dev@m5sim.org >> http://m5sim.org/mailman/listinfo/m5-dev >> >> > > > > _______________________________________________ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev