11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This file is subject to the terms and conditions of the GNU General Public
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * License.  See the file "COPYING" in the main directory of this archive
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * for more details.
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 1991, 1992  Linus Torvalds
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 1994 - 2000  Ralf Baechle
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
11c3fc4ab36d495f50ccc89986fe32eeabc2549fa1Franck Bui-Huu#ifndef __SIGNAL_COMMON_H
12c3fc4ab36d495f50ccc89986fe32eeabc2549fa1Franck Bui-Huu#define __SIGNAL_COMMON_H
13e50c0a8fa60da9ac0e0a70caa8a3a803815c1f2fRalf Baechle
14722bb63de630f9500db1f12ed32e1dd9349a8049Franck Bui-Huu/* #define DEBUG_SIG */
15722bb63de630f9500db1f12ed32e1dd9349a8049Franck Bui-Huu
16722bb63de630f9500db1f12ed32e1dd9349a8049Franck Bui-Huu#ifdef DEBUG_SIG
17bb09a954b64c61b691c095e0a20708265b5bc2bcHarvey Harrison#  define DEBUGP(fmt, args...) printk("%s: " fmt, __func__, ##args)
18722bb63de630f9500db1f12ed32e1dd9349a8049Franck Bui-Huu#else
19722bb63de630f9500db1f12ed32e1dd9349a8049Franck Bui-Huu#  define DEBUGP(fmt, args...)
20722bb63de630f9500db1f12ed32e1dd9349a8049Franck Bui-Huu#endif
21722bb63de630f9500db1f12ed32e1dd9349a8049Franck Bui-Huu
22c3fc4ab36d495f50ccc89986fe32eeabc2549fa1Franck Bui-Huu/*
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Determine which stack to use..
241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
2581d103bf80678669c56658185e758fc3f9845d71Richard Weinbergerextern void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs,
26c3fc4ab36d495f50ccc89986fe32eeabc2549fa1Franck Bui-Huu				 size_t frame_size);
27c6a2f4679331206ef5d353fc9a6cda2fa4aef8c6Atsushi Nemoto/* Check and clear pending FPU exceptions in saved CSR */
28c6a2f4679331206ef5d353fc9a6cda2fa4aef8c6Atsushi Nemotoextern int fpcsr_pending(unsigned int __user *fpcsr);
29c6a2f4679331206ef5d353fc9a6cda2fa4aef8c6Atsushi Nemoto
30faea62346444ce5b1dba8fb5291d95b676522c42Atsushi Nemoto/* Make sure we will not lose FPU ownership */
31faea62346444ce5b1dba8fb5291d95b676522c42Atsushi Nemoto#ifdef CONFIG_PREEMPT
32faea62346444ce5b1dba8fb5291d95b676522c42Atsushi Nemoto#define lock_fpu_owner()	preempt_disable()
33faea62346444ce5b1dba8fb5291d95b676522c42Atsushi Nemoto#define unlock_fpu_owner()	preempt_enable()
34faea62346444ce5b1dba8fb5291d95b676522c42Atsushi Nemoto#else
35faea62346444ce5b1dba8fb5291d95b676522c42Atsushi Nemoto#define lock_fpu_owner()	pagefault_disable()
36faea62346444ce5b1dba8fb5291d95b676522c42Atsushi Nemoto#define unlock_fpu_owner()	pagefault_enable()
37faea62346444ce5b1dba8fb5291d95b676522c42Atsushi Nemoto#endif
38faea62346444ce5b1dba8fb5291d95b676522c42Atsushi Nemoto
39c3fc4ab36d495f50ccc89986fe32eeabc2549fa1Franck Bui-Huu#endif	/* __SIGNAL_COMMON_H */
40