* elf64-mips.c (bfd_mips_elf64_swap_reginfo_in)
authorIan Lance Taylor <ian@airs.com>
Sun, 2 Jun 1996 01:51:55 +0000 (01:51 +0000)
committerIan Lance Taylor <ian@airs.com>
Sun, 2 Jun 1996 01:51:55 +0000 (01:51 +0000)
(bfd_mips_elf64_swap_reginfo_out): Move from here...
* elf32-mips.c (bfd_mips_elf64_swap_reginfo_in)
(bfd_mips_elf64_swap_reginfo_out): ...to here.

bfd/ChangeLog
bfd/elf32-mips.c

index 3e8fc4627ba74feb764dd41cf86b838741e6f00b..cd7786af102c6ff6d2f4dd02d107dff588fcbb93 100644 (file)
@@ -1,3 +1,10 @@
+Sat Jun  1 21:49:58 1996  Ian Lance Taylor  <ian@cygnus.com>
+
+       * elf64-mips.c (bfd_mips_elf64_swap_reginfo_in)
+       (bfd_mips_elf64_swap_reginfo_out): Move from here...
+       * elf32-mips.c (bfd_mips_elf64_swap_reginfo_in)
+       (bfd_mips_elf64_swap_reginfo_out): ...to here.
+
 Fri May 31 13:51:28 1996  Ian Lance Taylor  <ian@cygnus.com>
 
        * elf64-mips.c: Improve reloc special_functions and handling of
index 94eb015ca1288b67198323a5bc76915f3e36224b..3ae2d2e466117e5aedd396c5371ac4d7ca897eee 100644 (file)
@@ -1333,6 +1333,49 @@ bfd_mips_elf32_swap_reginfo_out (abfd, in, ex)
                (bfd_byte *) ex->ri_gp_value);
 }
 
+/* In the 64 bit ABI, the .MIPS.options section holds register
+   information in an Elf64_Reginfo structure.  These routines swap
+   them in and out.  They are globally visible because they are used
+   outside of BFD.  These routines are here so that gas can call them
+   without worrying about whether the 64 bit ABI has been included.  */
+
+void
+bfd_mips_elf64_swap_reginfo_in (abfd, ex, in)
+     bfd *abfd;
+     const Elf64_External_RegInfo *ex;
+     Elf64_Internal_RegInfo *in;
+{
+  in->ri_gprmask = bfd_h_get_32 (abfd, (bfd_byte *) ex->ri_gprmask);
+  in->ri_pad = bfd_h_get_32 (abfd, (bfd_byte *) ex->ri_pad);
+  in->ri_cprmask[0] = bfd_h_get_32 (abfd, (bfd_byte *) ex->ri_cprmask[0]);
+  in->ri_cprmask[1] = bfd_h_get_32 (abfd, (bfd_byte *) ex->ri_cprmask[1]);
+  in->ri_cprmask[2] = bfd_h_get_32 (abfd, (bfd_byte *) ex->ri_cprmask[2]);
+  in->ri_cprmask[3] = bfd_h_get_32 (abfd, (bfd_byte *) ex->ri_cprmask[3]);
+  in->ri_gp_value = bfd_h_get_64 (abfd, (bfd_byte *) ex->ri_gp_value);
+}
+
+void
+bfd_mips_elf64_swap_reginfo_out (abfd, in, ex)
+     bfd *abfd;
+     const Elf64_Internal_RegInfo *in;
+     Elf64_External_RegInfo *ex;
+{
+  bfd_h_put_32 (abfd, (bfd_vma) in->ri_gprmask,
+               (bfd_byte *) ex->ri_gprmask);
+  bfd_h_put_32 (abfd, (bfd_vma) in->ri_pad,
+               (bfd_byte *) ex->ri_pad);
+  bfd_h_put_32 (abfd, (bfd_vma) in->ri_cprmask[0],
+               (bfd_byte *) ex->ri_cprmask[0]);
+  bfd_h_put_32 (abfd, (bfd_vma) in->ri_cprmask[1],
+               (bfd_byte *) ex->ri_cprmask[1]);
+  bfd_h_put_32 (abfd, (bfd_vma) in->ri_cprmask[2],
+               (bfd_byte *) ex->ri_cprmask[2]);
+  bfd_h_put_32 (abfd, (bfd_vma) in->ri_cprmask[3],
+               (bfd_byte *) ex->ri_cprmask[3]);
+  bfd_h_put_64 (abfd, (bfd_vma) in->ri_gp_value,
+               (bfd_byte *) ex->ri_gp_value);
+}
+
 /* Swap an entry in a .gptab section.  Note that these routines rely
    on the equivalence of the two elements of the union.  */