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