mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	xtensa: clean up WSR*/RSR*/get_sr/set_sr
WSR and RSR are too generic and collide with other macro definitions in the kernel causing warnings in allmodconfig builds. Drop WSR and RSR macros and WSR_* and RSR_* variants. Change get_sr and set_sr to xtensa_get_sr and xtensa_set_sr. Fix up users. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
This commit is contained in:
		
							parent
							
								
									c066cc8af9
								
							
						
					
					
						commit
						cad6fade6e
					
				
					 11 changed files with 50 additions and 69 deletions
				
			
		| 
						 | 
					@ -12,7 +12,6 @@
 | 
				
			||||||
#ifndef _XTENSA_COPROCESSOR_H
 | 
					#ifndef _XTENSA_COPROCESSOR_H
 | 
				
			||||||
#define _XTENSA_COPROCESSOR_H
 | 
					#define _XTENSA_COPROCESSOR_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <linux/stringify.h>
 | 
					 | 
				
			||||||
#include <variant/core.h>
 | 
					#include <variant/core.h>
 | 
				
			||||||
#include <variant/tie.h>
 | 
					#include <variant/tie.h>
 | 
				
			||||||
#include <asm/types.h>
 | 
					#include <asm/types.h>
 | 
				
			||||||
| 
						 | 
					@ -90,19 +89,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef __ASSEMBLY__
 | 
					#ifndef __ASSEMBLY__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
#if XCHAL_HAVE_CP
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define RSR_CPENABLE(x)	do {						  \
 | 
					 | 
				
			||||||
	__asm__ __volatile__("rsr %0, cpenable" : "=a" (x));		  \
 | 
					 | 
				
			||||||
	} while(0);
 | 
					 | 
				
			||||||
