• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /*
2   * Based on arch/arm/include/asm/system_misc.h
3   *
4   * Copyright (C) 2012 ARM Ltd.
5   *
6   * This program is free software; you can redistribute it and/or modify
7   * it under the terms of the GNU General Public License version 2 as
8   * published by the Free Software Foundation.
9   *
10   * This program is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   * GNU General Public License for more details.
14   *
15   * You should have received a copy of the GNU General Public License
16   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
17   */
18  #ifndef __ASM_SYSTEM_MISC_H
19  #define __ASM_SYSTEM_MISC_H
20  
21  #ifndef __ASSEMBLY__
22  
23  #include <linux/compiler.h>
24  #include <linux/linkage.h>
25  #include <linux/irqflags.h>
26  #include <linux/signal.h>
27  #include <linux/ratelimit.h>
28  #include <linux/reboot.h>
29  
30  struct pt_regs;
31  
32  void die(const char *msg, struct pt_regs *regs, int err);
33  
34  struct siginfo;
35  void arm64_notify_die(const char *str, struct pt_regs *regs,
36  		      struct siginfo *info, int err);
37  
38  void hook_debug_fault_code(int nr, int (*fn)(unsigned long, unsigned int,
39  					     struct pt_regs *),
40  			   int sig, int code, const char *name);
41  
42  struct mm_struct;
43  extern void show_pte(unsigned long addr);
44  extern void __show_regs(struct pt_regs *);
45  
46  extern void (*arm_pm_restart)(enum reboot_mode reboot_mode, const char *cmd);
47  
48  #define show_unhandled_signals_ratelimited()				\
49  ({									\
50  	static DEFINE_RATELIMIT_STATE(_rs,				\
51  				      DEFAULT_RATELIMIT_INTERVAL,	\
52  				      DEFAULT_RATELIMIT_BURST);		\
53  	bool __show_ratelimited = false;				\
54  	if (show_unhandled_signals && __ratelimit(&_rs))		\
55  		__show_ratelimited = true;				\
56  	__show_ratelimited;						\
57  })
58  
59  int handle_guest_sea(phys_addr_t addr, unsigned int esr);
60  
61  #endif	/* __ASSEMBLY__ */
62  
63  #endif	/* __ASM_SYSTEM_MISC_H */
64