# HG changeset patch
# User awilliam@xxxxxxxxxxxx
# Date 1172685350 25200
# Node ID 347fb33790bdd93bcddffbe0e11b69756d4c6fb3
# Parent 2e2019e09e6c21bc0e072bd4e78d47a3bc87ea59
[IA64] SN2 specific SAL calls for dom0
Signed-off-by: Jes Sorensen <jes@xxxxxxx>
Signed-off-by: Alex Williamson <alex.williamson@xxxxxx>
---
xen/arch/ia64/xen/fw_emul.c | 65 +++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 64 insertions(+), 1 deletion(-)
diff -r 2e2019e09e6c -r 347fb33790bd xen/arch/ia64/xen/fw_emul.c
--- a/xen/arch/ia64/xen/fw_emul.c Wed Feb 28 10:35:48 2007 -0700
+++ b/xen/arch/ia64/xen/fw_emul.c Wed Feb 28 10:55:50 2007 -0700
@@ -22,6 +22,7 @@
#include <linux/efi.h>
#include <asm/pal.h>
#include <asm/sal.h>
+#include <asm/sn/sn_sal.h>
#include <asm/xenmca.h>
#include <public/sched.h>
@@ -131,6 +132,7 @@ sal_emulator (long index, unsigned long
unsigned long in3, unsigned long in4, unsigned long in5,
unsigned long in6, unsigned long in7)
{
+ struct ia64_sal_retval ret_stuff;
unsigned long r9 = 0;
unsigned long r10 = 0;
long r11 = 0;
@@ -375,8 +377,69 @@ sal_emulator (long index, unsigned long
if (!test_and_set_bit(_VCPUF_down, ¤t->vcpu_flags))
vcpu_sleep_nosync(current);
break;
+ case SN_SAL_GET_MASTER_NASID:
+ status = -1;
+ if (current->domain == dom0) {
+ printk("*** Emulating SN_SAL_GET_MASTER_NASID ***\n");
+ SAL_CALL_NOLOCK(ret_stuff, SN_SAL_GET_MASTER_NASID,
+ 0, 0, 0, 0, 0, 0, 0);
+ status = ret_stuff.status;
+ r9 = ret_stuff.v0;
+ r10 = ret_stuff.v1;
+ r11 = ret_stuff.v2;
+ }
+ break;
+ case SN_SAL_GET_KLCONFIG_ADDR:
+ status = -1;
+ if (current->domain == dom0) {
+ printk("*** Emulating SN_SAL_GET_KLCONFIG_ADDR ***\n");
+ SAL_CALL_NOLOCK(ret_stuff, SN_SAL_GET_KLCONFIG_ADDR,
+ in1, 0, 0, 0, 0, 0, 0);
+ status = ret_stuff.status;
+ r9 = ret_stuff.v0;
+ r10 = ret_stuff.v1;
+ r11 = ret_stuff.v2;
+ }
+ break;
+ case SN_SAL_GET_SAPIC_INFO:
+ status = -1;
+ if (current->domain == dom0) {
+ printk("*** Emulating SN_SAL_GET_SAPIC_INFO ***\n");
+ SAL_CALL_NOLOCK(ret_stuff, SN_SAL_GET_SAPIC_INFO, in1,
+ 0, 0, 0, 0, 0, 0);
+ status = ret_stuff.status;
+ r9 = ret_stuff.v0;
+ r10 = ret_stuff.v1;
+ r11 = ret_stuff.v2;
+ }
+ break;
+ case SN_SAL_GET_SN_INFO:
+ status = -1;
+ if (current->domain == dom0) {
+ printk("*** Emulating SN_SAL_GET_SN_INFO ***\n");
+ SAL_CALL_NOLOCK(ret_stuff, SN_SAL_GET_SN_INFO, in1,
+ 0, 0, 0, 0, 0, 0);
+ status = ret_stuff.status;
+ r9 = ret_stuff.v0;
+ r10 = ret_stuff.v1;
+ r11 = ret_stuff.v2;
+ }
+ break;
+ case SN_SAL_IOIF_GET_HUBDEV_INFO:
+ status = -1;
+ if (current->domain == dom0) {
+ printk("*** Emulating SN_SAL_IOIF_GET_HUBDEV_INFO
***\n");
+ SAL_CALL_NOLOCK(ret_stuff, SN_SAL_IOIF_GET_HUBDEV_INFO,
+ in1, in2, 0, 0, 0, 0, 0);
+ status = ret_stuff.status;
+ r9 = ret_stuff.v0;
+ r10 = ret_stuff.v1;
+ r11 = ret_stuff.v2;
+ }
+ break;
default:
- printk("*** CALLED SAL_ WITH UNKNOWN INDEX. IGNORED...\n");
+ printk("*** CALLED SAL_ WITH UNKNOWN INDEX (%lx). "
+ "IGNORED...\n", index);
status = -1;
break;
}
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|