18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Based on arch/arm/include/asm/system_misc.h
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Copyright (C) 2012 ARM Ltd.
68c2ecf20Sopenharmony_ci */
78c2ecf20Sopenharmony_ci#ifndef __ASM_SYSTEM_MISC_H
88c2ecf20Sopenharmony_ci#define __ASM_SYSTEM_MISC_H
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci#ifndef __ASSEMBLY__
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci#include <linux/compiler.h>
138c2ecf20Sopenharmony_ci#include <linux/linkage.h>
148c2ecf20Sopenharmony_ci#include <linux/irqflags.h>
158c2ecf20Sopenharmony_ci#include <linux/signal.h>
168c2ecf20Sopenharmony_ci#include <linux/ratelimit.h>
178c2ecf20Sopenharmony_ci#include <linux/reboot.h>
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_cistruct pt_regs;
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_civoid die(const char *msg, struct pt_regs *regs, long err);
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_cistruct siginfo;
248c2ecf20Sopenharmony_civoid arm64_notify_die(const char *str, struct pt_regs *regs,
258c2ecf20Sopenharmony_ci		      int signo, int sicode, void __user *addr,
268c2ecf20Sopenharmony_ci		      int err);
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_civoid hook_debug_fault_code(int nr, int (*fn)(unsigned long, unsigned int,
298c2ecf20Sopenharmony_ci					     struct pt_regs *),
308c2ecf20Sopenharmony_ci			   int sig, int code, const char *name);
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_cistruct mm_struct;
338c2ecf20Sopenharmony_ciextern void __show_regs(struct pt_regs *);
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ciextern void (*arm_pm_restart)(enum reboot_mode reboot_mode, const char *cmd);
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ci#endif	/* __ASSEMBLY__ */
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci#endif	/* __ASM_SYSTEM_MISC_H */
40