aboutsummaryrefslogtreecommitdiff
path: root/src/rtos
diff options
context:
space:
mode:
authorBen McMorran <bemcmorr@microsoft.com>2022-10-20 15:39:24 -0700
committerAntonio Borneo <borneo.antonio@gmail.com>2022-11-04 21:49:03 +0000
commit3ca7bc7354ea3f8db8384142c2bd8675789e7888 (patch)
tree490ab09a6bbde356651694db6d83ec027c9f5048 /src/rtos
parent12ce170945917198b166a35160214d909dfb0dc0 (diff)
downloadriscv-openocd-3ca7bc7354ea3f8db8384142c2bd8675789e7888.zip
riscv-openocd-3ca7bc7354ea3f8db8384142c2bd8675789e7888.tar.gz
riscv-openocd-3ca7bc7354ea3f8db8384142c2bd8675789e7888.tar.bz2
ThreadX: set current_thread for kernel execution
If we just invented thread 1 to represent the current execution, we need to make sure the RTOS object also claims it's the current thread so that threadx_get_thread_reg_list() doesn't attempt to read a thread control block at 0x00000001. Signed-off-by: Ben McMorran <bemcmorr@microsoft.com> Change-Id: I7f71e730d047858898297e4cb31db8e47e0c371c Reviewed-on: https://review.openocd.org/c/openocd/+/7280 Tested-by: jenkins Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Diffstat (limited to 'src/rtos')
-rw-r--r--src/rtos/ThreadX.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/rtos/ThreadX.c b/src/rtos/ThreadX.c
index 7b76fb6..5f90eb6 100644
--- a/src/rtos/ThreadX.c
+++ b/src/rtos/ThreadX.c
@@ -320,6 +320,12 @@ static int threadx_update_threads(struct rtos *rtos)
rtos->thread_details->thread_name_str = malloc(sizeof(tmp_str));
strcpy(rtos->thread_details->thread_name_str, tmp_str);
+ /* If we just invented thread 1 to represent the current execution, we
+ * need to make sure the RTOS object also claims it's the current thread
+ * so that threadx_get_thread_reg_list() doesn't attempt to read a
+ * thread control block at 0x00000001. */
+ rtos->current_thread = 1;
+
if (thread_list_size == 0) {
rtos->thread_count = 1;
return ERROR_OK;