s390/flags: fix flag handling
The cpu flags and pt_regs flags fields are each 64 bits in size. A flag can be set with helper functions like set_cpu_flags(). These functions create a mask using "1U << flag". This doesn't work if flag is larger than 31, since 1U << 32 == 0. So fix this in case we ever will have such flag numbers. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Reviewed-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
db7e007fd6
commit
ac25e790d9
2 changed files with 6 additions and 6 deletions
|
@ -36,17 +36,17 @@
|
||||||
|
|
||||||
static inline void set_cpu_flag(int flag)
|
static inline void set_cpu_flag(int flag)
|
||||||
{
|
{
|
||||||
S390_lowcore.cpu_flags |= (1U << flag);
|
S390_lowcore.cpu_flags |= (1UL << flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void clear_cpu_flag(int flag)
|
static inline void clear_cpu_flag(int flag)
|
||||||
{
|
{
|
||||||
S390_lowcore.cpu_flags &= ~(1U << flag);
|
S390_lowcore.cpu_flags &= ~(1UL << flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int test_cpu_flag(int flag)
|
static inline int test_cpu_flag(int flag)
|
||||||
{
|
{
|
||||||
return !!(S390_lowcore.cpu_flags & (1U << flag));
|
return !!(S390_lowcore.cpu_flags & (1UL << flag));
|
||||||
}
|
}
|
||||||
|
|
||||||
#define arch_needs_cpu() test_cpu_flag(CIF_NOHZ_DELAY)
|
#define arch_needs_cpu() test_cpu_flag(CIF_NOHZ_DELAY)
|
||||||
|
|
|
@ -128,17 +128,17 @@ struct per_struct_kernel {
|
||||||
|
|
||||||
static inline void set_pt_regs_flag(struct pt_regs *regs, int flag)
|
static inline void set_pt_regs_flag(struct pt_regs *regs, int flag)
|
||||||
{
|
{
|
||||||
regs->flags |= (1U << flag);
|
regs->flags |= (1UL << flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void clear_pt_regs_flag(struct pt_regs *regs, int flag)
|
static inline void clear_pt_regs_flag(struct pt_regs *regs, int flag)
|
||||||
{
|
{
|
||||||
regs->flags &= ~(1U << flag);
|
regs->flags &= ~(1UL << flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int test_pt_regs_flag(struct pt_regs *regs, int flag)
|
static inline int test_pt_regs_flag(struct pt_regs *regs, int flag)
|
||||||
{
|
{
|
||||||
return !!(regs->flags & (1U << flag));
|
return !!(regs->flags & (1UL << flag));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Reference in a new issue