Based on a patched by Anvin, H Peter <h.peter.anvin@intel.com> and Shaohua
Li <shaohua.li@intel.com>.
Signed-off-by: Andy Whitcroft <apw@canonical.com>
#ifdef CONFIG_X86_32
OUTPUT_ARCH(i386)
ENTRY(phys_startup_32)
-jiffies = jiffies_64;
#else
OUTPUT_ARCH(i386:x86-64)
ENTRY(phys_startup_64)
-jiffies_64 = jiffies;
#endif
#if defined(CONFIG_X86_64) && defined(CONFIG_DEBUG_RODATA)
*(.jiffies)
}
jiffies = VVIRT(.jiffies);
+ jiffies_64 = jiffies;
.vsyscall_3 ADDR(.vsyscall_0) + 3072: AT(VLOAD(.vsyscall_3)) {
*(.vsyscall_3)
#include <linux/sched.h>
#include <linux/slab.h>
+#include <asm/byteorder.h>
#include <asm/uaccess.h>
#include <asm/unistd.h>
#include <asm/div64.h>
EXPORT_SYMBOL(jiffies_64);
+#ifdef CONFIG_X86
+#if defined(__LITTLE_ENDIAN) || (BITS_PER_LONG >= 64)
+asm(".global jiffies; jiffies = jiffies_64");
+#else
+asm(".global jiffies; jiffies = jiffies_64 + 4");
+#endif
+#endif
+
/*
* per-CPU timer vector definitions:
*/