diff --git a/src/arch/arm/linux/system.cc b/src/arch/arm/linux/system.cc index e714cc9134..bc7fd2cb67 100644 --- a/src/arch/arm/linux/system.cc +++ b/src/arch/arm/linux/system.cc @@ -80,13 +80,20 @@ LinuxArmSystem::LinuxArmSystem(Params *p) } // With ARM udelay() is #defined to __udelay - uDelaySkipEvent = addKernelFuncEventOrPanic( - "__udelay", "__udelay", 1000, 0); + // newer kernels use __loop_udelay and __loop_const_udelay symbols + uDelaySkipEvent = addKernelFuncEvent( + "__loop_udelay", "__udelay", 1000, 0); + if(!uDelaySkipEvent) + uDelaySkipEvent = addKernelFuncEventOrPanic( + "__udelay", "__udelay", 1000, 0); // constant arguments to udelay() have some precomputation done ahead of // time. Constant comes from code. - constUDelaySkipEvent = addKernelFuncEventOrPanic( - "__const_udelay", "__const_udelay", 1000, 107374); + constUDelaySkipEvent = addKernelFuncEvent( + "__loop_const_udelay", "__const_udelay", 1000, 107374); + if(!constUDelaySkipEvent) + constUDelaySkipEvent = addKernelFuncEventOrPanic( + "__const_udelay", "__const_udelay", 1000, 107374); secDataPtrAddr = 0; secDataAddr = 0;