Skip to content

Commit

Permalink
um: fix IRQ flag handling naming
Browse files Browse the repository at this point in the history
Commit df9ee29 ("Fix IRQ flag handling naming") changed the IRQ flag
handling naming scheme and broke UML:

In file included from arch/um/include/asm/fixmap.h:5,
                 from arch/um/include/shared/um_uaccess.h:10,
                 from arch/um/include/asm/uaccess.h:41,
                 from arch/um/include/asm/thread_info.h:13,
                 from include/linux/thread_info.h:56,
                 from include/linux/preempt.h:9,
                 from include/linux/spinlock.h:50,
                 from include/linux/seqlock.h:29,
                 from include/linux/time.h:8,
                 from include/linux/stat.h:60,
                 from include/linux/module.h:10,
                 from init/main.c:13:
arch/um/include/asm/system.h:11:1: warning: "local_save_flags" redefined

This patch brings the new scheme to UML and makes it work again.

Signed-off-by: Richard Weinberger <[email protected]>
Acked-by: David Howells <[email protected]>
Cc: Jeff Dike <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
richardweinberger authored and torvalds committed Oct 26, 2010
1 parent 8474b59 commit dbec921
Showing 1 changed file with 32 additions and 17 deletions.
49 changes: 32 additions & 17 deletions arch/um/include/asm/system.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,38 @@ extern int set_signals(int enable);
extern void block_signals(void);
extern void unblock_signals(void);

#define local_save_flags(flags) do { typecheck(unsigned long, flags); \
(flags) = get_signals(); } while(0)
#define local_irq_restore(flags) do { typecheck(unsigned long, flags); \
set_signals(flags); } while(0)

#define local_irq_save(flags) do { local_save_flags(flags); \
local_irq_disable(); } while(0)

#define local_irq_enable() unblock_signals()
#define local_irq_disable() block_signals()

#define irqs_disabled() \
({ \
unsigned long flags; \
local_save_flags(flags); \
(flags == 0); \
})
static inline unsigned long arch_local_save_flags(void)
{
return get_signals();
}

static inline void arch_local_irq_restore(unsigned long flags)
{
set_signals(flags);
}

static inline void arch_local_irq_enable(void)
{
unblock_signals();
}

static inline void arch_local_irq_disable(void)
{
block_signals();
}

static inline unsigned long arch_local_irq_save(void)
{
unsigned long flags;
flags = arch_local_save_flags();
arch_local_irq_disable();
return flags;
}

static inline bool arch_irqs_disabled(void)
{
return arch_local_save_flags() == 0;
}

extern void *_switch_to(void *prev, void *next, void *last);
#define switch_to(prev, next, last) prev = _switch_to(prev, next, last)
Expand Down

0 comments on commit dbec921

Please sign in to comment.