xref: /netbsd-src/external/gpl3/binutils/dist/bfd/cpu-s390.c (revision cb63e24e8d6aae7ddac1859a9015f48b1d8bd90e)
12a6b7db3Sskrll /* BFD support for the s390 processor.
2*cb63e24eSchristos    Copyright (C) 2000-2024 Free Software Foundation, Inc.
32a6b7db3Sskrll    Contributed by Carl B. Pedersen and Martin Schwidefsky.
42a6b7db3Sskrll 
52a6b7db3Sskrll    This file is part of BFD, the Binary File Descriptor library.
62a6b7db3Sskrll 
72a6b7db3Sskrll    This program is free software; you can redistribute it and/or modify
82a6b7db3Sskrll    it under the terms of the GNU General Public License as published by
92a6b7db3Sskrll    the Free Software Foundation; either version 3 of the License, or
102a6b7db3Sskrll    (at your option) any later version.
112a6b7db3Sskrll 
122a6b7db3Sskrll    This program is distributed in the hope that it will be useful,
132a6b7db3Sskrll    but WITHOUT ANY WARRANTY; without even the implied warranty of
142a6b7db3Sskrll    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
152a6b7db3Sskrll    GNU General Public License for more details.
162a6b7db3Sskrll 
172a6b7db3Sskrll    You should have received a copy of the GNU General Public License
182a6b7db3Sskrll    along with this program; if not, write to the Free Software
192a6b7db3Sskrll    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
202a6b7db3Sskrll    02110-1301, USA.  */
212a6b7db3Sskrll 
222a6b7db3Sskrll #include "sysdep.h"
232a6b7db3Sskrll #include "bfd.h"
242a6b7db3Sskrll #include "libbfd.h"
252a6b7db3Sskrll 
269573673dSchristos #define N(bits, number, print, is_default, next)	\
279573673dSchristos   {							\
286f4ced0bSchristos     bits,	       /* Bits in a word.  */		\
296f4ced0bSchristos     bits,	       /* Bits in an address.  */	\
306f4ced0bSchristos     8,		       /* Bits in a byte.  */		\
319573673dSchristos     bfd_arch_s390,					\
329573673dSchristos     number,						\
339573673dSchristos     "s390",						\
349573673dSchristos     print,						\
356f4ced0bSchristos     3,		       /* Section alignment power */	\
369573673dSchristos     is_default,						\
379573673dSchristos     bfd_default_compatible,				\
389573673dSchristos     bfd_default_scan,					\
399573673dSchristos     bfd_arch_default_fill,				\
406f4ced0bSchristos     next,						\
416f4ced0bSchristos     0 /* Maximum offset of a reloc from the start of an insn.  */ \
429573673dSchristos   }
432a6b7db3Sskrll 
449573673dSchristos #if BFD_DEFAULT_TARGET_SIZE == 64
459573673dSchristos static const bfd_arch_info_type bfd_s390_31_arch =
464f645668Schristos   N (32, bfd_mach_s390_31, "s390:31-bit", false, NULL);
472a6b7db3Sskrll const bfd_arch_info_type bfd_s390_arch =
484f645668Schristos   N (64, bfd_mach_s390_64, "s390:64-bit", true, &bfd_s390_31_arch);
499573673dSchristos #else
509573673dSchristos static const bfd_arch_info_type bfd_s390_64_arch =
514f645668Schristos   N (64, bfd_mach_s390_64, "s390:64-bit", false, NULL);
529573673dSchristos const bfd_arch_info_type bfd_s390_arch =
534f645668Schristos   N (32, bfd_mach_s390_31, "s390:31-bit", true, &bfd_s390_64_arch);
549573673dSchristos #endif
55