I think the stashing of constants into the tdep structure is basically
wrong. You separate the register names arrays from the literals
that describe their positions, and you replicate the literals
up to four times. The tdep structure and the sh_gdbarch_init
function are so large that you have lost track of the things that
really belong in tdep, like sh_show_regs, skip_prologue_hard_way,
and do_pseudo_register. If you look at other gdb ports, you'll
see that they put only variable stuff in tdep, and use enums
for constants. The sh gdb register naming scheme also doesn't
scale well, the names are again duplicated multiple times.