* regcache.c (max_register_size): New function.
	(init_legacy_regcache_descr): Ensure that max_register_size is
	large enough for REGISTER_VIRTUAL_SIZE.
	* regcache.h (max_register_size): Declare.
+2002-08-25  Andrew Cagney  <ac131313@redhat.com>
+
+       * regcache.c (max_register_size): New function.
+       (init_legacy_regcache_descr): Ensure that max_register_size is
+       large enough for REGISTER_VIRTUAL_SIZE.
+       * regcache.h (max_register_size): Declare.
+
 2002-08-24  Andrew Cagney  <ac131313@redhat.com>
 
        * rs6000-tdep.c (rs6000_gdbarch_init): Use deprecated version of
 
       descr->sizeof_register[i] = REGISTER_RAW_SIZE (i);
       if (descr->max_register_size < REGISTER_RAW_SIZE (i))
        descr->max_register_size = REGISTER_RAW_SIZE (i);
+      if (descr->max_register_size < REGISTER_VIRTUAL_SIZE (i))
+       descr->max_register_size = REGISTER_VIRTUAL_SIZE (i);
     }
 
   /* Come up with the real size of the registers buffer.  */
   xfree (descr);
 }
 
+/* Utility functions returning useful register attributes stored in
+   the regcache descr.  */
+
+int
+max_register_size (struct gdbarch *gdbarch)
+{
+  struct regcache_descr *descr = regcache_descr (gdbarch);
+  return descr->max_register_size;
+}
+
 /* The register cache for storing raw register values.  */
 
 struct regcache
 
 extern void regcache_collect (int regnum, void *buf);
 
 
+/* Return the size of the largest register.  Used when allocating
+   space for an aribtrary register value.  */
+
+extern int max_register_size (struct gdbarch *gdbarch);
+
+
 /* DEPRECATED: Character array containing an image of the inferior
    programs' registers for the most recently referenced thread. */