]> git.gag.com Git - fw/openocd/blobdiff - src/jtag/drivers/jtag_vpi.c
jtag_vpi: fix build errors under MinGW
[fw/openocd] / src / jtag / drivers / jtag_vpi.c
index 84cd947064860b20b560e560e106dca53b1f2df8..29dbd4821eeeba3234798aff0b16f0cdd4fc1256 100644 (file)
@@ -23,7 +23,9 @@
 #endif
 
 #include <jtag/interface.h>
+#ifdef HAVE_ARPA_INET_H
 #include <arpa/inet.h>
+#endif
 
 #define NO_TAP_SHIFT   0
 #define TAP_SHIFT      1
@@ -54,7 +56,7 @@ struct vpi_cmd {
 
 static int jtag_vpi_send_cmd(struct vpi_cmd *vpi)
 {
-       int retval = write(sockfd, vpi, sizeof(struct vpi_cmd));
+       int retval = write_socket(sockfd, vpi, sizeof(struct vpi_cmd));
        if (retval <= 0)
                return ERROR_FAIL;
 
@@ -63,7 +65,7 @@ static int jtag_vpi_send_cmd(struct vpi_cmd *vpi)
 
 static int jtag_vpi_receive_cmd(struct vpi_cmd *vpi)
 {
-       int retval = read(sockfd, vpi, sizeof(struct vpi_cmd));
+       int retval = read_socket(sockfd, vpi, sizeof(struct vpi_cmd));
        if (retval < (int)sizeof(struct vpi_cmd))
                return ERROR_FAIL;
 
@@ -100,7 +102,7 @@ static int jtag_vpi_tms_seq(const uint8_t *bits, int nb_bits)
        struct vpi_cmd vpi;
        int nb_bytes;
 
-       nb_bytes = (nb_bits / 8) + !!(nb_bits % 8);
+       nb_bytes = DIV_ROUND_UP(nb_bits, 8);
 
        vpi.cmd = CMD_TMS_SEQ;
        memcpy(vpi.buffer_out, bits, nb_bytes);
@@ -123,23 +125,17 @@ static int jtag_vpi_tms_seq(const uint8_t *bits, int nb_bits)
 
 static int jtag_vpi_path_move(struct pathmove_command *cmd)
 {
-       uint16_t trans = 0;
-       int retval;
-       int i;
+       uint8_t trans[DIV_ROUND_UP(cmd->num_states, 8)];
+
+       memset(trans, 0, DIV_ROUND_UP(cmd->num_states, 8));
 
-       for (i = 0; i < cmd->num_states; i++) {
+       for (int i = 0; i < cmd->num_states; i++) {
                if (tap_state_transition(tap_get_state(), true) == cmd->path[i])
-                       trans = trans | 1;
-               trans = trans << 1;
+                       buf_set_u32(trans, i, 1, 1);
+               tap_set_state(cmd->path[i]);
        }
 
-       retval = jtag_vpi_tms_seq((uint8_t *)&trans, 1);
-       if (retval != ERROR_OK)
-               return retval;
-
-       tap_set_state(cmd->path[i]);
-
-       return ERROR_OK;
+       return jtag_vpi_tms_seq(trans, cmd->num_states);
 }
 
 /**
@@ -171,7 +167,7 @@ static int jtag_vpi_state_move(tap_state_t state)
 static int jtag_vpi_queue_tdi_xfer(uint8_t *bits, int nb_bits, int tap_shift)
 {
        struct vpi_cmd vpi;
-       int nb_bytes = (nb_bits / 8) + !!(nb_bits % 8);
+       int nb_bytes = DIV_ROUND_UP(nb_bits, 8);
 
        vpi.cmd = tap_shift ? CMD_SCAN_CHAIN_FLIP_TMS : CMD_SCAN_CHAIN;
 
@@ -204,7 +200,7 @@ static int jtag_vpi_queue_tdi_xfer(uint8_t *bits, int nb_bits, int tap_shift)
  */
 static int jtag_vpi_queue_tdi(uint8_t *bits, int nb_bits, int tap_shift)
 {
-       int nb_xfer = (nb_bits / (XFERT_MAX_SIZE * 8)) + !!(nb_bits % (XFERT_MAX_SIZE * 8));
+       int nb_xfer = DIV_ROUND_UP(nb_bits, XFERT_MAX_SIZE * 8);
        uint8_t *xmit_buffer = bits;
        int xmit_nb_bits = nb_bits;
        int i = 0;
@@ -383,8 +379,10 @@ static int jtag_vpi_init(void)
        serv_addr.sin_family = AF_INET;
        serv_addr.sin_port = htons(server_port);
 
-       if (inet_pton(AF_INET, SERVER_ADDRESS, &serv_addr.sin_addr) <= 0) {
-               LOG_ERROR("inet_pton error occured");
+       serv_addr.sin_addr.s_addr = inet_addr(SERVER_ADDRESS);
+
+       if (serv_addr.sin_addr.s_addr == INADDR_NONE) {
+               LOG_ERROR("inet_addr error occured");
                return ERROR_FAIL;
        }