These struct gdbarch functions provide information about the architecture.
set_gdbarch_return_value (gdbarch, or1k_return_value); set_gdbarch_breakpoint_from_pc (gdbarch, or1k_breakpoint_from_pc); set_gdbarch_single_step_through_delay (gdbarch, or1k_single_step_through_delay); set_gdbarch_have_nonsteppable_watchpoint (gdbarch, 1); switch (gdbarch_byte_order (gdbarch)) { case BFD_ENDIAN_BIG: set_gdbarch_print_insn (gdbarch, print_insn_big_or32); break; case BFD_ENDIAN_LITTLE: set_gdbarch_print_insn (gdbarch, print_insn_little_or32); break; case BFD_ENDIAN_UNKNOWN: error ("or1k_gdbarch_init: Unknown endianism"); break; }
or1k_return_value
. This function tells
GDB how a value of a particular type would be returned by the
ABI. Structures/unions and large scalars (> 4 bytes) are
placed in memory and returned by reference
(RETURN_VALUE_ABI_RETURNS_ADDRESS
. Smaller
scalars are returned in GPR 11
(RETURN_VALUE_REGISTER_CONVENTION
).
or1k_breakpoint_from_pc
returns the
breakpoint function to be used at a given program counter
address. Since all OpenRISC 1000 instructions are the same size,
this function always returns the same value, the instruction
sequence for a l.trap
instruction.
or1k_single_step_through_delay
. This
function is used to determine if a single stepped instruction is
actually executing a delay slot. This is the case if the
previously executed instruction was a branch or jump.
print_insn_big_or32
and
print_insn_little_or32
. There are two
variants of the disassembler, depending on the endianism. The
disassembler is discussed in more detail in Section 4.4.