diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /arch/x86_64/kernel/asm-offsets.c |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'arch/x86_64/kernel/asm-offsets.c')
-rw-r--r-- | arch/x86_64/kernel/asm-offsets.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/arch/x86_64/kernel/asm-offsets.c b/arch/x86_64/kernel/asm-offsets.c new file mode 100644 index 000000000000..35b4c3fcbb37 --- /dev/null +++ b/arch/x86_64/kernel/asm-offsets.c | |||
@@ -0,0 +1,69 @@ | |||
1 | /* | ||
2 | * Generate definitions needed by assembly language modules. | ||
3 | * This code generates raw asm output which is post-processed to extract | ||
4 | * and format the required data. | ||
5 | */ | ||
6 | |||
7 | #include <linux/sched.h> | ||
8 | #include <linux/stddef.h> | ||
9 | #include <linux/errno.h> | ||
10 | #include <linux/hardirq.h> | ||
11 | #include <linux/suspend.h> | ||
12 | #include <asm/pda.h> | ||
13 | #include <asm/processor.h> | ||
14 | #include <asm/segment.h> | ||
15 | #include <asm/thread_info.h> | ||
16 | #include <asm/ia32.h> | ||
17 | |||
18 | #define DEFINE(sym, val) \ | ||
19 | asm volatile("\n->" #sym " %0 " #val : : "i" (val)) | ||
20 | |||
21 | #define BLANK() asm volatile("\n->" : : ) | ||
22 | |||
23 | int main(void) | ||
24 | { | ||
25 | #define ENTRY(entry) DEFINE(tsk_ ## entry, offsetof(struct task_struct, entry)) | ||
26 | ENTRY(state); | ||
27 | ENTRY(flags); | ||
28 | ENTRY(thread); | ||
29 | ENTRY(pid); | ||
30 | BLANK(); | ||
31 | #undef ENTRY | ||
32 | #define ENTRY(entry) DEFINE(threadinfo_ ## entry, offsetof(struct thread_info, entry)) | ||
33 | ENTRY(flags); | ||
34 | ENTRY(addr_limit); | ||
35 | ENTRY(preempt_count); | ||
36 | BLANK(); | ||
37 | #undef ENTRY | ||
38 | #define ENTRY(entry) DEFINE(pda_ ## entry, offsetof(struct x8664_pda, entry)) | ||
39 | ENTRY(kernelstack); | ||
40 | ENTRY(oldrsp); | ||
41 | ENTRY(pcurrent); | ||
42 | ENTRY(irqrsp); | ||
43 | ENTRY(irqcount); | ||
44 | ENTRY(cpunumber); | ||
45 | ENTRY(irqstackptr); | ||
46 | BLANK(); | ||
47 | #undef ENTRY | ||
48 | #ifdef CONFIG_IA32_EMULATION | ||
49 | #define ENTRY(entry) DEFINE(IA32_SIGCONTEXT_ ## entry, offsetof(struct sigcontext_ia32, entry)) | ||
50 | ENTRY(eax); | ||
51 | ENTRY(ebx); | ||
52 | ENTRY(ecx); | ||
53 | ENTRY(edx); | ||
54 | ENTRY(esi); | ||
55 | ENTRY(edi); | ||
56 | ENTRY(ebp); | ||
57 | ENTRY(esp); | ||
58 | ENTRY(eip); | ||
59 | BLANK(); | ||
60 | #undef ENTRY | ||
61 | DEFINE(IA32_RT_SIGFRAME_sigcontext, | ||
62 | offsetof (struct rt_sigframe32, uc.uc_mcontext)); | ||
63 | BLANK(); | ||
64 | #endif | ||
65 | DEFINE(pbe_address, offsetof(struct pbe, address)); | ||
66 | DEFINE(pbe_orig_address, offsetof(struct pbe, orig_address)); | ||
67 | DEFINE(pbe_next, offsetof(struct pbe, next)); | ||
68 | return 0; | ||
69 | } | ||