i386: Align branches within a fixed boundary
[deliverable/binutils-gdb.git] / gas / config / tc-i386.h
index b02a25671f5978546c5d7f6930ff09729796862e..28f03cf2dbe21d64621489a136710e2db1717a9a 100644 (file)
@@ -210,12 +210,19 @@ if ((n)                                                                   \
 
 #define MAX_MEM_FOR_RS_ALIGN_CODE  (alignment ? ((1 << alignment) - 1) : 1)
 
+extern void i386_cons_align (int);
+#define md_cons_align(nbytes) i386_cons_align (nbytes)
+
 void i386_print_statistics (FILE *);
 #define tc_print_statistics i386_print_statistics
 
 extern unsigned int i386_frag_max_var (fragS *);
 #define md_frag_max_var i386_frag_max_var
 
+extern long i386_generic_table_relax_frag (segT, fragS *, long);
+#define md_generic_table_relax_frag(segment, fragP, stretch) \
+  i386_generic_table_relax_frag (segment, fragP, stretch)
+
 #define md_number_to_chars number_to_chars_littleendian
 
 enum processor_type
@@ -250,10 +257,24 @@ extern i386_cpu_flags cpu_arch_isa_flags;
 
 struct i386_tc_frag_data
 {
+  union
+    {
+      fragS *padding_fragP;
+      fragS *branch_fragP;
+    } u;
+  addressT padding_address;
   enum processor_type isa;
   i386_cpu_flags isa_flags;
   enum processor_type tune;
   unsigned int max_bytes;
+  unsigned char length;
+  unsigned char last_length;
+  unsigned char max_prefix_length;
+  unsigned char prefix_length;
+  unsigned char default_prefix;
+  unsigned char cmp_size;
+  unsigned int classified : 1;
+  unsigned int branch_type : 3;
 };
 
 /* We need to emit the right NOP pattern in .align frags.  This is
@@ -264,10 +285,20 @@ struct i386_tc_frag_data
 #define TC_FRAG_INIT(FRAGP, MAX_BYTES)                         \
  do                                                            \
    {                                                           \
+     (FRAGP)->tc_frag_data.u.padding_fragP = NULL;             \
+     (FRAGP)->tc_frag_data.padding_address = 0;                        \
      (FRAGP)->tc_frag_data.isa = cpu_arch_isa;                 \
      (FRAGP)->tc_frag_data.isa_flags = cpu_arch_isa_flags;     \
      (FRAGP)->tc_frag_data.tune = cpu_arch_tune;               \
      (FRAGP)->tc_frag_data.max_bytes = (MAX_BYTES);            \
+     (FRAGP)->tc_frag_data.length = 0;                         \
+     (FRAGP)->tc_frag_data.last_length = 0;                    \
+     (FRAGP)->tc_frag_data.max_prefix_length = 0;              \
+     (FRAGP)->tc_frag_data.prefix_length = 0;                  \
+     (FRAGP)->tc_frag_data.default_prefix = 0;                 \
+     (FRAGP)->tc_frag_data.cmp_size = 0;                       \
+     (FRAGP)->tc_frag_data.classified = 0;                     \
+     (FRAGP)->tc_frag_data.branch_type = 0;                    \
    }                                                           \
  while (0)
 
This page took 0.026073 seconds and 4 git commands to generate.