This is an automated email from Gerrit.

Antonio Borneo ([email protected]) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/5882

-- gerrit

commit 5270eaa8c2bca646899e16b8e65323a6bf921700
Author: Antonio Borneo <[email protected]>
Date:   Sun Oct 25 14:59:13 2020 +0100

    hla: API: specify that read_reg/write_reg use regsel as parameter
    
    The API of hla have been defined from ST-Link basic operations.
    By chance, all the current implementation of hla (st-link, ti-icdi
    and nulink) share the same way to handle the parameter 'num' of
    the API read_reg() and write_reg(), that is simply using it to
    initialize the field REGSEL (bits [6:0]) of armv7m Debug Core
    Register Selector Register (DCRSR).
    
    Add a comment in the API definition to highlight this, in case it
    get used by a further hla implementation, then rename as 'regsel'
    the 'num' parameter.
    
    Change-Id: I4b6a2c7d78b4fc4de2b9b2bdba065414b15c6ba3
    Signed-off-by: Antonio Borneo <[email protected]>

diff --git a/src/jtag/drivers/nulink_usb.c b/src/jtag/drivers/nulink_usb.c
index 5fdbed3..6860156 100644
--- a/src/jtag/drivers/nulink_usb.c
+++ b/src/jtag/drivers/nulink_usb.c
@@ -411,7 +411,7 @@ static int nulink_usb_step(void *handle)
        return res;
 }
 
-static int nulink_usb_read_reg(void *handle, int num, uint32_t *val)
+static int nulink_usb_read_reg(void *handle, int regsel, uint32_t *val)
 {
        struct nulink_usb_handle_s *h = handle;
 
@@ -434,7 +434,7 @@ static int nulink_usb_read_reg(void *handle, int num, 
uint32_t *val)
        h->cmdbuf[h->cmdidx] = 0;
        h->cmdidx += 1;
        /* u32Addr */
-       h_u32_to_le(h->cmdbuf + h->cmdidx, num);
+       h_u32_to_le(h->cmdbuf + h->cmdidx, regsel);
        h->cmdidx += 4;
        /* u32Data */
        h_u32_to_le(h->cmdbuf + h->cmdidx, 0);
@@ -450,7 +450,7 @@ static int nulink_usb_read_reg(void *handle, int num, 
uint32_t *val)
        return res;
 }
 
-static int nulink_usb_write_reg(void *handle, int num, uint32_t val)
+static int nulink_usb_write_reg(void *handle, int regsel, uint32_t val)
 {
        struct nulink_usb_handle_s *h = handle;
 
@@ -473,7 +473,7 @@ static int nulink_usb_write_reg(void *handle, int num, 
uint32_t val)
        h->cmdbuf[h->cmdidx] = 0;
        h->cmdidx += 1;
        /* u32Addr */
-       h_u32_to_le(h->cmdbuf + h->cmdidx, num);
+       h_u32_to_le(h->cmdbuf + h->cmdidx, regsel);
        h->cmdidx += 4;
        /* u32Data */
        h_u32_to_le(h->cmdbuf + h->cmdidx, val);
diff --git a/src/jtag/drivers/stlink_usb.c b/src/jtag/drivers/stlink_usb.c
index ce55b94..075c736 100644
--- a/src/jtag/drivers/stlink_usb.c
+++ b/src/jtag/drivers/stlink_usb.c
@@ -2015,7 +2015,7 @@ static int stlink_usb_read_regs(void *handle)
 }
 
 /** */
