diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-15 12:57:54 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-15 12:57:54 -0400 |
| commit | 4937ce87959629d31e9b09cf5bdf1e12a305c805 (patch) | |
| tree | f5b93ec4f8271c7109bbd61e09c788e0be7caa85 /include | |
| parent | 4271e0f7e12bdbbd7ce131187aaae2ba5233a309 (diff) | |
| parent | 432a7d6587fc5028421342785f6c9552c9fba175 (diff) | |
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
[IA64] update sn2_defconfig
[IA64] Fix kernel hangup in kdump on INIT
[IA64] Fix kernel panic in kdump on INIT
[IA64] Remove vector from ia64_machine_kexec()
[IA64] Fix race when multiple cpus go through MCA
[IA64] Remove needless delay in MCA rendezvous
[IA64] add driver for ACPI methods to call native firmware
[IA64] abstract SAL_CALL wrapper to allow other firmware entry points
[IA64] perfmon: Remove exit_pfm_fs()
[IA64] tree-wide: Misc __cpu{initdata, init, exit} annotations
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-ia64/mca.h | 2 | ||||
| -rw-r--r-- | include/asm-ia64/sal.h | 15 |
2 files changed, 11 insertions, 6 deletions
diff --git a/include/asm-ia64/mca.h b/include/asm-ia64/mca.h index edd5d01028df..823553bf12e6 100644 --- a/include/asm-ia64/mca.h +++ b/include/asm-ia64/mca.h | |||
| @@ -151,6 +151,8 @@ extern void ia64_mca_cmc_vector_setup(void); | |||
| 151 | extern int ia64_reg_MCA_extension(int (*fn)(void *, struct ia64_sal_os_state *)); | 151 | extern int ia64_reg_MCA_extension(int (*fn)(void *, struct ia64_sal_os_state *)); |
| 152 | extern void ia64_unreg_MCA_extension(void); | 152 | extern void ia64_unreg_MCA_extension(void); |
| 153 | extern u64 ia64_get_rnat(u64 *); | 153 | extern u64 ia64_get_rnat(u64 *); |
| 154 | extern void ia64_mca_printk(const char * fmt, ...) | ||
| 155 | __attribute__ ((format (printf, 1, 2))); | ||
| 154 | 156 | ||
| 155 | struct ia64_mca_notify_die { | 157 | struct ia64_mca_notify_die { |
| 156 | struct ia64_sal_os_state *sos; | 158 | struct ia64_sal_os_state *sos; |
diff --git a/include/asm-ia64/sal.h b/include/asm-ia64/sal.h index 46cadf5aaac5..1f5412d6f9bb 100644 --- a/include/asm-ia64/sal.h +++ b/include/asm-ia64/sal.h | |||
| @@ -46,25 +46,28 @@ | |||
| 46 | extern spinlock_t sal_lock; | 46 | extern spinlock_t sal_lock; |
| 47 | 47 | ||
| 48 | /* SAL spec _requires_ eight args for each call. */ | 48 | /* SAL spec _requires_ eight args for each call. */ |
| 49 | #define __SAL_CALL(result,a0,a1,a2,a3,a4,a5,a6,a7) \ | 49 | #define __IA64_FW_CALL(entry,result,a0,a1,a2,a3,a4,a5,a6,a7) \ |
| 50 | result = (*ia64_sal)(a0,a1,a2,a3,a4,a5,a6,a7) | 50 | result = (*entry)(a0,a1,a2,a3,a4,a5,a6,a7) |
| 51 | 51 | ||
| 52 | # define SAL_CALL(result,args...) do { \ | 52 | # define IA64_FW_CALL(entry,result,args...) do { \ |
| 53 | unsigned long __ia64_sc_flags; \ | 53 | unsigned long __ia64_sc_flags; \ |
| 54 | struct ia64_fpreg __ia64_sc_fr[6]; \ | 54 | struct ia64_fpreg __ia64_sc_fr[6]; \ |
| 55 | ia64_save_scratch_fpregs(__ia64_sc_fr); \ | 55 | ia64_save_scratch_fpregs(__ia64_sc_fr); \ |
| 56 | spin_lock_irqsave(&sal_lock, __ia64_sc_flags); \ | 56 | spin_lock_irqsave(&sal_lock, __ia64_sc_flags); \ |
| 57 | __SAL_CALL(result, args); \ | 57 | __IA64_FW_CALL(entry, result, args); \ |
| 58 | spin_unlock_irqrestore(&sal_lock, __ia64_sc_flags); \ | 58 | spin_unlock_irqrestore(&sal_lock, __ia64_sc_flags); \ |
| 59 | ia64_load_scratch_fpregs(__ia64_sc_fr); \ | 59 | ia64_load_scratch_fpregs(__ia64_sc_fr); \ |
| 60 | } while (0) | 60 | } while (0) |
| 61 | 61 | ||
| 62 | # define SAL_CALL(result,args...) \ | ||
| 63 | IA64_FW_CALL(ia64_sal, result, args); | ||
| 64 | |||
| 62 | # define SAL_CALL_NOLOCK(result,args...) do { \ | 65 | # define SAL_CALL_NOLOCK(result,args...) do { \ |
| 63 | unsigned long __ia64_scn_flags; \ | 66 | unsigned long __ia64_scn_flags; \ |
| 64 | struct ia64_fpreg __ia64_scn_fr[6]; \ | 67 | struct ia64_fpreg __ia64_scn_fr[6]; \ |
| 65 | ia64_save_scratch_fpregs(__ia64_scn_fr); \ | 68 | ia64_save_scratch_fpregs(__ia64_scn_fr); \ |
| 66 | local_irq_save(__ia64_scn_flags); \ | 69 | local_irq_save(__ia64_scn_flags); \ |
| 67 | __SAL_CALL(result, args); \ | 70 | __IA64_FW_CALL(ia64_sal, result, args); \ |
| 68 | local_irq_restore(__ia64_scn_flags); \ | 71 | local_irq_restore(__ia64_scn_flags); \ |
| 69 | ia64_load_scratch_fpregs(__ia64_scn_fr); \ | 72 | ia64_load_scratch_fpregs(__ia64_scn_fr); \ |
| 70 | } while (0) | 73 | } while (0) |
| @@ -73,7 +76,7 @@ extern spinlock_t sal_lock; | |||
| 73 | struct ia64_fpreg __ia64_scs_fr[6]; \ | 76 | struct ia64_fpreg __ia64_scs_fr[6]; \ |
| 74 | ia64_save_scratch_fpregs(__ia64_scs_fr); \ | 77 | ia64_save_scratch_fpregs(__ia64_scs_fr); \ |
| 75 | preempt_disable(); \ | 78 | preempt_disable(); \ |
| 76 | __SAL_CALL(result, args); \ | 79 | __IA64_FW_CALL(ia64_sal, result, args); \ |
| 77 | preempt_enable(); \ | 80 | preempt_enable(); \ |
| 78 | ia64_load_scratch_fpregs(__ia64_scs_fr); \ | 81 | ia64_load_scratch_fpregs(__ia64_scs_fr); \ |
| 79 | } while (0) | 82 | } while (0) |
