[IA64] pvops: paravirtualize entry.S
[safe/jmp/linux-2.6] / arch / ia64 / kernel / asm-offsets.c
index 0aebc6f..c64a55a 100644 (file)
@@ -7,8 +7,9 @@
 #define ASM_OFFSETS_C 1
 
 #include <linux/sched.h>
+#include <linux/pid.h>
 #include <linux/clocksource.h>
-
+#include <linux/kbuild.h>
 #include <asm-ia64/processor.h>
 #include <asm-ia64/ptrace.h>
 #include <asm-ia64/siginfo.h>
 #include "../kernel/sigframe.h"
 #include "../kernel/fsyscall_gtod_data.h"
 
-#define DEFINE(sym, val) \
-        asm volatile("\n->" #sym " %0 " #val : : "i" (val))
-
-#define BLANK() asm volatile("\n->" : : )
-
 void foo(void)
 {
        DEFINE(IA64_TASK_SIZE, sizeof (struct task_struct));
@@ -34,17 +30,29 @@ void foo(void)
        DEFINE(SIGFRAME_SIZE, sizeof (struct sigframe));
        DEFINE(UNW_FRAME_INFO_SIZE, sizeof (struct unw_frame_info));
 
+       BUILD_BUG_ON(sizeof(struct upid) != 32);
+       DEFINE(IA64_UPID_SHIFT, 5);
+
        BLANK();
 
        DEFINE(TI_FLAGS, offsetof(struct thread_info, flags));
        DEFINE(TI_CPU, offsetof(struct thread_info, cpu));
        DEFINE(TI_PRE_COUNT, offsetof(struct thread_info, preempt_count));
+#ifdef CONFIG_VIRT_CPU_ACCOUNTING
+       DEFINE(TI_AC_STAMP, offsetof(struct thread_info, ac_stamp));
+       DEFINE(TI_AC_LEAVE, offsetof(struct thread_info, ac_leave));
+       DEFINE(TI_AC_STIME, offsetof(struct thread_info, ac_stime));
+       DEFINE(TI_AC_UTIME, offsetof(struct thread_info, ac_utime));
+#endif
 
        BLANK();
 
        DEFINE(IA64_TASK_BLOCKED_OFFSET,offsetof (struct task_struct, blocked));
        DEFINE(IA64_TASK_CLEAR_CHILD_TID_OFFSET,offsetof (struct task_struct, clear_child_tid));
        DEFINE(IA64_TASK_GROUP_LEADER_OFFSET, offsetof (struct task_struct, group_leader));
+       DEFINE(IA64_TASK_TGIDLINK_OFFSET, offsetof (struct task_struct, pids[PIDTYPE_PID].pid));
+       DEFINE(IA64_PID_LEVEL_OFFSET, offsetof (struct pid, level));
+       DEFINE(IA64_PID_UPID_OFFSET, offsetof (struct pid, numbers[0]));
        DEFINE(IA64_TASK_PENDING_OFFSET,offsetof (struct task_struct, pending));
        DEFINE(IA64_TASK_PID_OFFSET, offsetof (struct task_struct, pid));
        DEFINE(IA64_TASK_REAL_PARENT_OFFSET, offsetof (struct task_struct, real_parent));