From: Alan Modra Date: Wed, 4 Sep 2002 13:21:18 +0000 (+0000) Subject: * config/tc-ppc.c (PPC_HIGHER, PPC_HIGHEST): Fix warning. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=9eced814417fb29ec2e8a76739f9a6d4a8a14daa;p=pf3gnuchains%2Fpf3gnuchains3x.git * 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. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 2d8c4af9d3..63168a4e3c 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2002-09-04 Alan Modra + + * 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. + 2002-09-04 Nick Clifton * config/tc-ppc.c (md_begin): Do not insert non-BookE32 diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c index b7679f9736..f551198cb1 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*