diff options
Diffstat (limited to 'arch/openrisc/kernel/asm-offsets.c')
-rw-r--r-- | arch/openrisc/kernel/asm-offsets.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/arch/openrisc/kernel/asm-offsets.c b/arch/openrisc/kernel/asm-offsets.c new file mode 100644 index 00000000000..1a242a0d758 --- /dev/null +++ b/arch/openrisc/kernel/asm-offsets.c | |||
@@ -0,0 +1,70 @@ | |||
1 | /* | ||
2 | * OpenRISC asm-offsets.c | ||
3 | * | ||
4 | * Linux architectural port borrowing liberally from similar works of | ||
5 | * others. All original copyrights apply as per the original source | ||
6 | * declaration. | ||
7 | * | ||
8 | * Modifications for the OpenRISC architecture: | ||
9 | * Copyright (C) 2003 Matjaz Breskvar <phoenix@bsemi.com> | ||
10 | * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se> | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License | ||
14 | * as published by the Free Software Foundation; either version | ||
15 | * 2 of the License, or (at your option) any later version. | ||
16 | * | ||
17 | * This program is used to generate definitions needed by | ||
18 | * assembly language modules. | ||
19 | * | ||
20 | * We use the technique used in the OSF Mach kernel code: | ||
21 | * generate asm statements containing #defines, | ||
22 | * compile this file to assembler, and then extract the | ||
23 | * #defines from the assembly-language output. | ||
24 | */ | ||
25 | |||
26 | #include <linux/signal.h> | ||
27 | #include <linux/sched.h> | ||
28 | #include <linux/kernel.h> | ||
29 | #include <linux/errno.h> | ||
30 | #include <linux/string.h> | ||
31 | #include <linux/types.h> | ||
32 | #include <linux/ptrace.h> | ||
33 | #include <linux/mman.h> | ||
34 | #include <linux/mm.h> | ||
35 | #include <linux/io.h> | ||
36 | #include <linux/thread_info.h> | ||
37 | #include <asm/page.h> | ||
38 | #include <asm/pgtable.h> | ||
39 | #include <asm/processor.h> | ||
40 | |||
41 | #define DEFINE(sym, val) \ | ||
42 | asm volatile("\n->" #sym " %0 " #val : : "i" (val)) | ||
43 | |||
44 | #define BLANK() asm volatile("\n->" : : ) | ||
45 | |||
46 | int main(void) | ||
47 | { | ||
48 | /* offsets into the task_struct */ | ||
49 | DEFINE(TASK_STATE, offsetof(struct task_struct, state)); | ||
50 | DEFINE(TASK_FLAGS, offsetof(struct task_struct, flags)); | ||
51 | DEFINE(TASK_PTRACE, offsetof(struct task_struct, ptrace)); | ||
52 | DEFINE(TASK_THREAD, offsetof(struct task_struct, thread)); | ||
53 | DEFINE(TASK_MM, offsetof(struct task_struct, mm)); | ||
54 | DEFINE(TASK_ACTIVE_MM, offsetof(struct task_struct, active_mm)); | ||
55 | |||
56 | /* offsets into thread_info */ | ||
57 | DEFINE(TI_TASK, offsetof(struct thread_info, task)); | ||
58 | DEFINE(TI_FLAGS, offsetof(struct thread_info, flags)); | ||
59 | DEFINE(TI_PREEMPT, offsetof(struct thread_info, preempt_count)); | ||
60 | DEFINE(TI_KSP, offsetof(struct thread_info, ksp)); | ||
61 | |||
62 | DEFINE(PT_SIZE, sizeof(struct pt_regs)); | ||
63 | |||
64 | /* Interrupt register frame */ | ||
65 | DEFINE(STACK_FRAME_OVERHEAD, STACK_FRAME_OVERHEAD); | ||
66 | DEFINE(INT_FRAME_SIZE, STACK_FRAME_OVERHEAD + sizeof(struct pt_regs)); | ||
67 | |||
68 | DEFINE(NUM_USER_SEGMENTS, TASK_SIZE >> 28); | ||
69 | return 0; | ||
70 | } | ||