diff options
author | Alan Modra <amodra@gmail.com> | 2002-09-04 13:21:18 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2002-09-04 13:21:18 +0000 |
commit | 2a98c3a655468bd4fee84c0b78f248268cd0c49e (patch) | |
tree | affe0d81e979c7c83c53b32b4323d91f3cbf7922 /gas/config/tc-ppc.c | |
parent | 341026c1c143611e52a7bae351f7a886a8cc19a3 (diff) | |
download | gdb-2a98c3a655468bd4fee84c0b78f248268cd0c49e.zip gdb-2a98c3a655468bd4fee84c0b78f248268cd0c49e.tar.gz gdb-2a98c3a655468bd4fee84c0b78f248268cd0c49e.tar.bz2 |
* config/tc-ppc.c (PPC_HIGHER, PPC_HIGHEST): Fix warning.
(md_parse_option): No -a64 without BFD64.
(ppc_set_cpu): Select appropriate cpu when ppc_obj64.
(ppc_arch): Use bfd_mach_rs6k for bfd_arch_rs6000.
Diffstat (limited to 'gas/config/tc-ppc.c')
-rw-r--r-- | gas/config/tc-ppc.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c index b7679f9..f551198 100644 --- a/gas/config/tc-ppc.c +++ b/gas/config/tc-ppc.c @@ -68,14 +68,14 @@ static int set_target_endian = 0; #define PPC_HA(v) PPC_HI ((v) + 0x8000) /* #higher(value) denotes bits 32 through 47 of the indicated value. */ -#define PPC_HIGHER(v) (((v) >> 32) & 0xffff) +#define PPC_HIGHER(v) (((v) >> 16 >> 16) & 0xffff) /* #highera(value) denotes bits 32 through 47 of the indicated value, compensating for #lo() being treated as a signed number. */ #define PPC_HIGHERA(v) PPC_HIGHER ((v) + 0x8000) /* #highest(value) denotes bits 48 through 63 of the indicated value. */ -#define PPC_HIGHEST(v) (((v) >> 48) & 0xffff) +#define PPC_HIGHEST(v) (((v) >> 24 >> 24) & 0xffff) /* #highesta(value) denotes bits 48 through 63 of the indicated value, compensating for #lo being treated as a signed number. */ @@ -867,7 +867,13 @@ md_parse_option (c, arg) /* a64 and a32 determine whether to use XCOFF64 or XCOFF32. */ case 'a': if (strcmp (arg, "64") == 0) - ppc_obj64 = 1; + { +#ifdef BFD64 + ppc_obj64 = 1; +#else + as_fatal (_("%s unsupported"), "-a64"); +#endif + } else if (strcmp (arg, "32") == 0) ppc_obj64 = 0; else @@ -1100,8 +1106,10 @@ ppc_set_cpu () if (ppc_cpu == 0) { - if (strncmp (default_os, "aix", 3) == 0 - && default_os[3] >= '4' && default_os[3] <= '9') + if (ppc_obj64) + ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC | PPC_OPCODE_64; + else if (strncmp (default_os, "aix", 3) == 0 + && default_os[3] >= '4' && default_os[3] <= '9') ppc_cpu = PPC_OPCODE_COMMON | PPC_OPCODE_32; else if (strncmp (default_os, "aix3", 4) == 0) ppc_cpu = PPC_OPCODE_POWER | PPC_OPCODE_32; @@ -1147,7 +1155,12 @@ ppc_arch () unsigned long ppc_mach () { - return ppc_obj64 ? bfd_mach_ppc64 : bfd_mach_ppc; + if (ppc_obj64) + return bfd_mach_ppc64; + else if (ppc_arch () == bfd_arch_rs6000) + return bfd_mach_rs6k; + else + return bfd_mach_ppc; } extern char* |