Re: [PATCH] Fix sparc-*-linux register fetching/storing

Andrew Cagney
2001-11-26T17:18:22Z

>
> Well, regcache_collect is the only approved interface to the contents
> of registers[] for one thing. It would also prevent the need for the
> cast (although you'd have to clear the upper half of the variable
> first and make sure to stuff it into the low bytes since we're
> big-endian. Ew.).
>
> Andrew? Do we need to have a regcache_collect_core_addr, to sign
> extend and shift appropriately for each architecture?

That sounds like overkill. If you need to be doing sign/zero extension
stuff then I'd be looking at explicit calls to extract_signed_integer()
and/or extract_unsigned_integer() in the nat code.

A sequence like:

void *buf = alloca (MAX_REGISTER_RAW_SIZE);
regcache_collect (my reg, buf);
LONGEST val = extract_unsigned_integer (buf, REGISTER_RAW_SIZE(my reg));
store_unsigned_integer (dest, dest size, val);

should insulate it from the current problems.

Andrew