mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-09-22 03:09:16 +08:00
[bsp][tms320f28379d] Add finsh init in rt_init_thread
This commit is contained in:
@@ -94,11 +94,10 @@ _rt_hw_interrupt_enable:
|
||||
|
||||
.asmfunc
|
||||
_rt_hw_context_switch_interrupt:
|
||||
_rt_hw_context_switch:
|
||||
MOVL XAR0, #0
|
||||
MOV AR0, AL
|
||||
MOVL XAR4, *-SP[4]
|
||||
; set rt_thread_switch_interrupt_flag to 1
|
||||
; set rt_thread_switch_interrupt_flag to 1
|
||||
MOVL XAR5, #_rt_thread_switch_interrupt_flag
|
||||
MOVL XAR6, *XAR5
|
||||
MOVL ACC, XAR6
|
||||
@@ -114,6 +113,37 @@ _reswitch:
|
||||
MOVL XAR5, #_rt_interrupt_to_thread ; set rt_interrupt_to_thread
|
||||
MOVL *XAR5, XAR4
|
||||
|
||||
;TRAP #16
|
||||
LRETR
|
||||
.endasmfunc
|
||||
|
||||
;
|
||||
; void rt_hw_context_switch(rt_uint32 from, rt_uint32 to);
|
||||
; r0 --> from
|
||||
; r4 --> to
|
||||
|
||||
|
||||
.asmfunc
|
||||
_rt_hw_context_switch:
|
||||
MOVL XAR0, #0
|
||||
MOV AR0, AL
|
||||
MOVL XAR4, *-SP[4]
|
||||
; set rt_thread_switch_interrupt_flag to 1
|
||||
MOVL XAR5, #_rt_thread_switch_interrupt_flag
|
||||
MOVL XAR6, *XAR5
|
||||
MOVL ACC, XAR6
|
||||
CMPB AL, #1
|
||||
B _reswitch2, EQ
|
||||
MOVL XAR6, #1
|
||||
MOVL *XAR5, XAR6
|
||||
|
||||
MOVL XAR5, #_rt_interrupt_from_thread ; set rt_interrupt_from_thread
|
||||
MOVL *XAR5, XAR0
|
||||
|
||||
_reswitch2:
|
||||
MOVL XAR5, #_rt_interrupt_to_thread ; set rt_interrupt_to_thread
|
||||
MOVL *XAR5, XAR4
|
||||
|
||||
TRAP #16
|
||||
LRETR
|
||||
.endasmfunc
|
||||
@@ -159,9 +189,9 @@ _RTOSINT_Handler:
|
||||
;#endif
|
||||
|
||||
MOV AL, *AR0
|
||||
MOV AR1, AL
|
||||
MOV AR0, AL
|
||||
MOVZ AR1, @SP ; get from thread stack pointer
|
||||
MOV *AR0, AR1 ; update from thread stack pointer
|
||||
MOV *AR0, AR1 ; update from thread stack pointer
|
||||
|
||||
switch_to_thread:
|
||||
MOV AR1, #_rt_interrupt_to_thread
|
||||
@@ -175,7 +205,7 @@ switch_to_thread:
|
||||
;#endif
|
||||
|
||||
MOV @SP, AR1
|
||||
INC SP
|
||||
;INC SP
|
||||
RT_CTX_RESTORE ; pop r4 - r11 register
|
||||
|
||||
rtosint_exit:
|
||||
|
||||
@@ -17,6 +17,9 @@ rt_uint32_t rt_thread_switch_interrupt_flag;
|
||||
/* exception hook */
|
||||
static rt_err_t (*rt_exception_hook)(void *context) = RT_NULL;
|
||||
|
||||
extern rt_uint16_t rt_hw_get_st0(void);
|
||||
extern rt_uint16_t rt_hw_get_st1(void);
|
||||
|
||||
struct exception_stack_frame
|
||||
{
|
||||
rt_uint32_t t_st0;
|
||||
@@ -59,6 +62,7 @@ rt_uint8_t *rt_hw_stack_init(void *tentry,
|
||||
stk = stack_addr;
|
||||
stk = (rt_uint8_t *)RT_ALIGN((rt_uint32_t)stk, 8);
|
||||
//stk -= sizeof(struct stack_frame);
|
||||
stk += 1;
|
||||
|
||||
stack_frame = (struct stack_frame *)stk;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user