diff -r c1f20ce4abcf -r 3e88ff8f41d5 kernel/eka/include/nkernsmp/arm/entry.h --- a/kernel/eka/include/nkernsmp/arm/entry.h Tue Aug 31 16:34:26 2010 +0300 +++ b/kernel/eka/include/nkernsmp/arm/entry.h Wed Sep 01 12:34:56 2010 +0100 @@ -40,7 +40,6 @@ #endif extern void handle_crash_ipi(); -extern void handle_indirect_powerdown_ipi(); #ifdef _DEBUG extern void __DebugMsgIrq(TUint aIrqNumber); @@ -125,22 +124,22 @@ asm("mov r5, sp "); asm("str r1, [sp, #%a0]" : : "i" _FOFF(SThreadExcStack,iExcCode)); // word describing exception type __ASM_STI2_MODE(MODE_SYS); // mode_sys, IRQs off, FIQs on - asm("ldr sp, [r4, #%a0]" : : "i" _FOFF(TSubScheduler, iSSX.iIrqStackTop)); + asm("ldr sp, [r4, #%a0]" : : "i" _FOFF(TSubScheduler, i_IrqStackTop)); USER_MEMORY_GUARD_ON(,r8,r0); // r8 = original DACR if user memory guards in use asm("nested_irq_rejoin: "); - asm("ldr r0, [r4, #%a0]" : : "i" _FOFF(TSubScheduler, iSSX.iIrqCount)); - asm("ldr r7, [r4, #%a0]" : : "i" _FOFF(TSubScheduler, iSSX.iIrqNestCount)); + asm("ldr r0, [r4, #%a0]" : : "i" _FOFF(TSubScheduler, i_IrqCount)); + asm("ldr r7, [r4, #%a0]" : : "i" _FOFF(TSubScheduler, i_IrqNestCount)); asm("ldr r12, __ArmInterrupt "); asm("ldr r10, _ArmVectorIrq "); asm("add r0, r0, #1 "); asm("add r7, r7, #1 "); __DATA_MEMORY_BARRIER_Z__(r2); // ensure memory accesses in interrupted code are observed before // the writes to i_IrqCount, i_IrqNestCount - asm("str r0, [r4, #%a0]" : : "i" _FOFF(TSubScheduler, iSSX.iIrqCount)); // increment i_IrqCount - asm("ldr r11, [r12,#%a0]" : : "i" _FOFF(SArmInterruptInfo,iIrqHandler)); // address if IRQ handler - asm("ldr r6, [r4, #%a0]" : : "i" _FOFF(TSubScheduler, iSSX.iGicCpuIfcAddr)); - asm("str r7, [r4, #%a0]" : : "i" _FOFF(TSubScheduler, iSSX.iIrqNestCount)); // increment i_IrqNestCount + asm("str r0, [r4, #%a0]" : : "i" _FOFF(TSubScheduler, i_IrqCount)); // increment i_IrqCount + asm("ldr r11, [r12,#%a0]" : : "i" _FOFF(SArmInterruptInfo,iIrqHandler)); // address of IRQ handler + asm("ldr r6, [r4, #%a0]" : : "i" _FOFF(TSubScheduler, i_GicCpuIfcAddr)); + asm("str r7, [r4, #%a0]" : : "i" _FOFF(TSubScheduler, i_IrqNestCount)); // increment i_IrqNestCount asm("1: "); #ifdef BTRACE_CPU_USAGE @@ -188,8 +187,6 @@ asm("beq do_generic_ipi "); asm("cmp r2, #%a0" : : "i" ((TInt)TRANSFERRED_IRQ_VECTOR)); asm("beq do_transferred_ipi "); - asm("cmp r2, #%a0" : : "i" ((TInt)INDIRECT_POWERDOWN_IPI_VECTOR)); - asm("beq do_indirect_powerdown_ipi "); asm("cmp r2, #15 "); __JUMP(hi, r11); // if >15 but not TIMESLICE_VECTOR, call dispatcher @@ -201,7 +198,7 @@ // TIMESLICE, RESCHED or TRANSFERRED asm("do_timeslice_irq: "); - asm("ldr r2, [r4, #%a0]" : : "i" _FOFF(TSubScheduler, iSSX.iLocalTimerAddr)); + asm("ldr r2, [r4, #%a0]" : : "i" _FOFF(TSubScheduler, i_LocalTimerAddr)); asm("mov r1, #1 "); asm("str r1, [r2, #%a0]" : : "i" _FOFF(ArmLocalTimer, iTimerIntStatus)); // clear timer event flag asm("do_resched_ipi: "); @@ -214,16 +211,6 @@ ARM_SEV; // kick any CPUs waiting for us to enter the ISR asm("b 1b "); - asm("do_indirect_powerdown_ipi: "); - asm("str r0, [r6, #%a0]" : : "i" _FOFF(GicCpuIfc, iEoi)); // acknowledge interrupt - __DATA_SYNC_BARRIER_Z__(r1); // ensure writes to i_IrqCount, i_IrqNestCount, iRescheduleNeededFlag complete before SEV - // also ensure EOI is written before we return from the interrupt - ARM_SEV; // kick any CPUs waiting for us to enter the ISR - asm("stmfd sp!, {r0-r3,r12,lr} "); - asm("bl call_ipd_handler "); - asm("ldmfd sp!, {r0-r3,r12,lr} "); - asm("b 1b "); - // GENERIC_IPI asm("do_generic_ipi: "); asm("ldr r2, _GenericIPIIsr "); @@ -235,9 +222,6 @@ asm("__DebugMsg_longjump_Irq: "); asm("ldr pc, _dmIrq "); - asm("call_ipd_handler: "); - asm("ldr pc, __handle_ipd_ipi "); - asm("__reset_vector:"); asm(".word __ArmVectorReset "); asm("__undef_vector:"); @@ -271,8 +255,6 @@ #endif asm("_dmIrq: "); asm(".word __DebugMsgIrq "); - asm("__handle_ipd_ipi: "); - asm(".word handle_indirect_powerdown_ipi "); } }