equal
deleted
inserted
replaced
155 asm("b slow_swi "); // go through slow SWI routine to call invalid SWI handler |
155 asm("b slow_swi "); // go through slow SWI routine to call invalid SWI handler |
156 |
156 |
157 #ifndef __FAST_SEM_MACHINE_CODED__ |
157 #ifndef __FAST_SEM_MACHINE_CODED__ |
158 asm("wait_for_any_request: "); |
158 asm("wait_for_any_request: "); |
159 __ASM_STI(); // all interrupts on |
159 __ASM_STI(); // all interrupts on |
160 asm("b WaitForAnyRequest__5NKern "); |
160 asm("b WaitForAnyRequest__5NKern "); // CSM needed |
161 #else |
161 #else |
162 asm(".global exec_wfar_wait "); |
162 asm(".global exec_wfar_wait "); |
163 asm("exec_wfar_wait: "); |
163 asm("exec_wfar_wait: "); |
164 asm("mov r2, #1 "); |
164 asm("mov r2, #1 "); |
165 asm("str r2, [r11, #%a0]" : : "i" _FOFF(TSubScheduler,iKernLockCount)); // else lock the kernel |
165 asm("str r2, [r11, #%a0]" : : "i" _FOFF(TSubScheduler,iKernLockCount)); // else lock the kernel |
1003 asm("b 1b "); |
1003 asm("b 1b "); |
1004 |
1004 |
1005 // CsFunction outstanding so do it |
1005 // CsFunction outstanding so do it |
1006 asm("5: "); |
1006 asm("5: "); |
1007 __ASM_STI(); // enable interrupts |
1007 __ASM_STI(); // enable interrupts |
1008 asm("bl ThreadLeaveCS__5NKern "); |
1008 asm("bl " CSM_ZN5NKern13ThreadLeaveCSEv); |
1009 __ASM_CLI(); // turn off interrupts |
1009 __ASM_CLI(); // turn off interrupts |
1010 __DATA_MEMORY_BARRIER__(r6); |
1010 __DATA_MEMORY_BARRIER__(r6); |
1011 asm("ldr r1, [r8] "); |
1011 asm("ldr r1, [r8] "); |
1012 asm("mov sp, r10 "); |
1012 asm("mov sp, r10 "); |
1013 asm("mov lr, r11 "); |
1013 asm("mov lr, r11 "); |