kernel/eka/nkernsmp/arm/ncsched.cia
branchGCC_SURGE
changeset 184 0e2270015475
parent 90 947f0dc9f7a8
child 221 39b39e1a406e
equal deleted inserted replaced
183:9953e74bcef5 184:0e2270015475
   864 
   864 
   865 	asm("2:		");
   865 	asm("2:		");
   866 	asm("stmfd	sp!, {r0,lr} ");
   866 	asm("stmfd	sp!, {r0,lr} ");
   867 	asm("mov	r0, r3 ");
   867 	asm("mov	r0, r3 ");
   868 	asm("mov	r1, r12 ");
   868 	asm("mov	r1, r12 ");
   869 	asm("bl		ReschedInactiveCpus__10TSchedulerUl ");
   869 	asm("bl		ReschedInactiveCpus__10TSchedulerUl ");	// CSM needed
   870 	asm("mov	r12, r0 ");
   870 	asm("mov	r12, r0 ");
   871 	asm("ldmfd	sp!, {r0,lr} ");
   871 	asm("ldmfd	sp!, {r0,lr} ");
   872 	asm("ldr	r2, [r0, #%a0]" : : "i" _FOFF(TSubScheduler, iSSX.iGicDistAddr));
   872 	asm("ldr	r2, [r0, #%a0]" : : "i" _FOFF(TSubScheduler, iSSX.iGicDistAddr));
   873 	asm("b		1b ");
   873 	asm("b		1b ");
   874 	}
   874 	}
  1038 	asm("str	r3, [r6, #%a0]" : : "i" _FOFF(ArmLocalTimer,iTimerCount));	// set new timeslice value in timer
  1038 	asm("str	r3, [r6, #%a0]" : : "i" _FOFF(ArmLocalTimer,iTimerCount));	// set new timeslice value in timer
  1039 
  1039 
  1040 	asm("ldr	r6, [r0, #%a0]" : : "i" _FOFF(TSubScheduler,iLastTimestamp.i32[0]));
  1040 	asm("ldr	r6, [r0, #%a0]" : : "i" _FOFF(TSubScheduler,iLastTimestamp.i32[0]));
  1041 	asm("ldr	r7, [r0, #%a0]" : : "i" _FOFF(TSubScheduler,iLastTimestamp.i32[1]));
  1041 	asm("ldr	r7, [r0, #%a0]" : : "i" _FOFF(TSubScheduler,iLastTimestamp.i32[1]));
  1042 	asm("stmfd	sp!, {r0-r2,lr} ");
  1042 	asm("stmfd	sp!, {r0-r2,lr} ");
  1043 	asm("bl		Timestamp__5NKern ");		// R1:R0 = current time
  1043 	asm("bl	" CSM_ZN5NKern9TimestampEv);		// R1:R0 = current time
  1044 	asm("mov	r4, r0 ");
  1044 	asm("mov	r4, r0 ");
  1045 	asm("mov	r5, r1 ");					// R5:R4 = current time
  1045 	asm("mov	r5, r1 ");					// R5:R4 = current time
  1046 	asm("ldmfd	sp!, {r0-r2,lr} ");
  1046 	asm("ldmfd	sp!, {r0-r2,lr} ");
  1047 	asm("str	r4, [r0, #%a0]" : : "i" _FOFF(TSubScheduler,iLastTimestamp.i32[0]));
  1047 	asm("str	r4, [r0, #%a0]" : : "i" _FOFF(TSubScheduler,iLastTimestamp.i32[0]));
  1048 	asm("ldr	r3, [r1, #%a0]!" : : "i" _FOFF(NThreadBase,iTotalCpuTime.i64));
  1048 	asm("ldr	r3, [r1, #%a0]!" : : "i" _FOFF(NThreadBase,iTotalCpuTime.i64));