diff options
-rw-r--r-- | bfd/ChangeLog | 17 | ||||
-rw-r--r-- | bfd/archures.c | 21 | ||||
-rw-r--r-- | bfd/bfd-in2.h | 21 | ||||
-rw-r--r-- | bfd/coffcode.h | 20 | ||||
-rw-r--r-- | bfd/cpu-powerpc.c | 104 | ||||
-rw-r--r-- | bfd/cpu-rs6000.c | 52 |
6 files changed, 213 insertions, 22 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 6d77375..d6f826c 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,20 @@ +2000-06-16 Nicholas Duffek <nsd@redhat.com> + + * archures.c (enum bfd_architecture): #define constants for + PowerPc and RS6000 machine numbers. + * bfd-in2.h: Regenerate. + * coffcode.h (coff_set_arch_mach_hook): #ifdef XCOFF64, set arch + to bfd_arch_powerpc instead of bfd_arch_rs6000. Refer to PowerPc + and RS6000 machine numbers using #defined constants from + archures.c. + * cpu-powerpc.c (arch_info_struct): Refer to PowerPc and RS6000 + machine numbers using #defined constants from archures.c. Add + entries for EC603e, 630, A35, RS64II, RS64III, 7400. Specify + 64-bit words in 620 entry. + * cpu-rs6000.c (arch_info_struct): Create with entries for RS1, + RSC, and RS2. + (bfd_rs6000_arch): Change default machine to 0 (bfd_mach_rs6k). + 2000-06-16 Nicholas Duffek <nsd@cygnus.com> * coffcode.h (coff_mkobject_hook): Set xcoff_tdata.xcoff64. diff --git a/bfd/archures.c b/bfd/archures.c index 536f2b1..69e42bf 100644 --- a/bfd/archures.c +++ b/bfd/archures.c @@ -146,7 +146,28 @@ DESCRIPTION .#define bfd_mach_h8300h 2 .#define bfd_mach_h8300s 3 . bfd_arch_powerpc, {* PowerPC *} +.#define bfd_mach_ppc 0 +.#define bfd_mach_ppc_403 403 +.#define bfd_mach_ppc_403gc 4030 +.#define bfd_mach_ppc_505 505 +.#define bfd_mach_ppc_601 601 +.#define bfd_mach_ppc_602 602 +.#define bfd_mach_ppc_603 603 +.#define bfd_mach_ppc_ec603e 6031 +.#define bfd_mach_ppc_604 604 +.#define bfd_mach_ppc_620 620 +.#define bfd_mach_ppc_630 630 +.#define bfd_mach_ppc_750 750 +.#define bfd_mach_ppc_860 860 +.#define bfd_mach_ppc_a35 35 +.#define bfd_mach_ppc_rs64ii 642 +.#define bfd_mach_ppc_rs64iii 643 +.#define bfd_mach_ppc_7400 7400 . bfd_arch_rs6000, {* IBM RS/6000 *} +.#define bfd_mach_rs6k 0 +.#define bfd_mach_rs6k_rs1 6001 +.#define bfd_mach_rs6k_rsc 6003 +.#define bfd_mach_rs6k_rs2 6002 . bfd_arch_hppa, {* HP PA RISC *} . bfd_arch_d10v, {* Mitsubishi D10V *} .#define bfd_mach_d10v 0 diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 561a24e..92501f0 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -1385,7 +1385,28 @@ enum bfd_architecture #define bfd_mach_h8300h 2 #define bfd_mach_h8300s 3 bfd_arch_powerpc, /* PowerPC */ +#define bfd_mach_ppc 0 +#define bfd_mach_ppc_403 403 +#define bfd_mach_ppc_403gc 4030 +#define bfd_mach_ppc_505 505 +#define bfd_mach_ppc_601 601 +#define bfd_mach_ppc_602 602 +#define bfd_mach_ppc_603 603 +#define bfd_mach_ppc_ec603e 6031 +#define bfd_mach_ppc_604 604 +#define bfd_mach_ppc_620 620 +#define bfd_mach_ppc_630 630 +#define bfd_mach_ppc_750 750 +#define bfd_mach_ppc_860 860 +#define bfd_mach_ppc_a35 35 +#define bfd_mach_ppc_rs64ii 642 +#define bfd_mach_ppc_rs64iii 643 +#define bfd_mach_ppc_7400 7400 bfd_arch_rs6000, /* IBM RS/6000 */ +#define bfd_mach_rs6k 0 +#define bfd_mach_rs6k_rs1 6001 +#define bfd_mach_rs6k_rsc 6003 +#define bfd_mach_rs6k_rs2 6002 bfd_arch_hppa, /* HP PA RISC */ bfd_arch_d10v, /* Mitsubishi D10V */ #define bfd_mach_d10v 0 diff --git a/bfd/coffcode.h b/bfd/coffcode.h index 3f155b8..9344498 100644 --- a/bfd/coffcode.h +++ b/bfd/coffcode.h @@ -1966,32 +1966,33 @@ coff_set_arch_mach_hook (abfd, filehdr) (because that's how they were bootstrapped originally), but they are always PowerPC architecture. */ arch = bfd_arch_powerpc; - machine = 0; + machine = bfd_mach_ppc; #else - arch = bfd_arch_rs6000; #ifdef XCOFF64 - machine = 620; + arch = bfd_arch_powerpc; + machine = bfd_mach_ppc_620; #else - machine = 6000; + arch = bfd_arch_rs6000; + machine = bfd_mach_rs6k; #endif #endif /* POWERMAC */ break; case 1: arch = bfd_arch_powerpc; - machine = 601; + machine = bfd_mach_ppc_601; break; case 2: /* 64 bit PowerPC */ arch = bfd_arch_powerpc; - machine = 620; + machine = bfd_mach_ppc_620; break; case 3: arch = bfd_arch_powerpc; - machine = 0; + machine = bfd_mach_ppc; break; case 4: arch = bfd_arch_rs6000; - machine = 6000; + machine = bfd_mach_rs6k; break; } } @@ -2698,7 +2699,8 @@ coff_set_flags (abfd, magicp, flagsp) case bfd_arch_powerpc: #endif #ifdef XCOFF64 - if (bfd_get_mach (abfd) == 620 && !strncmp (abfd->xvec->name,"aix", 3)) + if (bfd_get_mach (abfd) == bfd_mach_ppc_620 + && !strncmp (abfd->xvec->name,"aix", 3)) *magicp = U803XTOCMAGIC; else #else diff --git a/bfd/cpu-powerpc.c b/bfd/cpu-powerpc.c index a2c8f59..f824fff 100644 --- a/bfd/cpu-powerpc.c +++ b/bfd/cpu-powerpc.c @@ -54,7 +54,7 @@ static const bfd_arch_info_type arch_info_struct[] = 32, /* 32 bits in an address */ 8, /* 8 bits in a byte */ bfd_arch_powerpc, - 603, /* for the mpc603 */ + bfd_mach_ppc_603, "powerpc", "powerpc:603", 3, @@ -68,9 +68,9 @@ static const bfd_arch_info_type arch_info_struct[] = 32, /* 32 bits in an address */ 8, /* 8 bits in a byte */ bfd_arch_powerpc, - 604, /* for the mpc604 */ + bfd_mach_ppc_ec603e, "powerpc", - "powerpc:604", + "powerpc:EC603e", 3, false, /* not the default */ powerpc_compatible, @@ -82,9 +82,9 @@ static const bfd_arch_info_type arch_info_struct[] = 32, /* 32 bits in an address */ 8, /* 8 bits in a byte */ bfd_arch_powerpc, - 403, /* for the 403 */ + bfd_mach_ppc_604, "powerpc", - "powerpc:403", + "powerpc:604", 3, false, /* not the default */ powerpc_compatible, @@ -96,27 +96,111 @@ static const bfd_arch_info_type arch_info_struct[] = 32, /* 32 bits in an address */ 8, /* 8 bits in a byte */ bfd_arch_powerpc, - 601, /* for the mpc601 */ + bfd_mach_ppc_403, "powerpc", - "powerpc:601", + "powerpc:403", 3, false, /* not the default */ powerpc_compatible, bfd_default_scan, &arch_info_struct[4] }, - { + { 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_601, + "powerpc", + "powerpc:601", + 3, + false, /* not the default */ + powerpc_compatible, + bfd_default_scan, + &arch_info_struct[5] + }, + { + 64, /* 64 bits in a word */ 64, /* 64 bits in an address */ 8, /* 8 bits in a byte */ bfd_arch_powerpc, - 620, /* for the mpc620 */ + bfd_mach_ppc_620, "powerpc", "powerpc:620", 3, false, /* not the default */ powerpc_compatible, bfd_default_scan, + &arch_info_struct[6] + }, + { + 64, /* 64 bits in a word */ + 64, /* 64 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_630, + "powerpc", + "powerpc:630", + 3, + false, /* not the default */ + powerpc_compatible, + bfd_default_scan, + &arch_info_struct[7] + }, + { + 64, /* 64 bits in a word */ + 64, /* 64 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_a35, + "powerpc", + "powerpc:a35", + 3, + false, /* not the default */ + powerpc_compatible, + bfd_default_scan, + &arch_info_struct[8] + }, + { + 64, /* 64 bits in a word */ + 64, /* 64 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_rs64ii, + "powerpc", + "powerpc:rs64ii", + 3, + false, /* not the default */ + powerpc_compatible, + bfd_default_scan, + &arch_info_struct[9] + }, + { + 64, /* 64 bits in a word */ + 64, /* 64 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_rs64iii, + "powerpc", + "powerpc:rs64iii", + 3, + false, /* not the default */ + powerpc_compatible, + bfd_default_scan, + &arch_info_struct[10] + }, + { + 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_7400, + "powerpc", + "powerpc:7400", + 3, + false, /* not the default */ + powerpc_compatible, + bfd_default_scan, 0 } }; @@ -127,7 +211,7 @@ const bfd_arch_info_type bfd_powerpc_arch = 32, /* 32 bits in an address */ 8, /* 8 bits in a byte */ bfd_arch_powerpc, - 0, /* for the POWER/PowerPC common architecture */ + bfd_mach_ppc, /* for the POWER/PowerPC common architecture */ "powerpc", "powerpc:common", 3, diff --git a/bfd/cpu-rs6000.c b/bfd/cpu-rs6000.c index 9852ae9..4934542 100644 --- a/bfd/cpu-rs6000.c +++ b/bfd/cpu-rs6000.c @@ -53,18 +53,64 @@ rs6000_compatible (a,b) /*NOTREACHED*/ } +static const bfd_arch_info_type arch_info_struct[] = +{ + { + 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_rs6000, + bfd_mach_rs6k_rs1, + "rs6000", + "rs6000:rs1", + 3, + false, /* not the default */ + rs6000_compatible, + bfd_default_scan, + &arch_info_struct[1] + }, + { + 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_rs6000, + bfd_mach_rs6k_rsc, + "rs6000", + "rs6000:rsc", + 3, + false, /* not the default */ + rs6000_compatible, + bfd_default_scan, + &arch_info_struct[2] + }, + { + 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_rs6000, + bfd_mach_rs6k_rs2, + "rs6000", + "rs6000:rs2", + 3, + false, /* not the default */ + rs6000_compatible, + bfd_default_scan, + 0 + } +}; + const bfd_arch_info_type bfd_rs6000_arch = { 32, /* 32 bits in a word */ 32, /* 32 bits in an address */ 8, /* 8 bits in a byte */ bfd_arch_rs6000, - 6000, /* only 1 machine */ + bfd_mach_rs6k, /* POWER common architecture */ "rs6000", "rs6000:6000", 3, - true, /* the one and only */ + true, /* the default */ rs6000_compatible, bfd_default_scan, - 0, + &arch_info_struct[0] }; |