2011-06-04 22:45:16 +03:00
/*
* OpenRISC asm - offsets . c
*
* Linux architectural port borrowing liberally from similar works of
* others . All original copyrights apply as per the original source
* declaration .
*
* Modifications for the OpenRISC architecture :
* Copyright ( C ) 2003 Matjaz Breskvar < phoenix @ bsemi . com >
* Copyright ( C ) 2010 - 2011 Jonas Bonn < jonas @ southpole . se >
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version
* 2 of the License , or ( at your option ) any later version .
*
* This program is used to generate definitions needed by
* assembly language modules .
*
* We use the technique used in the OSF Mach kernel code :
* generate asm statements containing # defines ,
* compile this file to assembler , and then extract the
* # defines from the assembly - language output .
*/
# include <linux/signal.h>
# include <linux/sched.h>
# include <linux/kernel.h>
# include <linux/errno.h>
# include <linux/string.h>
# include <linux/types.h>
# include <linux/ptrace.h>
# include <linux/mman.h>
# include <linux/mm.h>
# include <linux/io.h>
# include <linux/thread_info.h>
2012-10-11 10:03:01 +01:00
# include <linux/kbuild.h>
2011-06-04 22:45:16 +03:00
# include <asm/page.h>
# include <asm/pgtable.h>
# include <asm/processor.h>
int main ( void )
{
/* offsets into the task_struct */
DEFINE ( TASK_STATE , offsetof ( struct task_struct , state ) ) ;
DEFINE ( TASK_FLAGS , offsetof ( struct task_struct , flags ) ) ;
DEFINE ( TASK_PTRACE , offsetof ( struct task_struct , ptrace ) ) ;
DEFINE ( TASK_THREAD , offsetof ( struct task_struct , thread ) ) ;
DEFINE ( TASK_MM , offsetof ( struct task_struct , mm ) ) ;
DEFINE ( TASK_ACTIVE_MM , offsetof ( struct task_struct , active_mm ) ) ;
/* offsets into thread_info */
DEFINE ( TI_TASK , offsetof ( struct thread_info , task ) ) ;
DEFINE ( TI_FLAGS , offsetof ( struct thread_info , flags ) ) ;
DEFINE ( TI_PREEMPT , offsetof ( struct thread_info , preempt_count ) ) ;
DEFINE ( TI_KSP , offsetof ( struct thread_info , ksp ) ) ;
DEFINE ( PT_SIZE , sizeof ( struct pt_regs ) ) ;
/* Interrupt register frame */
DEFINE ( STACK_FRAME_OVERHEAD , STACK_FRAME_OVERHEAD ) ;
DEFINE ( INT_FRAME_SIZE , STACK_FRAME_OVERHEAD + sizeof ( struct pt_regs ) ) ;
DEFINE ( NUM_USER_SEGMENTS , TASK_SIZE > > 28 ) ;
return 0 ;
}