int ps_regnum;
int fp0_regnum;
int npc_regnum;
- int nnpc_regnum;
gdbarch_stab_reg_to_regnum_ftype *stab_reg_to_regnum;
gdbarch_ecoff_reg_to_regnum_ftype *ecoff_reg_to_regnum;
gdbarch_dwarf_reg_to_regnum_ftype *dwarf_reg_to_regnum;
gdbarch_register_convertible_ftype *register_convertible;
gdbarch_register_convert_to_virtual_ftype *register_convert_to_virtual;
gdbarch_register_convert_to_raw_ftype *register_convert_to_raw;
+ gdbarch_convert_register_p_ftype *convert_register_p;
+ gdbarch_register_to_value_ftype *register_to_value;
+ gdbarch_value_to_register_ftype *value_to_register;
gdbarch_fetch_pseudo_register_ftype *fetch_pseudo_register;
gdbarch_store_pseudo_register_ftype *store_pseudo_register;
gdbarch_pointer_to_address_ftype *pointer_to_address;
0,
0,
0,
- 0,
generic_register_size,
0,
generic_register_size,
0,
0,
0,
+ 0,
+ 0,
+ 0,
generic_in_function_epilogue_p,
construct_inferior_arguments,
0,
current_gdbarch->ps_regnum = -1;
current_gdbarch->fp0_regnum = -1;
current_gdbarch->npc_regnum = -1;
- current_gdbarch->nnpc_regnum = -1;
current_gdbarch->stab_reg_to_regnum = no_op_reg_to_regnum;
current_gdbarch->ecoff_reg_to_regnum = no_op_reg_to_regnum;
current_gdbarch->dwarf_reg_to_regnum = no_op_reg_to_regnum;
current_gdbarch->init_frame_pc = init_frame_pc_default;
current_gdbarch->coerce_float_to_double = default_coerce_float_to_double;
current_gdbarch->register_convertible = generic_register_convertible_not;
+ current_gdbarch->convert_register_p = legacy_convert_register_p;
+ current_gdbarch->register_to_value = legacy_register_to_value;
+ current_gdbarch->value_to_register = legacy_value_to_register;
current_gdbarch->pointer_to_address = unsigned_pointer_to_address;
current_gdbarch->address_to_pointer = unsigned_address_to_pointer;
current_gdbarch->return_value_on_stack = generic_return_value_on_stack_not;
/* Skip verify of ps_regnum, invalid_p == 0 */
/* Skip verify of fp0_regnum, invalid_p == 0 */
/* Skip verify of npc_regnum, invalid_p == 0 */
- /* Skip verify of nnpc_regnum, invalid_p == 0 */
/* Skip verify of stab_reg_to_regnum, invalid_p == 0 */
/* Skip verify of ecoff_reg_to_regnum, invalid_p == 0 */
/* Skip verify of dwarf_reg_to_regnum, invalid_p == 0 */
/* Skip verify of register_convertible, invalid_p == 0 */
/* Skip verify of register_convert_to_virtual, invalid_p == 0 */
/* Skip verify of register_convert_to_raw, invalid_p == 0 */
+ /* Skip verify of convert_register_p, invalid_p == 0 */
+ /* Skip verify of register_to_value, invalid_p == 0 */
+ /* Skip verify of value_to_register, invalid_p == 0 */
/* Skip verify of fetch_pseudo_register, has predicate */
/* Skip verify of store_pseudo_register, has predicate */
/* Skip verify of pointer_to_address, invalid_p == 0 */
(long) current_gdbarch->convert_from_func_ptr_addr
/*CONVERT_FROM_FUNC_PTR_ADDR ()*/);
#endif
+#ifdef CONVERT_REGISTER_P
+ fprintf_unfiltered (file,
+ "gdbarch_dump: %s # %s\n",
+ "CONVERT_REGISTER_P(regnum)",
+ XSTRING (CONVERT_REGISTER_P (regnum)));
+ if (GDB_MULTI_ARCH)
+ fprintf_unfiltered (file,
+ "gdbarch_dump: CONVERT_REGISTER_P = 0x%08lx\n",
+ (long) current_gdbarch->convert_register_p
+ /*CONVERT_REGISTER_P ()*/);
+#endif
#ifdef DECR_PC_AFTER_BREAK
fprintf_unfiltered (file,
"gdbarch_dump: DECR_PC_AFTER_BREAK # %s\n",
(long) current_gdbarch->memory_remove_breakpoint
/*MEMORY_REMOVE_BREAKPOINT ()*/);
#endif
-#ifdef NNPC_REGNUM
- fprintf_unfiltered (file,
- "gdbarch_dump: NNPC_REGNUM # %s\n",
- XSTRING (NNPC_REGNUM));
- fprintf_unfiltered (file,
- "gdbarch_dump: NNPC_REGNUM = %d\n",
- NNPC_REGNUM);
-#endif
#ifdef NPC_REGNUM
fprintf_unfiltered (file,
"gdbarch_dump: NPC_REGNUM # %s\n",
"gdbarch_dump: REGISTER_SIZE = %d\n",
REGISTER_SIZE);
#endif
+#ifdef REGISTER_TO_VALUE
+#if GDB_MULTI_ARCH
+ /* Macro might contain `[{}]' when not multi-arch */
+ fprintf_unfiltered (file,
+ "gdbarch_dump: %s # %s\n",
+ "REGISTER_TO_VALUE(regnum, type, from, to)",
+ XSTRING (REGISTER_TO_VALUE (regnum, type, from, to)));
+#endif
+ if (GDB_MULTI_ARCH)
+ fprintf_unfiltered (file,
+ "gdbarch_dump: REGISTER_TO_VALUE = 0x%08lx\n",
+ (long) current_gdbarch->register_to_value
+ /*REGISTER_TO_VALUE ()*/);
+#endif
#ifdef REGISTER_VIRTUAL_SIZE
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"gdbarch_dump: USE_STRUCT_CONVENTION = 0x%08lx\n",
(long) current_gdbarch->use_struct_convention
/*USE_STRUCT_CONVENTION ()*/);
+#endif
+#ifdef VALUE_TO_REGISTER
+#if GDB_MULTI_ARCH
+ /* Macro might contain `[{}]' when not multi-arch */
+ fprintf_unfiltered (file,
+ "gdbarch_dump: %s # %s\n",
+ "VALUE_TO_REGISTER(type, regnum, from, to)",
+ XSTRING (VALUE_TO_REGISTER (type, regnum, from, to)));
+#endif
+ if (GDB_MULTI_ARCH)
+ fprintf_unfiltered (file,
+ "gdbarch_dump: VALUE_TO_REGISTER = 0x%08lx\n",
+ (long) current_gdbarch->value_to_register
+ /*VALUE_TO_REGISTER ()*/);
#endif
if (current_gdbarch->dump_tdep != NULL)
current_gdbarch->dump_tdep (current_gdbarch, file);
gdbarch->npc_regnum = npc_regnum;
}
-int
-gdbarch_nnpc_regnum (struct gdbarch *gdbarch)
-{
- gdb_assert (gdbarch != NULL);
- /* Skip verify of nnpc_regnum, invalid_p == 0 */
- if (gdbarch_debug >= 2)
- fprintf_unfiltered (gdb_stdlog, "gdbarch_nnpc_regnum called\n");
- return gdbarch->nnpc_regnum;
-}
-
-void
-set_gdbarch_nnpc_regnum (struct gdbarch *gdbarch,
- int nnpc_regnum)
-{
- gdbarch->nnpc_regnum = nnpc_regnum;
-}
-
int
gdbarch_stab_reg_to_regnum (struct gdbarch *gdbarch, int stab_regnr)
{
gdbarch->register_convert_to_raw = register_convert_to_raw;
}
+int
+gdbarch_convert_register_p (struct gdbarch *gdbarch, int regnum)
+{
+ gdb_assert (gdbarch != NULL);
+ if (gdbarch->convert_register_p == 0)
+ internal_error (__FILE__, __LINE__,
+ "gdbarch: gdbarch_convert_register_p invalid");
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_convert_register_p called\n");
+ return gdbarch->convert_register_p (regnum);
+}
+
+void
+set_gdbarch_convert_register_p (struct gdbarch *gdbarch,
+ gdbarch_convert_register_p_ftype convert_register_p)
+{
+ gdbarch->convert_register_p = convert_register_p;
+}
+
+void
+gdbarch_register_to_value (struct gdbarch *gdbarch, int regnum, struct type *type, char *from, char *to)
+{
+ gdb_assert (gdbarch != NULL);
+ if (gdbarch->register_to_value == 0)
+ internal_error (__FILE__, __LINE__,
+ "gdbarch: gdbarch_register_to_value invalid");
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_register_to_value called\n");
+ gdbarch->register_to_value (regnum, type, from, to);
+}
+
+void
+set_gdbarch_register_to_value (struct gdbarch *gdbarch,
+ gdbarch_register_to_value_ftype register_to_value)
+{
+ gdbarch->register_to_value = register_to_value;
+}
+
+void
+gdbarch_value_to_register (struct gdbarch *gdbarch, struct type *type, int regnum, char *from, char *to)
+{
+ gdb_assert (gdbarch != NULL);
+ if (gdbarch->value_to_register == 0)
+ internal_error (__FILE__, __LINE__,
+ "gdbarch: gdbarch_value_to_register invalid");
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_value_to_register called\n");
+ gdbarch->value_to_register (type, regnum, from, to);
+}
+
+void
+set_gdbarch_value_to_register (struct gdbarch *gdbarch,
+ gdbarch_value_to_register_ftype value_to_register)
+{
+ gdbarch->value_to_register = value_to_register;
+}
+
int
gdbarch_fetch_pseudo_register_p (struct gdbarch *gdbarch)
{