summaryrefslogtreecommitdiffstats
path: root/backends/ppc_regs.c
diff options
context:
space:
mode:
authorRoland McGrath <[email protected]>2006-10-10 00:25:21 +0000
committerRoland McGrath <[email protected]>2006-10-10 00:25:21 +0000
commitc373d850ec9ca342f4c71d5e287c8d8bf0723cd6 (patch)
treec8f9ea814866cdfb30ac9506ccddbc8629ebe345 /backends/ppc_regs.c
parent1dee360aa30fecd20f403f98fd1cb9e543afcca7 (diff)
2006-10-09 Roland McGrath <[email protected]>
* ia64_symbol.c (ia64_reloc_simple_type): Treat SECREL types as simple.
Diffstat (limited to 'backends/ppc_regs.c')
-rw-r--r--backends/ppc_regs.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/backends/ppc_regs.c b/backends/ppc_regs.c
index bea8d357..3d47d3d0 100644
--- a/backends/ppc_regs.c
+++ b/backends/ppc_regs.c
@@ -28,14 +28,16 @@
#endif
#include <string.h>
+#include <dwarf.h>
#define BACKEND ppc_
#include "libebl_CPU.h"
ssize_t
-ppc_register_name (Ebl *ebl __attribute__ ((unused)),
+ppc_register_info (Ebl *ebl __attribute__ ((unused)),
int regno, char *name, size_t namelen,
- const char **prefix, const char **setname)
+ const char **prefix, const char **setname,
+ int *bits, int *type)
{
if (name == NULL)
return 1156;
@@ -44,6 +46,9 @@ ppc_register_name (Ebl *ebl __attribute__ ((unused)),
return -1;
*prefix = NULL;
+ *bits = ebl->machine == EM_PPC64 ? 64 : 32;
+ *type = (regno < 32 ? DW_ATE_signed
+ : regno < 64 ? DW_ATE_float : DW_ATE_unsigned);
if (regno < 32 || regno == 64 || regno == 66)
*setname = "integer";
@@ -52,7 +57,10 @@ ppc_register_name (Ebl *ebl __attribute__ ((unused)),
else if (regno < 1124)
*setname = "privileged";
else
- *setname = "vector";
+ {
+ *setname = "vector";
+ *bits = 128;
+ }
switch (regno)
{
@@ -155,5 +163,5 @@ ppc_register_name (Ebl *ebl __attribute__ ((unused)),
return namelen;
}
-__typeof (ppc_register_name)
- ppc64_register_name __attribute__ ((alias ("ppc_register_name")));
+__typeof (ppc_register_info)
+ ppc64_register_info __attribute__ ((alias ("ppc_register_info")));