kernel/eka/nkernsmp/arm/vectors.cia
branchGCC_SURGE
changeset 184 0e2270015475
parent 90 947f0dc9f7a8
equal deleted inserted replaced
183:9953e74bcef5 184:0e2270015475
   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 ");