aboutsummaryrefslogtreecommitdiff
path: root/gdb/features
diff options
context:
space:
mode:
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>