Currently all target dependent code for s390 is in one file, s390-linux-tdep.c. This includes code general for the architecture as well as code specific for uses in GNU/Linux (user space). Up until now this was OK as GNU/Linux was the only supported OS. In preparation to support the new Linux kernel 'OS' split up the existing s390 code into a general s390-tdep and a GNU/Linux-specific s390-linux-tdep. Note: The record-replay feature will be moved in a separate patch. This is simply due to the fact that the combined patch would be too large for the mailing list. This requires setting the process_record hook during OSABI init to keep the code bisectable. The patch moving record-replay cleans up this hack. gdb/ChangeLog: * s390-linux-nat.c (s390-tdep.h): New include. * Makefile.in (ALL_TARGET_OBS): Add s390-tdep.o. (HFILES_NO_SRCDIR): Add s390-tdep.h. (ALLDEPFILES): Add s390-tdep.c. * configure.tgt (s390*-*-linux*): Add s390-tdep.o. * s390-linux-tdep.h (HWCAP_S390_*, S390_*_REGNUM): Move to... * s390-tdep.h: ...this. New file. * s390-linux-tdep.c (s390-tdep.h): New include. (_initialize_s390_tdep): Rename to... (_initialize_s390_linux_tdep): ...this and adjust. (s390_abi_kind, s390_vector_abi_kind, gdbarch_tdep) (enum named opcodes, S390_NUM_GPRS, S390_NUM_FPRS): Move to s390-tdep.h. (s390_break_insn, s390_breakpoint, s390_readinstruction, is_ri) (is_ril, is_rr, is_rre, is_rs, is_rsy, is_rx, is_rxy) (s390_is_partial_instruction, s390_software_single_step) (is_non_branch_ril, s390_displaced_step_copy_insn) (s390_displaced_step_fixup, s390_displaced_step_hw_singlestep) (s390_prologue_data, s390_addr, s390_store, s390_load) (s390_check_for_saved, s390_analyze_prologue, s390_skip_prologue) (s390_register_call_saved, s390_guess_tracepoint_registers) (s390_register_name, s390_dwarf_regmap, s390_dwarf_reg_to_regnum) (regnum_is_gpr_full, regnum_is_vxr_full, s390_value_from_register) (s390_pseudo_register_name, s390_pseudo_register_type) (s390_pseudo_register_read, s390_pseudo_register_write) (s390_pseudo_register_reggroup_p, s390_ax_pseudo_register_collect) (s390_ax_pseudo_register_push_stack, s390_gen_return_address) (s390_addr_bits_remove, s390_address_class_type_flags) (s390_address_class_type_flags_to_name) (s390_address_class_name_to_type_flags, s390_effective_inner_type) (s390_function_arg_float, s390_function_arg_vector) (is_power_of_two, s390_function_arg_integer, s390_arg_state) (s390_handle_arg, s390_push_dummy_call, s390_dummy_id) (s390_frame_align, s390_register_return_value, s390_return_value) (s390_stack_frame_destroyed_p, s390_unwind_pc, s390_unwind_sp) (s390_unwind_pseudo_register, s390_adjust_frame_regnum) (s390_dwarf2_prev_register, s390_dwarf2_frame_init_reg) (s390_trad_frame_prev_register, s390_unwind_cache) (s390_prologue_frame_unwind_cache) (s390_backchain_frame_unwind_cache, s390_frame_unwind_cache) (s390_frame_this_id, s390_frame_prev_register, s390_frame_unwind) (s390_stub_unwind_cache, s390_stub_frame_unwind_cache) (s390_stub_frame_this_id, s390_stub_frame_prev_register) (s390_stub_frame_sniffer, s390_stub_frame_unwind) (s390_frame_base_address, s390_local_base_address) (s390_frame_base, s390_gcc_target_options) (s390_gnu_triplet_regexp, s390_stap_is_single_operand) (s390_validate_reg_range, s390_tdesc_valid) (s390_gdbarch_tdep_alloc, s390_gdbarch_init): Move to... * s390-tdep.c: ...this. New file.
70 lines
2.8 KiB
C
70 lines
2.8 KiB
C
/* Target-dependent code for GNU/Linux on s390.
|
|
|
|
Copyright (C) 2003-2018 Free Software Foundation, Inc.
|
|
|
|
This file is part of GDB.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
#ifndef S390_LINUX_TDEP_H
|
|
#define S390_LINUX_TDEP_H
|
|
|
|
#define S390_IS_GREGSET_REGNUM(i) \
|
|
(((i) >= S390_PSWM_REGNUM && (i) <= S390_A15_REGNUM) \
|
|
|| ((i) >= S390_R0_UPPER_REGNUM && (i) <= S390_R15_UPPER_REGNUM) \
|
|
|| (i) == S390_ORIG_R2_REGNUM)
|
|
|
|
#define S390_IS_FPREGSET_REGNUM(i) \
|
|
((i) >= S390_FPC_REGNUM && (i) <= S390_F15_REGNUM)
|
|
|
|
#define S390_IS_TDBREGSET_REGNUM(i) \
|
|
((i) >= S390_TDB_DWORD0_REGNUM && (i) <= S390_TDB_R15_REGNUM)
|
|
|
|
/* Core file register sets, defined in s390-linux-tdep.c. */
|
|
#define s390_sizeof_gregset 0x90
|
|
#define s390x_sizeof_gregset 0xd8
|
|
extern const struct regset s390_gregset;
|
|
#define s390_sizeof_fpregset 0x88
|
|
extern const struct regset s390_fpregset;
|
|
extern const struct regset s390_last_break_regset;
|
|
extern const struct regset s390x_last_break_regset;
|
|
extern const struct regset s390_system_call_regset;
|
|
extern const struct regset s390_tdb_regset;
|
|
#define s390_sizeof_tdbregset 0x100
|
|
extern const struct regset s390_vxrs_low_regset;
|
|
extern const struct regset s390_vxrs_high_regset;
|
|
extern const struct regset s390_gs_regset;
|
|
extern const struct regset s390_gsbc_regset;
|
|
|
|
/* GNU/Linux target descriptions. */
|
|
extern struct target_desc *tdesc_s390_linux32;
|
|
extern struct target_desc *tdesc_s390_linux32v1;
|
|
extern struct target_desc *tdesc_s390_linux32v2;
|
|
extern struct target_desc *tdesc_s390_linux64;
|
|
extern struct target_desc *tdesc_s390_linux64v1;
|
|
extern struct target_desc *tdesc_s390_linux64v2;
|
|
extern struct target_desc *tdesc_s390_te_linux64;
|
|
extern struct target_desc *tdesc_s390_vx_linux64;
|
|
extern struct target_desc *tdesc_s390_tevx_linux64;
|
|
extern struct target_desc *tdesc_s390_gs_linux64;
|
|
extern struct target_desc *tdesc_s390x_linux64;
|
|
extern struct target_desc *tdesc_s390x_linux64v1;
|
|
extern struct target_desc *tdesc_s390x_linux64v2;
|
|
extern struct target_desc *tdesc_s390x_te_linux64;
|
|
extern struct target_desc *tdesc_s390x_vx_linux64;
|
|
extern struct target_desc *tdesc_s390x_tevx_linux64;
|
|
extern struct target_desc *tdesc_s390x_gs_linux64;
|
|
|
|
#endif /* S390_LINUX_TDEP_H */
|