Blackfin: inline I-pipe bypass code in ret_from_exception
authorPhilippe Gerum <rpm@xenomai.org>
Mon, 22 Jun 2009 16:26:22 +0000 (18:26 +0200)
committerMike Frysinger <vapier@gentoo.org>
Thu, 17 Sep 2009 01:28:42 +0000 (21:28 -0400)
Signed-off-by: Philippe Gerum <rpm@xenomai.org>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
arch/blackfin/kernel/ipipe.c
arch/blackfin/mach-common/entry.S

index be4f24e..5d73823 100644 (file)
@@ -164,11 +164,6 @@ out:
                __clear_bit(IPIPE_STALL_FLAG, &p->status);
 }
 
-int __ipipe_check_root(void)
-{
-       return ipipe_root_domain_p;
-}
-
 void __ipipe_enable_irqdesc(struct ipipe_domain *ipd, unsigned irq)
 {
        struct irq_desc *desc = irq_to_desc(irq);
index 2c58b60..cbc5b6d 100644 (file)
@@ -840,13 +840,13 @@ ENDPROC(_resume)
 
 ENTRY(_ret_from_exception)
 #ifdef CONFIG_IPIPE
-       [--sp] = rets;
-       SP += -12;
-       call ___ipipe_check_root
-       SP += 12
-       rets = [sp++];
-       cc = r0 == 0;
-       if cc jump 4f;                /* not on behalf of Linux, get out */
+       p2.l = _per_cpu__ipipe_percpu_domain;
+       p2.h = _per_cpu__ipipe_percpu_domain;
+       r0.l = _ipipe_root;
+       r0.h = _ipipe_root;
+       r2 = [p2];
+       cc = r0 == r2;
+       if !cc jump 4f;  /* not on behalf of the root domain, get out */
 #endif /* CONFIG_IPIPE */
        p2.l = lo(IPEND);
        p2.h = hi(IPEND);