This is an automated email from Gerrit.

Matthias Welwarsky (matth...@welwarsky.de) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/4459

-- gerrit

commit 096f0b605b98ea8f46aec2c14fe73d73754a3040
Author: Matthias Welwarsky <matthias.welwar...@sysgo.com>
Date:   Thu Mar 8 14:40:10 2018 +0100

    tdesc: bitfields may carry a type
    
    a bitfield may carry a type (bool or int), add support for that.
    
    Change-Id: Ic831a9b8eac8579e8fdd7d0f01b7f1c9259e6739
    Signed-off-by: Matthias Welwarsky <matthias.welwar...@sysgo.com>

diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c
index 473e000..3332f74 100644
--- a/src/server/gdb_server.c
+++ b/src/server/gdb_server.c
@@ -1909,6 +1909,8 @@ static int gdb_memory_map(struct connection *connection,
 static const char *gdb_get_reg_type_name(enum reg_type type)
 {
        switch (type) {
+               case REG_TYPE_BOOL:
+                       return "bool";
                case REG_TYPE_INT:
                        return "int";
                case REG_TYPE_INT8:
@@ -1921,6 +1923,8 @@ static const char *gdb_get_reg_type_name(enum reg_type 
type)
                        return "int64";
                case REG_TYPE_INT128:
                        return "int128";
+               case REG_TYPE_UINT:
+                       return "uint";
                case REG_TYPE_UINT8:
                        return "uint8";
                case REG_TYPE_UINT16:
@@ -2088,8 +2092,9 @@ static int gdb_generate_reg_type_description(struct 
target *target,
                field = type->reg_type_flags->fields;
                while (field != NULL) {
                        xml_printf(&retval, tdesc, pos, size,
-                                       "<field name=\"%s\" start=\"%d\" 
end=\"%d\"/>\n",
-                                       field->name, field->bitfield->start, 
field->bitfield->end);
+                                       "<field name=\"%s\" start=\"%d\" 
end=\"%d\" type=\"%s\" />\n",
+                                       field->name, field->bitfield->start, 
field->bitfield->end, 
+                                       
gdb_get_reg_type_name(field->bitfield->type));
 
                        field = field->next;
                }
diff --git a/src/target/register.h b/src/target/register.h
index dc18e9a..32c1f39 100644
--- a/src/target/register.h
+++ b/src/target/register.h
@@ -25,12 +25,14 @@
 struct target;
 
 enum reg_type {
+       REG_TYPE_BOOL,
        REG_TYPE_INT,
        REG_TYPE_INT8,
        REG_TYPE_INT16,
        REG_TYPE_INT32,
        REG_TYPE_INT64,
        REG_TYPE_INT128,
+       REG_TYPE_UINT,
        REG_TYPE_UINT8,
        REG_TYPE_UINT16,
        REG_TYPE_UINT32,
@@ -66,6 +68,7 @@ struct reg_data_type_union {
 struct reg_data_type_bitfield {
        uint32_t start;
        uint32_t end;
+       enum reg_type type;
 };
 
 struct reg_data_type_struct_field {

-- 

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
OpenOCD-devel mailing list
OpenOCD-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to