From: cagney Date: Tue, 3 Aug 2004 03:58:47 +0000 (+0000) Subject: 2004-08-02 Andrew Cagney X-Git-Tag: reparent-point~1458 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=d7cac54815df2d9d9177c507e641bf143d142b14;p=pf3gnuchains%2Fpf3gnuchains4x.git 2004-08-02 Andrew Cagney * cris-tdep.c (cris_register_size): Restore function, still used locally. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5162fcd577..11b07ea653 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,8 @@ 2004-08-02 Andrew Cagney + * cris-tdep.c (cris_register_size): Restore function, still used + locally. + * gdbarch.sh (deprecated_target_read_fp) (deprecated_frame_locals_address, deprecated_frame_args_address) (deprecated_frame_chain_valid, deprecated_frame_chain) diff --git a/gdb/cris-tdep.c b/gdb/cris-tdep.c index 0d11fd15b2..1cb0d52938 100644 --- a/gdb/cris-tdep.c +++ b/gdb/cris-tdep.c @@ -1096,6 +1096,45 @@ cris_spec_reg_applicable (struct cris_spec_reg spec_reg) } } +/* Returns the register size in unit byte. Returns 0 for an unimplemented + register, -1 for an invalid register. */ + +static int +cris_register_size (int regno) +{ + int i; + int spec_regno; + + if (regno >= 0 && regno < NUM_GENREGS) + { + /* General registers (R0 - R15) are 32 bits. */ + return 4; + } + else if (regno >= NUM_GENREGS && regno < NUM_REGS) + { + /* Special register (R16 - R31). cris_spec_regs is zero-based. + Adjust regno accordingly. */ + spec_regno = regno - NUM_GENREGS; + + /* The entries in cris_spec_regs are stored in register number order, + which means we can shortcut into the array when searching it. */ + for (i = spec_regno; cris_spec_regs[i].name != NULL; i++) + { + if (cris_spec_regs[i].number == spec_regno + && cris_spec_reg_applicable (cris_spec_regs[i])) + /* Go with the first applicable register. */ + return cris_spec_regs[i].reg_size; + } + /* Special register not applicable to this CRIS version. */ + return 0; + } + else + { + /* Invalid register. */ + return -1; + } +} + /* Nonzero if regno should not be fetched from the target. This is the case for unimplemented (size 0) and non-existant registers. */