aboutsummaryrefslogtreecommitdiff
path: root/gdb/arm-tdep.h
diff options
context:
space:
mode:
authorRichard Earnshaw <richard.earnshaw@arm.com>2002-02-19 19:20:31 +0000
committerRichard Earnshaw <richard.earnshaw@arm.com>2002-02-19 19:20:31 +0000
commit08216dd78d5f1a8976771db9ca7008126ccf3ece (patch)
tree0253edbebb9cb566b8b3d01048abc00bd110ab13 /gdb/arm-tdep.h
parent45b38a80ad9d75ed57daa8dfa569583ead481d03 (diff)
downloadfsf-binutils-gdb-08216dd78d5f1a8976771db9ca7008126ccf3ece.zip
fsf-binutils-gdb-08216dd78d5f1a8976771db9ca7008126ccf3ece.tar.gz
fsf-binutils-gdb-08216dd78d5f1a8976771db9ca7008126ccf3ece.tar.bz2
* arm-tdep.h (enum arm_float_model): New enum.
(struct gdbarch_tdep): Add fp_model. * arm-tdep.c (arm_gdbarch_init): Set fp_model in tdep. Defer setting up floating-point conversions until we know the floating-point model in use by the inferior. Don't complain about being unable to determine the ABI of the inferior when we don't have one. (arm_extract_return_value): Support different floating-point models. (arm_store_return_value): Likewise. * armnbsd-tdep.c (arm_netbsd_aout_init_abi): Set fp_model in tdep to ARM_FLOAT_SOFT. (arm_netbsd_elf_init_abi): Set fp_model to ARM_FLOAT_SOFT_VFP.
Diffstat (limited to 'gdb/arm-tdep.h')
-rw-r--r--gdb/arm-tdep.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/gdb/arm-tdep.h b/gdb/arm-tdep.h
index 29c8bc9..a4c52dc 100644
--- a/gdb/arm-tdep.h
+++ b/gdb/arm-tdep.h
@@ -116,11 +116,29 @@ enum arm_abi
ARM_ABI_INVALID /* Keep this last. */
};
+/* Type of floating-point code in use by inferior. There are really 3 models
+ that are traditionally supported (plus the endianness issue), but gcc can
+ only generate 2 of those. The third is APCS_FLOAT, where arguments to
+ functions are passed in floating-point registers.
+
+ In addition to the traditional models, VFP adds two more. */
+
+enum arm_float_model
+{
+ ARM_FLOAT_SOFT,
+ ARM_FLOAT_FPA,
+ ARM_FLOAT_SOFT_VFP,
+ ARM_FLOAT_VFP
+};
+
/* Target-dependent structure in gdbarch. */
struct gdbarch_tdep
{
enum arm_abi arm_abi; /* OS/ABI of inferior. */
const char *abi_name; /* Name of the above. */
+
+ enum arm_float_model fp_model; /* Floating point calling conventions. */
+
CORE_ADDR lowest_pc; /* Lowest address at which instructions
will appear. */