diff options
Diffstat (limited to 'gdb/microblaze-tdep.c')
-rw-r--r-- | gdb/microblaze-tdep.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gdb/microblaze-tdep.c b/gdb/microblaze-tdep.c index 9b1ff468a57..96584004019 100644 --- a/gdb/microblaze-tdep.c +++ b/gdb/microblaze-tdep.c @@ -590,21 +590,22 @@ static void microblaze_store_return_value (struct type *type, struct regcache *regcache, const gdb_byte *valbuf) { + int len = TYPE_LENGTH (type); gdb_byte buf[8]; memset (buf, 0, sizeof(buf)); /* Integral and pointer return values. */ - if (TYPE_LENGTH (type) > 4) + if (len > 4) { - gdb_assert (TYPE_LENGTH (type) == 8); + gdb_assert (len == 8); memcpy (buf, valbuf, 8); regcache_cooked_write (regcache, MICROBLAZE_RETVAL_REGNUM+1, buf + 4); } else /* ??? Do we need to do any sign-extension here? */ - memcpy (buf + 4 - TYPE_LENGTH (type), valbuf, TYPE_LENGTH (type)); + memcpy (buf + 4 - len, valbuf, len); regcache_cooked_write (regcache, MICROBLAZE_RETVAL_REGNUM, buf); } |