#define WSR_CPENABLE(x)	do {						  \
 | 
					 | 
				
			||||||
	__asm__ __volatile__("wsr %0, cpenable; rsync" :: "a" (x));	  \
 | 
					 | 
				
			||||||
	} while(0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif /* XCHAL_HAVE_CP */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Additional registers.
 | 
					 * Additional registers.
 | 
				
			||||||
 * We define three types of additional registers:
 | 
					 * We define three types of additional registers:
 | 
				
			||||||
| 
						 | 
					@ -162,12 +148,6 @@ extern void coprocessor_flush(struct thread_info*, int);
 | 
				
			||||||
extern void coprocessor_release_all(struct thread_info*);
 | 
					extern void coprocessor_release_all(struct thread_info*);
 | 
				
			||||||
extern void coprocessor_flush_all(struct thread_info*);
 | 
					extern void coprocessor_flush_all(struct thread_info*);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline void coprocessor_clear_cpenable(void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	unsigned long i = 0;
 | 
					 | 
				
			||||||
	WSR_CPENABLE(i);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif	/* XTENSA_HAVE_COPROCESSORS */
 | 
					#endif	/* XTENSA_HAVE_COPROCESSORS */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif	/* !__ASSEMBLY__ */
 | 
					#endif	/* !__ASSEMBLY__ */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,6 +12,7 @@
 | 
				
			||||||
#ifndef _XTENSA_IRQFLAGS_H
 | 
					#ifndef _XTENSA_IRQFLAGS_H
 | 
				
			||||||
#define _XTENSA_IRQFLAGS_H
 | 
					#define _XTENSA_IRQFLAGS_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <linux/stringify.h>
 | 
				
			||||||
#include <linux/types.h>
 | 
					#include <linux/types.h>
 | 
				
			||||||
#include <asm/processor.h>
 | 
					#include <asm/processor.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,7 @@
 | 
				
			||||||
#include <variant/core.h>
 | 
					#include <variant/core.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <linux/compiler.h>
 | 
					#include <linux/compiler.h>
 | 
				
			||||||
 | 
					#include <linux/stringify.h>
 | 
				
			||||||
#include <asm/ptrace.h>
 | 
					#include <asm/ptrace.h>
 | 
				
			||||||
#include <asm/types.h>
 | 
					#include <asm/types.h>
 | 
				
			||||||
#include <asm/regs.h>
 | 
					#include <asm/regs.h>
 | 
				
			||||||
| 
						 | 
					@ -212,11 +213,18 @@ extern unsigned long get_wchan(struct task_struct *p);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Special register access. */
 | 
					/* Special register access. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define WSR(v,sr) __asm__ __volatile__ ("wsr %0,"__stringify(sr) :: "a"(v));
 | 
					#define xtensa_set_sr(x, sr) \
 | 
				
			||||||
#define RSR(v,sr) __asm__ __volatile__ ("rsr %0,"__stringify(sr) : "=a"(v));
 | 
						({ \
 | 
				
			||||||
 | 
						 unsigned int v = (unsigned int)(x); \
 | 
				
			||||||
 | 
						 __asm__ __volatile__ ("wsr %0, "__stringify(sr) :: "a"(v)); \
 | 
				
			||||||
 | 
						 })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define set_sr(x,sr) ({unsigned int v=(unsigned int)x; WSR(v,sr);})
 | 
					#define xtensa_get_sr(sr) \
 | 
				
			||||||
#define get_sr(sr) ({unsigned int v; RSR(v,sr); v; })
 | 
						({ \
 | 
				
			||||||
 | 
						 unsigned int v; \
 | 
				
			||||||
 | 
						 __asm__ __volatile__ ("rsr %0, "__stringify(sr) : "=a"(v)); \
 | 
				
			||||||
 | 
						 v; \
 | 
				
			||||||
 | 
						 })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef XCHAL_HAVE_EXTERN_REGS
 | 
					#ifndef XCHAL_HAVE_EXTERN_REGS
 | 
				
			||||||
#define XCHAL_HAVE_EXTERN_REGS 0
 | 
					#define XCHAL_HAVE_EXTERN_REGS 0
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,7 @@
 | 
				
			||||||
#ifndef _XTENSA_THREAD_INFO_H
 | 
					#ifndef _XTENSA_THREAD_INFO_H
 | 
				
			||||||
#define _XTENSA_THREAD_INFO_H
 | 
					#define _XTENSA_THREAD_INFO_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <linux/stringify.h>
 | 
				
			||||||
#include <asm/kmem_layout.h>
 | 
					#include <asm/kmem_layout.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define CURRENT_SHIFT KERNEL_STACK_SHIFT
 | 
					#define CURRENT_SHIFT KERNEL_STACK_SHIFT
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
#define _XTENSA_TIMEX_H
 | 
					#define _XTENSA_TIMEX_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <asm/processor.h>
 | 
					#include <asm/processor.h>
 | 
				
			||||||
#include <linux/stringify.h>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if XCHAL_NUM_TIMERS > 0 && \
 | 
					#if XCHAL_NUM_TIMERS > 0 && \
 | 
				
			||||||
	XTENSA_INT_LEVEL(XCHAL_TIMER0_INTERRUPT) <= XCHAL_EXCM_LEVEL
 | 
						XTENSA_INT_LEVEL(XCHAL_TIMER0_INTERRUPT) <= XCHAL_EXCM_LEVEL
 | 
				
			||||||
| 
						 | 
					@ -40,33 +39,24 @@ void local_timer_setup(unsigned cpu);
 | 
				
			||||||
 * Register access.
 | 
					 * Register access.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define WSR_CCOUNT(r)	  asm volatile ("wsr %0, ccount" :: "a" (r))
 | 
					 | 
				
			||||||
#define RSR_CCOUNT(r)	  asm volatile ("rsr %0, ccount" : "=a" (r))
 | 
					 | 
				
			||||||
#define WSR_CCOMPARE(x,r) asm volatile ("wsr %0,"__stringify(SREG_CCOMPARE)"+"__stringify(x) :: "a"(r))
 | 
					 | 
				
			||||||
#define RSR_CCOMPARE(x,r) asm volatile ("rsr %0,"__stringify(SREG_CCOMPARE)"+"__stringify(x) : "=a"(r))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static inline unsigned long get_ccount (void)
 | 
					static inline unsigned long get_ccount (void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	unsigned long ccount;
 | 
						return xtensa_get_sr(ccount);
 | 
				
			||||||
	RSR_CCOUNT(ccount);
 | 
					 | 
				
			||||||
	return ccount;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline void set_ccount (unsigned long ccount)
 | 
					static inline void set_ccount (unsigned long ccount)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	WSR_CCOUNT(ccount);
 | 
						xtensa_set_sr(ccount, ccount);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline unsigned long get_linux_timer (void)
 | 
					static inline unsigned long get_linux_timer (void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	unsigned ccompare;
 | 
						return xtensa_get_sr(SREG_CCOMPARE + LINUX_TIMER);
 | 
				
			||||||
	RSR_CCOMPARE(LINUX_TIMER, ccompare);
 | 
					 | 
				
			||||||
	return ccompare;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline void set_linux_timer (unsigned long ccompare)
 | 
					static inline void set_linux_timer (unsigned long ccompare)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	WSR_CCOMPARE(LINUX_TIMER, ccompare);
 | 
						xtensa_set_sr(ccompare, SREG_CCOMPARE + LINUX_TIMER);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif	/* _XTENSA_TIMEX_H */
 | 
					#endif	/* _XTENSA_TIMEX_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -101,30 +101,30 @@ static void xtensa_wsr(unsigned long v, u8 sr)
 | 
				
			||||||
	switch (sr) {
 | 
						switch (sr) {
 | 
				
			||||||
#if XCHAL_NUM_IBREAK > 0
 | 
					#if XCHAL_NUM_IBREAK > 0
 | 
				
			||||||
	case SREG_IBREAKA + 0:
 | 
						case SREG_IBREAKA + 0:
 | 
				
			||||||
		WSR(v, SREG_IBREAKA + 0);
 | 
							xtensa_set_sr(v, SREG_IBREAKA + 0);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if XCHAL_NUM_IBREAK > 1
 | 
					#if XCHAL_NUM_IBREAK > 1
 | 
				
			||||||
	case SREG_IBREAKA + 1:
 | 
						case SREG_IBREAKA + 1:
 | 
				
			||||||
		WSR(v, SREG_IBREAKA + 1);
 | 
							xtensa_set_sr(v, SREG_IBREAKA + 1);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if XCHAL_NUM_DBREAK > 0
 | 
					#if XCHAL_NUM_DBREAK > 0
 | 
				
			||||||
	case SREG_DBREAKA + 0:
 | 
						case SREG_DBREAKA + 0:
 | 
				
			||||||
		WSR(v, SREG_DBREAKA + 0);
 | 
							xtensa_set_sr(v, SREG_DBREAKA + 0);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case SREG_DBREAKC + 0:
 | 
						case SREG_DBREAKC + 0:
 | 
				
			||||||
		WSR(v, SREG_DBREAKC + 0);
 | 
							xtensa_set_sr(v, SREG_DBREAKC + 0);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if XCHAL_NUM_DBREAK > 1
 | 
					#if XCHAL_NUM_DBREAK > 1
 | 
				
			||||||
	case SREG_DBREAKA + 1:
 | 
						case SREG_DBREAKA + 1:
 | 
				
			||||||
		WSR(v, SREG_DBREAKA + 1);
 | 
							xtensa_set_sr(v, SREG_DBREAKA + 1);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	case SREG_DBREAKC + 1:
 | 
						case SREG_DBREAKC + 1:
 | 
				
			||||||
		WSR(v, SREG_DBREAKC + 1);
 | 
							xtensa_set_sr(v, SREG_DBREAKC + 1);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -150,8 +150,8 @@ static void set_ibreak_regs(int reg, struct perf_event *bp)
 | 
				
			||||||
	unsigned long ibreakenable;
 | 
						unsigned long ibreakenable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	xtensa_wsr(info->address, SREG_IBREAKA + reg);
 | 
						xtensa_wsr(info->address, SREG_IBREAKA + reg);
 | 
				
			||||||
	RSR(ibreakenable, SREG_IBREAKENABLE);
 | 
						ibreakenable = xtensa_get_sr(SREG_IBREAKENABLE);
 | 
				
			||||||
	WSR(ibreakenable | (1 << reg), SREG_IBREAKENABLE);
 | 
						xtensa_set_sr(ibreakenable | (1 << reg), SREG_IBREAKENABLE);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void set_dbreak_regs(int reg, struct perf_event *bp)
 | 
					static void set_dbreak_regs(int reg, struct perf_event *bp)
 | 
				
			||||||
| 
						 | 
					@ -214,8 +214,9 @@ void arch_uninstall_hw_breakpoint(struct perf_event *bp)
 | 
				
			||||||
		/* Breakpoint */
 | 
							/* Breakpoint */
 | 
				
			||||||
		i = free_slot(this_cpu_ptr(bp_on_reg), XCHAL_NUM_IBREAK, bp);
 | 
							i = free_slot(this_cpu_ptr(bp_on_reg), XCHAL_NUM_IBREAK, bp);
 | 
				
			||||||
		if (i >= 0) {
 | 
							if (i >= 0) {
 | 
				
			||||||
			RSR(ibreakenable, SREG_IBREAKENABLE);
 | 
								ibreakenable = xtensa_get_sr(SREG_IBREAKENABLE);
 | 
				
			||||||
			WSR(ibreakenable & ~(1 << i), SREG_IBREAKENABLE);
 | 
								xtensa_set_sr(ibreakenable & ~(1 << i),
 | 
				
			||||||
 | 
									      SREG_IBREAKENABLE);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		/* Watchpoint */
 | 
							/* Watchpoint */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -87,7 +87,7 @@ void coprocessor_release_all(struct thread_info *ti)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ti->cpenable = cpenable;
 | 
						ti->cpenable = cpenable;
 | 
				
			||||||
	coprocessor_clear_cpenable();
 | 
						xtensa_set_sr(0, cpenable);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	preempt_enable();
 | 
						preempt_enable();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -99,16 +99,16 @@ void coprocessor_flush_all(struct thread_info *ti)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	preempt_disable();
 | 
						preempt_disable();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	RSR_CPENABLE(old_cpenable);
 | 
						old_cpenable = xtensa_get_sr(cpenable);
 | 
				
			||||||
	cpenable = ti->cpenable;
 | 
						cpenable = ti->cpenable;
 | 
				
			||||||
	WSR_CPENABLE(cpenable);
 | 
						xtensa_set_sr(cpenable, cpenable);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (i = 0; i < XCHAL_CP_MAX; i++) {
 | 
						for (i = 0; i < XCHAL_CP_MAX; i++) {
 | 
				
			||||||
		if ((cpenable & 1) != 0 && coprocessor_owner[i] == ti)
 | 
							if ((cpenable & 1) != 0 && coprocessor_owner[i] == ti)
 | 
				
			||||||
			coprocessor_flush(ti, i);
 | 
								coprocessor_flush(ti, i);
 | 
				
			||||||
		cpenable >>= 1;
 | 
							cpenable >>= 1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	WSR_CPENABLE(old_cpenable);
 | 
						xtensa_set_sr(old_cpenable, cpenable);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	preempt_enable();
 | 
						preempt_enable();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -318,9 +318,9 @@ static inline int mem_reserve(unsigned long start, unsigned long end)
 | 
				
			||||||
void __init setup_arch(char **cmdline_p)
 | 
					void __init setup_arch(char **cmdline_p)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pr_info("config ID: %08x:%08x\n",
 | 
						pr_info("config ID: %08x:%08x\n",
 | 
				
			||||||
		get_sr(SREG_EPC), get_sr(SREG_EXCSAVE));
 | 
							xtensa_get_sr(SREG_EPC), xtensa_get_sr(SREG_EXCSAVE));
 | 
				
			||||||
	if (get_sr(SREG_EPC) != XCHAL_HW_CONFIGID0 ||
 | 
						if (xtensa_get_sr(SREG_EPC) != XCHAL_HW_CONFIGID0 ||
 | 
				
			||||||
	    get_sr(SREG_EXCSAVE) != XCHAL_HW_CONFIGID1)
 | 
						    xtensa_get_sr(SREG_EXCSAVE) != XCHAL_HW_CONFIGID1)
 | 
				
			||||||
		pr_info("built for config ID: %08x:%08x\n",
 | 
							pr_info("built for config ID: %08x:%08x\n",
 | 
				
			||||||
			XCHAL_HW_CONFIGID0, XCHAL_HW_CONFIGID1);
 | 
								XCHAL_HW_CONFIGID0, XCHAL_HW_CONFIGID1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -596,7 +596,7 @@ c_show(struct seq_file *f, void *slot)
 | 
				
			||||||
		      num_online_cpus(),
 | 
							      num_online_cpus(),
 | 
				
			||||||
		      cpumask_pr_args(cpu_online_mask),
 | 
							      cpumask_pr_args(cpu_online_mask),
 | 
				
			||||||
		      XCHAL_BUILD_UNIQUE_ID,
 | 
							      XCHAL_BUILD_UNIQUE_ID,
 | 
				
			||||||
		      get_sr(SREG_EPC), get_sr(SREG_EXCSAVE),
 | 
							      xtensa_get_sr(SREG_EPC), xtensa_get_sr(SREG_EXCSAVE),
 | 
				
			||||||
		      XCHAL_HAVE_BE ?  "big" : "little",
 | 
							      XCHAL_HAVE_BE ?  "big" : "little",
 | 
				
			||||||
		      ccount_freq/1000000,
 | 
							      ccount_freq/1000000,
 | 
				
			||||||
		      (ccount_freq/10000) % 100,
 | 
							      (ccount_freq/10000) % 100,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -213,8 +213,8 @@ extern void do_IRQ(int, struct pt_regs *);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline void check_valid_nmi(void)
 | 
					static inline void check_valid_nmi(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	unsigned intread = get_sr(interrupt);
 | 
						unsigned intread = xtensa_get_sr(interrupt);
 | 
				
			||||||
	unsigned intenable = get_sr(intenable);
 | 
						unsigned intenable = xtensa_get_sr(intenable);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	BUG_ON(intread & intenable &
 | 
						BUG_ON(intread & intenable &
 | 
				
			||||||
	       ~(XTENSA_INTLEVEL_ANDBELOW_MASK(PROFILING_INTLEVEL) ^
 | 
						       ~(XTENSA_INTLEVEL_ANDBELOW_MASK(PROFILING_INTLEVEL) ^
 | 
				
			||||||
| 
						 | 
					@ -271,8 +271,8 @@ void do_interrupt(struct pt_regs *regs)
 | 
				
			||||||
	irq_enter();
 | 
						irq_enter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (;;) {
 | 
						for (;;) {
 | 
				
			||||||
		unsigned intread = get_sr(interrupt);
 | 
							unsigned intread = xtensa_get_sr(interrupt);
 | 
				
			||||||
		unsigned intenable = get_sr(intenable);
 | 
							unsigned intenable = xtensa_get_sr(intenable);
 | 
				
			||||||
		unsigned int_at_level = intread & intenable;
 | 
							unsigned int_at_level = intread & intenable;
 | 
				
			||||||
		unsigned level;
 | 
							unsigned level;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -62,7 +62,7 @@ void secondary_init_irq(void)
 | 
				
			||||||
	__this_cpu_write(cached_irq_mask,
 | 
						__this_cpu_write(cached_irq_mask,
 | 
				
			||||||
			XCHAL_INTTYPE_MASK_EXTERN_EDGE |
 | 
								XCHAL_INTTYPE_MASK_EXTERN_EDGE |
 | 
				
			||||||
			XCHAL_INTTYPE_MASK_EXTERN_LEVEL);
 | 
								XCHAL_INTTYPE_MASK_EXTERN_LEVEL);
 | 
				
			||||||
	set_sr(XCHAL_INTTYPE_MASK_EXTERN_EDGE |
 | 
						xtensa_set_sr(XCHAL_INTTYPE_MASK_EXTERN_EDGE |
 | 
				
			||||||
			XCHAL_INTTYPE_MASK_EXTERN_LEVEL, intenable);
 | 
								XCHAL_INTTYPE_MASK_EXTERN_LEVEL, intenable);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -77,7 +77,7 @@ static void xtensa_mx_irq_mask(struct irq_data *d)
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		mask = __this_cpu_read(cached_irq_mask) & ~mask;
 | 
							mask = __this_cpu_read(cached_irq_mask) & ~mask;
 | 
				
			||||||
		__this_cpu_write(cached_irq_mask, mask);
 | 
							__this_cpu_write(cached_irq_mask, mask);
 | 
				
			||||||
		set_sr(mask, intenable);
 | 
							xtensa_set_sr(mask, intenable);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -92,7 +92,7 @@ static void xtensa_mx_irq_unmask(struct irq_data *d)
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		mask |= __this_cpu_read(cached_irq_mask);
 | 
							mask |= __this_cpu_read(cached_irq_mask);
 | 
				
			||||||
		__this_cpu_write(cached_irq_mask, mask);
 | 
							__this_cpu_write(cached_irq_mask, mask);
 | 
				
			||||||
		set_sr(mask, intenable);
 | 
							xtensa_set_sr(mask, intenable);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -108,12 +108,12 @@ static void xtensa_mx_irq_disable(struct irq_data *d)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void xtensa_mx_irq_ack(struct irq_data *d)
 | 
					static void xtensa_mx_irq_ack(struct irq_data *d)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	set_sr(1 << d->hwirq, intclear);
 | 
						xtensa_set_sr(1 << d->hwirq, intclear);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int xtensa_mx_irq_retrigger(struct irq_data *d)
 | 
					static int xtensa_mx_irq_retrigger(struct irq_data *d)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	set_sr(1 << d->hwirq, intset);
 | 
						xtensa_set_sr(1 << d->hwirq, intset);
 | 
				
			||||||
	return 1;
 | 
						return 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -44,13 +44,13 @@ static const struct irq_domain_ops xtensa_irq_domain_ops = {
 | 
				
			||||||
static void xtensa_irq_mask(struct irq_data *d)
 | 
					static void xtensa_irq_mask(struct irq_data *d)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	cached_irq_mask &= ~(1 << d->hwirq);
 | 
						cached_irq_mask &= ~(1 << d->hwirq);
 | 
				
			||||||
	set_sr(cached_irq_mask, intenable);
 | 
						xtensa_set_sr(cached_irq_mask, intenable);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void xtensa_irq_unmask(struct irq_data *d)
 | 
					static void xtensa_irq_unmask(struct irq_data *d)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	cached_irq_mask |= 1 << d->hwirq;
 | 
						cached_irq_mask |= 1 << d->hwirq;
 | 
				
			||||||
	set_sr(cached_irq_mask, intenable);
 | 
						xtensa_set_sr(cached_irq_mask, intenable);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void xtensa_irq_enable(struct irq_data *d)
 | 
					static void xtensa_irq_enable(struct irq_data *d)
 | 
				
			||||||
| 
						 | 
					@ -65,12 +65,12 @@ static void xtensa_irq_disable(struct irq_data *d)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void xtensa_irq_ack(struct irq_data *d)
 | 
					static void xtensa_irq_ack(struct irq_data *d)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	set_sr(1 << d->hwirq, intclear);
 | 
						xtensa_set_sr(1 << d->hwirq, intclear);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int xtensa_irq_retrigger(struct irq_data *d)
 | 
					static int xtensa_irq_retrigger(struct irq_data *d)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	set_sr(1 << d->hwirq, intset);
 | 
						xtensa_set_sr(1 << d->hwirq, intset);
 | 
				
			||||||
	return 1;
 | 
						return 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue