update gcc/iar assemble files according to armcc version.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@218 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
parent
53818464ac
commit
bcb37f6d17
@ -90,8 +90,12 @@ rt_hw_pend_sv:
|
|||||||
MRS r2, PRIMASK
|
MRS r2, PRIMASK
|
||||||
CPSID I
|
CPSID I
|
||||||
|
|
||||||
/* clear rt_thread_switch_interrput_flag to 0 */
|
/* get rt_thread_switch_interrupt_flag */
|
||||||
LDR r0, =rt_thread_switch_interrput_flag
|
LDR r0, =rt_thread_switch_interrput_flag
|
||||||
|
LDR r1, [r0]
|
||||||
|
CBZ r1, pendsv_exit /* pendsv already handled */
|
||||||
|
|
||||||
|
/* clear rt_thread_switch_interrput_flag to 0 */
|
||||||
MOV r1, #0x00
|
MOV r1, #0x00
|
||||||
STR r1, [r0]
|
STR r1, [r0]
|
||||||
|
|
||||||
@ -112,6 +116,7 @@ swtich_to_thread:
|
|||||||
LDMFD r1!, {r4 - r11} /* pop r4 - r11 register */
|
LDMFD r1!, {r4 - r11} /* pop r4 - r11 register */
|
||||||
MSR psp, r1 /* update stack pointer */
|
MSR psp, r1 /* update stack pointer */
|
||||||
|
|
||||||
|
pendsv_exit:
|
||||||
/* restore interrupt */
|
/* restore interrupt */
|
||||||
MSR PRIMASK, r2
|
MSR PRIMASK, r2
|
||||||
|
|
||||||
@ -133,6 +138,11 @@ rt_hw_context_switch_to:
|
|||||||
MOV r0, #0x0
|
MOV r0, #0x0
|
||||||
STR r0, [r1]
|
STR r0, [r1]
|
||||||
|
|
||||||
|
/* set interrupt flag to 1 */
|
||||||
|
LDR r1, =rt_thread_switch_interrput_flag
|
||||||
|
MOV r0, #1
|
||||||
|
STR r0, [r1]
|
||||||
|
|
||||||
/* set the PendSV exception priority */
|
/* set the PendSV exception priority */
|
||||||
LDR r0, =NVIC_SYSPRI2
|
LDR r0, =NVIC_SYSPRI2
|
||||||
LDR r1, =NVIC_PENDSV_PRI
|
LDR r1, =NVIC_PENDSV_PRI
|
||||||
|
@ -88,8 +88,12 @@ rt_hw_pend_sv:
|
|||||||
MRS r2, PRIMASK
|
MRS r2, PRIMASK
|
||||||
CPSID I
|
CPSID I
|
||||||
|
|
||||||
; clear rt_thread_switch_interrput_flag to 0
|
; get rt_thread_switch_interrupt_flag
|
||||||
LDR r0, =rt_thread_switch_interrput_flag
|
LDR r0, =rt_thread_switch_interrput_flag
|
||||||
|
LDR r1, [r0]
|
||||||
|
CBZ r1, pendsv_exit ; pendsv already handled
|
||||||
|
|
||||||
|
; clear rt_thread_switch_interrput_flag to 0
|
||||||
MOV r1, #0x00
|
MOV r1, #0x00
|
||||||
STR r1, [r0]
|
STR r1, [r0]
|
||||||
|
|
||||||
@ -110,6 +114,7 @@ swtich_to_thread
|
|||||||
LDMFD r1!, {r4 - r11} ; pop r4 - r11 register
|
LDMFD r1!, {r4 - r11} ; pop r4 - r11 register
|
||||||
MSR psp, r1 ; update stack pointer
|
MSR psp, r1 ; update stack pointer
|
||||||
|
|
||||||
|
pendsv_exit
|
||||||
; restore interrupt
|
; restore interrupt
|
||||||
MSR PRIMASK, r2
|
MSR PRIMASK, r2
|
||||||
|
|
||||||
@ -130,6 +135,11 @@ rt_hw_context_switch_to:
|
|||||||
MOV r0, #0x0
|
MOV r0, #0x0
|
||||||
STR r0, [r1]
|
STR r0, [r1]
|
||||||
|
|
||||||
|
; set interrupt flag to 1
|
||||||
|
LDR r1, =rt_thread_switch_interrput_flag
|
||||||
|
MOV r0, #1
|
||||||
|
STR r0, [r1]
|
||||||
|
|
||||||
; set the PendSV exception priority
|
; set the PendSV exception priority
|
||||||
LDR r0, =NVIC_SYSPRI2
|
LDR r0, =NVIC_SYSPRI2
|
||||||
LDR r1, =NVIC_PENDSV_PRI
|
LDR r1, =NVIC_PENDSV_PRI
|
||||||
|
@ -107,7 +107,6 @@ rt_hw_pend_sv PROC
|
|||||||
MRS r1, psp ; get from thread stack pointer
|
MRS r1, psp ; get from thread stack pointer
|
||||||
STMFD r1!, {r4 - r11} ; push r4 - r11 register
|
STMFD r1!, {r4 - r11} ; push r4 - r11 register
|
||||||
LDR r0, [r0]
|
LDR r0, [r0]
|
||||||
|
|
||||||
STR r1, [r0] ; update from thread stack pointer
|
STR r1, [r0] ; update from thread stack pointer
|
||||||
|
|
||||||
swtich_to_thread
|
swtich_to_thread
|
||||||
|
Loading…
x
Reference in New Issue
Block a user