IA64: use symbolic constant for hypercall.
authorIsaku Yamahata <yamahata@valinux.co.jp>
Wed, 10 Dec 2008 06:39:44 +0000 (15:39 +0900)
committerIsaku Yamahata <yamahata@valinux.co.jp>
Wed, 10 Dec 2008 06:39:44 +0000 (15:39 +0900)
define symbolic names for hypercall number and use them.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
xen/arch/ia64/xen/dom_fw_asm.S
xen/arch/ia64/xen/domain.c
xen/include/asm-ia64/dom_fw.h

index 9a89c168b509dfa0e1b8dd8d1d1241f0f7949872..560f94e6216f523794bf6d30480c0717298c449b 100644 (file)
@@ -1,3 +1,5 @@
+#include <asm/dom_fw.h>
+
 // moved from xenasm.S to be shared by xen and libxc
 /*
  * Assembly support routines for Xen/ia64
 xen_ia64_pal_call_stub:
        {
         .mii
-       addl r2=0x1000,r0       //  Hypercall number (Value is patched).
+       addl r2=FW_HYPERCALL_PAL_CALL_ASM,r0    //  Hypercall number (Value is patched).
        mov r9=256
        ;; 
        cmp.gtu p7,p8=r9,r28            /* r32 <= 255? */
        }
        {
         .mbb
-       break 0x1000            //  Hypercall vector (Value is patched).
+       break __IA64_XEN_HYPERCALL_DEFAULT      //  Hypercall vector (Value is patched).
 (p7)   br.cond.sptk.few rp
 (p8)   br.ret.sptk.few rp
        }
index d59c1badca7ce5629e418b7779e3ac221618c991..cba28c52aa3ea8847cfc984cfdbe142103bdacb6 100644 (file)
@@ -561,7 +561,7 @@ int arch_domain_create(struct domain *d, unsigned int domcr_flags)
 
        // the following will eventually need to be negotiated dynamically
        d->arch.shared_info_va = DEFAULT_SHAREDINFO_ADDR;
-       d->arch.breakimm = 0x1000;
+       d->arch.breakimm = __IA64_XEN_HYPERCALL_DEFAULT;
        for (i = 0; i < NR_CPUS; i++) {
                d->arch.last_vcpu[i].vcpu_id = INVALID_VCPU_ID;
        }
index eacf18af7b4644365d2ccc824475e6d4297ad7cf..7333c039cc65485a23d126ae3e566aa21032e797 100644 (file)
@@ -5,6 +5,9 @@
  *     Dan Magenheimer (dan.magenheimer@hp.com)
  */
 
+#define __IA64_XEN_HYPERCALL_DEFAULT           0x1000
+#define __IA64_XEN_HYPERCALL_DEFAULT_STR       "0x1000"
+
 /* Portion of guest physical memory space reserved for PAL/SAL/EFI/ACPI
    data and code.  */
 #define FW_BASE_PADDR          0x0000UL
@@ -65,6 +68,7 @@
 #define FW_HYPERCALL_PAL_CALL_INDEX    0x80UL
 #define FW_HYPERCALL_PAL_CALL_PADDR    FW_HYPERCALL_PADDR(FW_HYPERCALL_PAL_CALL_INDEX)
 #define FW_HYPERCALL_PAL_CALL          0x1000UL
+#define FW_HYPERCALL_PAL_CALL_ASM      0x1000
 
 /*
  * SAL consists of a table of descriptors, one of which (type=0)
 #define FW_HYPERCALL_FPSWA_ENTRY_PADDR                 FW_HYPERCALL_PADDR(FW_HYPERCALL_FPSWA_ENTRY_INDEX)
 #define FW_HYPERCALL_FPSWA_PATCH_PADDR                 FW_HYPERCALL_PADDR(FW_HYPERCALL_FPSWA_PATCH_INDEX)
 #define FW_HYPERCALL_FPSWA                             0x500UL
+#define FW_HYPERCALL_FPSWA_STR                         "0x500"
 
 /* Set the shared_info base virtual address.  */
 #define FW_HYPERCALL_SET_SHARED_INFO_VA                        0x600UL
 /* Additionnal OEM SAL.  */
 #define SAL_XEN_SAL_RETURN     0x02000000
 
-#ifdef __XEN__
+#if defined(__XEN__) && !defined(__ASSEMBLY__)
 #include <linux/efi.h>
 extern struct ia64_pal_retval xen_pal_emulator(u64, u64, u64, u64);
 extern struct sal_ret_values sal_emulator (long index, unsigned long in1, unsigned long in2, unsigned long in3, unsigned long in4, unsigned long in5, unsigned long in6, unsigned long in7);