commit
a68323683d
|
@ -41,6 +41,16 @@ extern "C" {
|
|||
#endif /* __cplusplus */
|
||||
|
||||
typedef struct TagTskContext {
|
||||
UINT32 uwEXCLR;
|
||||
UINT32 uwR4;
|
||||
UINT32 uwR5;
|
||||
UINT32 uwR6;
|
||||
UINT32 uwR7;
|
||||
UINT32 uwR8;
|
||||
UINT32 uwR9;
|
||||
UINT32 uwR10;
|
||||
UINT32 uwR11;
|
||||
UINT32 uwPriMask;
|
||||
#if ((defined(__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
|
||||
(defined(__FPU_USED) && (__FPU_USED == 1U)))
|
||||
UINT32 S16;
|
||||
|
@ -60,15 +70,6 @@ typedef struct TagTskContext {
|
|||
UINT32 S30;
|
||||
UINT32 S31;
|
||||
#endif
|
||||
UINT32 uwR4;
|
||||
UINT32 uwR5;
|
||||
UINT32 uwR6;
|
||||
UINT32 uwR7;
|
||||
UINT32 uwR8;
|
||||
UINT32 uwR9;
|
||||
UINT32 uwR10;
|
||||
UINT32 uwR11;
|
||||
UINT32 uwPriMask;
|
||||
UINT32 uwR0;
|
||||
UINT32 uwR1;
|
||||
UINT32 uwR2;
|
||||
|
|
|
@ -112,8 +112,10 @@ LITE_OS_SEC_TEXT_INIT VOID *ArchTskStackInit(UINT32 taskID, UINT32 stackSize, VO
|
|||
context->S15 = 0xAA00000F;
|
||||
context->FPSCR = 0x00000000;
|
||||
context->NO_NAME = 0xAA000011;
|
||||
context->uwEXCLR = 0xFFFFFFEDL;
|
||||
#else
|
||||
context->uwEXCLR = 0xFFFFFFFDL;
|
||||
#endif
|
||||
|
||||
context->uwR4 = 0x04040404L;
|
||||
context->uwR5 = 0x05050505L;
|
||||
context->uwR6 = 0x06060606L;
|
||||
|
|
|
@ -33,13 +33,10 @@
|
|||
.fpu vfpv3-d16-fp16
|
||||
.thumb
|
||||
|
||||
.equ OS_FPU_CPACR, 0xE000ED88
|
||||
.equ OS_FPU_CPACR_ENABLE, 0x00F00000
|
||||
.equ OS_NVIC_INT_CTRL, 0xE000ED04
|
||||
.equ OS_NVIC_SYSPRI3, 0xE000ED20
|
||||
.equ OS_NVIC_PENDSV_PRI, 0xF0F00000
|
||||
.equ OS_NVIC_PENDSVSET, 0x10000000
|
||||
.equ OS_TASK_STATUS_RUNNING, 0x0010
|
||||
|
||||
.section .text
|
||||
.thumb
|
||||
|
@ -70,13 +67,12 @@ HalStartToRun:
|
|||
ldr r0, [r1, #4]
|
||||
ldr r12, [r0]
|
||||
|
||||
ldr.w r1, =OS_FPU_CPACR
|
||||
ldr r1, [r1]
|
||||
and r1, r1, #OS_FPU_CPACR_ENABLE
|
||||
cmp r1, #OS_FPU_CPACR_ENABLE
|
||||
ldr r2, [r12]
|
||||
tst r2, #0x10
|
||||
it ne
|
||||
bne __DisabledFPU
|
||||
|
||||
add r12, r12, #100
|
||||
add r12, r12, #104
|
||||
ldmfd r12!, {r0-r7}
|
||||
add r12, r12, #72
|
||||
msr psp, r12
|
||||
|
@ -88,7 +84,7 @@ HalStartToRun:
|
|||
bx r6
|
||||
|
||||
__DisabledFPU:
|
||||
add r12, r12, #36
|
||||
add r12, r12, #40
|
||||
|
||||
ldmfd r12!, {r0-r7}
|
||||
msr psp, r12
|
||||
|
@ -167,16 +163,12 @@ HalTaskSwitch:
|
|||
TaskContextSwitch:
|
||||
mov lr, r0
|
||||
mrs r0, psp
|
||||
stmfd r0!, {r4-r12}
|
||||
tst lr, #0x10
|
||||
it eq
|
||||
vstmdbeq r0!, {d8-d15}
|
||||
mov r3, lr
|
||||
stmfd r0!, {r3-r12}
|
||||
|
||||
ldr.w r3, =OS_FPU_CPACR
|
||||
ldr r3, [r3]
|
||||
and r3, r3, #OS_FPU_CPACR_ENABLE
|
||||
cmp r3, #OS_FPU_CPACR_ENABLE
|
||||
bne __DisabledFPU1
|
||||
vstmdb r0!, {d8-d15}
|
||||
|
||||
__DisabledFPU1:
|
||||
ldr r5, =g_losTask
|
||||
ldr r6, [r5]
|
||||
str r0, [r6]
|
||||
|
@ -186,15 +178,10 @@ __DisabledFPU1:
|
|||
ldr r1, [r0]
|
||||
|
||||
SignalContextRestore:
|
||||
ldr.w r3, =OS_FPU_CPACR
|
||||
ldr r3, [r3]
|
||||
and r3, r3, #OS_FPU_CPACR_ENABLE
|
||||
cmp r3, #OS_FPU_CPACR_ENABLE
|
||||
bne __DisabledFPU2
|
||||
VLDMIA r1!, {d8-d15}
|
||||
|
||||
__DisabledFPU2:
|
||||
ldmfd r1!, {r4-r12}
|
||||
ldmfd r1!, {r3-r12}
|
||||
tst r3, #0x10
|
||||
it eq
|
||||
vldmiaeq r1!, {d8-d15}
|
||||
msr psp, r1
|
||||
msr PRIMASK, r12
|
||||
|
||||
|
|
|
@ -248,7 +248,7 @@ osExcDispatch:
|
|||
.fnstart
|
||||
.cantunwind
|
||||
LDR R2, =OS_NVIC_ACT_BASE
|
||||
MOV R12, #8 // R12 is hwi check loop counter
|
||||
MOV R12, #16 // R12 is hwi check loop counter
|
||||
.fnend
|
||||
|
||||
.type _hwiActiveCheck, %function
|
||||
|
|
Loading…
Reference in New Issue