|
@@ -827,3 +827,91 @@ ia64_sal_physical_id_info(u16 *splid)
|
|
|
return -1;
|
|
|
|
|
|
SAL_CALL(isrv, SAL_PHYSICAL_ID_INFO, 0, 0, 0, 0, 0, 0, 0);
|
|
|
+ if (splid)
|
|
|
+ *splid = isrv.v0;
|
|
|
+ return isrv.status;
|
|
|
+}
|
|
|
+
|
|
|
+extern unsigned long sal_platform_features;
|
|
|
+
|
|
|
+extern int (*salinfo_platform_oemdata)(const u8 *, u8 **, u64 *);
|
|
|
+
|
|
|
+struct sal_ret_values {
|
|
|
+ long r8; long r9; long r10; long r11;
|
|
|
+};
|
|
|
+
|
|
|
+#define IA64_SAL_OEMFUNC_MIN 0x02000000
|
|
|
+#define IA64_SAL_OEMFUNC_MAX 0x03ffffff
|
|
|
+
|
|
|
+extern int ia64_sal_oemcall(struct ia64_sal_retval *, u64, u64, u64, u64, u64,
|
|
|
+ u64, u64, u64);
|
|
|
+extern int ia64_sal_oemcall_nolock(struct ia64_sal_retval *, u64, u64, u64,
|
|
|
+ u64, u64, u64, u64, u64);
|
|
|
+extern int ia64_sal_oemcall_reentrant(struct ia64_sal_retval *, u64, u64, u64,
|
|
|
+ u64, u64, u64, u64, u64);
|
|
|
+extern long
|
|
|
+ia64_sal_freq_base (unsigned long which, unsigned long *ticks_per_second,
|
|
|
+ unsigned long *drift_info);
|
|
|
+#ifdef CONFIG_HOTPLUG_CPU
|
|
|
+/*
|
|
|
+ * System Abstraction Layer Specification
|
|
|
+ * Section 3.2.5.1: OS_BOOT_RENDEZ to SAL return State.
|
|
|
+ * Note: region regs are stored first in head.S _start. Hence they must
|
|
|
+ * stay up front.
|
|
|
+ */
|
|
|
+struct sal_to_os_boot {
|
|
|
+ u64 rr[8]; /* Region Registers */
|
|
|
+ u64 br[6]; /* br0:
|
|
|
+ * return addr into SAL boot rendez routine */
|
|
|
+ u64 gr1; /* SAL:GP */
|
|
|
+ u64 gr12; /* SAL:SP */
|
|
|
+ u64 gr13; /* SAL: Task Pointer */
|
|
|
+ u64 fpsr;
|
|
|
+ u64 pfs;
|
|
|
+ u64 rnat;
|
|
|
+ u64 unat;
|
|
|
+ u64 bspstore;
|
|
|
+ u64 dcr; /* Default Control Register */
|
|
|
+ u64 iva;
|
|
|
+ u64 pta;
|
|
|
+ u64 itv;
|
|
|
+ u64 pmv;
|
|
|
+ u64 cmcv;
|
|
|
+ u64 lrr[2];
|
|
|
+ u64 gr[4];
|
|
|
+ u64 pr; /* Predicate registers */
|
|
|
+ u64 lc; /* Loop Count */
|
|
|
+ struct ia64_fpreg fp[20];
|
|
|
+};
|
|
|
+
|
|
|
+/*
|
|
|
+ * Global array allocated for NR_CPUS at boot time
|
|
|
+ */
|
|
|
+extern struct sal_to_os_boot sal_boot_rendez_state[NR_CPUS];
|
|
|
+
|
|
|
+extern void ia64_jump_to_sal(struct sal_to_os_boot *);
|
|
|
+#endif
|
|
|
+
|
|
|
+extern void ia64_sal_handler_init(void *entry_point, void *gpval);
|
|
|
+
|
|
|
+#define PALO_MAX_TLB_PURGES 0xFFFF
|
|
|
+#define PALO_SIG "PALO"
|
|
|
+
|
|
|
+struct palo_table {
|
|
|
+ u8 signature[4]; /* Should be "PALO" */
|
|
|
+ u32 length;
|
|
|
+ u8 minor_revision;
|
|
|
+ u8 major_revision;
|
|
|
+ u8 checksum;
|
|
|
+ u8 reserved1[5];
|
|
|
+ u16 max_tlb_purges;
|
|
|
+ u8 reserved2[6];
|
|
|
+};
|
|
|
+
|
|
|
+#define NPTCG_FROM_PAL 0
|
|
|
+#define NPTCG_FROM_PALO 1
|
|
|
+#define NPTCG_FROM_KERNEL_PARAMETER 2
|
|
|
+
|
|
|
+#endif /* __ASSEMBLY__ */
|
|
|
+
|
|
|
+#endif /* _ASM_IA64_SAL_H */
|