2005-04-16 15:20:36 -07:00
/*
* Generate definitions needed by assembly language modules .
* This code generates raw asm output which is post - processed to extract
* and format the required data .
*/
2010-02-26 22:37:43 +01:00
# define ASM_OFFSETS_C
2008-04-29 01:04:09 -07:00
# include <linux/kbuild.h>
2013-05-17 14:41:34 +02:00
# include <linux/kvm_host.h>
2010-02-26 22:37:43 +01:00
# include <linux/sched.h>
2012-03-11 11:59:27 -04:00
# include <asm/cputime.h>
2008-12-25 13:38:36 +01:00
# include <asm/vdso.h>
2011-09-20 17:07:28 +02:00
# include <asm/pgtable.h>
2005-04-16 15:20:36 -07:00
2010-02-26 22:37:31 +01:00
/*
* Make sure that the compiler is new enough . We want a compiler that
* is known to work with the " Q " assembler constraint .
*/
# if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
# error Your compiler is too old; please use version 3.3.3 or newer
# endif
2005-04-16 15:20:36 -07:00
int main ( void )
{
2008-04-29 01:04:10 -07:00
DEFINE ( __THREAD_info , offsetof ( struct task_struct , stack ) ) ;
DEFINE ( __THREAD_ksp , offsetof ( struct task_struct , thread . ksp ) ) ;
2010-02-26 22:37:43 +01:00
DEFINE ( __THREAD_mm_segment , offsetof ( struct task_struct , thread . mm_segment ) ) ;
2005-04-16 15:20:36 -07:00
BLANK ( ) ;
2008-04-29 01:04:10 -07:00
DEFINE ( __TASK_pid , offsetof ( struct task_struct , pid ) ) ;
2005-04-16 15:20:36 -07:00
BLANK ( ) ;
2011-08-03 16:44:25 +02:00
DEFINE ( __THREAD_per_cause , offsetof ( struct task_struct , thread . per_event . cause ) ) ;
DEFINE ( __THREAD_per_address , offsetof ( struct task_struct , thread . per_event . address ) ) ;
DEFINE ( __THREAD_per_paid , offsetof ( struct task_struct , thread . per_event . paid ) ) ;
2005-04-16 15:20:36 -07:00
BLANK ( ) ;
2008-04-29 01:04:10 -07:00
DEFINE ( __TI_task , offsetof ( struct thread_info , task ) ) ;
DEFINE ( __TI_domain , offsetof ( struct thread_info , exec_domain ) ) ;
DEFINE ( __TI_flags , offsetof ( struct thread_info , flags ) ) ;
2013-04-24 12:58:39 +02:00
DEFINE ( __TI_sysc_table , offsetof ( struct thread_info , sys_call_table ) ) ;
2008-04-29 01:04:10 -07:00
DEFINE ( __TI_cpu , offsetof ( struct thread_info , cpu ) ) ;
DEFINE ( __TI_precount , offsetof ( struct thread_info , preempt_count ) ) ;
2009-04-14 15:36:27 +02:00
DEFINE ( __TI_user_timer , offsetof ( struct thread_info , user_timer ) ) ;
DEFINE ( __TI_system_timer , offsetof ( struct thread_info , system_timer ) ) ;
2010-05-17 10:00:05 +02:00
DEFINE ( __TI_last_break , offsetof ( struct thread_info , last_break ) ) ;
2005-04-16 15:20:36 -07:00
BLANK ( ) ;
2008-04-29 01:04:10 -07:00
DEFINE ( __PT_ARGS , offsetof ( struct pt_regs , args ) ) ;
DEFINE ( __PT_PSW , offsetof ( struct pt_regs , psw ) ) ;
DEFINE ( __PT_GPRS , offsetof ( struct pt_regs , gprs ) ) ;
DEFINE ( __PT_ORIG_GPR2 , offsetof ( struct pt_regs , orig_gpr2 ) ) ;
2011-12-27 11:27:18 +01:00
DEFINE ( __PT_INT_CODE , offsetof ( struct pt_regs , int_code ) ) ;
DEFINE ( __PT_INT_PARM_LONG , offsetof ( struct pt_regs , int_parm_long ) ) ;
2008-04-29 01:04:10 -07:00
DEFINE ( __PT_SIZE , sizeof ( struct pt_regs ) ) ;
2005-04-16 15:20:36 -07:00
BLANK ( ) ;
2008-04-29 01:04:10 -07:00
DEFINE ( __SF_BACKCHAIN , offsetof ( struct stack_frame , back_chain ) ) ;
DEFINE ( __SF_GPRS , offsetof ( struct stack_frame , gprs ) ) ;
DEFINE ( __SF_EMPTY , offsetof ( struct stack_frame , empty1 ) ) ;
2008-12-25 13:38:36 +01:00
BLANK ( ) ;
/* timeval/timezone offsets for use by vdso */
DEFINE ( __VDSO_UPD_COUNT , offsetof ( struct vdso_data , tb_update_count ) ) ;
DEFINE ( __VDSO_XTIME_STAMP , offsetof ( struct vdso_data , xtime_tod_stamp ) ) ;
DEFINE ( __VDSO_XTIME_SEC , offsetof ( struct vdso_data , xtime_clock_sec ) ) ;
DEFINE ( __VDSO_XTIME_NSEC , offsetof ( struct vdso_data , xtime_clock_nsec ) ) ;
DEFINE ( __VDSO_WTOM_SEC , offsetof ( struct vdso_data , wtom_clock_sec ) ) ;
DEFINE ( __VDSO_WTOM_NSEC , offsetof ( struct vdso_data , wtom_clock_nsec ) ) ;
DEFINE ( __VDSO_TIMEZONE , offsetof ( struct vdso_data , tz_minuteswest ) ) ;
2008-12-31 15:11:42 +01:00
DEFINE ( __VDSO_ECTG_OK , offsetof ( struct vdso_data , ectg_available ) ) ;
2010-04-22 17:17:06 +02:00
DEFINE ( __VDSO_NTP_MULT , offsetof ( struct vdso_data , ntp_mult ) ) ;
2010-02-26 22:37:43 +01:00
DEFINE ( __VDSO_ECTG_BASE , offsetof ( struct vdso_per_cpu_data , ectg_timer_base ) ) ;
DEFINE ( __VDSO_ECTG_USER , offsetof ( struct vdso_per_cpu_data , ectg_user_time ) ) ;
2008-12-25 13:38:36 +01:00
/* constants used by the vdso */
2010-10-29 16:50:41 +02:00
DEFINE ( __CLOCK_REALTIME , CLOCK_REALTIME ) ;
DEFINE ( __CLOCK_MONOTONIC , CLOCK_MONOTONIC ) ;
DEFINE ( __CLOCK_REALTIME_RES , MONOTONIC_RES_NSEC ) ;
2010-02-26 22:37:43 +01:00
BLANK ( ) ;
2012-03-11 11:59:27 -04:00
/* idle data offsets */
2012-07-20 11:15:08 +02:00
DEFINE ( __CLOCK_IDLE_ENTER , offsetof ( struct s390_idle_data , clock_idle_enter ) ) ;
DEFINE ( __CLOCK_IDLE_EXIT , offsetof ( struct s390_idle_data , clock_idle_exit ) ) ;
DEFINE ( __TIMER_IDLE_ENTER , offsetof ( struct s390_idle_data , timer_idle_enter ) ) ;
DEFINE ( __TIMER_IDLE_EXIT , offsetof ( struct s390_idle_data , timer_idle_exit ) ) ;
2010-02-26 22:37:43 +01:00
/* lowcore offsets */
DEFINE ( __LC_EXT_PARAMS , offsetof ( struct _lowcore , ext_params ) ) ;
2012-03-11 11:59:25 -04:00
DEFINE ( __LC_EXT_CPU_ADDR , offsetof ( struct _lowcore , ext_cpu_addr ) ) ;
2010-02-26 22:37:43 +01:00
DEFINE ( __LC_EXT_INT_CODE , offsetof ( struct _lowcore , ext_int_code ) ) ;
DEFINE ( __LC_SVC_ILC , offsetof ( struct _lowcore , svc_ilc ) ) ;
DEFINE ( __LC_SVC_INT_CODE , offsetof ( struct _lowcore , svc_code ) ) ;
DEFINE ( __LC_PGM_ILC , offsetof ( struct _lowcore , pgm_ilc ) ) ;
DEFINE ( __LC_PGM_INT_CODE , offsetof ( struct _lowcore , pgm_code ) ) ;
2010-10-25 16:10:37 +02:00
DEFINE ( __LC_TRANS_EXC_CODE , offsetof ( struct _lowcore , trans_exc_code ) ) ;
2011-01-05 12:48:10 +01:00
DEFINE ( __LC_PER_CAUSE , offsetof ( struct _lowcore , per_perc_atmid ) ) ;
2010-02-26 22:37:43 +01:00
DEFINE ( __LC_PER_ADDRESS , offsetof ( struct _lowcore , per_address ) ) ;
2011-01-05 12:48:10 +01:00
DEFINE ( __LC_PER_PAID , offsetof ( struct _lowcore , per_access_id ) ) ;
2010-02-26 22:37:43 +01:00
DEFINE ( __LC_AR_MODE_ID , offsetof ( struct _lowcore , ar_access_id ) ) ;
DEFINE ( __LC_SUBCHANNEL_ID , offsetof ( struct _lowcore , subchannel_id ) ) ;
DEFINE ( __LC_SUBCHANNEL_NR , offsetof ( struct _lowcore , subchannel_nr ) ) ;
DEFINE ( __LC_IO_INT_PARM , offsetof ( struct _lowcore , io_int_parm ) ) ;
DEFINE ( __LC_IO_INT_WORD , offsetof ( struct _lowcore , io_int_word ) ) ;
DEFINE ( __LC_STFL_FAC_LIST , offsetof ( struct _lowcore , stfl_fac_list ) ) ;
DEFINE ( __LC_MCCK_CODE , offsetof ( struct _lowcore , mcck_interruption_code ) ) ;
DEFINE ( __LC_RST_OLD_PSW , offsetof ( struct _lowcore , restart_old_psw ) ) ;
DEFINE ( __LC_EXT_OLD_PSW , offsetof ( struct _lowcore , external_old_psw ) ) ;
DEFINE ( __LC_SVC_OLD_PSW , offsetof ( struct _lowcore , svc_old_psw ) ) ;
DEFINE ( __LC_PGM_OLD_PSW , offsetof ( struct _lowcore , program_old_psw ) ) ;
DEFINE ( __LC_MCK_OLD_PSW , offsetof ( struct _lowcore , mcck_old_psw ) ) ;
DEFINE ( __LC_IO_OLD_PSW , offsetof ( struct _lowcore , io_old_psw ) ) ;
2012-03-11 11:59:26 -04:00
DEFINE ( __LC_RST_NEW_PSW , offsetof ( struct _lowcore , restart_psw ) ) ;
2010-02-26 22:37:43 +01:00
DEFINE ( __LC_EXT_NEW_PSW , offsetof ( struct _lowcore , external_new_psw ) ) ;
DEFINE ( __LC_SVC_NEW_PSW , offsetof ( struct _lowcore , svc_new_psw ) ) ;
DEFINE ( __LC_PGM_NEW_PSW , offsetof ( struct _lowcore , program_new_psw ) ) ;
DEFINE ( __LC_MCK_NEW_PSW , offsetof ( struct _lowcore , mcck_new_psw ) ) ;
DEFINE ( __LC_IO_NEW_PSW , offsetof ( struct _lowcore , io_new_psw ) ) ;
2012-03-11 11:59:26 -04:00
BLANK ( ) ;
2011-12-27 11:27:15 +01:00
DEFINE ( __LC_SAVE_AREA_SYNC , offsetof ( struct _lowcore , save_area_sync ) ) ;
DEFINE ( __LC_SAVE_AREA_ASYNC , offsetof ( struct _lowcore , save_area_async ) ) ;
DEFINE ( __LC_SAVE_AREA_RESTART , offsetof ( struct _lowcore , save_area_restart ) ) ;
2010-02-26 22:37:43 +01:00
DEFINE ( __LC_RETURN_PSW , offsetof ( struct _lowcore , return_psw ) ) ;
DEFINE ( __LC_RETURN_MCCK_PSW , offsetof ( struct _lowcore , return_mcck_psw ) ) ;
DEFINE ( __LC_SYNC_ENTER_TIMER , offsetof ( struct _lowcore , sync_enter_timer ) ) ;
DEFINE ( __LC_ASYNC_ENTER_TIMER , offsetof ( struct _lowcore , async_enter_timer ) ) ;
2010-05-17 10:00:03 +02:00
DEFINE ( __LC_MCCK_ENTER_TIMER , offsetof ( struct _lowcore , mcck_enter_timer ) ) ;
2010-02-26 22:37:43 +01:00
DEFINE ( __LC_EXIT_TIMER , offsetof ( struct _lowcore , exit_timer ) ) ;
DEFINE ( __LC_USER_TIMER , offsetof ( struct _lowcore , user_timer ) ) ;
DEFINE ( __LC_SYSTEM_TIMER , offsetof ( struct _lowcore , system_timer ) ) ;
DEFINE ( __LC_STEAL_TIMER , offsetof ( struct _lowcore , steal_timer ) ) ;
DEFINE ( __LC_LAST_UPDATE_TIMER , offsetof ( struct _lowcore , last_update_timer ) ) ;
DEFINE ( __LC_LAST_UPDATE_CLOCK , offsetof ( struct _lowcore , last_update_clock ) ) ;
DEFINE ( __LC_CURRENT , offsetof ( struct _lowcore , current_task ) ) ;
2011-05-23 10:24:34 +02:00
DEFINE ( __LC_CURRENT_PID , offsetof ( struct _lowcore , current_pid ) ) ;
2010-02-26 22:37:43 +01:00
DEFINE ( __LC_THREAD_INFO , offsetof ( struct _lowcore , thread_info ) ) ;
DEFINE ( __LC_KERNEL_STACK , offsetof ( struct _lowcore , kernel_stack ) ) ;
DEFINE ( __LC_ASYNC_STACK , offsetof ( struct _lowcore , async_stack ) ) ;
DEFINE ( __LC_PANIC_STACK , offsetof ( struct _lowcore , panic_stack ) ) ;
2012-03-11 11:59:26 -04:00
DEFINE ( __LC_RESTART_STACK , offsetof ( struct _lowcore , restart_stack ) ) ;
DEFINE ( __LC_RESTART_FN , offsetof ( struct _lowcore , restart_fn ) ) ;
2012-06-05 09:59:52 +02:00
DEFINE ( __LC_RESTART_DATA , offsetof ( struct _lowcore , restart_data ) ) ;
DEFINE ( __LC_RESTART_SOURCE , offsetof ( struct _lowcore , restart_source ) ) ;
2011-09-20 17:07:28 +02:00
DEFINE ( __LC_USER_ASCE , offsetof ( struct _lowcore , user_asce ) ) ;
2010-02-26 22:37:43 +01:00
DEFINE ( __LC_INT_CLOCK , offsetof ( struct _lowcore , int_clock ) ) ;
2010-05-17 10:00:03 +02:00
DEFINE ( __LC_MCCK_CLOCK , offsetof ( struct _lowcore , mcck_clock ) ) ;
2010-02-26 22:37:43 +01:00
DEFINE ( __LC_MACHINE_FLAGS , offsetof ( struct _lowcore , machine_flags ) ) ;
DEFINE ( __LC_FTRACE_FUNC , offsetof ( struct _lowcore , ftrace_func ) ) ;
DEFINE ( __LC_IRB , offsetof ( struct _lowcore , irb ) ) ;
2012-03-11 11:59:26 -04:00
DEFINE ( __LC_DUMP_REIPL , offsetof ( struct _lowcore , ipib ) ) ;
BLANK ( ) ;
2010-02-26 22:37:43 +01:00
DEFINE ( __LC_CPU_TIMER_SAVE_AREA , offsetof ( struct _lowcore , cpu_timer_save_area ) ) ;
DEFINE ( __LC_CLOCK_COMP_SAVE_AREA , offsetof ( struct _lowcore , clock_comp_save_area ) ) ;
DEFINE ( __LC_PSW_SAVE_AREA , offsetof ( struct _lowcore , psw_save_area ) ) ;
DEFINE ( __LC_PREFIX_SAVE_AREA , offsetof ( struct _lowcore , prefixreg_save_area ) ) ;
DEFINE ( __LC_AREGS_SAVE_AREA , offsetof ( struct _lowcore , access_regs_save_area ) ) ;
DEFINE ( __LC_FPREGS_SAVE_AREA , offsetof ( struct _lowcore , floating_pt_save_area ) ) ;
DEFINE ( __LC_GPREGS_SAVE_AREA , offsetof ( struct _lowcore , gpregs_save_area ) ) ;
DEFINE ( __LC_CREGS_SAVE_AREA , offsetof ( struct _lowcore , cregs_save_area ) ) ;
# ifdef CONFIG_32BIT
DEFINE ( SAVE_AREA_BASE , offsetof ( struct _lowcore , extended_save_area_addr ) ) ;
# else /* CONFIG_32BIT */
DEFINE ( __LC_EXT_PARAMS2 , offsetof ( struct _lowcore , ext_params2 ) ) ;
DEFINE ( SAVE_AREA_BASE , offsetof ( struct _lowcore , floating_pt_save_area ) ) ;
DEFINE ( __LC_PASTE , offsetof ( struct _lowcore , paste ) ) ;
DEFINE ( __LC_FP_CREG_SAVE_AREA , offsetof ( struct _lowcore , fpt_creg_save_area ) ) ;
DEFINE ( __LC_LAST_BREAK , offsetof ( struct _lowcore , breaking_event_addr ) ) ;
DEFINE ( __LC_VDSO_PER_CPU , offsetof ( struct _lowcore , vdso_per_cpu_data ) ) ;
2011-07-24 10:48:20 +02:00
DEFINE ( __LC_GMAP , offsetof ( struct _lowcore , gmap ) ) ;
2012-07-31 11:03:04 +02:00
DEFINE ( __LC_PGM_TDB , offsetof ( struct _lowcore , pgm_tdb ) ) ;
DEFINE ( __THREAD_trap_tdb , offsetof ( struct task_struct , thread . trap_tdb ) ) ;
2011-09-20 17:07:28 +02:00
DEFINE ( __GMAP_ASCE , offsetof ( struct gmap , asce ) ) ;
2013-05-17 14:41:34 +02:00
DEFINE ( __SIE_PROG0C , offsetof ( struct kvm_s390_sie_block , prog0c ) ) ;
2010-02-26 22:37:43 +01:00
# endif /* CONFIG_32BIT */
2005-04-16 15:20:36 -07:00
return 0 ;
}