From 08216dd78d5f1a8976771db9ca7008126ccf3ece Mon Sep 17 00:00:00 2001 From: Richard Earnshaw Date: Tue, 19 Feb 2002 19:20:31 +0000 Subject: * 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. --- gdb/arm-tdep.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'gdb/arm-tdep.h') 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. */ -- cgit v1.1