xref: /kernel/linux/linux-5.10/arch/s390/kernel/entry.h (revision 8c2ecf20)
18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci#ifndef _ENTRY_H
38c2ecf20Sopenharmony_ci#define _ENTRY_H
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci#include <linux/percpu.h>
68c2ecf20Sopenharmony_ci#include <linux/types.h>
78c2ecf20Sopenharmony_ci#include <linux/signal.h>
88c2ecf20Sopenharmony_ci#include <asm/ptrace.h>
98c2ecf20Sopenharmony_ci#include <asm/idle.h>
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ciextern void *restart_stack;
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_civoid system_call(void);
148c2ecf20Sopenharmony_civoid pgm_check_handler(void);
158c2ecf20Sopenharmony_civoid ext_int_handler(void);
168c2ecf20Sopenharmony_civoid io_int_handler(void);
178c2ecf20Sopenharmony_civoid mcck_int_handler(void);
188c2ecf20Sopenharmony_civoid restart_int_handler(void);
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ciasmlinkage long do_syscall_trace_enter(struct pt_regs *regs);
218c2ecf20Sopenharmony_ciasmlinkage void do_syscall_trace_exit(struct pt_regs *regs);
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_civoid do_protection_exception(struct pt_regs *regs);
248c2ecf20Sopenharmony_civoid do_dat_exception(struct pt_regs *regs);
258c2ecf20Sopenharmony_civoid do_secure_storage_access(struct pt_regs *regs);
268c2ecf20Sopenharmony_civoid do_non_secure_storage_access(struct pt_regs *regs);
278c2ecf20Sopenharmony_civoid do_secure_storage_violation(struct pt_regs *regs);
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_civoid addressing_exception(struct pt_regs *regs);
308c2ecf20Sopenharmony_civoid data_exception(struct pt_regs *regs);
318c2ecf20Sopenharmony_civoid default_trap_handler(struct pt_regs *regs);
328c2ecf20Sopenharmony_civoid divide_exception(struct pt_regs *regs);
338c2ecf20Sopenharmony_civoid execute_exception(struct pt_regs *regs);
348c2ecf20Sopenharmony_civoid hfp_divide_exception(struct pt_regs *regs);
358c2ecf20Sopenharmony_civoid hfp_overflow_exception(struct pt_regs *regs);
368c2ecf20Sopenharmony_civoid hfp_significance_exception(struct pt_regs *regs);
378c2ecf20Sopenharmony_civoid hfp_sqrt_exception(struct pt_regs *regs);
388c2ecf20Sopenharmony_civoid hfp_underflow_exception(struct pt_regs *regs);
398c2ecf20Sopenharmony_civoid illegal_op(struct pt_regs *regs);
408c2ecf20Sopenharmony_civoid operand_exception(struct pt_regs *regs);
418c2ecf20Sopenharmony_civoid overflow_exception(struct pt_regs *regs);
428c2ecf20Sopenharmony_civoid privileged_op(struct pt_regs *regs);
438c2ecf20Sopenharmony_civoid space_switch_exception(struct pt_regs *regs);
448c2ecf20Sopenharmony_civoid special_op_exception(struct pt_regs *regs);
458c2ecf20Sopenharmony_civoid specification_exception(struct pt_regs *regs);
468c2ecf20Sopenharmony_civoid transaction_exception(struct pt_regs *regs);
478c2ecf20Sopenharmony_civoid translation_exception(struct pt_regs *regs);
488c2ecf20Sopenharmony_civoid vector_exception(struct pt_regs *regs);
498c2ecf20Sopenharmony_civoid monitor_event_exception(struct pt_regs *regs);
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_civoid do_per_trap(struct pt_regs *regs);
528c2ecf20Sopenharmony_civoid do_report_trap(struct pt_regs *regs, int si_signo, int si_code, char *str);
538c2ecf20Sopenharmony_civoid syscall_trace(struct pt_regs *regs, int entryexit);
548c2ecf20Sopenharmony_civoid kernel_stack_overflow(struct pt_regs * regs);
558c2ecf20Sopenharmony_civoid do_signal(struct pt_regs *regs);
568c2ecf20Sopenharmony_civoid handle_signal32(struct ksignal *ksig, sigset_t *oldset,
578c2ecf20Sopenharmony_ci		     struct pt_regs *regs);
588c2ecf20Sopenharmony_civoid do_notify_resume(struct pt_regs *regs);
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_civoid __init init_IRQ(void);
618c2ecf20Sopenharmony_civoid do_IRQ(struct pt_regs *regs, int irq);
628c2ecf20Sopenharmony_civoid do_restart(void);
638c2ecf20Sopenharmony_civoid __init startup_init(void);
648c2ecf20Sopenharmony_civoid die(struct pt_regs *regs, const char *str);
658c2ecf20Sopenharmony_ciint setup_profiling_timer(unsigned int multiplier);
668c2ecf20Sopenharmony_civoid __init time_init(void);
678c2ecf20Sopenharmony_ciunsigned long prepare_ftrace_return(unsigned long parent, unsigned long sp, unsigned long ip);
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_cistruct s390_mmap_arg_struct;
708c2ecf20Sopenharmony_cistruct fadvise64_64_args;
718c2ecf20Sopenharmony_cistruct old_sigaction;
728c2ecf20Sopenharmony_ci
738c2ecf20Sopenharmony_cilong sys_rt_sigreturn(void);
748c2ecf20Sopenharmony_cilong sys_sigreturn(void);
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_cilong sys_s390_personality(unsigned int personality);
778c2ecf20Sopenharmony_cilong sys_s390_runtime_instr(int command, int signum);
788c2ecf20Sopenharmony_cilong sys_s390_guarded_storage(int command, struct gs_cb __user *);
798c2ecf20Sopenharmony_cilong sys_s390_pci_mmio_write(unsigned long, const void __user *, size_t);
808c2ecf20Sopenharmony_cilong sys_s390_pci_mmio_read(unsigned long, void __user *, size_t);
818c2ecf20Sopenharmony_cilong sys_s390_sthyi(unsigned long function_code, void __user *buffer, u64 __user *return_code, unsigned long flags);
828c2ecf20Sopenharmony_ci
838c2ecf20Sopenharmony_ciDECLARE_PER_CPU(u64, mt_cycles[8]);
848c2ecf20Sopenharmony_ci
858c2ecf20Sopenharmony_civoid gs_load_bc_cb(struct pt_regs *regs);
868c2ecf20Sopenharmony_civoid set_fs_fixup(void);
878c2ecf20Sopenharmony_ci
888c2ecf20Sopenharmony_ciunsigned long stack_alloc(void);
898c2ecf20Sopenharmony_civoid stack_free(unsigned long stack);
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ciextern char kprobes_insn_page[];
928c2ecf20Sopenharmony_ci
938c2ecf20Sopenharmony_ci#endif /* _ENTRY_H */
94