linux/arch/openrisc/kernel/asm-offsets.c
<<
>>
Prefs
   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
  37int 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