aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-ia64/sal.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-ia64/sal.h')
-rw-r--r--include/asm-ia64/sal.h50
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. */
820static inline s64
821ia64_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
818extern unsigned long sal_platform_features; 830extern unsigned long sal_platform_features;
819 831
820extern int (*salinfo_platform_oemdata)(const u8 *, u8 **, u64 *); 832extern 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);
833extern int ia64_sal_oemcall_reentrant(struct ia64_sal_retval *, u64, u64, u64, 845extern 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 */
854struct 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 */
881extern struct sal_to_os_boot sal_boot_rendez_state[NR_CPUS];
882
883extern void ia64_jump_to_sal(struct sal_to_os_boot *);
884#endif
835 885
836extern void ia64_sal_handler_init(void *entry_point, void *gpval); 886extern void ia64_sal_handler_init(void *entry_point, void *gpval);
837 887