#include <linux/mc146818rtc.h>
#include <linux/time.h>
#include <linux/init.h>
-#include <linux/profile.h>
#include <asm/segment.h>
#include <asm/io.h>
return delta;
}
+extern unsigned long prof_cpu_mask;
+extern unsigned int * prof_buffer;
+extern unsigned long prof_len;
+extern unsigned long prof_shift;
extern char _stext;
-static inline void ppc_do_profile (struct pt_regs *regs)
+static inline void ppc_do_profile (unsigned long nip)
{
- unsigned long nip;
- extern unsigned long prof_cpu_mask;
-
- profile_hook(regs);
-
- if (user_mode(regs))
- return;
-
if (!prof_buffer)
return;
- nip = instruction_pointer(regs);
-
/*
* Only measure the CPUs specified by /proc/irq/prof_cpu_mask.
* (default is all CPUs.)
while ((next_dec = tb_ticks_per_jiffy - tb_delta(&jiffy_stamp)) < 0) {
jiffy_stamp += tb_ticks_per_jiffy;
-
- ppc_do_profile(regs);
-
+ if (!user_mode(regs))
+ ppc_do_profile(instruction_pointer(regs));
if (smp_processor_id())
continue;