riscv/semihosting: Fix ebreak skip on fileio mode 29/7729/3
authorMarek Vrbka <marek.vrbka@codasip.com>
Mon, 5 Jun 2023 06:35:09 +0000 (08:35 +0200)
committerAntonio Borneo <borneo.antonio@gmail.com>
Fri, 16 Jun 2023 22:11:51 +0000 (22:11 +0000)
This patch fixes skipping the semihosting sequence if
the fileio mode is enabled on riscv. This change was
tested by me and is in the riscv-openocd fork for a year now.

Original merge request:
https://github.com/riscv/riscv-openocd/pull/699

Original author: Wu Zhigang
zhigang.wu@starfivetech.com
https://github.com/wzgpeter

Change-Id: Iadaa0a48d1f82d3a7ca168f8a6b656ff6ab78e03
Signed-off-by: Marek Vrbka <marek.vrbka@codasip.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/7729
Tested-by: jenkins
Reviewed-by: Tim Newsome <tim@sifive.com>
src/target/riscv/riscv_semihosting.c

index 1bc4e1a16685e457c785064c3d39eb888e325768..da237ef337525ea7a4080a4bed2bbbaf95a43f6d 100644 (file)
@@ -141,16 +141,16 @@ enum semihosting_result riscv_semihosting(struct target *target, int *retval)
                }
        }
 
+       /* Resume right after the EBREAK 4 bytes instruction. */
+       *retval = riscv_set_register(target, GDB_REGNO_PC, pc + 4);
+       if (*retval != ERROR_OK)
+               return SEMIHOSTING_ERROR;
+
        /*
         * Resume target if we are not waiting on a fileio
         * operation to complete.
         */
        if (semihosting->is_resumable && !semihosting->hit_fileio) {
-               /* Resume right after the EBREAK 4 bytes instruction. */
-               *retval = riscv_set_register(target, GDB_REGNO_PC, pc + 4);
-               if (*retval != ERROR_OK)
-                       return SEMIHOSTING_ERROR;
-
                LOG_DEBUG("   -> HANDLED");
                return SEMIHOSTING_HANDLED;
        }

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)