git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
VServer 1.9.2 (patch-2.6.8.1-vs1.9.2.diff)
[linux-2.6.git]
/
arch
/
ppc
/
kernel
/
time.c
diff --git
a/arch/ppc/kernel/time.c
b/arch/ppc/kernel/time.c
index
96a6138
..
cfeff04
100644
(file)
--- a/
arch/ppc/kernel/time.c
+++ b/
arch/ppc/kernel/time.c
@@
-56,6
+56,7
@@
#include <linux/mc146818rtc.h>
#include <linux/time.h>
#include <linux/init.h>
#include <linux/mc146818rtc.h>
#include <linux/time.h>
#include <linux/init.h>
+#include <linux/profile.h>
#include <asm/segment.h>
#include <asm/io.h>
#include <asm/segment.h>
#include <asm/io.h>
@@
-107,17
+108,23
@@
static inline int tb_delta(unsigned *jiffy_stamp) {
return delta;
}
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;
extern char _stext;
-static inline void ppc_do_profile (
unsigned long nip
)
+static inline void ppc_do_profile (
struct pt_regs *regs
)
{
{
+ unsigned long nip;
+ extern unsigned long prof_cpu_mask;
+
+ profile_hook(regs);
+
+ if (user_mode(regs))
+ return;
+
if (!prof_buffer)
return;
if (!prof_buffer)
return;
+ nip = instruction_pointer(regs);
+
/*
* Only measure the CPUs specified by /proc/irq/prof_cpu_mask.
* (default is all CPUs.)
/*
* Only measure the CPUs specified by /proc/irq/prof_cpu_mask.
* (default is all CPUs.)
@@
-156,8
+163,9
@@
void timer_interrupt(struct pt_regs * regs)
while ((next_dec = tb_ticks_per_jiffy - tb_delta(&jiffy_stamp)) < 0) {
jiffy_stamp += tb_ticks_per_jiffy;
while ((next_dec = tb_ticks_per_jiffy - tb_delta(&jiffy_stamp)) < 0) {
jiffy_stamp += tb_ticks_per_jiffy;
- if (!user_mode(regs))
- ppc_do_profile(instruction_pointer(regs));
+
+ ppc_do_profile(regs);
+
if (smp_processor_id())
continue;
if (smp_processor_id())
continue;