12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- /*
- * Definitions used by low-level trap handlers
- *
- * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
- * Copyright (C) 2007-2009 PetaLogix
- * Copyright (C) 2007 John Williams <john.williams@petalogix.com>
- *
- * This file is subject to the terms and conditions of the GNU General
- * Public License. See the file COPYING in the main directory of this
- * archive for more details.
- */
- #ifndef _ASM_MICROBLAZE_ENTRY_H
- #define _ASM_MICROBLAZE_ENTRY_H
- #include <asm/percpu.h>
- #include <asm/ptrace.h>
- /*
- * These are per-cpu variables required in entry.S, among other
- * places
- */
- #define PER_CPU(var) per_cpu__##var
- # ifndef __ASSEMBLY__
- DECLARE_PER_CPU(unsigned int, KSP); /* Saved kernel stack pointer */
- DECLARE_PER_CPU(unsigned int, KM); /* Kernel/user mode */
- DECLARE_PER_CPU(unsigned int, ENTRY_SP); /* Saved SP on kernel entry */
- DECLARE_PER_CPU(unsigned int, R11_SAVE); /* Temp variable for entry */
- DECLARE_PER_CPU(unsigned int, CURRENT_SAVE); /* Saved current pointer */
- # endif /* __ASSEMBLY__ */
- #ifndef CONFIG_MMU
- /* noMMU hasn't any space for args */
- # define STATE_SAVE_ARG_SPACE (0)
- #else /* CONFIG_MMU */
- /* If true, system calls save and restore all registers (except result
- * registers, of course). If false, then `call clobbered' registers
- * will not be preserved, on the theory that system calls are basically
- * function calls anyway, and the caller should be able to deal with it.
- * This is a security risk, of course, as `internal' values may leak out
- * after a system call, but that certainly doesn't matter very much for
- * a processor with no MMU protection! For a protected-mode kernel, it
- * would be faster to just zero those registers before returning.
- *
- * I can not rely on the glibc implementation. If you turn it off make
- * sure that r11/r12 is saved in user-space. --KAA
- *
- * These are special variables using by the kernel trap/interrupt code
- * to save registers in, at a time when there are no spare registers we
- * can use to do so, and we can't depend on the value of the stack
- * pointer. This means that they must be within a signed 16-bit
- * displacement of 0x00000000.
- */
- /* A `state save frame' is a struct pt_regs preceded by some extra space
- * suitable for a function call stack frame. */
- /* Amount of room on the stack reserved for arguments and to satisfy the
- * C calling conventions, in addition to the space used by the struct
- * pt_regs that actually holds saved values. */
- #define STATE_SAVE_ARG_SPACE (6*4) /* Up to six arguments */
- #endif /* CONFIG_MMU */
- #endif /* _ASM_MICROBLAZE_ENTRY_H */
|