Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=edbe7075d144b35e8232ca32f373c1e0c26ff085
Commit:     edbe7075d144b35e8232ca32f373c1e0c26ff085
Parent:     8e75ad8908bd653191b19347ecccb4078cb17b74
Author:     Bjorn Helgaas <[EMAIL PROTECTED]>
AuthorDate: Thu Sep 20 14:21:11 2007 -0600
Committer:  Tony Luck <[EMAIL PROTECTED]>
CommitDate: Fri Oct 12 15:11:22 2007 -0700

    [IA64] abstract SAL_CALL wrapper to allow other firmware entry points
    
    SAL_CALL() always calls through the ia64_sal function pointer.  I am adding
    new functionality that needs the same conventions as SAL_CALL (FP regs
    saved/restored, sal_lock acquired, etc), but doesn't use the ia64_sal
    function pointer.
    
    This patch pulls the body of SAL_CALL out into a new "IA64_FW_CALL" that
    takes care of these calling conventions, but allows the caller to specify
    either ia64_sal or some other firmware entry point.
    
    Signed-off-by: Bjorn Helgaas <[EMAIL PROTECTED]>
    Signed-off-by: Len Brown <[EMAIL PROTECTED]>
    Signed-off-by: Tony Luck <[EMAIL PROTECTED]>
---
 include/asm-ia64/sal.h |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/include/asm-ia64/sal.h b/include/asm-ia64/sal.h
index 46cadf5..1f5412d 100644
--- a/include/asm-ia64/sal.h
+++ b/include/asm-ia64/sal.h
@@ -46,25 +46,28 @@
 extern spinlock_t sal_lock;
 
 /* SAL spec _requires_ eight args for each call. */
-#define __SAL_CALL(result,a0,a1,a2,a3,a4,a5,a6,a7)     \
-       result = (*ia64_sal)(a0,a1,a2,a3,a4,a5,a6,a7)
+#define __IA64_FW_CALL(entry,result,a0,a1,a2,a3,a4,a5,a6,a7)   \
+       result = (*entry)(a0,a1,a2,a3,a4,a5,a6,a7)
 
-# define SAL_CALL(result,args...) do {                         \
+# define IA64_FW_CALL(entry,result,args...) do {               \
        unsigned long __ia64_sc_flags;                          \
        struct ia64_fpreg __ia64_sc_fr[6];                      \
        ia64_save_scratch_fpregs(__ia64_sc_fr);                 \
        spin_lock_irqsave(&sal_lock, __ia64_sc_flags);          \
-       __SAL_CALL(result, args);                               \
+       __IA64_FW_CALL(entry, result, args);                    \
        spin_unlock_irqrestore(&sal_lock, __ia64_sc_flags);     \
        ia64_load_scratch_fpregs(__ia64_sc_fr);                 \
 } while (0)
 
+# define SAL_CALL(result,args...)                      \
+       IA64_FW_CALL(ia64_sal, result, args);
+
 # define SAL_CALL_NOLOCK(result,args...) do {          \
        unsigned long __ia64_scn_flags;                 \
        struct ia64_fpreg __ia64_scn_fr[6];             \
        ia64_save_scratch_fpregs(__ia64_scn_fr);        \
        local_irq_save(__ia64_scn_flags);               \
-       __SAL_CALL(result, args);                       \
+       __IA64_FW_CALL(ia64_sal, result, args);         \
        local_irq_restore(__ia64_scn_flags);            \
        ia64_load_scratch_fpregs(__ia64_scn_fr);        \
 } while (0)
@@ -73,7 +76,7 @@ extern spinlock_t sal_lock;
        struct ia64_fpreg __ia64_scs_fr[6];             \
        ia64_save_scratch_fpregs(__ia64_scs_fr);        \
        preempt_disable();                              \
-       __SAL_CALL(result, args);                       \
+       __IA64_FW_CALL(ia64_sal, result, args);         \
        preempt_enable();                               \
        ia64_load_scratch_fpregs(__ia64_scs_fr);        \
 } while (0)
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to