1 | // SPDX-License-Identifier: GPL-2.0-or-later |
2 | /* |
3 | * OpenRISC asm-offsets.c |
4 | * |
5 | * Linux architectural port borrowing liberally from similar works of |
6 | * others. All original copyrights apply as per the original source |
7 | * declaration. |
8 | * |
9 | * Modifications for the OpenRISC architecture: |
10 | * Copyright (C) 2003 Matjaz Breskvar <phoenix@bsemi.com> |
11 | * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se> |
12 | * |
13 | * This program is used to generate definitions needed by |
14 | * assembly language modules. |
15 | * |
16 | * We use the technique used in the OSF Mach kernel code: |
17 | * generate asm statements containing #defines, |
18 | * compile this file to assembler, and then extract the |
19 | * #defines from the assembly-language output. |
20 | */ |
21 | |
22 | #include <linux/signal.h> |
23 | #include <linux/sched.h> |
24 | #include <linux/kernel.h> |
25 | #include <linux/errno.h> |
26 | #include <linux/string.h> |
27 | #include <linux/types.h> |
28 | #include <linux/ptrace.h> |
29 | #include <linux/mman.h> |
30 | #include <linux/mm.h> |
31 | #include <linux/io.h> |
32 | #include <linux/thread_info.h> |
33 | #include <linux/kbuild.h> |
34 | #include <asm/page.h> |
35 | #include <asm/processor.h> |
36 | |
37 | int main(void) |
38 | { |
39 | /* offsets into the task_struct */ |
40 | DEFINE(TASK_FLAGS, offsetof(struct task_struct, flags)); |
41 | DEFINE(TASK_PTRACE, offsetof(struct task_struct, ptrace)); |
42 | DEFINE(TASK_THREAD, offsetof(struct task_struct, thread)); |
43 | DEFINE(TASK_MM, offsetof(struct task_struct, mm)); |
44 | DEFINE(TASK_ACTIVE_MM, offsetof(struct task_struct, active_mm)); |
45 | |
46 | /* offsets into thread_info */ |
47 | DEFINE(TI_TASK, offsetof(struct thread_info, task)); |
48 | DEFINE(TI_FLAGS, offsetof(struct thread_info, flags)); |
49 | DEFINE(TI_PREEMPT, offsetof(struct thread_info, preempt_count)); |
50 | DEFINE(TI_KSP, offsetof(struct thread_info, ksp)); |
51 | |
52 | DEFINE(PT_SIZE, sizeof(struct pt_regs)); |
53 | |
54 | /* Interrupt register frame */ |
55 | DEFINE(STACK_FRAME_OVERHEAD, STACK_FRAME_OVERHEAD); |
56 | DEFINE(INT_FRAME_SIZE, STACK_FRAME_OVERHEAD + sizeof(struct pt_regs)); |
57 | |
58 | DEFINE(NUM_USER_SEGMENTS, TASK_SIZE >> 28); |
59 | return 0; |
60 | } |
61 | |