* arm-tdep.h (VFP_REGISTER_SIZE): Define.

* features/arm-with-m-vfp-d16.xml: New file. Describes
	Cortex-M with VFPv4-sp-d16 FPU register layout.
	* features/Makefile (WHICH): Add arm-with-m-vfp-d16.
	* features/arm-with-m-vfp-d16.c: New. Generated from above.
	* arm-tdep.c: Include arm-with-m-vfp-d16.c.
	(arm-register_g_packet_guesses): Add vfp-d16 guess.
	(_initialise_arm_tdep): Initialize arm-with-m-vfp-d16 tdesc.
This commit is contained in:
Jonathan Larmour 2012-04-26 15:20:14 +00:00
parent cab0ad8332
commit 3184d3f9a5
6 changed files with 92 additions and 1 deletions

View File

@ -1,3 +1,14 @@
2012-04-26 Jonathan Larmour <jifl@eCosCentric.com>
* arm-tdep.h (VFP_REGISTER_SIZE): Define.
* features/arm-with-m-vfp-d16.xml: New file. Describes
Cortex-M with VFPv4-sp-d16 FPU register layout.
* features/Makefile (WHICH): Add arm-with-m-vfp-d16.
* features/arm-with-m-vfp-d16.c: New. Generated from above.
* arm-tdep.c: Include arm-with-m-vfp-d16.c.
(arm-register_g_packet_guesses): Add vfp-d16 guess.
(_initialise_arm_tdep): Initialize arm-with-m-vfp-d16 tdesc.
2012-04-25 Doug Evans <dje@google.com>
* cli/cli-decode.c (print_doc_line): Use stream instead of

View File

@ -59,6 +59,7 @@
#include "features/arm-with-m.c"
#include "features/arm-with-m-fpa-layout.c"
#include "features/arm-with-m-vfp-d16.c"
#include "features/arm-with-iwmmxt.c"
#include "features/arm-with-vfpv2.c"
#include "features/arm-with-vfpv3.c"
@ -9698,6 +9699,14 @@ arm_register_g_packet_guesses (struct gdbarch *gdbarch)
(16 * INT_REGISTER_SIZE)
+ INT_REGISTER_SIZE,
tdesc_arm_with_m);
/* M-profile plus M4F VFP. */
register_remote_g_packet_guess (gdbarch,
/* r0-r12,sp,lr,pc; d0-d15; fpscr,xpsr */
(16 * INT_REGISTER_SIZE)
+ (16 * VFP_REGISTER_SIZE)
+ (2 * INT_REGISTER_SIZE),
tdesc_arm_with_m_vfp_d16);
}
/* Otherwise we don't have a useful guess. */
@ -10333,6 +10342,7 @@ _initialize_arm_tdep (void)
/* Initialize the standard target descriptions. */
initialize_tdesc_arm_with_m ();
initialize_tdesc_arm_with_m_fpa_layout ();
initialize_tdesc_arm_with_m_vfp_d16 ();
initialize_tdesc_arm_with_iwmmxt ();
initialize_tdesc_arm_with_vfpv2 ();
initialize_tdesc_arm_with_vfpv3 ();

View File

@ -71,6 +71,10 @@ enum gdb_regnum {
bits. DWORD aligned they use 96 bits. */
#define FP_REGISTER_SIZE 12
/* Say how long VFP double precision registers are. Used for documentation
purposes and code readability. These are fixed at 64 bits. */
#define VFP_REGISTER_SIZE 8
/* Number of machine registers. The only define actually required
is gdbarch_num_regs. The other definitions are used for documentation
purposes and code readability. */

View File

@ -31,7 +31,7 @@
# make GDB=/path/to/gdb XMLTOC="xml files" cfiles
WHICH = arm-with-iwmmxt arm-with-vfpv2 arm-with-vfpv3 arm-with-neon \
arm-with-m arm-with-m-fpa-layout \
arm-with-m arm-with-m-fpa-layout arm-with-m-vfp-d16 \
i386/i386 i386/i386-linux \
i386/i386-mmx i386/i386-mmx-linux \
i386/amd64 i386/amd64-linux \

View File

@ -0,0 +1,53 @@
/* THIS FILE IS GENERATED. Original: arm-with-m-vfp-d16.xml */
#include "defs.h"
#include "osabi.h"
#include "target-descriptions.h"
struct target_desc *tdesc_arm_with_m_vfp_d16;
static void
initialize_tdesc_arm_with_m_vfp_d16 (void)
{
struct target_desc *result = allocate_target_description ();
struct tdesc_feature *feature;
feature = tdesc_create_feature (result, "org.gnu.gdb.arm.m-profile");
tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "int");
tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "int");
tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "int");
tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "int");
tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "int");
tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "int");
tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "int");
tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "int");
tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "int");
tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "int");
tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "int");
tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "int");
tdesc_create_reg (feature, "sp", 13, 1, NULL, 32, "data_ptr");
tdesc_create_reg (feature, "lr", 14, 1, NULL, 32, "int");
tdesc_create_reg (feature, "pc", 15, 1, NULL, 32, "code_ptr");
tdesc_create_reg (feature, "xpsr", 25, 1, NULL, 32, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.arm.vfp");
tdesc_create_reg (feature, "d0", 26, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d1", 27, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d2", 28, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d3", 29, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d4", 30, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d5", 31, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d6", 32, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d7", 33, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d8", 34, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d9", 35, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d10", 36, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d11", 37, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d12", 38, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d13", 39, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d14", 40, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "d15", 41, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "fpscr", 42, 1, "float", 32, "int");
tdesc_arm_with_m_vfp_d16 = result;
}

View File

@ -0,0 +1,13 @@
<?xml version="1.0"?>
<!-- Copyright (C) 2010-2012 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. -->
<!DOCTYPE target SYSTEM "gdb-target.dtd">
<target>
<xi:include href="arm-m-profile.xml"/>
<!-- Layout of vfpv4-sp-d16 is identical to vfpv2 -->
<xi:include href="arm-vfpv2.xml"/>
</target>