select GENERIC_SCHED_CLOCK
        select GENERIC_SMP_IDLE_THREAD
        select HANDLE_DOMAIN_IRQ
+       select HANDLE_DOMAIN_IRQ_IRQENTRY
        select HARDIRQS_SW_RESEND
        select HAVE_ARCH_AUDITSYSCALL if AEABI && !OABI_COMPAT
        select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6
 
        select GENERIC_GETTIMEOFDAY
        select GENERIC_VDSO_TIME_NS
        select HANDLE_DOMAIN_IRQ
+       select HANDLE_DOMAIN_IRQ_IRQENTRY
        select HARDIRQS_SW_RESEND
        select HAVE_MOVE_PMD
        select HAVE_MOVE_PUD
 
        select GENERIC_SMP_IDLE_THREAD
        select GENERIC_TIME_VSYSCALL if MMU && 64BIT
        select HANDLE_DOMAIN_IRQ
+       select HANDLE_DOMAIN_IRQ_IRQENTRY
        select HAVE_ARCH_AUDITSYSCALL
        select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
        select HAVE_ARCH_JUMP_LABEL_RELATIVE if !XIP_KERNEL
 
 EXPORT_SYMBOL_GPL(generic_handle_domain_irq);
 
 #ifdef CONFIG_HANDLE_DOMAIN_IRQ
+#ifdef CONFIG_HANDLE_DOMAIN_IRQ_IRQENTRY
 /**
  * handle_domain_irq - Invoke the handler for a HW irq belonging to a domain,
  *                     usually for a root interrupt controller
        set_irq_regs(old_regs);
        return ret;
 }
+#else
+/**
+ * handle_domain_irq - Invoke the handler for a HW irq belonging to a domain,
+ *                     usually for a root interrupt controller
+ * @domain:    The domain where to perform the lookup
+ * @hwirq:     The HW irq number to convert to a logical one
+ * @regs:      Register file coming from the low-level handling code
+ *
+ *             This function must be called from an IRQ context.
+ *
+ * Returns:    0 on success, or -EINVAL if conversion has failed
+ */
+int handle_domain_irq(struct irq_domain *domain,
+                     unsigned int hwirq, struct pt_regs *regs)
+{
+       struct pt_regs *old_regs = set_irq_regs(regs);
+       int ret;
+
+       /*
+        * IRQ context needs to be setup earlier.
+        */
+       WARN_ON(!in_irq());
+
+       ret = generic_handle_domain_irq(domain, hwirq);
+
+       set_irq_regs(old_regs);
+       return ret;
+}
+#endif
 
 /**
  * handle_domain_nmi - Invoke the handler for a HW irq belonging to a domain