Merge branch 'for-linus' of ssh://master.kernel.org/pub/scm/linux/kernel/git/ieee1394...
[pandora-kernel.git] / arch / sparc / kernel / time.c
index e10dc83..9bb1240 100644 (file)
@@ -42,6 +42,7 @@
 #include <asm/page.h>
 #include <asm/pcic.h>
 #include <asm/of_device.h>
+#include <asm/irq_regs.h>
 
 DEFINE_SPINLOCK(rtc_lock);
 enum sparc_clock_type sp_clock_typ;
@@ -77,7 +78,6 @@ unsigned long profile_pc(struct pt_regs *regs)
        extern char __copy_user_begin[], __copy_user_end[];
        extern char __atomic_begin[], __atomic_end[];
        extern char __bzero_begin[], __bzero_end[];
-       extern char __bitops_begin[], __bitops_end[];
 
        unsigned long pc = regs->pc;
 
@@ -87,13 +87,13 @@ unsigned long profile_pc(struct pt_regs *regs)
            (pc >= (unsigned long) __atomic_begin &&
             pc < (unsigned long) __atomic_end) ||
            (pc >= (unsigned long) __bzero_begin &&
-            pc < (unsigned long) __bzero_end) ||
-           (pc >= (unsigned long) __bitops_begin &&
-            pc < (unsigned long) __bitops_end))
+            pc < (unsigned long) __bzero_end))
                pc = regs->u_regs[UREG_RETPC];
        return pc;
 }
 
+EXPORT_SYMBOL(profile_pc);
+
 __volatile__ unsigned int *master_l10_counter;
 __volatile__ unsigned int *master_l10_limit;
 
@@ -104,13 +104,13 @@ __volatile__ unsigned int *master_l10_limit;
 
 #define TICK_SIZE (tick_nsec / 1000)
 
-irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs * regs)
+irqreturn_t timer_interrupt(int irq, void *dev_id)
 {
        /* last time the cmos clock got updated */
        static long last_rtc_update;
 
 #ifndef CONFIG_SMP
-       profile_tick(CPU_PROFILING, regs);
+       profile_tick(CPU_PROFILING);
 #endif
 
        /* Protect counter clear so that do_gettimeoffset works */
@@ -128,7 +128,7 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs * regs)
 
        do_timer(1);
 #ifndef CONFIG_SMP
-       update_process_times(user_mode(regs));
+       update_process_times(user_mode(get_irq_regs()));
 #endif
 
 
@@ -436,15 +436,6 @@ static inline unsigned long do_gettimeoffset(void)
        return (*master_l10_counter >> 10) & 0x1fffff;
 }
 
-/*
- * Returns nanoseconds
- * XXX This is a suboptimal implementation.
- */
-unsigned long long sched_clock(void)
-{
-       return (unsigned long long)jiffies * (1000000000 / HZ);
-}
-
 /* Ok, my cute asm atomicity trick doesn't work anymore.
  * There are just too many variables that need to be protected
  * now (both members of xtime, et al.)