Commit cf2df639 authored by Geoff Levand's avatar Geoff Levand Committed by Linus Torvalds
Browse files

kexec: add bit definitions for kimage entry flags



Define new kexec preprocessor macros IND_*_BIT that define the bit
position of the kimage entry flags.  Change the existing IND_* flag macros
to be defined as bit shifts of the corresponding IND_*_BIT macros.  Also
wrap all C language code in kexec.h with #if !defined(__ASSEMBLY__) so
assembly files can include kexec.h to get the IND_* and IND_*_BIT macros.

Some CPU instruction sets have tests for bit position which are convenient
in implementing routines that operate on the kimage entry list.  The
addition of these bit position macros in a common location will avoid
duplicate definitions and the chance that changes to the IND_* flags will
not be propagated to assembly files.

Signed-off-by: default avatarGeoff Levand <geoff@infradead.org>
Acked-by: default avatarVivek Goyal <vgoyal@redhat.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Maximilian Attems <max@stro.at>
Cc: Michal Marek <mmarek@suse.cz>
Cc: Paul Bolle <pebolle@tiscali.nl>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 518a0c71
#ifndef LINUX_KEXEC_H #ifndef LINUX_KEXEC_H
#define LINUX_KEXEC_H #define LINUX_KEXEC_H
#define IND_DESTINATION_BIT 0
#define IND_INDIRECTION_BIT 1
#define IND_DONE_BIT 2
#define IND_SOURCE_BIT 3
#define IND_DESTINATION (1 << IND_DESTINATION_BIT)
#define IND_INDIRECTION (1 << IND_INDIRECTION_BIT)
#define IND_DONE (1 << IND_DONE_BIT)
#define IND_SOURCE (1 << IND_SOURCE_BIT)
#if !defined(__ASSEMBLY__)
#include <uapi/linux/kexec.h> #include <uapi/linux/kexec.h>
#ifdef CONFIG_KEXEC #ifdef CONFIG_KEXEC
...@@ -64,10 +76,6 @@ ...@@ -64,10 +76,6 @@
*/ */
typedef unsigned long kimage_entry_t; typedef unsigned long kimage_entry_t;
#define IND_DESTINATION 0x1
#define IND_INDIRECTION 0x2
#define IND_DONE 0x4
#define IND_SOURCE 0x8
struct kexec_segment { struct kexec_segment {
/* /*
...@@ -311,4 +319,7 @@ struct task_struct; ...@@ -311,4 +319,7 @@ struct task_struct;
static inline void crash_kexec(struct pt_regs *regs) { } static inline void crash_kexec(struct pt_regs *regs) { }
static inline int kexec_should_crash(struct task_struct *p) { return 0; } static inline int kexec_should_crash(struct task_struct *p) { return 0; }
#endif /* CONFIG_KEXEC */ #endif /* CONFIG_KEXEC */
#endif /* !defined(__ASSEBMLY__) */
#endif /* LINUX_KEXEC_H */ #endif /* LINUX_KEXEC_H */
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment