2 * Generate definitions needed by assembly language modules.
3 * This code generates raw asm output which is post-processed to extract
4 * and format the required data.
9 #include <linux/kbuild.h>
10 #include <linux/sched.h>
11 #include <asm/cputime.h>
13 #include <asm/pgtable.h>
16 * Make sure that the compiler is new enough. We want a compiler that
17 * is known to work with the "Q" assembler constraint.
19 #if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
20 #error Your compiler is too old; please use version 3.3.3 or newer
25 DEFINE(__THREAD_info
, offsetof(struct task_struct
, stack
));
26 DEFINE(__THREAD_ksp
, offsetof(struct task_struct
, thread
.ksp
));
27 DEFINE(__THREAD_mm_segment
, offsetof(struct task_struct
, thread
.mm_segment
));
29 DEFINE(__TASK_pid
, offsetof(struct task_struct
, pid
));
31 DEFINE(__THREAD_per_cause
, offsetof(struct task_struct
, thread
.per_event
.cause
));
32 DEFINE(__THREAD_per_address
, offsetof(struct task_struct
, thread
.per_event
.address
));
33 DEFINE(__THREAD_per_paid
, offsetof(struct task_struct
, thread
.per_event
.paid
));
35 DEFINE(__TI_task
, offsetof(struct thread_info
, task
));
36 DEFINE(__TI_domain
, offsetof(struct thread_info
, exec_domain
));
37 DEFINE(__TI_flags
, offsetof(struct thread_info
, flags
));
38 DEFINE(__TI_cpu
, offsetof(struct thread_info
, cpu
));
39 DEFINE(__TI_precount
, offsetof(struct thread_info
, preempt_count
));
40 DEFINE(__TI_user_timer
, offsetof(struct thread_info
, user_timer
));
41 DEFINE(__TI_system_timer
, offsetof(struct thread_info
, system_timer
));
42 DEFINE(__TI_last_break
, offsetof(struct thread_info
, last_break
));
44 DEFINE(__PT_ARGS
, offsetof(struct pt_regs
, args
));
45 DEFINE(__PT_PSW
, offsetof(struct pt_regs
, psw
));
46 DEFINE(__PT_GPRS
, offsetof(struct pt_regs
, gprs
));
47 DEFINE(__PT_ORIG_GPR2
, offsetof(struct pt_regs
, orig_gpr2
));
48 DEFINE(__PT_INT_CODE
, offsetof(struct pt_regs
, int_code
));
49 DEFINE(__PT_INT_PARM_LONG
, offsetof(struct pt_regs
, int_parm_long
));
50 DEFINE(__PT_SIZE
, sizeof(struct pt_regs
));
52 DEFINE(__SF_BACKCHAIN
, offsetof(struct stack_frame
, back_chain
));
53 DEFINE(__SF_GPRS
, offsetof(struct stack_frame
, gprs
));
54 DEFINE(__SF_EMPTY
, offsetof(struct stack_frame
, empty1
));
56 /* timeval/timezone offsets for use by vdso */
57 DEFINE(__VDSO_UPD_COUNT
, offsetof(struct vdso_data
, tb_update_count
));
58 DEFINE(__VDSO_XTIME_STAMP
, offsetof(struct vdso_data
, xtime_tod_stamp
));
59 DEFINE(__VDSO_XTIME_SEC
, offsetof(struct vdso_data
, xtime_clock_sec
));
60 DEFINE(__VDSO_XTIME_NSEC
, offsetof(struct vdso_data
, xtime_clock_nsec
));
61 DEFINE(__VDSO_WTOM_SEC
, offsetof(struct vdso_data
, wtom_clock_sec
));
62 DEFINE(__VDSO_WTOM_NSEC
, offsetof(struct vdso_data
, wtom_clock_nsec
));
63 DEFINE(__VDSO_TIMEZONE
, offsetof(struct vdso_data
, tz_minuteswest
));
64 DEFINE(__VDSO_ECTG_OK
, offsetof(struct vdso_data
, ectg_available
));
65 DEFINE(__VDSO_NTP_MULT
, offsetof(struct vdso_data
, ntp_mult
));
66 DEFINE(__VDSO_ECTG_BASE
, offsetof(struct vdso_per_cpu_data
, ectg_timer_base
));
67 DEFINE(__VDSO_ECTG_USER
, offsetof(struct vdso_per_cpu_data
, ectg_user_time
));
68 /* constants used by the vdso */
69 DEFINE(__CLOCK_REALTIME
, CLOCK_REALTIME
);
70 DEFINE(__CLOCK_MONOTONIC
, CLOCK_MONOTONIC
);
71 DEFINE(__CLOCK_REALTIME_RES
, MONOTONIC_RES_NSEC
);
73 /* idle data offsets */
74 DEFINE(__CLOCK_IDLE_ENTER
, offsetof(struct s390_idle_data
, clock_idle_enter
));
75 DEFINE(__CLOCK_IDLE_EXIT
, offsetof(struct s390_idle_data
, clock_idle_exit
));
76 DEFINE(__TIMER_IDLE_ENTER
, offsetof(struct s390_idle_data
, timer_idle_enter
));
77 DEFINE(__TIMER_IDLE_EXIT
, offsetof(struct s390_idle_data
, timer_idle_exit
));
79 DEFINE(__LC_EXT_PARAMS
, offsetof(struct _lowcore
, ext_params
));
80 DEFINE(__LC_EXT_CPU_ADDR
, offsetof(struct _lowcore
, ext_cpu_addr
));
81 DEFINE(__LC_EXT_INT_CODE
, offsetof(struct _lowcore
, ext_int_code
));
82 DEFINE(__LC_SVC_ILC
, offsetof(struct _lowcore
, svc_ilc
));
83 DEFINE(__LC_SVC_INT_CODE
, offsetof(struct _lowcore
, svc_code
));
84 DEFINE(__LC_PGM_ILC
, offsetof(struct _lowcore
, pgm_ilc
));
85 DEFINE(__LC_PGM_INT_CODE
, offsetof(struct _lowcore
, pgm_code
));
86 DEFINE(__LC_TRANS_EXC_CODE
, offsetof(struct _lowcore
, trans_exc_code
));
87 DEFINE(__LC_PER_CAUSE
, offsetof(struct _lowcore
, per_perc_atmid
));
88 DEFINE(__LC_PER_ADDRESS
, offsetof(struct _lowcore
, per_address
));
89 DEFINE(__LC_PER_PAID
, offsetof(struct _lowcore
, per_access_id
));
90 DEFINE(__LC_AR_MODE_ID
, offsetof(struct _lowcore
, ar_access_id
));
91 DEFINE(__LC_SUBCHANNEL_ID
, offsetof(struct _lowcore
, subchannel_id
));
92 DEFINE(__LC_SUBCHANNEL_NR
, offsetof(struct _lowcore
, subchannel_nr
));
93 DEFINE(__LC_IO_INT_PARM
, offsetof(struct _lowcore
, io_int_parm
));
94 DEFINE(__LC_IO_INT_WORD
, offsetof(struct _lowcore
, io_int_word
));
95 DEFINE(__LC_STFL_FAC_LIST
, offsetof(struct _lowcore
, stfl_fac_list
));
96 DEFINE(__LC_MCCK_CODE
, offsetof(struct _lowcore
, mcck_interruption_code
));
97 DEFINE(__LC_RST_OLD_PSW
, offsetof(struct _lowcore
, restart_old_psw
));
98 DEFINE(__LC_EXT_OLD_PSW
, offsetof(struct _lowcore
, external_old_psw
));
99 DEFINE(__LC_SVC_OLD_PSW
, offsetof(struct _lowcore
, svc_old_psw
));
100 DEFINE(__LC_PGM_OLD_PSW
, offsetof(struct _lowcore
, program_old_psw
));
101 DEFINE(__LC_MCK_OLD_PSW
, offsetof(struct _lowcore
, mcck_old_psw
));
102 DEFINE(__LC_IO_OLD_PSW
, offsetof(struct _lowcore
, io_old_psw
));
103 DEFINE(__LC_RST_NEW_PSW
, offsetof(struct _lowcore
, restart_psw
));
104 DEFINE(__LC_EXT_NEW_PSW
, offsetof(struct _lowcore
, external_new_psw
));
105 DEFINE(__LC_SVC_NEW_PSW
, offsetof(struct _lowcore
, svc_new_psw
));
106 DEFINE(__LC_PGM_NEW_PSW
, offsetof(struct _lowcore
, program_new_psw
));
107 DEFINE(__LC_MCK_NEW_PSW
, offsetof(struct _lowcore
, mcck_new_psw
));
108 DEFINE(__LC_IO_NEW_PSW
, offsetof(struct _lowcore
, io_new_psw
));
110 DEFINE(__LC_SAVE_AREA_SYNC
, offsetof(struct _lowcore
, save_area_sync
));
111 DEFINE(__LC_SAVE_AREA_ASYNC
, offsetof(struct _lowcore
, save_area_async
));
112 DEFINE(__LC_SAVE_AREA_RESTART
, offsetof(struct _lowcore
, save_area_restart
));
113 DEFINE(__LC_RETURN_PSW
, offsetof(struct _lowcore
, return_psw
));
114 DEFINE(__LC_RETURN_MCCK_PSW
, offsetof(struct _lowcore
, return_mcck_psw
));
115 DEFINE(__LC_SYNC_ENTER_TIMER
, offsetof(struct _lowcore
, sync_enter_timer
));
116 DEFINE(__LC_ASYNC_ENTER_TIMER
, offsetof(struct _lowcore
, async_enter_timer
));
117 DEFINE(__LC_MCCK_ENTER_TIMER
, offsetof(struct _lowcore
, mcck_enter_timer
));
118 DEFINE(__LC_EXIT_TIMER
, offsetof(struct _lowcore
, exit_timer
));
119 DEFINE(__LC_USER_TIMER
, offsetof(struct _lowcore
, user_timer
));
120 DEFINE(__LC_SYSTEM_TIMER
, offsetof(struct _lowcore
, system_timer
));
121 DEFINE(__LC_STEAL_TIMER
, offsetof(struct _lowcore
, steal_timer
));
122 DEFINE(__LC_LAST_UPDATE_TIMER
, offsetof(struct _lowcore
, last_update_timer
));
123 DEFINE(__LC_LAST_UPDATE_CLOCK
, offsetof(struct _lowcore
, last_update_clock
));
124 DEFINE(__LC_CURRENT
, offsetof(struct _lowcore
, current_task
));
125 DEFINE(__LC_CURRENT_PID
, offsetof(struct _lowcore
, current_pid
));
126 DEFINE(__LC_THREAD_INFO
, offsetof(struct _lowcore
, thread_info
));
127 DEFINE(__LC_KERNEL_STACK
, offsetof(struct _lowcore
, kernel_stack
));
128 DEFINE(__LC_ASYNC_STACK
, offsetof(struct _lowcore
, async_stack
));
129 DEFINE(__LC_PANIC_STACK
, offsetof(struct _lowcore
, panic_stack
));
130 DEFINE(__LC_RESTART_STACK
, offsetof(struct _lowcore
, restart_stack
));
131 DEFINE(__LC_RESTART_FN
, offsetof(struct _lowcore
, restart_fn
));
132 DEFINE(__LC_RESTART_DATA
, offsetof(struct _lowcore
, restart_data
));
133 DEFINE(__LC_RESTART_SOURCE
, offsetof(struct _lowcore
, restart_source
));
134 DEFINE(__LC_USER_ASCE
, offsetof(struct _lowcore
, user_asce
));
135 DEFINE(__LC_INT_CLOCK
, offsetof(struct _lowcore
, int_clock
));
136 DEFINE(__LC_MCCK_CLOCK
, offsetof(struct _lowcore
, mcck_clock
));
137 DEFINE(__LC_MACHINE_FLAGS
, offsetof(struct _lowcore
, machine_flags
));
138 DEFINE(__LC_FTRACE_FUNC
, offsetof(struct _lowcore
, ftrace_func
));
139 DEFINE(__LC_IRB
, offsetof(struct _lowcore
, irb
));
140 DEFINE(__LC_DUMP_REIPL
, offsetof(struct _lowcore
, ipib
));
142 DEFINE(__LC_CPU_TIMER_SAVE_AREA
, offsetof(struct _lowcore
, cpu_timer_save_area
));
143 DEFINE(__LC_CLOCK_COMP_SAVE_AREA
, offsetof(struct _lowcore
, clock_comp_save_area
));
144 DEFINE(__LC_PSW_SAVE_AREA
, offsetof(struct _lowcore
, psw_save_area
));
145 DEFINE(__LC_PREFIX_SAVE_AREA
, offsetof(struct _lowcore
, prefixreg_save_area
));
146 DEFINE(__LC_AREGS_SAVE_AREA
, offsetof(struct _lowcore
, access_regs_save_area
));
147 DEFINE(__LC_FPREGS_SAVE_AREA
, offsetof(struct _lowcore
, floating_pt_save_area
));
148 DEFINE(__LC_GPREGS_SAVE_AREA
, offsetof(struct _lowcore
, gpregs_save_area
));
149 DEFINE(__LC_CREGS_SAVE_AREA
, offsetof(struct _lowcore
, cregs_save_area
));
151 DEFINE(SAVE_AREA_BASE
, offsetof(struct _lowcore
, extended_save_area_addr
));
152 #else /* CONFIG_32BIT */
153 DEFINE(__LC_EXT_PARAMS2
, offsetof(struct _lowcore
, ext_params2
));
154 DEFINE(SAVE_AREA_BASE
, offsetof(struct _lowcore
, floating_pt_save_area
));
155 DEFINE(__LC_PASTE
, offsetof(struct _lowcore
, paste
));
156 DEFINE(__LC_FP_CREG_SAVE_AREA
, offsetof(struct _lowcore
, fpt_creg_save_area
));
157 DEFINE(__LC_LAST_BREAK
, offsetof(struct _lowcore
, breaking_event_addr
));
158 DEFINE(__LC_VDSO_PER_CPU
, offsetof(struct _lowcore
, vdso_per_cpu_data
));
159 DEFINE(__LC_GMAP
, offsetof(struct _lowcore
, gmap
));
160 DEFINE(__LC_PGM_TDB
, offsetof(struct _lowcore
, pgm_tdb
));
161 DEFINE(__THREAD_trap_tdb
, offsetof(struct task_struct
, thread
.trap_tdb
));
162 DEFINE(__GMAP_ASCE
, offsetof(struct gmap
, asce
));
163 #endif /* CONFIG_32BIT */