
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.
