kernel/eka/nkern/arm/ncsched.cia
branchGCC_SURGE
changeset 144 c5e01f2a4bfd
parent 90 947f0dc9f7a8
child 153 1f2940c968a9
equal deleted inserted replaced
143:de794338254b 144:c5e01f2a4bfd
   893 
   893 
   894 	asm("dontswap: ");
   894 	asm("dontswap: ");
   895 	__JUMP(,lr);
   895 	__JUMP(,lr);
   896 
   896 
   897 	asm("__PendingDfcQueue: ");
   897 	asm("__PendingDfcQueue: ");
   898 	asm(".word %a0" : : "i" ((TInt)&TheScheduler.iDfcs));
   898 	asm(".word %a0" : : "i" (&TheScheduler.iDfcs));
   899 	}
   899 	}
   900 
   900 
   901 
   901 
   902 /** Queues a DFC (not an IDFC) from an IDFC or thread with preemption disabled.
   902 /** Queues a DFC (not an IDFC) from an IDFC or thread with preemption disabled.
   903 
   903 
  1848 	asm("ldr pc, [sp], #4 ");				// and exit immediately with r2=0 iff no reschedule occurred
  1848 	asm("ldr pc, [sp], #4 ");				// and exit immediately with r2=0 iff no reschedule occurred
  1849 
  1849 
  1850 	asm("__TheScheduler: ");
  1850 	asm("__TheScheduler: ");
  1851 	asm(".word TheScheduler ");
  1851 	asm(".word TheScheduler ");
  1852 	asm("__SystemLock: ");
  1852 	asm("__SystemLock: ");
  1853 	asm(".word %a0" : : "i" ((TInt)&TheScheduler.iLock));
  1853 	asm(".word %a0" : : "i" (&TheScheduler.iLock));
  1854 #ifdef BTRACE_CPU_USAGE
  1854 #ifdef BTRACE_CPU_USAGE
  1855 	asm("context_switch_trace_header:");
  1855 	asm("context_switch_trace_header:");
  1856 	asm(".word %a0" : : "i" ((TInt)(8<<BTrace::ESizeIndex) + (BTrace::EContextIdPresent<<BTrace::EFlagsIndex*8) + (BTrace::ECpuUsage<<BTrace::ECategoryIndex*8) + (BTrace::ENewThreadContext<<BTrace::ESubCategoryIndex*8)) );
  1856 	asm(".word %a0" : : "i" ((TInt)(8<<BTrace::ESizeIndex) + (BTrace::EContextIdPresent<<BTrace::EFlagsIndex*8) + (BTrace::ECpuUsage<<BTrace::ECategoryIndex*8) + (BTrace::ENewThreadContext<<BTrace::ESubCategoryIndex*8)) );
  1857 
  1857 
  1858 	asm("context_switch_trace:");
  1858 	asm("context_switch_trace:");
  2306 	SET_INTS(r3, MODE_SVC, INTS_ALL_ON);	// interrupts back on
  2306 	SET_INTS(r3, MODE_SVC, INTS_ALL_ON);	// interrupts back on
  2307 	asm("mov r0, r2 ");						// Return 0 if no reschedule, non-zero if reschedule occurred
  2307 	asm("mov r0, r2 ");						// Return 0 if no reschedule, non-zero if reschedule occurred
  2308 	asm("ldr pc, [sp], #4 ");
  2308 	asm("ldr pc, [sp], #4 ");
  2309 
  2309 
  2310 	asm("__RescheduleNeededFlag: ");
  2310 	asm("__RescheduleNeededFlag: ");
  2311 	asm(".word %a0" : : "i" ((TInt)&TheScheduler.iRescheduleNeededFlag));
  2311 	asm(".word %a0" : : "i" (&TheScheduler.iRescheduleNeededFlag));
  2312 	}
  2312 	}
  2313 
  2313 
  2314 
  2314 
  2315 /**	Returns the current processor context type (thread, IDFC or interrupt).
  2315 /**	Returns the current processor context type (thread, IDFC or interrupt).
  2316 
  2316