summaryrefslogtreecommitdiff
path: root/libcpu
diff options
context:
space:
mode:
authorxuzhuoyi <[email protected]>2018-09-03 21:39:56 +0800
committerxuzhuoyi <[email protected]>2018-09-03 21:39:56 +0800
commit5fd1213e73275d57489f879d5841e3ba3b8ab43f (patch)
tree23b1ac4f6c4dea41c1fef6460c88a704575afd92 /libcpu
parent697a4495a6b40e01ea856cf1e3dc90bde2e368c7 (diff)
[bsp][tms320f28379d] __rt_ffs() problem caused by 16-bit int
Diffstat (limited to 'libcpu')
-rw-r--r--libcpu/c28x/context.s1
-rw-r--r--libcpu/c28x/cpuport.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/libcpu/c28x/context.s b/libcpu/c28x/context.s
index 9efec09fb2..020325e126 100644
--- a/libcpu/c28x/context.s
+++ b/libcpu/c28x/context.s
@@ -164,6 +164,7 @@ switch_to_thread:
;#endif
MOV @SP, AR1
+ INC SP
RT_CTX_RESTORE ; pop r4 - r11 register
rtosint_exit:
diff --git a/libcpu/c28x/cpuport.c b/libcpu/c28x/cpuport.c
index 720bb01776..2300eb0e9c 100644
--- a/libcpu/c28x/cpuport.c
+++ b/libcpu/c28x/cpuport.c
@@ -79,6 +79,7 @@ rt_uint8_t *rt_hw_stack_init(void *tentry,
stack_frame->exception_stack_frame.dp_st1 = (0x00000000) | rt_hw_get_st1(); /* dp_st1 */
stack_frame->exception_stack_frame.dbgstat_ier = 0; /* dbgstat_ier */
stack_frame->exception_stack_frame.return_address = (unsigned long)tentry; /* return_address */
+ stack_frame->rpc = (unsigned long)texit;
/* return task's current stack address */
return stk + sizeof(struct stack_frame);