diff --git a/bfd/archures.c b/bfd/archures.c index c833cbf..92c4867 100644 --- a/bfd/archures.c +++ b/bfd/archures.c @@ -453,6 +453,7 @@ DESCRIPTION . bfd_arch_tilegx, {* Tilera TILE-Gx *} .#define bfd_mach_tilepro 1 .#define bfd_mach_tilegx 1 +.#define bfd_mach_tilegx32 2 . bfd_arch_last . }; */ diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index fb56337..4a92e47 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -2159,6 +2159,7 @@ enum bfd_architecture bfd_arch_tilegx, /* Tilera TILE-Gx */ #define bfd_mach_tilepro 1 #define bfd_mach_tilegx 1 +#define bfd_mach_tilegx32 2 bfd_arch_last }; diff --git a/bfd/cpu-tilegx.c b/bfd/cpu-tilegx.c index dc9bc63..f98cb0c 100644 --- a/bfd/cpu-tilegx.c +++ b/bfd/cpu-tilegx.c @@ -22,6 +22,23 @@ #include "sysdep.h" #include "libbfd.h" +const bfd_arch_info_type bfd_tilegx32_arch = + { + 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_tilegx, + bfd_mach_tilegx32, + "tilegx32", + "tilegx32", + 3, + FALSE, + bfd_default_compatible, + bfd_default_scan, + bfd_arch_default_fill, + 0, + }; + const bfd_arch_info_type bfd_tilegx_arch = { 64, /* 64 bits in a word */ @@ -36,5 +53,5 @@ const bfd_arch_info_type bfd_tilegx_arch = bfd_default_compatible, bfd_default_scan, bfd_arch_default_fill, - 0, + &bfd_tilegx32_arch, }; diff --git a/gas/config/tc-tilegx.c b/gas/config/tc-tilegx.c index 39e1907..9f6e349 100644 --- a/gas/config/tc-tilegx.c +++ b/gas/config/tc-tilegx.c @@ -241,6 +241,10 @@ md_begin (void) { const struct tilegx_opcode *op; int i; + int mach = (tilegx_arch_size == 64) ? bfd_mach_tilegx : bfd_mach_tilegx32; + + if (! bfd_set_arch_mach (stdoutput, bfd_arch_tilegx, mach)) + as_warn (_("Could not set architecture and machine")); /* Guarantee text section is aligned. */ bfd_set_section_alignment (stdoutput, text_section,