Browse Source

[bsp][tms320f28379d] __rt_ffs() problem caused by 16-bit int

xuzhuoyi 6 years ago
parent
commit
5fd1213e73
3 changed files with 4 additions and 3 deletions
  1. 2 3
      bsp/tms320f28379d/rtconfig.h
  2. 1 0
      libcpu/c28x/context.s
  3. 1 0
      libcpu/c28x/cpuport.c

+ 2 - 3
bsp/tms320f28379d/rtconfig.h

@@ -8,10 +8,9 @@
 
 #define RT_NAME_MAX 8
 #define RT_ALIGN_SIZE 4
-#define RT_THREAD_PRIORITY_32
-#define RT_THREAD_PRIORITY_MAX 32
+#define RT_THREAD_PRIORITY_MAX 16
 #define RT_TICK_PER_SECOND 100
-#define RT_USING_OVERFLOW_CHECK
+//#define RT_USING_OVERFLOW_CHECK
 #define RT_USING_HOOK
 #define RT_IDEL_HOOK_LIST_SIZE 4
 #define IDLE_THREAD_STACK_SIZE 1024

+ 1 - 0
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:

+ 1 - 0
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);