1 // SPDX-License-Identifier: GPL-2.0-or-later !! 1 // SPDX-License-Identifier: GPL-2.0 2 /* 2 /* 3 * OpenRISC asm-offsets.c << 4 * << 5 * Linux architectural port borrowing liberall << 6 * others. All original copyrights apply as p << 7 * declaration. << 8 * << 9 * Modifications for the OpenRISC architecture << 10 * Copyright (C) 2003 Matjaz Breskvar <phoenix << 11 * Copyright (C) 2010-2011 Jonas Bonn <jonas@s << 12 * << 13 * This program is used to generate definition 3 * This program is used to generate definitions needed by 14 * assembly language modules. 4 * assembly language modules. 15 * 5 * 16 * We use the technique used in the OSF Mach k 6 * We use the technique used in the OSF Mach kernel code: 17 * generate asm statements containing #defines 7 * generate asm statements containing #defines, 18 * compile this file to assembler, and then ex 8 * compile this file to assembler, and then extract the 19 * #defines from the assembly-language output. 9 * #defines from the assembly-language output. >> 10 * >> 11 * On sparc, thread_info data is static and TI_XXX offsets are computed by hand. 20 */ 12 */ 21 13 22 #include <linux/signal.h> << 23 #include <linux/sched.h> 14 #include <linux/sched.h> 24 #include <linux/kernel.h> !! 15 #include <linux/mm_types.h> 25 #include <linux/errno.h> !! 16 // #include <linux/mm.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> 17 #include <linux/kbuild.h> 34 #include <asm/page.h> << 35 #include <asm/processor.h> << 36 18 37 int main(void) !! 19 #include <asm/hibernate.h> >> 20 >> 21 #ifdef CONFIG_SPARC32 >> 22 static int __used sparc32_foo(void) 38 { 23 { 39 /* offsets into the task_struct */ !! 24 DEFINE(AOFF_thread_fork_kpsr, 40 DEFINE(TASK_FLAGS, offsetof(struct tas !! 25 offsetof(struct thread_struct, fork_kpsr)); 41 DEFINE(TASK_PTRACE, offsetof(struct ta !! 26 return 0; 42 DEFINE(TASK_THREAD, offsetof(struct ta !! 27 } 43 DEFINE(TASK_MM, offsetof(struct task_s !! 28 #else 44 DEFINE(TASK_ACTIVE_MM, offsetof(struct !! 29 static int __used sparc64_foo(void) 45 !! 30 { 46 /* offsets into thread_info */ !! 31 #ifdef CONFIG_HIBERNATION 47 DEFINE(TI_TASK, offsetof(struct thread !! 32 BLANK(); 48 DEFINE(TI_FLAGS, offsetof(struct threa !! 33 OFFSET(SC_REG_FP, saved_context, fp); 49 DEFINE(TI_PREEMPT, offsetof(struct thr !! 34 OFFSET(SC_REG_CWP, saved_context, cwp); 50 DEFINE(TI_KSP, offsetof(struct thread_ !! 35 OFFSET(SC_REG_WSTATE, saved_context, wstate); 51 !! 36 52 DEFINE(PT_SIZE, sizeof(struct pt_regs) !! 37 OFFSET(SC_REG_TICK, saved_context, tick); 53 !! 38 OFFSET(SC_REG_PSTATE, saved_context, pstate); 54 /* Interrupt register frame */ !! 39 55 DEFINE(STACK_FRAME_OVERHEAD, STACK_FRA !! 40 OFFSET(SC_REG_G4, saved_context, g4); 56 DEFINE(INT_FRAME_SIZE, STACK_FRAME_OVE !! 41 OFFSET(SC_REG_G5, saved_context, g5); >> 42 OFFSET(SC_REG_G6, saved_context, g6); >> 43 #endif >> 44 return 0; >> 45 } >> 46 #endif 57 47 58 DEFINE(NUM_USER_SEGMENTS, TASK_SIZE >> !! 48 static int __used foo(void) >> 49 { >> 50 BLANK(); >> 51 DEFINE(AOFF_task_thread, offsetof(struct task_struct, thread)); >> 52 BLANK(); >> 53 DEFINE(AOFF_mm_context, offsetof(struct mm_struct, context)); >> 54 BLANK(); >> 55 DEFINE(VMA_VM_MM, offsetof(struct vm_area_struct, vm_mm)); >> 56 >> 57 /* DEFINE(NUM_USER_SEGMENTS, TASK_SIZE>>28); */ 59 return 0; 58 return 0; 60 } 59 } >> 60 61 61
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.