diff options
Diffstat (limited to 'include/asm-ia64/sal.h')
-rw-r--r-- | include/asm-ia64/sal.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/include/asm-ia64/sal.h b/include/asm-ia64/sal.h index ea1ed377de4c..29df88bdd2bc 100644 --- a/include/asm-ia64/sal.h +++ b/include/asm-ia64/sal.h | |||
@@ -91,6 +91,7 @@ extern spinlock_t sal_lock; | |||
91 | #define SAL_PCI_CONFIG_READ 0x01000010 | 91 | #define SAL_PCI_CONFIG_READ 0x01000010 |
92 | #define SAL_PCI_CONFIG_WRITE 0x01000011 | 92 | #define SAL_PCI_CONFIG_WRITE 0x01000011 |
93 | #define SAL_FREQ_BASE 0x01000012 | 93 | #define SAL_FREQ_BASE 0x01000012 |
94 | #define SAL_PHYSICAL_ID_INFO 0x01000013 | ||
94 | 95 | ||
95 | #define SAL_UPDATE_PAL 0x01000020 | 96 | #define SAL_UPDATE_PAL 0x01000020 |
96 | 97 | ||
@@ -815,6 +816,17 @@ ia64_sal_update_pal (u64 param_buf, u64 scratch_buf, u64 scratch_buf_size, | |||
815 | return isrv.status; | 816 | return isrv.status; |
816 | } | 817 | } |
817 | 818 | ||
819 | /* Get physical processor die mapping in the platform. */ | ||
820 | static inline s64 | ||
821 | ia64_sal_physical_id_info(u16 *splid) | ||
822 | { | ||
823 | struct ia64_sal_retval isrv; | ||
824 | SAL_CALL(isrv, SAL_PHYSICAL_ID_INFO, 0, 0, 0, 0, 0, 0, 0); | ||
825 | if (splid) | ||
826 | *splid = isrv.v0; | ||
827 | return isrv.status; | ||
828 | } | ||
829 | |||
818 | extern unsigned long sal_platform_features; | 830 | extern unsigned long sal_platform_features; |
819 | 831 | ||
820 | extern int (*salinfo_platform_oemdata)(const u8 *, u8 **, u64 *); | 832 | extern int (*salinfo_platform_oemdata)(const u8 *, u8 **, u64 *); |
@@ -832,6 +844,44 @@ extern int ia64_sal_oemcall_nolock(struct ia64_sal_retval *, u64, u64, u64, | |||
832 | u64, u64, u64, u64, u64); | 844 | u64, u64, u64, u64, u64); |
833 | extern int ia64_sal_oemcall_reentrant(struct ia64_sal_retval *, u64, u64, u64, | 845 | extern int ia64_sal_oemcall_reentrant(struct ia64_sal_retval *, u64, u64, u64, |
834 | u64, u64, u64, u64, u64); | 846 | u64, u64, u64, u64, u64); |
847 | #ifdef CONFIG_HOTPLUG_CPU | ||
848 | /* | ||
849 | * System Abstraction Layer Specification | ||
850 | * Section 3.2.5.1: OS_BOOT_RENDEZ to SAL return State. | ||
851 | * Note: region regs are stored first in head.S _start. Hence they must | ||
852 | * stay up front. | ||
853 | */ | ||
854 | struct sal_to_os_boot { | ||
855 | u64 rr[8]; /* Region Registers */ | ||
856 | u64 br[6]; /* br0: return addr into SAL boot rendez routine */ | ||
857 | u64 gr1; /* SAL:GP */ | ||
858 | u64 gr12; /* SAL:SP */ | ||
859 | u64 gr13; /* SAL: Task Pointer */ | ||
860 | u64 fpsr; | ||
861 | u64 pfs; | ||
862 | u64 rnat; | ||
863 | u64 unat; | ||
864 | u64 bspstore; | ||
865 | u64 dcr; /* Default Control Register */ | ||
866 | u64 iva; | ||
867 | u64 pta; | ||
868 | u64 itv; | ||
869 | u64 pmv; | ||
870 | u64 cmcv; | ||
871 | u64 lrr[2]; | ||
872 | u64 gr[4]; | ||
873 | u64 pr; /* Predicate registers */ | ||
874 | u64 lc; /* Loop Count */ | ||
875 | struct ia64_fpreg fp[20]; | ||
876 | }; | ||
877 | |||
878 | /* | ||
879 | * Global array allocated for NR_CPUS at boot time | ||
880 | */ | ||
881 | extern struct sal_to_os_boot sal_boot_rendez_state[NR_CPUS]; | ||
882 | |||
883 | extern void ia64_jump_to_sal(struct sal_to_os_boot *); | ||
884 | #endif | ||
835 | 885 | ||
836 | extern void ia64_sal_handler_init(void *entry_point, void *gpval); | 886 | extern void ia64_sal_handler_init(void *entry_point, void *gpval); |
837 | 887 | ||