kernel/eka/kernel/arm/cipc.cia
changeset 109 b3a1d9898418
parent 102 ef2a444a7410
child 184 0e2270015475
equal deleted inserted replaced
102:ef2a444a7410 109:b3a1d9898418
   364 #else
   364 #else
   365 	asm("ldr r1, [r1, #%a0]" : : "i" _FOFF(TScheduler,iCurrentThread));
   365 	asm("ldr r1, [r1, #%a0]" : : "i" _FOFF(TScheduler,iCurrentThread));
   366 #endif
   366 #endif
   367 	asm("ldr r1, [r1, #%a0]" : : "i" (_FOFF(DThread,iOwningProcess)-_FOFF(DThread,iNThread)));	// r1->process to check
   367 	asm("ldr r1, [r1, #%a0]" : : "i" (_FOFF(DThread,iOwningProcess)-_FOFF(DThread,iNThread)));	// r1->process to check
   368 	asm("bl do_messagek ");
   368 	asm("bl do_messagek ");
       
   369 	asm("bcc 0f ");														// if bad handle, panic
   369 	asm("ldr ip, [r0, #%a0]" : : "i" _FOFF(RMessageK,iFunction));		// ip = function
   370 	asm("ldr ip, [r0, #%a0]" : : "i" _FOFF(RMessageK,iFunction));		// ip = function
   370 	asm("bcc 0f ");														// if bad handle, panic
       
   371 	asm("cmp ip, #%a0" : : "i" ((TInt)RMessage2::EDisConnect));			// check iFunction != RMessage2::EDisConnect
   371 	asm("cmp ip, #%a0" : : "i" ((TInt)RMessage2::EDisConnect));			// check iFunction != RMessage2::EDisConnect
   372 	asm("ldmnefd sp!, {r4,pc} ");										// if not, return OK
   372 	asm("ldmnefd sp!, {r4,pc} ");										// if not, return OK
   373 	asm("0: ");
   373 	asm("0: ");
   374 	asm("mov r0, #%a0" : : "i" (EBadMessageHandle));					// panic, disconnect not allowed
   374 	asm("mov r0, #%a0" : : "i" (EBadMessageHandle));					// panic, disconnect not allowed
   375 	asm("b  " CSM_ZN1K18PanicCurrentThreadEi);
   375 	asm("b  " CSM_ZN1K18PanicCurrentThreadEi);