aboutsummaryrefslogtreecommitdiff
path: root/gdb/features
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2007-02-08 21:39:04 +0000
committerDaniel Jacobowitz <drow@false.org>2007-02-08 21:39:04 +0000
commitfb1e4ffce36db7b63b85bc3a64917bda0c8ac84b (patch)
treefa96d864ea40641c4172c0b4becebddf54f02806 /gdb/features
parentf3cd89f49b5b3ac6dbf0b462e8643bc5d22aa04e (diff)
downloadgdb-fb1e4ffce36db7b63b85bc3a64917bda0c8ac84b.zip
gdb-fb1e4ffce36db7b63b85bc3a64917bda0c8ac84b.tar.gz
gdb-fb1e4ffce36db7b63b85bc3a64917bda0c8ac84b.tar.bz2
* features/Makefile, features/arm-with-iwmmxt.xml,
features/gdbserver-regs.xsl, features/number-regs.xsl, features/sort-regs.xsl, features/xscale-iwmmxt.xml: New files. * regformats/arm-with-iwmmxt.dat: Generate. * NEWS: Mention iWMMXt. * gdb.arch/iwmmxt-regs.c, gdb.arch/iwmmxt-regs.exp: New. * Makefile.in (OBS): Add $(XML_BUILTIN). (XML_DIR, XML_TARGET, XML_FILES, XML_BUILTIN): New. (clean): Update. (target.xml, xml-builtin.c, stamp-xml, arm-with-iwmmxt.o) (arm-with-iwmmxt.c): New. * config.in, configure: Regenerate. * configure.ac: Check for iWMMXt. Handle srv_xmltarget, srv_xmlbuiltin, and srv_xmlfiles. Define USE_XML. * configure.srv: Mention srv_xmltarget and srv_xmlfiles. (arm*-*-linux*): Add iWMMXt and regset support. * linux-arm-low.c (PTRACE_GETWMMXREGS, PTRACE_SETWMMXREGS): Define. (arm_fill_gregset, arm_store_gregset, arm_fill_wmmxregset) (arm_store_wmmxregset, target_regsets): New. * server.c (get_features_xml): Take annex argument. Check builtin XML documents. (handle_query): Handle multiple annexes.
Diffstat (limited to 'gdb/features')
-rw-r--r--gdb/features/Makefile49
-rw-r--r--gdb/features/arm-with-iwmmxt.xml13
-rw-r--r--gdb/features/gdbserver-regs.xsl47
-rw-r--r--gdb/features/number-regs.xsl47
-rw-r--r--gdb/features/sort-regs.xsl11
-rw-r--r--gdb/features/xscale-iwmmxt.xml44
6 files changed, 211 insertions, 0 deletions
diff --git a/gdb/features/Makefile b/gdb/features/Makefile
new file mode 100644
index 0000000..3442f8b
--- /dev/null
+++ b/gdb/features/Makefile
@@ -0,0 +1,49 @@
+# Copyright (C) 2007 Free Software Foundation, Inc.
+
+# This file is part of GDB.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# This file requires GNU make!
+
+# This Makefile updates files in ../regformats from their XML master
+# copies. Because this relies on xsltproc, it is not normally run
+# during the build process; it should be run by hand when one of the
+# affected XML files is changed, and the results should be kept in the
+# GDB repository.
+
+WHICH = arm-with-iwmmxt
+
+# Record which registers should be sent to GDB by default after stop.
+arm-with-iwmmxt-expedite = r11,sp,pc
+
+XSLTPROC = xsltproc
+outdir = ../regformats
+OUTPUTS = $(patsubst %,$(outdir)/%.dat,$(WHICH))
+
+all: $(OUTPUTS)
+
+$(outdir)/%.dat: %.xml number-regs.xsl sort-regs.xsl gdbserver-regs.xsl
+ echo "# DO NOT EDIT: generated from $<" > $(outdir)/$*.tmp
+ echo "name:`echo $* | sed 's/-/_/g'`" >> $(outdir)/$*.tmp
+ echo "expedite:$($*-expedite)" >> $(outdir)/$*.tmp
+ $(XSLTPROC) --xinclude number-regs.xsl $< | \
+ $(XSLTPROC) sort-regs.xsl - | \
+ $(XSLTPROC) gdbserver-regs.xsl - >> $(outdir)/$*.tmp
+ sh ../../move-if-change $(outdir)/$*.tmp $(outdir)/$*.dat
+
+# Other dependencies.
+$(outdir)/arm-with-iwmmxt.dat: arm-core.xml xscale-iwmmxt.xml
diff --git a/gdb/features/arm-with-iwmmxt.xml b/gdb/features/arm-with-iwmmxt.xml
new file mode 100644
index 0000000..924b54c
--- /dev/null
+++ b/gdb/features/arm-with-iwmmxt.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!-- Copyright (C) 2007 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>
+ <architecture>iwmmxt</architecture>
+ <xi:include href="arm-core.xml"/>
+ <xi:include href="xscale-iwmmxt.xml"/>
+</target>
diff --git a/gdb/features/gdbserver-regs.xsl b/gdb/features/gdbserver-regs.xsl
new file mode 100644
index 0000000..a1e8607
--- /dev/null
+++ b/gdb/features/gdbserver-regs.xsl
@@ -0,0 +1,47 @@
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:output method="text"/>
+
+ <xsl:variable name="total" select="count(//reg)"/>
+
+ <xsl:template name="pad">
+ <xsl:param name="count" select="0"/>
+ <xsl:text>0:
+</xsl:text>
+ <xsl:if test="$count > 1">
+ <xsl:call-template name="pad">
+ <xsl:with-param name="count" select="$count - 1"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="reg">
+ <xsl:param name="which" select="1"/>
+ <xsl:param name="nextnum" select="0"/>
+ <xsl:variable name="thisnum" select="@regnum"/>
+ <xsl:if test="$nextnum &lt; number(@regnum)">
+ <xsl:call-template name="pad">
+ <xsl:with-param name="count" select="@regnum - $nextnum"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:value-of select="@bitsize"/>
+ <xsl:text>:</xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>
+</xsl:text>
+ <xsl:if test="$which &lt; $total">
+ <xsl:for-each select="/descendant::reg[$which + 1]">
+ <xsl:call-template name="reg">
+ <xsl:with-param name="which" select="$which + 1"/>
+ <xsl:with-param name="nextnum" select="$thisnum + 1"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="/">
+ <xsl:for-each select="/descendant::reg[1]">
+ <xsl:call-template name="reg"/>
+ </xsl:for-each>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/gdb/features/number-regs.xsl b/gdb/features/number-regs.xsl
new file mode 100644
index 0000000..ab5d604
--- /dev/null
+++ b/gdb/features/number-regs.xsl
@@ -0,0 +1,47 @@
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:variable name="total" select="count(//reg)"/>
+ <xsl:template name="reg">
+ <xsl:param name="which" select="1"/>
+ <xsl:param name="nextnum" select="0"/>
+ <xsl:variable name="thisnum" select="@regnum"/>
+ <xsl:element name="reg">
+ <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
+ <xsl:attribute name="bitsize"><xsl:value-of select="@bitsize"/></xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="not(@regnum)">
+ <xsl:attribute name="regnum"><xsl:value-of select="$nextnum"/></xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="regnum"><xsl:value-of select="@regnum"/></xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ <xsl:if test="$which &lt; $total">
+ <xsl:for-each select="/descendant::reg[$which + 1]">
+ <xsl:choose>
+ <xsl:when test="not($thisnum)">
+ <xsl:call-template name="reg">
+ <xsl:with-param name="which" select="$which + 1"/>
+ <xsl:with-param name="nextnum" select="$nextnum + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="reg">
+ <xsl:with-param name="which" select="$which + 1"/>
+ <xsl:with-param name="nextnum" select="$thisnum + 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="/">
+ <target>
+ <xsl:for-each select="/descendant::reg[1]">
+ <xsl:call-template name="reg"/>
+ </xsl:for-each>
+ </target>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/gdb/features/sort-regs.xsl b/gdb/features/sort-regs.xsl
new file mode 100644
index 0000000..c89fcce6
--- /dev/null
+++ b/gdb/features/sort-regs.xsl
@@ -0,0 +1,11 @@
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:template match="/">
+ <target>
+ <xsl:for-each select="//reg">
+ <xsl:sort select="regnum" data-type="number"/>
+ <xsl:copy-of select="."/>
+ </xsl:for-each>
+ </target>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/gdb/features/xscale-iwmmxt.xml b/gdb/features/xscale-iwmmxt.xml
new file mode 100644
index 0000000..46fbf41
--- /dev/null
+++ b/gdb/features/xscale-iwmmxt.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<!-- Copyright (C) 2007 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 feature SYSTEM "gdb-target.dtd">
+<feature name="org.gnu.gdb.xscale.iwmmxt">
+ <vector id="iwmmxt_v8u8" type="uint8" count="8"/>
+ <vector id="iwmmxt_v4u16" type="uint16" count="4"/>
+ <vector id="iwmmxt_v2u32" type="uint32" count="2"/>
+ <union id="iwmmxt_vec64i">
+ <field name="u8" type="iwmmxt_v8u8"/>
+ <field name="u16" type="iwmmxt_v4u16"/>
+ <field name="u32" type="iwmmxt_v2u32"/>
+ <field name="u64" type="uint64"/>
+ </union>
+
+ <reg name="wr0" bitsize="64" type="iwmmxt_vec64i"/>
+ <reg name="wr1" bitsize="64" type="iwmmxt_vec64i"/>
+ <reg name="wr2" bitsize="64" type="iwmmxt_vec64i"/>
+ <reg name="wr3" bitsize="64" type="iwmmxt_vec64i"/>
+ <reg name="wr4" bitsize="64" type="iwmmxt_vec64i"/>
+ <reg name="wr5" bitsize="64" type="iwmmxt_vec64i"/>
+ <reg name="wr6" bitsize="64" type="iwmmxt_vec64i"/>
+ <reg name="wr7" bitsize="64" type="iwmmxt_vec64i"/>
+ <reg name="wr8" bitsize="64" type="iwmmxt_vec64i"/>
+ <reg name="wr9" bitsize="64" type="iwmmxt_vec64i"/>
+ <reg name="wr10" bitsize="64" type="iwmmxt_vec64i"/>
+ <reg name="wr11" bitsize="64" type="iwmmxt_vec64i"/>
+ <reg name="wr12" bitsize="64" type="iwmmxt_vec64i"/>
+ <reg name="wr13" bitsize="64" type="iwmmxt_vec64i"/>
+ <reg name="wr14" bitsize="64" type="iwmmxt_vec64i"/>
+ <reg name="wr15" bitsize="64" type="iwmmxt_vec64i"/>
+
+ <reg name="wcssf" bitsize="32" type="int" group="vector"/>
+ <reg name="wcasf" bitsize="32" type="int" group="vector"/>
+
+ <reg name="wcgr0" bitsize="32" type="int" group="vector"/>
+ <reg name="wcgr1" bitsize="32" type="int" group="vector"/>
+ <reg name="wcgr2" bitsize="32" type="int" group="vector"/>
+ <reg name="wcgr3" bitsize="32" type="int" group="vector"/>
+</feature>