]> oss.titaniummirror.com Git - msp430-binutils.git/blobdiff - gas/config/tc-ppc.h
Imported binutils-2.20
[msp430-binutils.git] / gas / config / tc-ppc.h
index 663419df363f8e6db827d0ba2b0302a5761d2bf1..be474bde59f5ffb406b82b46e130a0c277850b6b 100644 (file)
@@ -1,6 +1,6 @@
 /* tc-ppc.h -- Header file for tc-ppc.c.
    Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-   2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+   2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
    Written by Ian Lance Taylor, Cygnus Support.
 
    This file is part of GAS, the GNU Assembler.
@@ -22,6 +22,8 @@
 
 #define TC_PPC
 
+#include "opcode/ppc.h"
+
 struct fix;
 
 /* Set the endianness we are using.  Default to big endian.  */
@@ -90,6 +92,19 @@ extern void ppc_handle_align (struct frag *);
       && (((FRAGP)->fr_address + (FRAGP)->insn_addr) & 3) != 0)                \
     as_bad_where ((FRAGP)->fr_file, (FRAGP)->fr_line,                  \
                  _("instruction address is not a multiple of 4"));
+
+/* Arrange to store the value of ppc_cpu at the site of a fixup
+   for later use in md_apply_fix.  */
+struct _ppc_fix_extra
+{
+  ppc_cpu_t ppc_cpu;
+};
+
+extern ppc_cpu_t ppc_cpu;
+
+#define TC_FIX_TYPE struct _ppc_fix_extra
+#define TC_INIT_FIX_DATA(FIXP) \
+  do { (FIXP)->tc_fix_data.ppc_cpu = ppc_cpu; } while (0)
 \f
 #ifdef TE_PE
 
@@ -119,7 +134,7 @@ struct ppc_tc_sy
      .globl or .lglobl statement.  */
   int output;
   /* The symbol class.  */
-  int class;
+  int symbol_class;
   /* The real name, if the symbol was renamed.  */
   char *real_name;
   /* For a csect symbol, the subsegment we are using.  This is zero
@@ -180,7 +195,7 @@ do {                                                                \
     S_SET_SEGMENT (dest, S_GET_SEGMENT (src));                 \
   symbol_get_tc (dest)->size = symbol_get_tc (src)->size;      \
   symbol_get_tc (dest)->align = symbol_get_tc (src)->align;    \
-  symbol_get_tc (dest)->class = symbol_get_tc (src)->class;    \
+  symbol_get_tc (dest)->symbol_class = symbol_get_tc (src)->symbol_class;      \
   symbol_get_tc (dest)->within = symbol_get_tc (src)->within;  \
 } while (0)
 
@@ -192,10 +207,10 @@ extern const char       ppc_symbol_chars[];
 #ifdef OBJ_ELF
 
 /* Support for SHF_EXCLUDE and SHT_ORDERED */
-extern int ppc_section_letter (int, char **);
+extern bfd_vma ppc_section_letter (int, char **);
 extern int ppc_section_type (char *, size_t);
-extern int ppc_section_word (char *, size_t);
-extern int ppc_section_flags (int, int, int);
+extern bfd_vma ppc_section_word (char *, size_t);
+extern int ppc_section_flags (flagword, bfd_vma, int);
 
 #define md_elf_section_letter(LETTER, PTR_MSG) ppc_section_letter (LETTER, PTR_MSG)
 #define md_elf_section_type(STR, LEN)          ppc_section_type (STR, LEN)
@@ -234,6 +249,12 @@ extern int ppc_parse_name (const char *, struct expressionS *);
 #define md_cleanup() ppc_cleanup ()
 extern void ppc_cleanup (void);
 
+/* ppc uses different register numbers between .eh_frame and .debug_frame.
+   This macro translates the .eh_frame register numbers to .debug_frame
+   register numbers.  */
+#define md_reg_eh_frame_to_debug_frame(regno) \
+  ((regno) == 70 ? 64 /* cr2 */ : (regno))
+
 #define TARGET_USE_CFIPOP 1
 
 #define tc_cfi_frame_initial_instructions ppc_cfi_frame_initial_instructions