mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 05:14:38 +00:00 
			
		
		
		
	 df9ee29270
			
		
	
	
		df9ee29270
		
	
	
	
	
		
			
			Fix the IRQ flag handling naming. In linux/irqflags.h under one configuration, it maps: local_irq_enable() -> raw_local_irq_enable() local_irq_disable() -> raw_local_irq_disable() local_irq_save() -> raw_local_irq_save() ... and under the other configuration, it maps: raw_local_irq_enable() -> local_irq_enable() raw_local_irq_disable() -> local_irq_disable() raw_local_irq_save() -> local_irq_save() ... This is quite confusing. There should be one set of names expected of the arch, and this should be wrapped to give another set of names that are expected by users of this facility. Change this to have the arch provide: flags = arch_local_save_flags() flags = arch_local_irq_save() arch_local_irq_restore(flags) arch_local_irq_disable() arch_local_irq_enable() arch_irqs_disabled_flags(flags) arch_irqs_disabled() arch_safe_halt() Then linux/irqflags.h wraps these to provide: raw_local_save_flags(flags) raw_local_irq_save(flags) raw_local_irq_restore(flags) raw_local_irq_disable() raw_local_irq_enable() raw_irqs_disabled_flags(flags) raw_irqs_disabled() raw_safe_halt() with type checking on the flags 'arguments', and then wraps those to provide: local_save_flags(flags) local_irq_save(flags) local_irq_restore(flags) local_irq_disable() local_irq_enable() irqs_disabled_flags(flags) irqs_disabled() safe_halt() with tracing included if enabled. The arch functions can now all be inline functions rather than some of them having to be macros. Signed-off-by: David Howells <dhowells@redhat.com> [X86, FRV, MN10300] Signed-off-by: Chris Metcalf <cmetcalf@tilera.com> [Tile] Signed-off-by: Michal Simek <monstr@monstr.eu> [Microblaze] Tested-by: Catalin Marinas <catalin.marinas@arm.com> [ARM] Acked-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com> [AVR] Acked-by: Tony Luck <tony.luck@intel.com> [IA-64] Acked-by: Hirokazu Takata <takata@linux-m32r.org> [M32R] Acked-by: Greg Ungerer <gerg@uclinux.org> [M68K/M68KNOMMU] Acked-by: Ralf Baechle <ralf@linux-mips.org> [MIPS] Acked-by: Kyle McMartin <kyle@mcmartin.ca> [PA-RISC] Acked-by: Paul Mackerras <paulus@samba.org> [PowerPC] Acked-by: Martin Schwidefsky <schwidefsky@de.ibm.com> [S390] Acked-by: Chen Liqin <liqin.chen@sunplusct.com> [Score] Acked-by: Matt Fleming <matt@console-pimps.org> [SH] Acked-by: David S. Miller <davem@davemloft.net> [Sparc] Acked-by: Chris Zankel <chris@zankel.net> [Xtensa] Reviewed-by: Richard Henderson <rth@twiddle.net> [Alpha] Reviewed-by: Yoshinori Sato <ysato@users.sourceforge.jp> [H8300] Cc: starvik@axis.com [CRIS] Cc: jesper.nilsson@axis.com [CRIS] Cc: linux-cris-kernel@axis.com
		
			
				
	
	
		
			44 lines
		
	
	
		
			995 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			995 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * IRQ flags handling
 | |
|  */
 | |
| #ifndef _ASM_IRQFLAGS_H
 | |
| #define _ASM_IRQFLAGS_H
 | |
| 
 | |
| #ifndef __ASSEMBLY__
 | |
| /*
 | |
|  * Get definitions for arch_local_save_flags(x), etc.
 | |
|  */
 | |
| #include <asm/hw_irq.h>
 | |
| 
 | |
| #else
 | |
| #ifdef CONFIG_TRACE_IRQFLAGS
 | |
| /*
 | |
|  * Most of the CPU's IRQ-state tracing is done from assembly code; we
 | |
|  * have to call a C function so call a wrapper that saves all the
 | |
|  * C-clobbered registers.
 | |
|  */
 | |
| #define TRACE_ENABLE_INTS	bl .trace_hardirqs_on
 | |
| #define TRACE_DISABLE_INTS	bl .trace_hardirqs_off
 | |
| #define TRACE_AND_RESTORE_IRQ_PARTIAL(en,skip)	\
 | |
| 	cmpdi	en,0;				\
 | |
| 	bne	95f;				\
 | |
| 	stb	en,PACASOFTIRQEN(r13);		\
 | |
| 	bl	.trace_hardirqs_off;		\
 | |
| 	b	skip;				\
 | |
| 95:	bl	.trace_hardirqs_on;		\
 | |
| 	li	en,1;
 | |
| #define TRACE_AND_RESTORE_IRQ(en)		\
 | |
| 	TRACE_AND_RESTORE_IRQ_PARTIAL(en,96f);	\
 | |
| 	stb	en,PACASOFTIRQEN(r13);	        \
 | |
| 96:
 | |
| #else
 | |
| #define TRACE_ENABLE_INTS
 | |
| #define TRACE_DISABLE_INTS
 | |
| #define TRACE_AND_RESTORE_IRQ_PARTIAL(en,skip)
 | |
| #define TRACE_AND_RESTORE_IRQ(en)		\
 | |
| 	stb	en,PACASOFTIRQEN(r13)
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
| #endif
 |