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/kvm_host.h>
11 #include <linux/sched.h>
14 #include <asm/pgtable.h>
17 * Make sure that the compiler is new enough. We want a compiler that
18 * is known to work with the "Q" assembler constraint.
20 #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)
21 #error Your compiler is too old; please use version 4.3 or newer
26 DEFINE(__THREAD_info
, offsetof(struct task_struct
, stack
));
27 DEFINE(__THREAD_ksp
, offsetof(struct task_struct
, thread
.ksp
));
28 DEFINE(__THREAD_mm_segment
, offsetof(struct task_struct
, thread
.mm_segment
));
30 DEFINE(__TASK_pid
, offsetof(struct task_struct
, pid
));
32 DEFINE(__THREAD_per_cause
, offsetof(struct task_struct
, thread
.per_event
.cause
));
33 DEFINE(__THREAD_per_address
, offsetof(struct task_struct
, thread
.per_event
.address
));
34 DEFINE(__THREAD_per_paid
, offsetof(struct task_struct
, thread
.per_event
.paid
));
36 DEFINE(__TI_task
, offsetof(struct thread_info
, task
));
37 DEFINE(__TI_flags
, offsetof(struct thread_info
, flags
));
38 DEFINE(__TI_sysc_table
, offsetof(struct thread_info
, sys_call_table
));
39 DEFINE(__TI_cpu
, offsetof(struct thread_info
, cpu
));
40 DEFINE(__TI_precount
, offsetof(struct thread_info
, preempt_count
));
41 DEFINE(__TI_user_timer
, offsetof(struct thread_info
, user_timer
));
42 DEFINE(__TI_system_timer
, offsetof(struct thread_info
, system_timer
));
43 DEFINE(__TI_last_break
, offsetof(struct thread_info
, last_break
));
45 DEFINE(__PT_ARGS
, offsetof(struct pt_regs
, args
));
46 DEFINE(__PT_PSW
, offsetof(struct pt_regs
, psw
));
47 DEFINE(__PT_GPRS
, offsetof(struct pt_regs
, gprs
));
48 DEFINE(__PT_ORIG_GPR2
, offsetof(struct pt_regs
, orig_gpr2
));
49 DEFINE(__PT_INT_CODE
, offsetof(struct pt_regs
, int_code
));
50 DEFINE(__PT_INT_PARM
, offsetof(struct pt_regs
, int_parm
));
51 DEFINE(__PT_INT_PARM_LONG
, offsetof(struct pt_regs
, int_parm_long
));
52 DEFINE(__PT_FLAGS
, offsetof(struct pt_regs
, flags
));
53 DEFINE(__PT_SIZE
, sizeof(struct pt_regs
));
55 DEFINE(__SF_BACKCHAIN
, offsetof(struct stack_frame
, back_chain
));
56 DEFINE(__SF_GPRS
, offsetof(struct stack_frame
, gprs
));
57 DEFINE(__SF_EMPTY
, offsetof(struct stack_frame
, empty1
));
59 /* timeval/timezone offsets for use by vdso */
60 DEFINE(__VDSO_UPD_COUNT
, offsetof(struct vdso_data
, tb_update_count
));
61 DEFINE(__VDSO_XTIME_STAMP
, offsetof(struct vdso_data
, xtime_tod_stamp
));
62 DEFINE(__VDSO_XTIME_SEC
, offsetof(struct vdso_data
, xtime_clock_sec
));
63 DEFINE(__VDSO_XTIME_NSEC
, offsetof(struct vdso_data
, xtime_clock_nsec
));
64 DEFINE(__VDSO_XTIME_CRS_SEC
, offsetof(struct vdso_data
, xtime_coarse_sec
));
65 DEFINE(__VDSO_XTIME_CRS_NSEC
, offsetof(struct vdso_data
, xtime_coarse_nsec
));
66 DEFINE(__VDSO_WTOM_SEC
, offsetof(struct vdso_data
, wtom_clock_sec
));
67 DEFINE(__VDSO_WTOM_NSEC
, offsetof(struct vdso_data
, wtom_clock_nsec
));
68 DEFINE(__VDSO_WTOM_CRS_SEC
, offsetof(struct vdso_data
, wtom_coarse_sec
));
69 DEFINE(__VDSO_WTOM_CRS_NSEC
, offsetof(struct vdso_data
, wtom_coarse_nsec
));
70 DEFINE(__VDSO_TIMEZONE
, offsetof(struct vdso_data
, tz_minuteswest
));
71 DEFINE(__VDSO_ECTG_OK
, offsetof(struct vdso_data
, ectg_available
));
72 DEFINE(__VDSO_TK_MULT
, offsetof(struct vdso_data
, tk_mult
));
73 DEFINE(__VDSO_TK_SHIFT
, offsetof(struct vdso_data
, tk_shift
));
74 DEFINE(__VDSO_ECTG_BASE
, offsetof(struct vdso_per_cpu_data
, ectg_timer_base
));
75 DEFINE(__VDSO_ECTG_USER
, offsetof(struct vdso_per_cpu_data
, ectg_user_time
));
76 /* constants used by the vdso */
77 DEFINE(__CLOCK_REALTIME
, CLOCK_REALTIME
);
78 DEFINE(__CLOCK_MONOTONIC
, CLOCK_MONOTONIC
);
79 DEFINE(__CLOCK_REALTIME_COARSE
, CLOCK_REALTIME_COARSE
);
80 DEFINE(__CLOCK_MONOTONIC_COARSE
, CLOCK_MONOTONIC_COARSE
);
81 DEFINE(__CLOCK_THREAD_CPUTIME_ID
, CLOCK_THREAD_CPUTIME_ID
);
82 DEFINE(__CLOCK_REALTIME_RES
, MONOTONIC_RES_NSEC
);
83 DEFINE(__CLOCK_COARSE_RES
, LOW_RES_NSEC
);
85 /* idle data offsets */
86 DEFINE(__CLOCK_IDLE_ENTER
, offsetof(struct s390_idle_data
, clock_idle_enter
));
87 DEFINE(__CLOCK_IDLE_EXIT
, offsetof(struct s390_idle_data
, clock_idle_exit
));
88 DEFINE(__TIMER_IDLE_ENTER
, offsetof(struct s390_idle_data
, timer_idle_enter
));
89 DEFINE(__TIMER_IDLE_EXIT
, offsetof(struct s390_idle_data
, timer_idle_exit
));
91 DEFINE(__LC_EXT_PARAMS
, offsetof(struct _lowcore
, ext_params
));
92 DEFINE(__LC_EXT_CPU_ADDR
, offsetof(struct _lowcore
, ext_cpu_addr
));
93 DEFINE(__LC_EXT_INT_CODE
, offsetof(struct _lowcore
, ext_int_code
));
94 DEFINE(__LC_SVC_ILC
, offsetof(struct _lowcore
, svc_ilc
));
95 DEFINE(__LC_SVC_INT_CODE
, offsetof(struct _lowcore
, svc_code
));
96 DEFINE(__LC_PGM_ILC
, offsetof(struct _lowcore
, pgm_ilc
));
97 DEFINE(__LC_PGM_INT_CODE
, offsetof(struct _lowcore
, pgm_code
));
98 DEFINE(__LC_TRANS_EXC_CODE
, offsetof(struct _lowcore
, trans_exc_code
));
99 DEFINE(__LC_MON_CLASS_NR
, offsetof(struct _lowcore
, mon_class_num
));
100 DEFINE(__LC_PER_CODE
, offsetof(struct _lowcore
, per_code
));
101 DEFINE(__LC_PER_ATMID
, offsetof(struct _lowcore
, per_atmid
));
102 DEFINE(__LC_PER_ADDRESS
, offsetof(struct _lowcore
, per_address
));
103 DEFINE(__LC_EXC_ACCESS_ID
, offsetof(struct _lowcore
, exc_access_id
));
104 DEFINE(__LC_PER_ACCESS_ID
, offsetof(struct _lowcore
, per_access_id
));
105 DEFINE(__LC_OP_ACCESS_ID
, offsetof(struct _lowcore
, op_access_id
));
106 DEFINE(__LC_AR_MODE_ID
, offsetof(struct _lowcore
, ar_mode_id
));
107 DEFINE(__LC_MON_CODE
, offsetof(struct _lowcore
, monitor_code
));
108 DEFINE(__LC_SUBCHANNEL_ID
, offsetof(struct _lowcore
, subchannel_id
));
109 DEFINE(__LC_SUBCHANNEL_NR
, offsetof(struct _lowcore
, subchannel_nr
));
110 DEFINE(__LC_IO_INT_PARM
, offsetof(struct _lowcore
, io_int_parm
));
111 DEFINE(__LC_IO_INT_WORD
, offsetof(struct _lowcore
, io_int_word
));
112 DEFINE(__LC_STFL_FAC_LIST
, offsetof(struct _lowcore
, stfl_fac_list
));
113 DEFINE(__LC_MCCK_CODE
, offsetof(struct _lowcore
, mcck_interruption_code
));
114 DEFINE(__LC_MCCK_EXT_DAM_CODE
, offsetof(struct _lowcore
, external_damage_code
));
115 DEFINE(__LC_RST_OLD_PSW
, offsetof(struct _lowcore
, restart_old_psw
));
116 DEFINE(__LC_EXT_OLD_PSW
, offsetof(struct _lowcore
, external_old_psw
));
117 DEFINE(__LC_SVC_OLD_PSW
, offsetof(struct _lowcore
, svc_old_psw
));
118 DEFINE(__LC_PGM_OLD_PSW
, offsetof(struct _lowcore
, program_old_psw
));
119 DEFINE(__LC_MCK_OLD_PSW
, offsetof(struct _lowcore
, mcck_old_psw
));
120 DEFINE(__LC_IO_OLD_PSW
, offsetof(struct _lowcore
, io_old_psw
));
121 DEFINE(__LC_RST_NEW_PSW
, offsetof(struct _lowcore
, restart_psw
));
122 DEFINE(__LC_EXT_NEW_PSW
, offsetof(struct _lowcore
, external_new_psw
));
123 DEFINE(__LC_SVC_NEW_PSW
, offsetof(struct _lowcore
, svc_new_psw
));
124 DEFINE(__LC_PGM_NEW_PSW
, offsetof(struct _lowcore
, program_new_psw
));
125 DEFINE(__LC_MCK_NEW_PSW
, offsetof(struct _lowcore
, mcck_new_psw
));
126 DEFINE(__LC_IO_NEW_PSW
, offsetof(struct _lowcore
, io_new_psw
));
128 DEFINE(__LC_SAVE_AREA_SYNC
, offsetof(struct _lowcore
, save_area_sync
));
129 DEFINE(__LC_SAVE_AREA_ASYNC
, offsetof(struct _lowcore
, save_area_async
));
130 DEFINE(__LC_SAVE_AREA_RESTART
, offsetof(struct _lowcore
, save_area_restart
));
131 DEFINE(__LC_CPU_FLAGS
, offsetof(struct _lowcore
, cpu_flags
));
132 DEFINE(__LC_RETURN_PSW
, offsetof(struct _lowcore
, return_psw
));
133 DEFINE(__LC_RETURN_MCCK_PSW
, offsetof(struct _lowcore
, return_mcck_psw
));
134 DEFINE(__LC_SYNC_ENTER_TIMER
, offsetof(struct _lowcore
, sync_enter_timer
));
135 DEFINE(__LC_ASYNC_ENTER_TIMER
, offsetof(struct _lowcore
, async_enter_timer
));
136 DEFINE(__LC_MCCK_ENTER_TIMER
, offsetof(struct _lowcore
, mcck_enter_timer
));
137 DEFINE(__LC_EXIT_TIMER
, offsetof(struct _lowcore
, exit_timer
));
138 DEFINE(__LC_USER_TIMER
, offsetof(struct _lowcore
, user_timer
));
139 DEFINE(__LC_SYSTEM_TIMER
, offsetof(struct _lowcore
, system_timer
));
140 DEFINE(__LC_STEAL_TIMER
, offsetof(struct _lowcore
, steal_timer
));
141 DEFINE(__LC_LAST_UPDATE_TIMER
, offsetof(struct _lowcore
, last_update_timer
));
142 DEFINE(__LC_LAST_UPDATE_CLOCK
, offsetof(struct _lowcore
, last_update_clock
));
143 DEFINE(__LC_CURRENT
, offsetof(struct _lowcore
, current_task
));
144 DEFINE(__LC_CURRENT_PID
, offsetof(struct _lowcore
, current_pid
));
145 DEFINE(__LC_THREAD_INFO
, offsetof(struct _lowcore
, thread_info
));
146 DEFINE(__LC_KERNEL_STACK
, offsetof(struct _lowcore
, kernel_stack
));
147 DEFINE(__LC_ASYNC_STACK
, offsetof(struct _lowcore
, async_stack
));
148 DEFINE(__LC_PANIC_STACK
, offsetof(struct _lowcore
, panic_stack
));
149 DEFINE(__LC_RESTART_STACK
, offsetof(struct _lowcore
, restart_stack
));
150 DEFINE(__LC_RESTART_FN
, offsetof(struct _lowcore
, restart_fn
));
151 DEFINE(__LC_RESTART_DATA
, offsetof(struct _lowcore
, restart_data
));
152 DEFINE(__LC_RESTART_SOURCE
, offsetof(struct _lowcore
, restart_source
));
153 DEFINE(__LC_KERNEL_ASCE
, offsetof(struct _lowcore
, kernel_asce
));
154 DEFINE(__LC_USER_ASCE
, offsetof(struct _lowcore
, user_asce
));
155 DEFINE(__LC_INT_CLOCK
, offsetof(struct _lowcore
, int_clock
));
156 DEFINE(__LC_MCCK_CLOCK
, offsetof(struct _lowcore
, mcck_clock
));
157 DEFINE(__LC_MACHINE_FLAGS
, offsetof(struct _lowcore
, machine_flags
));
158 DEFINE(__LC_DUMP_REIPL
, offsetof(struct _lowcore
, ipib
));
160 DEFINE(__LC_CPU_TIMER_SAVE_AREA
, offsetof(struct _lowcore
, cpu_timer_save_area
));
161 DEFINE(__LC_CLOCK_COMP_SAVE_AREA
, offsetof(struct _lowcore
, clock_comp_save_area
));
162 DEFINE(__LC_PSW_SAVE_AREA
, offsetof(struct _lowcore
, psw_save_area
));
163 DEFINE(__LC_PREFIX_SAVE_AREA
, offsetof(struct _lowcore
, prefixreg_save_area
));
164 DEFINE(__LC_AREGS_SAVE_AREA
, offsetof(struct _lowcore
, access_regs_save_area
));
165 DEFINE(__LC_FPREGS_SAVE_AREA
, offsetof(struct _lowcore
, floating_pt_save_area
));
166 DEFINE(__LC_GPREGS_SAVE_AREA
, offsetof(struct _lowcore
, gpregs_save_area
));
167 DEFINE(__LC_CREGS_SAVE_AREA
, offsetof(struct _lowcore
, cregs_save_area
));
169 DEFINE(SAVE_AREA_BASE
, offsetof(struct _lowcore
, extended_save_area_addr
));
170 #else /* CONFIG_32BIT */
171 DEFINE(__LC_DATA_EXC_CODE
, offsetof(struct _lowcore
, data_exc_code
));
172 DEFINE(__LC_MCCK_FAIL_STOR_ADDR
, offsetof(struct _lowcore
, failing_storage_address
));
173 DEFINE(__LC_EXT_PARAMS2
, offsetof(struct _lowcore
, ext_params2
));
174 DEFINE(SAVE_AREA_BASE
, offsetof(struct _lowcore
, floating_pt_save_area
));
175 DEFINE(__LC_PASTE
, offsetof(struct _lowcore
, paste
));
176 DEFINE(__LC_FP_CREG_SAVE_AREA
, offsetof(struct _lowcore
, fpt_creg_save_area
));
177 DEFINE(__LC_LAST_BREAK
, offsetof(struct _lowcore
, breaking_event_addr
));
178 DEFINE(__LC_VDSO_PER_CPU
, offsetof(struct _lowcore
, vdso_per_cpu_data
));
179 DEFINE(__LC_GMAP
, offsetof(struct _lowcore
, gmap
));
180 DEFINE(__LC_PGM_TDB
, offsetof(struct _lowcore
, pgm_tdb
));
181 DEFINE(__THREAD_trap_tdb
, offsetof(struct task_struct
, thread
.trap_tdb
));
182 DEFINE(__GMAP_ASCE
, offsetof(struct gmap
, asce
));
183 DEFINE(__SIE_PROG0C
, offsetof(struct kvm_s390_sie_block
, prog0c
));
184 DEFINE(__SIE_PROG20
, offsetof(struct kvm_s390_sie_block
, prog20
));
185 #endif /* CONFIG_32BIT */