-static int stlink_usb_read_reg(void *handle, int num, uint32_t *val)
+static int stlink_usb_read_reg(void *handle, int regsel, uint32_t *val)
 {
        int res;
        struct stlink_usb_handle_s *h = handle;
@@ -2029,7 +2029,7 @@ static int stlink_usb_read_reg(void *handle, int num, 
uint32_t *val)
                h->cmdbuf[h->cmdidx++] = STLINK_DEBUG_APIV1_READREG;
        else
                h->cmdbuf[h->cmdidx++] = STLINK_DEBUG_APIV2_READREG;
-       h->cmdbuf[h->cmdidx++] = num;
+       h->cmdbuf[h->cmdidx++] = regsel;
 
        if (h->version.jtag_api == STLINK_JTAG_API_V1) {
                res = stlink_usb_xfer_noerrcheck(handle, h->databuf, 4);
@@ -2047,7 +2047,7 @@ static int stlink_usb_read_reg(void *handle, int num, 
uint32_t *val)
 }
 
 /** */
-static int stlink_usb_write_reg(void *handle, int num, uint32_t val)
+static int stlink_usb_write_reg(void *handle, int regsel, uint32_t val)
 {
        struct stlink_usb_handle_s *h = handle;
 
@@ -2060,7 +2060,7 @@ static int stlink_usb_write_reg(void *handle, int num, 
uint32_t val)
                h->cmdbuf[h->cmdidx++] = STLINK_DEBUG_APIV1_WRITEREG;
        else
                h->cmdbuf[h->cmdidx++] = STLINK_DEBUG_APIV2_WRITEREG;
-       h->cmdbuf[h->cmdidx++] = num;
+       h->cmdbuf[h->cmdidx++] = regsel;
        h_u32_to_le(h->cmdbuf+h->cmdidx, val);
        h->cmdidx += 4;
 
diff --git a/src/jtag/drivers/ti_icdi_usb.c b/src/jtag/drivers/ti_icdi_usb.c
index d276e58..4a1ce5d 100644
--- a/src/jtag/drivers/ti_icdi_usb.c
+++ b/src/jtag/drivers/ti_icdi_usb.c
@@ -476,13 +476,13 @@ static int icdi_usb_read_regs(void *handle)
        return ERROR_OK;
 }
 
-static int icdi_usb_read_reg(void *handle, int num, uint32_t *val)
+static int icdi_usb_read_reg(void *handle, int regsel, uint32_t *val)
 {
        int result;
        struct icdi_usb_handle_s *h = handle;
        char cmd[10];
 
-       snprintf(cmd, sizeof(cmd), "p%x", num);
+       snprintf(cmd, sizeof(cmd), "p%x", regsel);
        result = icdi_send_cmd(handle, cmd);
        if (result != ERROR_OK)
                return result;
@@ -505,14 +505,14 @@ static int icdi_usb_read_reg(void *handle, int num, 
uint32_t *val)
        return result;
 }
 
-static int icdi_usb_write_reg(void *handle, int num, uint32_t val)
+static int icdi_usb_write_reg(void *handle, int regsel, uint32_t val)
 {
        int result;
        char cmd[20];
        uint8_t buf[4];
        h_u32_to_le(buf, val);
 
-       int cmd_len = snprintf(cmd, sizeof(cmd), "P%x=", num);
+       int cmd_len = snprintf(cmd, sizeof(cmd), "P%x=", regsel);
        hexify(cmd + cmd_len, buf, 4, sizeof(cmd));
 
        result = icdi_send_cmd(handle, cmd);
diff --git a/src/jtag/hla/hla_layout.h b/src/jtag/hla/hla_layout.h
index e0bbd0f..c975504 100644
--- a/src/jtag/hla/hla_layout.h
+++ b/src/jtag/hla/hla_layout.h
@@ -51,10 +51,25 @@ struct hl_layout_api_s {
        int (*step)(void *handle);
        /** */
        int (*read_regs)(void *handle);
-       /** */
-       int (*read_reg)(void *handle, int num, uint32_t *val);
-       /** */
-       int (*write_reg)(void *handle, int num, uint32_t val);
+       /**
+        * Read one register from the target
+        *
+        * @param handle A pointer to the device-specific handle
+        * @param regsel Register selection index compatible with all the
+        * values allowed by armv7m DCRSR.REGSEL
+        * @param val A pointer to retrieve the register value
+        * @returns ERROR_OK on success, or an error code on failure.
+        */
+       int (*read_reg)(void *handle, int regsel, uint32_t *val);
+       /**
+        * Write one register to the target
+        * @param handle A pointer to the device-specific handle
+        * @param regsel Register selection index compatible with all the
+        * values allowed by armv7m DCRSR.REGSEL
+        * @param val The value to be written in the register
+        * @returns ERROR_OK on success, or an error code on failure.
+        */
+       int (*write_reg)(void *handle, int regsel, uint32_t val);
        /** */
        int (*read_mem)(void *handle, uint32_t addr, uint32_t size,
                        uint32_t count, uint8_t *buffer);

-- 


_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to