| /* 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 */ |