| .. | .. |
|---|
| 11 | 11 | #include <linux/kvm_host.h> |
|---|
| 12 | 12 | #include <linux/sched.h> |
|---|
| 13 | 13 | #include <linux/purgatory.h> |
|---|
| 14 | +#include <linux/pgtable.h> |
|---|
| 14 | 15 | #include <asm/idle.h> |
|---|
| 15 | 16 | #include <asm/vdso.h> |
|---|
| 16 | | -#include <asm/pgtable.h> |
|---|
| 17 | 17 | #include <asm/gmap.h> |
|---|
| 18 | 18 | #include <asm/nmi.h> |
|---|
| 19 | +#include <asm/stacktrace.h> |
|---|
| 19 | 20 | |
|---|
| 20 | 21 | int main(void) |
|---|
| 21 | 22 | { |
|---|
| .. | .. |
|---|
| 52 | 53 | /* stack_frame offsets */ |
|---|
| 53 | 54 | OFFSET(__SF_BACKCHAIN, stack_frame, back_chain); |
|---|
| 54 | 55 | OFFSET(__SF_GPRS, stack_frame, gprs); |
|---|
| 55 | | - OFFSET(__SF_EMPTY, stack_frame, empty1); |
|---|
| 56 | | - OFFSET(__SF_SIE_CONTROL, stack_frame, empty1[0]); |
|---|
| 57 | | - OFFSET(__SF_SIE_SAVEAREA, stack_frame, empty1[1]); |
|---|
| 58 | | - OFFSET(__SF_SIE_REASON, stack_frame, empty1[2]); |
|---|
| 59 | | - OFFSET(__SF_SIE_FLAGS, stack_frame, empty1[3]); |
|---|
| 56 | + OFFSET(__SF_EMPTY, stack_frame, empty1[0]); |
|---|
| 57 | + OFFSET(__SF_SIE_CONTROL, stack_frame, empty1[1]); |
|---|
| 58 | + OFFSET(__SF_SIE_SAVEAREA, stack_frame, empty1[2]); |
|---|
| 59 | + OFFSET(__SF_SIE_REASON, stack_frame, empty1[3]); |
|---|
| 60 | + OFFSET(__SF_SIE_FLAGS, stack_frame, empty1[4]); |
|---|
| 60 | 61 | BLANK(); |
|---|
| 61 | | - /* timeval/timezone offsets for use by vdso */ |
|---|
| 62 | | - OFFSET(__VDSO_UPD_COUNT, vdso_data, tb_update_count); |
|---|
| 63 | | - OFFSET(__VDSO_XTIME_STAMP, vdso_data, xtime_tod_stamp); |
|---|
| 64 | | - OFFSET(__VDSO_XTIME_SEC, vdso_data, xtime_clock_sec); |
|---|
| 65 | | - OFFSET(__VDSO_XTIME_NSEC, vdso_data, xtime_clock_nsec); |
|---|
| 66 | | - OFFSET(__VDSO_XTIME_CRS_SEC, vdso_data, xtime_coarse_sec); |
|---|
| 67 | | - OFFSET(__VDSO_XTIME_CRS_NSEC, vdso_data, xtime_coarse_nsec); |
|---|
| 68 | | - OFFSET(__VDSO_WTOM_SEC, vdso_data, wtom_clock_sec); |
|---|
| 69 | | - OFFSET(__VDSO_WTOM_NSEC, vdso_data, wtom_clock_nsec); |
|---|
| 70 | | - OFFSET(__VDSO_WTOM_CRS_SEC, vdso_data, wtom_coarse_sec); |
|---|
| 71 | | - OFFSET(__VDSO_WTOM_CRS_NSEC, vdso_data, wtom_coarse_nsec); |
|---|
| 72 | | - OFFSET(__VDSO_TIMEZONE, vdso_data, tz_minuteswest); |
|---|
| 73 | | - OFFSET(__VDSO_ECTG_OK, vdso_data, ectg_available); |
|---|
| 74 | | - OFFSET(__VDSO_TK_MULT, vdso_data, tk_mult); |
|---|
| 75 | | - OFFSET(__VDSO_TK_SHIFT, vdso_data, tk_shift); |
|---|
| 76 | | - OFFSET(__VDSO_TS_DIR, vdso_data, ts_dir); |
|---|
| 77 | | - OFFSET(__VDSO_TS_END, vdso_data, ts_end); |
|---|
| 78 | | - OFFSET(__VDSO_CLOCK_REALTIME_RES, vdso_data, hrtimer_res); |
|---|
| 79 | | - OFFSET(__VDSO_ECTG_BASE, vdso_per_cpu_data, ectg_timer_base); |
|---|
| 80 | | - OFFSET(__VDSO_ECTG_USER, vdso_per_cpu_data, ectg_user_time); |
|---|
| 81 | | - OFFSET(__VDSO_CPU_NR, vdso_per_cpu_data, cpu_nr); |
|---|
| 82 | | - OFFSET(__VDSO_NODE_ID, vdso_per_cpu_data, node_id); |
|---|
| 83 | | - BLANK(); |
|---|
| 84 | | - /* constants used by the vdso */ |
|---|
| 85 | | - DEFINE(__CLOCK_REALTIME, CLOCK_REALTIME); |
|---|
| 86 | | - DEFINE(__CLOCK_MONOTONIC, CLOCK_MONOTONIC); |
|---|
| 87 | | - DEFINE(__CLOCK_REALTIME_COARSE, CLOCK_REALTIME_COARSE); |
|---|
| 88 | | - DEFINE(__CLOCK_MONOTONIC_COARSE, CLOCK_MONOTONIC_COARSE); |
|---|
| 89 | | - DEFINE(__CLOCK_THREAD_CPUTIME_ID, CLOCK_THREAD_CPUTIME_ID); |
|---|
| 90 | | - DEFINE(__CLOCK_COARSE_RES, LOW_RES_NSEC); |
|---|
| 62 | + OFFSET(__VDSO_GETCPU_VAL, vdso_per_cpu_data, getcpu_val); |
|---|
| 91 | 63 | BLANK(); |
|---|
| 92 | 64 | /* idle data offsets */ |
|---|
| 93 | 65 | OFFSET(__CLOCK_IDLE_ENTER, s390_idle_data, clock_idle_enter); |
|---|
| .. | .. |
|---|
| 124 | 96 | OFFSET(__LC_EXT_DAMAGE_CODE, lowcore, external_damage_code); |
|---|
| 125 | 97 | OFFSET(__LC_MCCK_FAIL_STOR_ADDR, lowcore, failing_storage_address); |
|---|
| 126 | 98 | OFFSET(__LC_LAST_BREAK, lowcore, breaking_event_addr); |
|---|
| 99 | + OFFSET(__LC_RETURN_LPSWE, lowcore, return_lpswe); |
|---|
| 100 | + OFFSET(__LC_RETURN_MCCK_LPSWE, lowcore, return_mcck_lpswe); |
|---|
| 127 | 101 | OFFSET(__LC_RST_OLD_PSW, lowcore, restart_old_psw); |
|---|
| 128 | 102 | OFFSET(__LC_EXT_OLD_PSW, lowcore, external_old_psw); |
|---|
| 129 | 103 | OFFSET(__LC_SVC_OLD_PSW, lowcore, svc_old_psw); |
|---|
| .. | .. |
|---|
| 159 | 133 | OFFSET(__LC_CURRENT, lowcore, current_task); |
|---|
| 160 | 134 | OFFSET(__LC_KERNEL_STACK, lowcore, kernel_stack); |
|---|
| 161 | 135 | OFFSET(__LC_ASYNC_STACK, lowcore, async_stack); |
|---|
| 162 | | - OFFSET(__LC_PANIC_STACK, lowcore, panic_stack); |
|---|
| 136 | + OFFSET(__LC_NODAT_STACK, lowcore, nodat_stack); |
|---|
| 163 | 137 | OFFSET(__LC_RESTART_STACK, lowcore, restart_stack); |
|---|
| 164 | 138 | OFFSET(__LC_RESTART_FN, lowcore, restart_fn); |
|---|
| 165 | 139 | OFFSET(__LC_RESTART_DATA, lowcore, restart_data); |
|---|
| .. | .. |
|---|
| 176 | 150 | OFFSET(__LC_BR_R1, lowcore, br_r1_trampoline); |
|---|
| 177 | 151 | /* software defined ABI-relevant lowcore locations 0xe00 - 0xe20 */ |
|---|
| 178 | 152 | OFFSET(__LC_DUMP_REIPL, lowcore, ipib); |
|---|
| 153 | + OFFSET(__LC_VMCORE_INFO, lowcore, vmcore_info); |
|---|
| 154 | + OFFSET(__LC_OS_INFO, lowcore, os_info); |
|---|
| 179 | 155 | /* hardware defined lowcore locations 0x1000 - 0x18ff */ |
|---|
| 180 | 156 | OFFSET(__LC_MCESAD, lowcore, mcesad); |
|---|
| 181 | 157 | OFFSET(__LC_EXT_PARAMS2, lowcore, ext_params2); |
|---|