#include <linux/init.h>
 #include <linux/module.h>
 #include <linux/mod_devicetable.h>
+#include <linux/slab.h>
+
 #include <asm/errno.h>
 #include <asm/of_device.h>
 
 
        clear_single_step(child);
 }
 
-int sys_ptrace(long request, long pid, long addr, long data)
+long sys_ptrace(long request, long pid, long addr, long data)
 {
        struct task_struct *child;
        int ret = -EPERM;
 
  * in exit.c or in signal.c.
  */
 
-int compat_sys_ptrace(int request, int pid, unsigned long addr,
-                     unsigned long data)
+long compat_sys_ptrace(int request, int pid, unsigned long addr,
+                      unsigned long data)
 {
        struct task_struct *child;
        int ret = -EPERM;
 
 #include <asm/iSeries/HvCallXm.h>
 #endif
 
-u64 jiffies_64 __cacheline_aligned_in_smp = INITIAL_JIFFIES;
-
-EXPORT_SYMBOL(jiffies_64);
-
 /* keep track of when we need to update the rtc */
 time_t last_rtc_update;
 extern int piranha_simulator;
 
 #include <linux/spinlock.h>
 #include <linux/module.h>
 #include <linux/stringify.h>
+#include <linux/smp.h>
 
 /* waiting for a spinlock... */
 #if defined(CONFIG_PPC_SPLPAR) || defined(CONFIG_PPC_ISERIES)
 
        for (p = &imlist ; (tmp = *p) ; p = &tmp->next) {
                if (tmp->addr == addr) {
                        *p = tmp->next;
-
-                       /* XXX: do we need the lock? */
-                       spin_lock(&init_mm.page_table_lock);
                        unmap_vm_area(tmp);
-                       spin_unlock(&init_mm.page_table_lock);
-
                        kfree(tmp);
                        up(&imlist_sem);
                        return;