|  | /* SPDX-License-Identifier: GPL-2.0 */ | 
|  | #ifndef _ASM_IA64_XTP_H | 
|  | #define _ASM_IA64_XTP_H | 
|  |  | 
|  | #include <asm/io.h> | 
|  |  | 
|  | #ifdef CONFIG_SMP | 
|  |  | 
|  | #define XTP_OFFSET		0x1e0008 | 
|  |  | 
|  | #define SMP_IRQ_REDIRECTION	(1 << 0) | 
|  | #define SMP_IPI_REDIRECTION	(1 << 1) | 
|  |  | 
|  | extern unsigned char smp_int_redirect; | 
|  |  | 
|  | /* | 
|  | * XTP control functions: | 
|  | *	min_xtp   : route all interrupts to this CPU | 
|  | *	normal_xtp: nominal XTP value | 
|  | *	max_xtp   : never deliver interrupts to this CPU. | 
|  | */ | 
|  |  | 
|  | static inline void | 
|  | min_xtp (void) | 
|  | { | 
|  | if (smp_int_redirect & SMP_IRQ_REDIRECTION) | 
|  | writeb(0x00, ipi_base_addr + XTP_OFFSET); /* XTP to min */ | 
|  | } | 
|  |  | 
|  | static inline void | 
|  | normal_xtp (void) | 
|  | { | 
|  | if (smp_int_redirect & SMP_IRQ_REDIRECTION) | 
|  | writeb(0x08, ipi_base_addr + XTP_OFFSET); /* XTP normal */ | 
|  | } | 
|  |  | 
|  | static inline void | 
|  | max_xtp (void) | 
|  | { | 
|  | if (smp_int_redirect & SMP_IRQ_REDIRECTION) | 
|  | writeb(0x0f, ipi_base_addr + XTP_OFFSET); /* Set XTP to max */ | 
|  | } | 
|  |  | 
|  | #endif /* CONFIG_SMP */ | 
|  |  | 
|  | #endif /* _ASM_IA64_XTP_Hy */ |